上机填空题4144Word下载.docx
- 文档编号:22089815
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:16
- 大小:19.12KB
上机填空题4144Word下载.docx
《上机填空题4144Word下载.docx》由会员分享,可在线阅读,更多相关《上机填空题4144Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
___2___;
\n\n"
printf(___3___);
}
42
从字符串str中取出所有数字字符,并分别计数,并把结果保存在数组b中并输出,把其它字符保存在b[10]。
例如,当str1="
de123456789abc0908"
时,结果为:
0:
21:
12:
13:
14:
15:
16:
17:
18:
29:
2othercharacter:
5。
inti,b[11];
char*str="
;
char*p=str;
puts(str);
for(i=0;
i<
11;
i++)
b[i]=0;
while(*p)
switch(___1___)
case'
0'
:
b[0]++;
break;
1'
b[1]++;
2'
b[2]++;
3'
b[3]++;
4'
b[4]++;
5'
b[5]++;
6'
b[6]++;
7'
b[7]++;
8'
b[8]++;
9'
b[9]++;
___3___;
******theresult********\n"
10;
\n%d:
%d"
i,b[i]);
\nothercharacter:
b[i]);
43
请补充fun函数,该函数的功能是:
按‘0’到‘9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。
注意:
不能使用字符串库函数。
"
x=1123.456+0.909*bc"
,结果为:
1=2,3=1,5=1,7=0,9=2。
请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
#defineN1000
voidfun(char*tt,intnum[])
inti,j;
intbb[10];
char*p=tt;
num[i]=0;
bb[i]=0;
while(___1___)
if(*p>
='
&
*p<
)
p++;
for(i=1,j=0;
i=i+2,j++)
charstr[N];
intnum[10],k;
\nPleaseenteracharstring:
gets(str);
\n*******Theoriginalstring******\n"
fun(str,num);
\n*******Thenumberofletter******\n"
for(k=0;
k<
5;
k++)
%d=%d"
2*k+1,num[k]);
return;
44
逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放在到c数组,形成一个新的字符串。
例如,若a中的字符串为aBCDeFgH,b中的字符串为ABcd,则c中的字符串应为:
aBcdeFgH。
string.h>
voidfun(char*p,char*q,char*c)
intk=___1___;
while(___2___)
if(*p<
*q)
c[k]=*q;
else
c[k]=*p;
if(*p)
if(*q)
q++;
k++;
chara[10]="
aBCDeFgH"
b[10]="
ABcd"
c[80]={'
\0'
};
fun(a,b,c);
Thestringa:
puts(a);
Thestringb:
puts(b);
Theresult:
puts(c);
走进淘宝,时时刻刻都充满关怀和希望
解答
分析:
第一个填空处要注意输入的是一个长整数,所以要使用"
%ld"
格式。
另外,这个长整数保存在n变量中,所以写&
n。
第二个填空处根据题目要求如果这个数是负数,则取它的绝对值,所以取负数的相反数。
第三个填空处输出n保存的长整数的值,所以填写"
n。
程序注解如下:
/*clrscr函数的作用是清屏,清除输出窗口中所有已经显示的内容*/
/*clrscr函数定义在conio.h中,所以需要#include<
*/
/*由于输入一个长整数,所以使用%ld*/
scanf("
&
n);
/*如果是负数,则取它的正数*/
n=-n;
/*输出n变量保存的长整数值*/
n);
题目要求从字符串str中取出所有数字字符,并分别计数,并把结果保存在数组b中并输出,把其它字符保存在b[10]。
程序使用p指针首先指向str字符串第一个字符,然后使用while循环将p指针不断往后移动,判断p指针在移动过程中指向的每一个字符,然后将对应的b数组中的成员增加一。
/*p指针指向str字符串第一个字符*/
/*puts函数的作用是在输出窗口中输出参数str的内容*/
/*puts函数定义在stdio.h中,所以需要#include<
/*将保存个数的b数组各成员初始化为0*/
/*while(*p)是while(*p!
='
)的简写方式*/
/*while循环逐个检查p指针指向的字符,同时p指针不断向后移动*/
/*判断p指针指向的字符是哪种字符*/
switch(*p)
/*除了以上情况,剩下的就是其他字符了,所以b[10]加一*/
/*根据题意,其他字符的个数保存在b[10]*/
default:
b[10]++;
/*检查p指针当前指向的字符之后,p指针往后移动,以便判断下一个字符*/
/*输出各个数字字符及其对应的个数*/
/*输出其他字符以及对应的个数*/
题目要求在fun函数中按‘0’到‘9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。
为了实现以上要求,程序采用了以下思路。
首先定义了两个数组,即num数组和bb数组。
bb数组是用于存放‘0’到‘9’10个数字字符在tt字符串中出现的个数,而num数组则只存放‘0’到‘9’中奇数数字字符各自出现的次数。
为什么要定义bb数组呢?
关键之处在于程序使用p指针在while循环中移动从而逐个检查tt字符串中的每一个字符。
如果发现p指针所指的字符为数字字符,则在bb数组对应的成员加一。
例如发现p指针所指的字符为'
,则将bb[8]增加一。
如果发现p指针所指的字符为'
,则将bb[0]增加一。
当p指针检查完tt字符串中所有字符,bb数组bb[0]至bb[9]10个成员分别保存了tt字符串中'
至'
10个数字字符的个数。
最后,从bb数组中提取奇数字符的个数复制到num数组就可以达到题目的要求。
在程序中,需要判断某一个字符是否是非数字字符还是数字字符。
判断方法就是检查该字符的ASCII码是否大于"
0"
字符的ASCII码而小于"
9"
的ASCII码。
也就是说只要某字符的ASCII码值在"
字符和"
字符两个ASCII码值之间,该字符就是数字字符。
ASCII全称是美国标准信息交换码(AmericanStandardCodeforInformationInterchange)。
在这张表中,小写字母"
的ASCII码值为48,小写字母"
1"
的ASCII码值为49,小写字母"
2"
的ASCII码值为50,后面的数字字符的ASCII码值依次类推,最后的"
的ASCII码值为57。
所有的数字字符在ASCII码表中是按顺序排列的,它们在ASCII表的码值开始于48,结束于57。
而根据C语言的语法,判断两个字符之间的大小实际上是比较两个字符在ASCII表中的码值大小。
例如"
7"
字符大于"
6"
字符,因为"
的ASCII码值为55,"
的ASCII码值为54,"
的ASCII码值大于"
的ASCII码值。
使用C语言描述就是'
>
'
这个表达式成立。
综上所述,判断某个字符是否为数字字符只要判断该字符的ASCII码值是否在"
和"
之间即可。
如果在这范围之内,该字符就是数字字符,否则不是。
/*fun函数统计tt字符串中奇数数字字符各自出现的次数,结果保存在数组num中*/
/*p指针指向tt字符串第一个字符,准备在循环中往后移动*/
/*作为保存个数的num数组和bb数组各成员初始化为0*/
/*num数组将要保存'
10个数字字符的个数*/
/*bb数组将要保存'
之间5个奇数数字字符的个数*/
/*while(*p)是while(*p!
while(*p)
/*判断p指针当前指向的字符的ASCII值是否在'
和'
的ASCII值之间*/
/*也就是判断p指针当前指向的字符是否为数字字符*/
/*如果是数字字符,则将bb数组中对应的成员增加一*/
/**p-'
取得p指针指向的数字字符与'
之间的差距*/
bb[*p-'
]++;
/*p指针向后移动一个字符位置*/
/*将奇数位置的数字字符的个数复制到num数组中*/
/*也就是将奇数数字字符各自出现的次数复制到num数组中,达到题目要求*/
num[j]=bb[i];
/*gets函数的作用是接收键盘输入的字符串,将其放入str参数中*/
/*gets函数定义在stdio.h中,所以需要#include<
*/
/*输出奇数和保存在num数组中的各个奇数出现的次数*/
此题目的关键之处就是如何判断两个字符的大小。
根据C语言的语法,两个字符进行比较大小实际上是比较这两个字符的ASCII码的大小。
题目的程序使用while循环逐一检查两个字符串a和b。
在fun函数中,p指针和q指针分别指向字符串a和b的第一个字符。
/*k指示数据放入c数组的位置,由于数组从0开始的,所以k初始值设置为0*/
intk=0;
/*while(*p||*q)是while(*p!
||*q!
/*只要p、q之间某个指针移动到字符串结尾处就结束循环*/
while(*p||*q)
/*比较p、q两个指针当前所指的字符,将大的字符放入c数组*/
/*if(*p)是if(*p!
/*p指针是否移动到了字符串结束之处,如果不是,p指针往后移动*/
/*q指针是否移动到了字符串结束之处,如果不是,q指针往后移动*/
/*c数组中放入一个新字符之后,指示放入位置的k需要增加一*/
/*这样才能指示下一个存放位置*/
/*puts函数的作用是在输出窗口中输出参数的内容*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 填空 4144