上机填空题3336.docx

上传人:b****7 文档编号:9939215 上传时间:2023-02-07 格式:DOCX 页数:17 大小:19.74KB
下载 相关 举报
上机填空题3336.docx_第1页
第1页 / 共17页
上机填空题3336.docx_第2页
第2页 / 共17页
上机填空题3336.docx_第3页
第3页 / 共17页
上机填空题3336.docx_第4页
第4页 / 共17页
上机填空题3336.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

上机填空题3336.docx

《上机填空题3336.docx》由会员分享,可在线阅读,更多相关《上机填空题3336.docx(17页珍藏版)》请在冰豆网上搜索。

上机填空题3336.docx

上机填空题3336

上机填空题33-36.txt25爱是一盏灯,黑暗中照亮前行的远方;爱是一首诗,冰冷中温暖渴求的心房;爱是夏日的风,是冬日的阳,是春日的雨,是秋日的果。

33

题目:

函数fun的功能是:

将形参a所指数组中的前半部分元素中值和后半部分元素中的值对换。

形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

例如:

若a所指数组中的数据依次为:

1、2、3、4、5、6、7、8、9,则调换后为:

6、7、8、9、5、1、2、3、4。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

#defineN9

voidfun(inta[],intn)

{

inti,t,p;

p=(n%2==0)?

n/2:

n/2+___1___;

for(i=0;i

{

t=a[i];

a[i]=a[p+___2___];

___3___=t;

}

}

main()

{

intb[N]={1,2,3,4,5,6,7,8,9},i;

printf("\nTheoriginaldata:

\n");

for(i=0;i

printf("%4d",b[i]);

printf("\n");

fun(b,N);

printf("\nThedataaftermoving:

\n");

for(i=0;i

printf("%4d",b[i]);

printf("\n");

}

34

题目:

请补充fun函数,该函数的功能是:

分类统计一个字符串中元音字母和其它字符的个数(不区分大小写)。

例如:

输入aeiouAUpqr,结果为A:

2E:

1I:

1O:

1U:

2other:

3。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

#include

#defineN100

voidfun(char*str,intbb[])

{

char*p=str;

inti=0;

for(i=0;i<6;i++)

___1___;

while(*p)

{

switch(*p)

{

case'A':

case'a':

bb[0]++;break;

case'E':

case'e':

bb[1]++;break;

case'I':

case'i':

bb[2]++;break;

case'O':

case'o':

bb[3]++;break;

case'U':

case'u':

bb[4]++;break;

default:

___2___;

}

___3___

}

}

main()

{

charstr[N],ss[5]="AEIOU";

inti;

intbb[6];

clrscr();

printf("Inputastring:

\n");

gets(str);

printf("thestringis:

\n");

puts(str);

fun(str,bb);

for(i=0;i<5;i++)

printf("\n%c:

%d",ss[i],bb[i]);

printf("\nother:

%d\n",bb[i]);

}

35

题目:

str是全部由小写字母字符和空格字符组成的字符串,由num传入字符串的长度。

请补充fun函数,该函数的功能是:

统计字符串str中的单词数,结果由变量num传回。

每个单词之间都由空格隔开,并且字符串str开始不存在空格。

例如:

str="howareyou",结果为:

num=3。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

#defineN80

voidfun(char*s,int*num)

{

inti,n=0;

for(i=0;___1___;i++)

{

if(s[i]>='a'&&s[i]<='z'&&s[i+1]==''||s[i+1]=='\0')

___2___;

}

___3___;

}

main()

{

charstr[N];

intnum=0;

printf("Enterastring:

\n");

gets(str);

while(str[num])

num++;

fun(str,&num);

printf("Thenumberofwordis:

%d\n\n",num);

}

36

题目:

str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。

请补充fun函数,该函数的功能是把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

例如:

str="Abc123e456hui7890",结果为:

1234567890。

注意:

部分源程序如blank.c给出。

请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。

#include

#defineN80

intbb[N];

intfun(chars[],intbb[],intnum)

{

inti,n=0;

for(i=0;i

{

if(___1___)

{

bb[n]=___2___;

n++;

}

}

return___3___;

}

main()

{

charstr[N];

intnum=0,n,i;

printf("Enterastring:

\n");

gets(str);

while(str[num])

num++;

n=fun(str,bb,num);

printf("\nbb=");

for(i=0;i

printf("%d",bb[i]);

printf("\n");

}

来吧,淘宝网上有更多精采

 

特产年度热卖榜

进口美食地图

解答

33

分析:

程序注解如下:

#include

#defineN9

/*a为数组,n为a数组中成员的个数*/

voidfun(inta[],intn)

{

inti,t,p;

/*计算数组a中间位置p,如果数组成员个数为偶数则取n/2,否则取n/2+1*/

/*n%2==0用于判断n是否为偶数*/

p=(n%2==0)?

n/2:

n/2+1;

/*使用循环进行对换*/

for(i=0;i

{

/*将使用t变量保存左边的数组成员数据*/

t=a[i];

/*将左边数组成员对应的右边数组成员移动到左边位置*/

a[i]=a[p+i];

/*将预先存放在t变量中的原左边数组成员移动到右边位置*/

a[p+i]=t;

}

}

main()

{

intb[N]={1,2,3,4,5,6,7,8,9},i;

printf("\nTheoriginaldata:

\n");

/*输出处理之前的数组成员*/

for(i=0;i

printf("%4d",b[i]);

printf("\n");

fun(b,N);

printf("\nThedataaftermoving:

\n");

/*输出处理之后的数组成员*/

for(i=0;i

printf("%4d",b[i]);

printf("\n");

}

34

分析:

题目要求在fun函数中分类统计传入的字符串str中元音字母和其它字符的个数(不区分大小写),然后将这些个数作为bb数组的成员。

元音字母一共有五个,分别是A、E、I、O、U。

由于不区分大小写,所以小写的a、e、i、o、u和A、E、I、O、U中对应的字符算一个字符。

例如A和a被看成同一个字符。

为了实现题目要求,程序设置指针p指向str字符串第一个字符,然后通过往后移动p指针逐一判断p当前指向的指针是否为元音字母或者非元音字母。

当发现某元音字母的时候将该元音字母的个数加一即可。

程序注解如下:

#include

#include

#defineN100

/*str字符串统计元音字母和其它字符的个数的字符串*/

/*bb数组存放找到的元音字母和其他字符的个数*/

voidfun(char*str,intbb[])

{

/*将p指针指向str字符串的第一个字符*/

char*p=str;

inti=0;

/*存放字符个数的bb数组每一个成员初始化为0,因为下面需要进行个数累加*/

for(i=0;i<6;i++)

bb[i]=0;

/*while(*p)是while(*p!

='\0')的简写方式*

/*while循环的循环条件是p指针当前指向的字符不是结束标记符'\0'*/

while(*p)

{

/*判断p指针当前指向的字符是否为元音字符*/

switch(*p)

{

/*判断p指针当前指向的字符是否为'A'或者'a'*/

/*bb第一个成员记录'A'或者'a'的个数*/

case'A':

case'a':

bb[0]++;break;

/*判断p指针当前指向的字符是否为'E'或者'e'*/

/*bb第二个成员记录'E'或者'e'的个数*/

case'E':

case'e':

bb[1]++;break;

/*判断p指针当前指向的字符是否为'I'或者'i'*/

/*bb第三个成员记录'I'或者'i'的个数*/

case'I':

case'i':

bb[2]++;break;

/*判断p指针当前指向的字符是否为'O'或者'o'*/

/*bb第四个成员记录'O'或者'o'的个数*/

case'O':

case'o':

bb[3]++;break;

/*判断p指针当前指向的字符是否为'U'或者'u'*/

/*bb第五个成员记录'U'或者'u'的个数*/

case'U':

case'u':

bb[4]++;break;

/*p指针当前指向的字符不是元音字符的时候*/

/*bb第六个成员记录非元音字符的个数*/

default:

bb[5]++;

}

/*p指针移动到str字符串中下一个字符*/

p++;

}

}

main()

{

charstr[N],ss[5]="AEIOU";

inti;

intbb[6];

/*clrscr函数用于清除输出窗口中已经显示的内容*/

/*clrscr函数定义在conio.h,所以需要#include*/

clrscr();

printf("Inputastring:

\n");

/*gets函数用于接收键盘输入的字符串,将其放入参数中*/

/*gets函数定义在stdio.h,所以需要#include*/

gets(str);

printf("thestringis:

\n");

/*puts函数用于将参数中包含的字符串输出在输出窗口*/

/*puts函数定义在stdio.h,所以需要#include*/

puts(str);

fun(str,bb);

/*输出元音字母和对应的个数*/

for(i=0;i<5;i++)

printf("\n%c:

%d",ss[i],bb[i]);

/*输出其他字符的个数*/

printf("\nother:

%d\n",bb[i]);

}

35

分析:

题目要求在fun函数中统计字符串str中的单词数,结果由变量num传回。

str是全部由小写字母字符和空格字符组成的字符串,每个单词之间都由空格隔开,并且字符串str开始不存在空格。

而要统计单词数,需要逐一检查str字符串中每一个字符。

(1)如果某一个位置的字符是小写字母而紧接着的后一个字符为空格,则说明发现一个单词。

(2)第一种方法不能发现最后一个单词,例如str字符串为"howareyou",最后一个单词"you"不符合以上要求,所以需要单独判断。

方法是判断某一个字符紧接着的后一个字符为字符串结束标记'\0'。

如果是则说明该字符位于字符串最后一个单词。

程序注解如下:

#include

#defineN80

/*num指针指向的地址里的内容为s字符串中字符的个数*/

voidfun(char*s,int*num)

{

/*n记录在s字符串中单词的个数*/

inti,n=0;

/*逐一检查s字符串中的字符,由于num是指针类型*/

/*所以需要用*运算符取num指针指向的地址里的内容,即s字符串中字符个数*/

for(i=0;i<*num;i++)

{

/*判断是否发现一个新的单词,判断方法依循以上分析*/

if(s[i]>='a'&&s[i]<='z'&&s[i+1]==''||s[i+1]=='\0')

/*当发现一个新的单词,记录单词个数的n需要加一*/

n++;

}

/*将单词数覆盖num指针指向的地址中的内容,以便main函数能接收到*/

*num=n;

}

main()

{

charstr[N];

intnum=0;

printf("Enterastring:

\n");

/*gets函数用于接收键盘输入的字符串,将其放入参数中*/

/*gets函数定义在stdio.h,所以需要#include*/

gets(str);

/*while(str[num])是while(str[num]!

='\0')的简写方式*/

/*以下while循环作用是逐个检查str字符串的字符是否为结束标记'\0'*/

/*所以当循环结束时,num则保存了str字符串的字符个数*/

while(str[num])

num++;

/*采取传地址方式传入num变量的地址*/

fun(str,&num);

/*输出单词的个数*/

printf("Thenumberofwordis:

%d\n\n",num);

}

36

分析:

题目要求在fun函数中把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

在程序中,需要判断某一个字符是否是非数字字符还是数字字符。

判断方法就是检查该字符的ASCII码是否大于"0"字符的ASCII码而小于"9"的ASCII码。

也就是说只要某字符的ASCII码值在"0"字符和"9"字符两个ASCII码值之间,该字符就是数字字符。

ASCII全称是美国标准信息交换码(AmericanStandardCodeforInformationInterchange)。

在这张表中,小写字母"0"的ASCII码值为48,小写字母"1"的ASCII码值为49,小写字母"2"的ASCII码值为50,后面的数字字符的ASCII码值依次类推,最后的"9"的ASCII码值为57。

所有的数字字符在ASCII码表中是按顺序排列的,它们在ASCII表的码值开始于48,结束于57。

而根据C语言的语法,判断两个字符之间的大小实际上是比较两个字符在ASCII表中的码值大小。

例如"7"字符大于"6"字符,因为"7"的ASCII码值为55,"6"的ASCII码值为54,"7"的ASCII码值大于"6"的ASCII码值。

使用C语言描述就是'7'>'6'这个表达式成立。

综上所述,判断某个字符是否为数字字符只要判断该字符的ASCII码值是否在"0"和"9"之间即可。

如果在这范围之内,该字符就是数字字符,否则不是。

程序采用for循环一个个检查str字符串中的每一个字符。

如果字符的ASCII码值位于'0'和'9'之间,则说明该字符是一个数字字符。

程序将它从char类型转换为int类型,然后将转换得到的值放入bb数组中。

程序将char类型的数字字符转换为int类型的数字采用了ASCII表中数字字符的ASCII码是连续的这个特性。

任何char类型的数字字符x减去'0',即x-'0'都将执行x的ASCII码值减去'0'的码值,由于数字字符的ASCII码是连续的,所以x-'0'的直接后果就是得到了和x对应的int类型的值,也就达到了将char类型的数字字符x转化为int类型的数值。

程序将str字符串中的数字字符从char类型转换为int类型之后放入bb数组,而放入bb数组的位置需要由n变量来决定。

由于数组从0开始,所以n初始值设置为0。

然后每一次在bb数组中放入一个数字之后n都必须增加一,以便下一次放入数字的时候能使用n指示放入的位置。

程序注解如下:

#include

#defineN80

intbb[N];

intfun(chars[],intbb[],intnum)

{

/*n指示数字放入bb数组的位置,由于数组从0开始,所以初始值设置为0*/

inti,n=0;

for(i=0;i

{

/*当s[i]的ASCII码值在'0'和'9'之间的时候,即s[i]为数字字符的时候*/

if(s[i]>='0'&&s[i]<='9')

{

/*将s[i]的ASCII码值减去'0'的ASCII码值,得到s[i]与'0'的差距*/

/*作用就是将s[i]从char类型转换成int类型*/

bb[n]=s[i]-'0';

/*n变量加一,指示下一个数字放入bb数组的位置*/

n++;

}

}

/*以上for循环结束的时候n变量的值则为bb数组中的数字个数*/

returnn;

}

main()

{

charstr[N];

intnum=0,n,i;

printf("Enterastring:

\n");

/*gets函数用于接收键盘输入的字符串,将其放入参数中*/

/*gets函数定义在stdio.h,所以需要#include*/

gets(str);

/*以下while循环作用是逐个检查str字符串的字符是否为结束标记'\0'*/

/*所以当循环结束时,num则保存了str字符串的字符个数*/

while(str[num])

num++;

n=fun(str,bb,num);

printf("\nbb=");

/*输出保存在bb数组中的数字*/

for(i=0;i

printf("%d",bb[i]);

printf("\n");

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1