您好,欢迎访问三七文档
实验六参考答案(参考答案)(1)设计程序sy6-1.c,输入一个字符串,将其中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入Ab,cD,则输出ab,cd。算法分析:使用for循环遍历字符串,在遍历的过程中,如果该元素是大写字母时,能过str[i]=str[i]+32把大写字母置换成相应小写字母参考答案:#includestdio.h#includestring.hvoidmain(){charstr[100];inti;printf(请输入一个字符串:);gets(str);for(i=0;str[i]!='\0';i++)if(str[i]='A'&&str[i]='Z')str[i]=str[i]+32;printf(输出转换后的字符串:);puts(str);}运行结果:(2)设计程序sy6-2.c,输入一个字符串,删除其中所有的小写字母'c'。例如,若输入字符串acabcbcdef,则应输出字符串aabbdef算法分析:在原字符数组中删除指定字符时,当遍历的字符不等于要删除的字符时,在原数组中赋值。注意在赋值的时候,元素下标不同步,所以用j做为删除后的下标,并且是赋一个值,其下标自动加1,所以最后j的值为数组的长度,另外为了保证字符数组能正确输出,所以在最后要人为加一个\0参考答案:#includestdio.h#includestring.hvoidmain(){inti;charstr[20];printf(请输入一个字符:);gets(str);for(i=0;str[i]!='\0';i++)if(str[i]!='c')str[j++]=str[i];//将指定字符c删除str[j]='\0';printf(请输入一个字符:);puts(str);}运行结果:(3)设计程序sy6-3.c,输入一个字符串,统计其中'a'到'z'26个英文小写字母各自出现的次数。例如运行时输入字符串:abcdefgabcdeabc后,则输出的结果应该是:33322110000000000000000000算法分析:用a数组的a[0](其中0下标是'a'-'a')存放'a'字符的个数,a[1](其中1下标是'b'-'a')存放'b'字符的个数,a[str[i]-'a'](其中str[i]-'a'下标是str[i]字符对应存储个数的下标)存放str[i]字符的个数。因此在程序中只需用str[i]-'a'作为a下标的元素进行自加即可。参考答案:#includestdio.hvoidmain(){charstr[100];inti,a[26]={0};//分别统计26小写字母的个数,初始时都为0个printf(请输入一个字符串:);gets(str);for(i=0;str[i]!='\0';i++)if(str[i]='a'&&str[i]='z')//是小写字母才统计a[str[i]-'a']++;//str[i]-'a'作为a数组下标的元素进行自加,//即可使相应统计个数的元素值加一for(i=0;i26;i++)//输出统计结果printf(%c:%-3d,'a'+i,a[i]);}运行结果:(4)设计程序sy6-4.c,将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串-1234,则函数把它转换为整数值-1234。算法分析:将数字字符转换成数字的做法是,将该数字字符减去'0'字符,在转换时需要逐个字符判断为数字字符才转换,不是不转换。为了保证转换的数字为一个原顺序的整数,则把s*10后再把转换后的数字累加入s中。最后再对字符串中的第一个字符进行判断看是否是‘-’;如果是,则把s置成-s即可参考答案:#includestdio.hvoidmain(){charstr[100];inti,s=0;printf(请输入一个字符串:);gets(str);for(i=0;str[i]!='\0';i++)//逐一把每个数字字符转换累加到数s中if(str[i]='0'&&str[i]='9')s=s*10+str[i]-'0';if(str[0]=='-')s=-s;//判断符号位printf(result=%d\n,s);}运行结果:(5)设计程序sy6-6.c,将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,字符串数组中的M个字符串为:AAAABBBBBBBCC则合并后的字符串的内容应是:AAAABBBBBBBCC。算法分析:首先对p串初始化为'\0'再将s中的每个字符串连接在p串的后边。但要注意将string.h包含在程序中参考答案:#includestdio.h#includestring.h#defineM3#defineN80main(){chars[M][N]={AAAA,BBBBBBB,CC},p[100]={'\0'};//p用来存放合并后的新串inti;for(i=0;iM;i++)strcat(p,s[i]);//字符串连接printf(\n结果是:\n%s\n,p);}运行结果:
本文标题:实验六参考答案
链接地址:https://www.777doc.com/doc-2459317 .html