1、实验 7 字符数组和字符串参考答案DIY1、调试下列程序(下列各程序中存在一些问题,通过调试发现问题,并加以修正,使其实现预期目标)1.1 以下程序统计字符串 str 中字符 与数字字符的个数。代码#includemain()charstr81;int n1,n2;gets(str);for ( i = 0; stri ! = 0; i+ )if ( str i= )n1 +;if (stri=0 int i,n1=0,n2=0;gets(str);for(i=0; stri!=0;i+)if (stri=#)n1+;if (stri=0 int i, j;printf(“Enter the
2、name:n “);for(i=0; i namej) strcpy(namei,str ); strcpy(namei, namej); strcpy(namej, str);for( i=0; i#include#define N 10main() char nameN30, str30; int i, j;printf(“Enter the name:n “);for(i=0; i0) strcpy(str,namej ); strcpy(namej, namej+1); strcpy(namej+1, str);for( i=0; i#include main() char s80,
3、d80; int i,j;gets(s);for(i=j=0;si!=0;i+)if(_) dj=si; j+; dj=0;puts(d);参考答案:if(si=0if(a=aint i,j;for(i=0;imain() 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
4、(str);for ( i=0, j=strlen(str) -1 ; ivoid main() int i; char line81;scanf(“%s”,for (i=0; linei!=n; i+)if (linei=a)printf(“shu”);elseprintf(“%s”,linei);参考答案:#include void main() int i; char line81;scanf(“%s“,for (i=0; linei!=0; i+)if (linei=a)printf(“shu“);elseprintf(“%c“,linei);2、下列程序的功能是:将字符串 b 连接到
5、字符串 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 人,姓名已根据字
6、母顺序排列,即输入的班级学生姓名是有序的)程序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; i0)high=m-1;else if(strcmp(namem,str)#includemain() char str81,s20,c;int i,j,word=0;printf(“Enter the stringn“); gets(str);i=0;j=0;while(c=stri)!=0)
7、 if(c= ) /*空格表示单词结束*/ _; else if(c!= _=c;i+;_;printf(“The new string is:%sn“,s);参考答案:s+j=stri+1; s0=c;s+j=0;五、编程题(36 分)1、输入一行字符,将双引号里面的字符不动,双引号外面的小写字母转换为大写字母。#include “stdio.h“#include “string.h“void main()char c,s100,s1100;int i=0,j=0,k;gets(s);k=strlen(s);while(si!=0)if(si=“)j=i+1;break;i+; while(sj!=0) if(sj=aj+;puts(s);2、不用 C 字符串函数,编写一个实现两个字符串连接的函数。#include “stdio.h“void main() char s1100,s2100,s3200;int i=0,j=0,k=0;gets(s1);gets(s2);while(s1i!=0) s3j+=s1i;i+;while(s2k!=0) s3j+=s2k;k+;s3j=0;puts(s3);