当前位置:首页 > c语言阅读程序题
{j=i;
while(j if(strcmp(s[i],s[j])==0) {for(k=j;k return n; } main() { char line[10][10]={“shanghai”,”beijing”,”nanjing”,”shanghai”,”nanjing”}; int k,n=5; n=del_line(line,n); for(k=0;k 将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。 2•改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译 预处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myfl.c)必须放在考试软盘的根目录下,供阅卷用,否则不 予评分。 二:编程题(20分) 1. 编写函数int gcd_max(int a[ ],int b[ ],int n),求长度为n的数组a中所有相邻两元素的最大公约数(共n-1个),并将之依次保存到数组b中,函数返回b数组中最大数的下标 2. 编写函数main函数,声明一个数组并用以下测试数据对其初始化,调用函数gcd_max,将求得的所有公约数,最大公约数及其下标写入文件myf2.out中。 例如:输入测试数据3,6,4,16,8,5,15,10,12,18,则输出结果应为:3,2,4,8,1,5,5,2,6,max1=3,max=8 1.将源文件取名为myf2.c,输出结果文件取名为myf2.out。 ? 2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数 实现。 3.源程序文件和运行结果文件均须保存在T:盘的根目录下,供阅卷用。 4.不要将myf2.obj、myf2.exe保存到T:盘中。 改错答案: (1) int del_line(char s[10][ ],int n)修改为: int del_line(char s[ ][10],int n) (2) j=i; 修改为:j=i+1; (3) s[k]=s[k+1] 修改为:strcpy(s[k],s[k+1]); (4) puts(line); 修改为: puts(line[k]); 编程题答案: #include \ int gcd_max(int a[ ],int b[ ], int x) { int i,k=0,t,r,m,n; int max,maxk; for(i=0;i m=a[i];n=a[i+1]; if(m m=n;n=r;r=m%n; } b[k++]=n; } max=b[0]; maxk=0; for(i=1;i if(max main() { FILE *fp; int a[10]={ 3,6,4,16,8,5,15,10,12,18},i,k; int b[9]={0}; if((fp=fopen(\ { printf(\ exit(0); } k=gcd_max(a,b,10); for(i=0;i<9;i++) { printf(\ fprintf(fp,\ } fprintf(fp,\ fprintf(fp,\ fclose(fp); } 一:改错题(20分) 题目: 函数find_replace的功能是:在s1串中查找s2子串,并用s3子串替换找到的所有s2子串,若s1串中没有出现s2子串,则不做替换并使函数返回0,否则返回1. 例如:若s1子串为”This is a test program and a test data.”,s2子串为”test”,s3子串为”actual”,若程序正确,输出结果应为:”This is a actual program and a actual data.” 含有错误的源程序如下: #include int find_replace(char *s1, char *s2, char s3) { int i,j,k=0,t=0; char temp[80]; if(*s1='\\0' || *s2='\\0') return t; for(i=0;s1[i]!='\\0';i++) { for(j=0,k=0;s1[j]= =s2[k];j++,k++); /*比较s2是否在s1中*/ if(s2[k]= ='\\0') { strcpy(temp, s1[j]); strcpy(&s1[i],s3); i=i+strlen(s3); strcpy(&s1[i],temp); t=1; } } return t; } main() { char line[80]=\ substr1[10]=\ puts(line); if(find_replace(line,substr1,substr2)) puts(line); else printf(\ } 编程题目: [题目] 1. 编写函数int encode(int a[ ][4]),对二维数组中左下三角的全部元素(包括对角线上的元素)做如下变换:(1)若该元素不是素数则保持不变(2)若该数是素数,则用大于它的最小素数替换该数,函数返回二维数组左下三角的元素中素数的个数 2. 编写main函数,声明一个二维数组并用以下测试数据给二维数组赋初值。调用encode函数对该数组作变换,将变换后的数组全部元素(以二维数组形式)及左下三角元素中素数的个数写入文件myf2.out中 测试数据 3 6 4 7 8 5 9 10 12 19 7 20 4 14 21 23 变换后的数据 5 6 4 7 8 7 9 10 12 23 11 20 4 14 21 29 1.将源文件取名为myf2.c,输出结果文件取名为myf2.out。 ? 2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数 实现。 3.源程序文件和运行结果文件均须保存在T:盘的根目录下,供阅卷用。 4.不要将myf2.obj、myf2.exe保存到T:盘中。 改错题答案: (1) int find_replace(char *s1, char *s2, char s3) 修改为:int find_replace(char *s1, char *s2, char *s3) (2) if(*s1='\\0' || *s2='\\0') 修改为: if(*s1= ='\\0' || *s2= ='\\0') (3) for(j=0,k=0;s1[j]= =s2[k];j++,k++); 修改为:for(j=i,k=0;s1[j]= =s2[k];j++,k++); (4) strcpy(temp, s1[j]); 修改为: strcpy(temp, &s1[j]); 编程题答案: #include #include int prime(int n) /*判断素数算法*/
共分享92篇相关文档