上机填空题4548文档格式.docx
- 文档编号:16993866
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:12
- 大小:18.39KB
上机填空题4548文档格式.docx
《上机填空题4548文档格式.docx》由会员分享,可在线阅读,更多相关《上机填空题4548文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
i<
s1;
i++)
t[i]=s[___1___];
t[s1+i]=s[i];
t[___2___]='
\0'
;
}
main()
chars[100],t[100];
clrscr();
printf("
\nPleaseenterstrings:
"
);
scanf("
%s"
s);
fun(s,t);
Theresultis:
%s\n"
t);
46
用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:
876675896101301401980431451777,则输出结果为:
6,980。
voidfun(int*s,intt,int___1___)
inti,max;
max=s[0];
i<
t;
i++)
if(___2___)
max=s[i];
*k=___3___;
inta[10]={876,675,896,101,301,401,980,431,451,777},k;
fun(a,10,&
k);
%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}。
#defineN1000
intfun(intxx[],intbb[],intnum)
inti,n=0;
intg,b;
for(i=0;
num;
g=___1___;
b=xx[i]/100;
if(g==b)
___2___;
return___3___;
intxx[8]={123,231,232,222,424,333,141,544};
intyy[N];
intnum=0,n=0,i=0;
num=8;
******originaldata*******\n"
%u"
xx[i]);
\n\n\n"
n=fun(xx,yy,num);
\nyy="
n;
yy[i]);
\n"
48
把一个整数转换成字符串,并倒序保存在字符数组str中。
例如:
当n=12345678时,str="
87654321"
。
#defineN80
charstr[N];
voidfun(longintn)
inti=0;
while(___1___)
str[i]=___2___;
n/=10;
i++;
___3___;
longintn=1234567;
clrscr();
******theorigialdata********\n"
n=%ld"
n);
fun(n);
\n%s\n"
str);
躺在床上购物,上淘宝网站
解答
分析:
程序注解如下:
/*strlen函数的作用是取得参数s字符串中包含的字符个数*/
/*strlen函数定义在string.h中,所以需要#include<
*/
/*先将在字符串s中的字符按逆序存放到t串中*/
t[i]=s[s1-i-1];
/*然后把s中的字符按正序连接到t串的后面*/
/*在t字符串结尾处设置t字符串结束标记*/
t[2*s1]='
/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/
/*clrscr函数定义在conio.h中,所以需要#include<
题目要求在fun函数中求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
为了找出最大元素的下标,程序预先设置一个存放最大值的变量max。
/*s为所要处理的数组,t为s数组中元素的个数*/
/*k指针指向的地址将存放求出的数组的最大元素在数组中的下标*/
voidfun(int*s,intt,int*k)
/*max记录碰到的数组中的最大元素*/
/*逐一检查数组s中所有的元素*/
if(s[i]>
max)
/*如果发现有元素大于max,就将发现的大元素覆盖max的值*/
/*同时k指针指向的地址里的内容记录下发现的新的大元素的下标*/
*k=i;
/*数组名同时也是指针*/
题目要求在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是否是几位数字。
/*数组xx存放着要处理的整数,处理结果放入数组bb,num代表xx数组中成员个数*/
/*n指示放入bb数组的位置,因为数组从0开始,所以n初始值设置为0*/
/*g存放整数的个位数字,b存放整数的百位数字*/
/*逐一判断xx数组中每一个整数,判断个位和百位的数字是否相等*/
/*得到个位的数字*/
g=xx[i]%10;
/*得到百位的数字*/
/*判断个位和百位的数字是否相等*/
/*如果个位和百位的数字相等,就将该整数放入bb数组中*/
/*bb[n++]=xx[i]相当于bb[n]=xx[i];
n++;
/*当整数放入bb数组之后,n必须加一以指示下一个存放位置*/
bb[n++]=xx[i];
/*当for循环结束的时候,n的值就是bb数组中成员的个数*/
/*根据题意需返回bb数组中的成员个数,所以返回n的值*/
returnn;
/*输出xx数组中的各个整数*/
/*输出存放结果的yy数组中的各个整数*/
题目要求在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+'
就能得到char类型的'
2'
这是因为在C语言中,0至9之间的数字k和'
至'
9'
任意一个字符m相加得到的值就是字符m之后第k个字符。
例如8+'
得到'
8'
/*fun函数是将整数n转化为字符串,并倒序保存在字符数组str中*/
/*i变量指示在str数组中存放数据的位置,而数组从0开始,所以初始值为0*/
/*只有当整数n的每一个位数的数字都进行了处理才退出while循环*/
while(n>
0)
/*取得整数n的个位数字之后将其转化为字符串*/
str[i]=n%10+'
/*将n整除10从而丢弃最低位的数字,因为最低位数字已经处理过了*/
/*i指示整数各个位数上的数字转化为字符型之后放入str数组中的位置*/
/*由于str[i]=n%10+'
将一个字符放入str数组了,所以i需要加一*/
/*这样才能使i指示下一个存放位置*/
/*在字符串最后的位置加入字符串结束标记*/
str[i]='
/*输出原有的整数*/
/*输出处理得到的字符串*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 填空 4548
![提示](https://static.bdocx.com/images/bang_tan.gif)