上机填空题4548.docx

上传人:b****4 文档编号:4077834 上传时间:2022-11-27 格式:DOCX 页数:12 大小:18.39KB
下载 相关 举报
上机填空题4548.docx_第1页
第1页 / 共12页
上机填空题4548.docx_第2页
第2页 / 共12页
上机填空题4548.docx_第3页
第3页 / 共12页
上机填空题4548.docx_第4页
第4页 / 共12页
上机填空题4548.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

上机填空题4548.docx

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

上机填空题4548.docx

上机填空题4548

上机填空题45-48.txt36母爱是一缕阳光,让你的心灵即便在寒冷的冬天也能感受到温暖如春;母爱是一泓清泉,让你的情感即使蒙上岁月的风尘仍然清澈澄净。

45

题目:

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

先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。

例如,s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。

注意:

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

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

#include

#include

#include

voidfun(char*s,char*t)

{

ints1,i;

s1=strlen(s);

for(i=0;i

t[i]=s[___1___];

for(i=0;i

t[s1+i]=s[i];

t[___2___]='\0';

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:

");

scanf("%s",s);

fun(s,t);

printf("Theresultis:

%s\n",t);

}

46

题目:

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

用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:

876675896101301401980431451777,则输出结果为:

6,980。

注意:

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

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

#include

#include

voidfun(int*s,intt,int___1___)

{

inti,max;

max=s[0];

for(i=0;i

if(___2___)

{

max=s[i];

*k=___3___;

}

}

main()

{

inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

47

题目:

数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通过变量num传入fun函数。

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

从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由fun函数返回。

例如,当xx[8]={123,231,232,222,424,333,141,544}时,bb[5]={232,222,424,333,141}。

注意:

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

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

#include

#include

#defineN1000

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

{

inti,n=0;

intg,b;

for(i=0;i

{

g=___1___;

b=xx[i]/100;

if(g==b)

___2___;

}

return___3___;

}

main()

{

intxx[8]={123,231,232,222,424,333,141,544};

intyy[N];

intnum=0,n=0,i=0;

num=8;

clrscr();

printf("******originaldata*******\n");

for(i=0;i

printf("%u",xx[i]);

printf("\n\n\n");

n=fun(xx,yy,num);

printf("\nyy=");

for(i=0;i

printf("%u",yy[i]);

printf("\n");

}

48

题目:

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

把一个整数转换成字符串,并倒序保存在字符数组str中。

例如:

当n=12345678时,str="87654321"。

注意:

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

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

#include

#include

#defineN80

charstr[N];

voidfun(longintn)

{

inti=0;

while(___1___)

{

str[i]=___2___;

n/=10;

i++;

}

___3___;

}

main()

{

longintn=1234567;

clrscr();

printf("******theorigialdata********\n");

printf("n=%ld",n);

fun(n);

printf("\n%s\n",str);

}

躺在床上购物,上淘宝网站

解答

45

分析:

程序注解如下:

#include

#include

#include

voidfun(char*s,char*t)

{

ints1,i;

/*strlen函数的作用是取得参数s字符串中包含的字符个数*/

/*strlen函数定义在string.h中,所以需要#include*/

s1=strlen(s);

/*先将在字符串s中的字符按逆序存放到t串中*/

for(i=0;i

t[i]=s[s1-i-1];

/*然后把s中的字符按正序连接到t串的后面*/

for(i=0;i

t[s1+i]=s[i];

/*在t字符串结尾处设置t字符串结束标记*/

t[2*s1]='\0';

}

main()

{

chars[100],t[100];

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

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

clrscr();

printf("\nPleaseenterstrings:

");

scanf("%s",s);

fun(s,t);

printf("Theresultis:

%s\n",t);

}

46

分析:

题目要求在fun函数中求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

为了找出最大元素的下标,程序预先设置一个存放最大值的变量max。

程序注解如下:

#include

#include

/*s为所要处理的数组,t为s数组中元素的个数*/

/*k指针指向的地址将存放求出的数组的最大元素在数组中的下标*/

voidfun(int*s,intt,int*k)

{

inti,max;

/*max记录碰到的数组中的最大元素*/

max=s[0];

/*逐一检查数组s中所有的元素*/

for(i=0;i

if(s[i]>max)

{

/*如果发现有元素大于max,就将发现的大元素覆盖max的值*/

max=s[i];

/*同时k指针指向的地址里的内容记录下发现的新的大元素的下标*/

*k=i;

}

}

main()

{

inta[10]={876,675,896,101,301,401,980,431,451,777},k;

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

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

clrscr();

/*数组名同时也是指针*/

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

47

分析:

题目要求在fun函数中从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组bb中,其个数n由fun函数返回。

这个题目的关键在于如何取得某一个整数的个位和百位的数字。

通过整除(/)和取模(%)运算,我们可以得到一个整数的任意位数上的数字。

例如给出整数a,各个位数的数字可以通过以下方式得到:

(1)取得个位的数字,可以通过a%10得到。

例如12345%10=5

(2)取得十位的数字,可以通过a/10%10得到。

例如12345/10%10=4

(3)取得百位的数字,可以通过a/100%10得到。

例如12345/100%10=3

(4)取得千位的数字,可以通过a/1000%10得到。

例如12345/1000%10=2

(5)其余位数的数字依次类推

题目中的程序通过a%10得到个位上的数字,通过a/100得到百位上的数字。

为什么题目中可以使用a/100得到百位上的数字而不使用以上所说的a/100%10呢?

这是由于题目限定xx数组中保存的整数都是3位数,所以使用a/100正好得到百位数字。

而a/100%10是通用的,不管整数a是否是几位数字。

程序注解如下:

#include

#include

#defineN1000

/*数组xx存放着要处理的整数,处理结果放入数组bb,num代表xx数组中成员个数*/

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

{

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

inti,n=0;

/*g存放整数的个位数字,b存放整数的百位数字*/

intg,b;

/*逐一判断xx数组中每一个整数,判断个位和百位的数字是否相等*/

for(i=0;i

{

/*得到个位的数字*/

g=xx[i]%10;

/*得到百位的数字*/

b=xx[i]/100;

/*判断个位和百位的数字是否相等*/

if(g==b)

/*如果个位和百位的数字相等,就将该整数放入bb数组中*/

/*bb[n++]=xx[i]相当于bb[n]=xx[i];n++;*/

/*当整数放入bb数组之后,n必须加一以指示下一个存放位置*/

bb[n++]=xx[i];

}

/*当for循环结束的时候,n的值就是bb数组中成员的个数*/

/*根据题意需返回bb数组中的成员个数,所以返回n的值*/

returnn;

}

main()

{

intxx[8]={123,231,232,222,424,333,141,544};

intyy[N];

intnum=0,n=0,i=0;

num=8;

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

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

clrscr();

printf("******originaldata*******\n");

/*输出xx数组中的各个整数*/

for(i=0;i

printf("%u",xx[i]);

printf("\n\n\n");

n=fun(xx,yy,num);

printf("\nyy=");

/*输出存放结果的yy数组中的各个整数*/

for(i=0;i

printf("%u",yy[i]);

printf("\n");

}

48

分析:

题目要求在fun函数中把整数n转换成字符串,并倒序保存在字符数组str中。

为了实现以上要求,题目中的程序使用while循环从整数最右边逐一提取整数n的每一个位数的数字,将其转化为字符串,然后一个一个字符放入str数组中。

以上过程涉及两个方面。

第一个方面就是如何从整数最右边逐个提取整数的各个位数。

在程序中使用n%10提取最低位的数字,也就是最右边的数字。

然后使用n/=10将整数n的最低一位丢弃。

例如n=1235,执行n/=10之后n为123,最低位的5就被丢弃了。

丢弃整数的最低位之后,程序继续使用n%10提取最低位的数字,反复执行以上过程,直至整数n的各个位数的数字都处理完成。

另外一个方面就是如何将提取的各个位数上的数字转化为char类型。

程序中使用数字加上'0'的方法使int类型的数字转化为char类型的字符。

例如2+'0'就能得到char类型的'2'。

这是因为在C语言中,0至9之间的数字k和'0'至'9'任意一个字符m相加得到的值就是字符m之后第k个字符。

例如8+'0'得到'8'。

程序注解如下:

#include

#include

#defineN80

charstr[N];

/*fun函数是将整数n转化为字符串,并倒序保存在字符数组str中*/

voidfun(longintn)

{

/*i变量指示在str数组中存放数据的位置,而数组从0开始,所以初始值为0*/

inti=0;

/*只有当整数n的每一个位数的数字都进行了处理才退出while循环*/

while(n>0)

{

/*取得整数n的个位数字之后将其转化为字符串*/

str[i]=n%10+'0';

/*将n整除10从而丢弃最低位的数字,因为最低位数字已经处理过了*/

n/=10;

/*i指示整数各个位数上的数字转化为字符型之后放入str数组中的位置*/

/*由于str[i]=n%10+'0'将一个字符放入str数组了,所以i需要加一*/

/*这样才能使i指示下一个存放位置*/

i++;

}

/*在字符串最后的位置加入字符串结束标记*/

str[i]='\0';

}

main()

{

longintn=1234567;

/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/

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

clrscr();

printf("******theorigialdata********\n");

/*输出原有的整数*/

printf("n=%ld",n);

fun(n);

/*输出处理得到的字符串*/

printf("\n%s\n",str);

}

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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