- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C 语言上机模拟题
一、改错题
改错题(18 分)
【题目】:函数 fun 的功能是:输出 M 行 M 列整数方阵,然后求两条对角线上各元素之和, 返回此和数。
含有错误的程序如下: #include conio.h #include stdio.h #define M 5
int fun(int n,int xx[][])
{ int i,j,sum;
printf(\nThe %d x %d matrix:\n,M,M); for(i=0;iM;i++)
{ for(j=0;jM;j++) printf(%f,xx[i][j]); printf(\n);
}
for(i=0;in;i++) sum+=xx[i][i]+xx[i][n-i];
return(sum);
}
int main( )
{int aa[M][M]={ {1,2,3,4,5},{4,3,2,1,0},
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
clrscr( );
printf (\nThe sum of all elements on 2 diagnals is %d.,fun(M,aa)); return 0;
}
【要求】
将上述程序录入到文件 myf1.c 中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。
改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。
答案:
int fun(int n,int xx[ ][ ])
int i,j,sum;
改为
改为
int fun(int n,int xx[ ][M])
int i,j,sum=0;
3.printf(%f,xx[i][j]);
改为
printf(%d,xx[i][j]);
4.sum+=xx[i][i]+xx[i][n-i]; 改为 sum+=xx[i][i]+xx[i][n-i-1];
改错题(18 分)
【题目】:函数 fun 的功能是:将 p 所指字符串中的所有字符复制到 b 中,要求每复制三个字符之后插入一个空格。
例如,在调用 fun 函数之前给 a 输入字符串:ABCDEFGHIJK, 调用函数之后,字符数组 b 中的内容则为:ABC DEF GHI JK。含有错误的程序如下:
#include stdio.h
void fun(char *p, char *b)
{ int i, k=0; while(*p)
{ i=1;
while( i3 *p )
{
b[k]=p;
k++; p++; i++;
}
if(*p)
{
b[k++]= ;
}
}
b[k]= \0;
}
int main()
{ char a[80],b[80];
printf(Enter a string: ); gets(a); printf(The original string: ); puts(a); fun(a,b);
printf(\nThe string after insert space: ); puts(b); printf(\n\n);
return 0;
}
【要求】
将上述程序录入到文件 myf1.c 中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译处理命令,但不能增加其他语句,也不能删去整条语句。
改正后的源程序(文件名myf1.c)必须放在考试软盘的根目录下,供阅卷用,否则不予评分。
答案:
1. while( i3 *p ) 改为 while( i=3 *p ) 2. b[k]=p; 改为 b[k]=*p;
3. b[k++]= ; 改为 b[k++]= ;
4. b[k]= \0; 改为 b[k]= \0
改错题(18 分)
【题目】:N 个有序整数列已放在一维数组中,下列给定程序中函数 fun 的功能是:利用折半查找算法查找整数 m 在数组中的位置。若找到,则返回其下标值,反之,则返回-1。
提示:折半查找的基本算法是:每次查找前先确定数组中待查的范围,low 和 high,然后把 m 与中间位置(mid)中元素的值进行比较,如果 m 的值大于中间位置元素中的值, 则下一次的查找范围放在中间位置之后的元素中,反之,下一次的查找范围落在中间位置之前的元素中。直到 lowhigh,查找结束。
含有错误的程序如下:
#include stdio.h #define N 10
void fun (int a[ ], int m)
{ int low=
文档评论(0)