上海理工大学C语言实验7答案.doc_第1页
上海理工大学C语言实验7答案.doc_第2页
上海理工大学C语言实验7答案.doc_第3页
上海理工大学C语言实验7答案.doc_第4页
上海理工大学C语言实验7答案.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验7 字符数组和字符串参考答案DIY1、调试下列程序(下列各程序中存在一些问题,通过调试发现问题,并加以修正,使其实现预期目标)1.1 以下程序统计字符串str中字符与数字字符的个数。代码 #include main() charstr81;intn1,n2;gets(str);for ( i = 0; stri ! = 0; i+ )if ( str i= )n1 +;if (stri=0 & stri = 9 )n2 +; printf( “#=%d, digit=%dn”, n1, n2 ); 参考答案:#include main() charstr81;inti,n1=0,n2=0;gets(str);for(i=0; stri!=0;i+)if (stri=#)n1+;if (stri=0 & stri=9)n2+; printf( #=%d, digit=%dn, n1, n2 ); 1.2 有n个国家参加运动会,开幕式上,各国的出场顺序以国名在英文字典中的位置先后为序,输出一份各国出场顺序表。代码#include#include#define N 10main() char nameN30, str30; int i, j; printf(Enter the name:n ); for(i=0; iN; i+) scanf(%s, &namei ); strupr(namei); /*输入国名,转换为大写*/ for( i = 0; iN; i+) /*排序*/ for(j= i; j namej) strcpy(namei,str ); strcpy(namei, namej); strcpy(namej, str); for( i=0; iN; i+) printf(%sn, namei);参考答案:#include#include#define N 10main() char nameN30, str30; int i, j; printf(Enter the name:n ); for(i=0; iN; i+) scanf(%s, namei ); strupr(namei); /*输入国名,转换为大写*/ for( i=0; iN; i+) /*排序*/ for(j=0; j0) strcpy(str,namej ); strcpy(namej, namej+1); strcpy(namej+1, str); for( i=0; iN; i+) printf(%sn, namei);2程序填空(请填写适当的符号,使程序实现其功能)2.1 程序的功能是删除字符串s中与变量c相同的字符。main( ) char s80, c; int i, j; scanf(%s, s); getchar(); c=getchar(); for (i=j=0; (1) ; i+) if (si!=c ) (2) ; sj=0; puts(s); 参考答案:si!=0; sj+=si; 2.2以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。 #include #include main() char s80, d80; int i,j; gets(s); for(i=j=0;si!=0;i+) if(_) dj=si; j+; dj=0; puts(d); 参考答案: if(si=0&si=9) 3编程3.1 最多从键盘输入80个字符,遇到回车键就结束,将输入的字符串按奇偶位置拆分,奇数位字符在前偶数位字符在后重新组成新的字符串输出,例如输入: ab12cd3456fg,则经过程序处理后输出: a1c35fb2d46g 。#include stdio.h#include string.hmain()char s100,d100,c100;int i,j,k;i=j=k=0;while(si=getchar()!=n)if(i+1)%2) dj+=si+; else ck+=si+; dj=ck=0; strcat(d,c); strcpy(s,d);puts(s);3.2 编程序把从键盘输入的英文短文作为一个字符串(长度不超过80),把短文中每个单词的首字母改成大写(原输入可以是大写),若还发现有两个或两个以上连续的空格,把它们删成只有一个空格,输出修改后的字符串。#include#includechar cha(char a)char c;if(a=a&a=z)c=a-32;else c=a;return c;main() char str81,s81,s181,c; int i,j,k,word=0; printf(Enter the stringn); gets(str); k=strlen(str);j=0; for(i=0;ik;i+,j+) if(stri!= ) sj=stri; else if(stri= &stri+1!= ) sj=stri; else if(stri= &stri+1= ) sj=stri+; sj=0; k=strlen(s);for(i=0,j=0;ik;i+,j+) if(si= ) s1j=si;s1+j=cha(s+i); else s1j=si; s1j=0; puts(s1); 本章测试 一、 单选题(10分) 1、以下不合法的数组定义是:_ B _。A char a=”string”; B char a6=”string”;C int a5=0,1,2,3,4,5; D int a=0,1,2,3,4,5; 2、若有以下语句, 则下面正确的描述是_ B _。char x=12345; char y=1,2,3,4,5;A x数组和y数组的长度相同 B x数组的长度大于y数组的长度C x数组的长度小于y数组的长度 D x数组等价于y数组3、若有以下定义:char s=“0187654321”; 则s 所占的内存空间为_ C _。A)1个字节 B)12个字节C)11个字节 D)10个字节 4、下列关于字符串的说法中错误的是 B A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符0作为字符串结束标志 B)0作为标志占用存储空间,计入串的实际长度 C)在表示字符串常量的时候不需要人为在其末尾加入0 D)在C语言中,字符串常量隐含处理成以0结尾 5、以下程序的输出结果是:_ C _。 #include “stdio.h” main() char s=abcdef; s3=0; printf(%sn,s); A) abcdef B) abcde C) abcd D) abc 6、有以下程序 #include stdio.h#include string.h main() char a=a,b,c,d, e, f, g,h,0; printf(%d,%dn,strlen(a),sizeof(a); 程序运行后的输出结果是D A) 9,9 B) 8,9 C) 1,8 D) 9,8 7、以下程序的输出结果是B #include stdio.h main() char ch35=AAAA,BBB,CC; printf(%sn,ch1); A AAAA B BBB C BBBCC D CC 8、当执行下面的程序时,如果输入ABC,则输出结果是_ A _。 #include “stdio.h” #include “string.h” main() char ss10=“1,2,3,4,5”; gets(ss); strcat(ss, “6789”); printf(“%sn”,ss); A ABC6789 B ABC67 C 12345ABC6 D ABC456789 9、有下面程序段 #include stdio.h #include string.h main() char a320=china,isa,bigcountry!; char k100=0,*p=k; int i; for(i=0;i3;i+) p=strcat(p,ai); i=strlen(p); printf(%dn,i); 则程序段的输出结果是B A)18 B)19 C)20 D)2110、有以下程序 #include #include main() char p10= abc,aabdfg,abbd,dcdbe,cd,t10; int i,j; for(i=0;i5;i+) for(j=i+1;j5;j+) if(strcmp(pi,pj)0) strcpy(t,pi); strcpy(pi,pj); strcpy(pj,t); printf(%dn,strlen(p0); 程序运行后的输出结果是 C 。 A 6 B 4 C 5 D 3二、填空题(7分)1、已知字符数组str的定义:char str =“ABCDEFGHIJ”;执行函数调用printf(“%.2s n”,str+5 )后的输出结果是FG 。2、若有定义语句: char s1 00,d100; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)while(si) dj= si+; j+; dj=0;3、定义char words1020; 使用printf写出语句:输出words中第一维下标i对应的字符串。 printf(“%s n”,wordsi )_。4、设有如下程序段,程序运行结果是_ P4CPU+17CRT _)。char s120=P4CPU;char s2=DVD+17CRT+56KMODEM;s210=0;strcat(s1,s2+3);puts(s1);5、下面的程序输出结果是 _-1_。 #include main() char language10=FORTRAN,BASIC,PASCAL,JAVA,C; int c; c=strcmp(language1,language3); printf(%dn,c); 6、下面程序的功能是将输入字符串的内容颠倒过来。请在空白处填空。#includevoid main( ) int i, j;char str80, k ; gets(str); for ( i=0, j=strlen(str) -1 ;ij ;i+,j-) k=stri; stri=strj; strj=k; puts(str); 三、程序调试题(10分) 1、下面程序功能是输入一个字符串,并将其中的字符a用字符串”shu”替代后输出。如输入为”123abcaHello”,则输出为”123shubcshuHello”。程序3-1 #include void main() int i; char line81; scanf(“%s”,&line); for (i=0; linei!=n; i+) if (linei=a) printf(“shu”); else printf(“%s”,linei); 参考答案:#include void main() int i; char line81; scanf(%s,&line); for (i=0; linei!=0; i+) if (linei=a) printf(shu); else printf(%c,linei); 2、下列程序的功能是:将字符串b连接到字符串a。程序3-2#includevoid main( ) char a=wel,b=come; int i,n=0; while(!an) n+; for(i=0;bi!=0;i+) an+i=bi; printf(%sn,a);参考答案:#includevoid main( ) char a20=wel,b=come; int i,n=0; while(an) n+; for(i=0;bi!=0;i+) an+i=bi; printf(%sn,a);四、程序填空题(30分)1、下面的程序功能是根据输入的学生姓名,查看该生是否是某个班的学生。(假设某个班有30人,姓名已根据字母顺序排列,即输入的班级学生姓名是有序的)程序4-1#include#include#define N 10main() char nameN30, str30; int i,low=0,high=N-1,m,find=0,lc; printf(Enter the name:n ); for(i=0; iN; i+) gets(namei); strupr(namei); /*输入姓名,转换为大写*/ printf(Enter the searched name:n ); gets(str); strupr(str); /*输入要查找的姓名,转换为大写*/ m=(low+high)/2; while(_&low0) high=m-1; else if(strcmp(namem,str)0) low=m+1; else find=1;lc=m; m=_; if(_) printf(Found,%d,lc+1); else printf(no found); 参考答案: while(!find&low=high)m=(low+high)/2; if(find)2、输入一行字符,从中读出所有单词,并将所有单词的首字符组成字符串后输出。设单词以空格分隔)程序4-2#include#includemain() char str81,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论