教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

C语言笔试--程序改错题(2)

来源:网络收集 时间:2026-09-02
导读: void main(void) { int i,k,m,n,s,p; //////////////////p=0 int a[100]; printf(\以内的自然数中的完数有:\ for (i=2;i printf(\总个数为: %d\\n\} gc165.c 程序中的函数find_str()用来返回字符串s2在字符串s1中

void main(void) {

int i,k,m,n,s,p; //////////////////p=0 int a[100];

printf(\以内的自然数中的完数有:\ for (i=2;i<=10000;i++) { s=0; m=0; for (k=1;k<=i/2;k++) { if (i%k==0) { s=s+k; a[m]=k; m=m+1; } } if (s=i) ////////if(s==i) { p=p+1; printf(\ n=1; while (n

printf(\总个数为: %d\\n\}

gc165.c 程序中的函数find_str()用来返回字符串s2在字符串s1中第一次出现的首地址;如果字符串s2不是s1的子串,则该函数返回空指针NULL。

现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。

include #include

char *find_str(char *s1,char *s2) {

int i,j,ls2;

ls2=strlen(s2);

for(i=0;i<=strlen(s1)-ls2;i++) {

for(j=0;j

if(j==ls2) return(s1+j); //////return(s1+j+1) }

6

return NULL; }

void main() {

char *a=\ ///////*c /* .............. comment two .............. */ c=find_str(a,b);

if(c!=NULL) printf(\ else printf(\未找到字符串%s\\n\}

gc166.c程序的功能是:计算并输出从键盘输入的任一正整数的各位数字之和s以及各位数字之积t。

例如,当输入的正整数为237时, s的值为12,t的值为42。

请改正程序中的两个错误,使它能得出正确的结果。注意:不得增行或删行,也不得修改程序的

结构。

#include \main() {

int n, yw, s=0, t=0; /////////t=1 scanf(\ while(n!=0) {

yw=n; s=s+yw; t=t*yw;

n=n; //////////// n=n/10 }

printf(\}

gc171.c的功能是实现求1000以内的自然数中的完数及其个数(所谓完数,指它恰好等于除它本身之外的因子之和,

如:6=1+2+3,28=1+2+4+7+14),并显示结果。但该程序中有2处错误,请调试并改正。不允许改变程序结构和增删语句。

#include void main(void) {

int i,k,m,n,s,p; ////////////////////p=0

7

int a[100];

printf(\以内的自然数中的完数有:\ for (i=2;i<=10000;i++) { s=0; m=0; for (k=1;k<=i/2;k++) { if (i%k==0) { s=s+k; a[m]=k; m=m+1; } } if (s=i) ////////////////////s==i { p=p+1; printf(\ n=1; while (n

printf(\总个数为: %d\\n\}

gc227.c 中函数fun的功能是:使输入的一个字符串按反序存放,并在主函数中输出。请改正函数fun中的错误,使它能得出正确的结果。

注意:不得改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include main()

{char str[100];

printf(\ scanf(\ fun(str);

printf(\}

fun(str) char str[]; {char t; int i,j;

for(i=0,j=strlen(str);i

{t=str[i];str[i]=str[j-1];str[j+1]=t;} //////{t=str[i];str[i]=str[j-1];str[j-1]=t;} }

8

gc228.c 代码功能为:使用指针将数组a中10个整数按相反的顺序存放。程序中有两处错误代码,请指出并改正之.

void inv(x,n) int *x,n;

{int *p,t,*i,*j,m=(n-1)/2; i=x;

j=n; ///////////j=x+n-1; p=x+m;

for(;i<=p;i++,j--) {t=*i;*i=*j;*j=t;} return; }

main() {int a[10],i;

printf(\ for(i=0;i<10;i++) scanf(\

printf(\ for(i=0;i<10;i++) printf(\printf(\

inv(a,n); /////////////////inv(a,10); printf(\for(i=0;i<10;i++) printf(\ printf(\ }

gc234.c中函数fun的功能是:求S的值。

设S= ((2*2)/3) * ((4*4)/(3*5)) * ... * ( (2*k*2*k)/((2*k-1)*(2*k+1)) )

请改正函数fun中的两个错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include \#include \

fun( int k ) ////////////////float fun(int k) { int n;

float s, w, p, q; n = 1; s = 1.0; while ( n <= k ) {

w = 2.0 * n;

9

p = w - 1.0; q = w + 1.0; s = s * w *w/p/q; n++; }

return s /////////////return s; }

main ( ) { clrscr( );

printf(\}

gc273.c功能是:一个偶数总能表示为两个素数之和。 请改正程序的两个错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include \#include \main()

{ int a,b,c,d;

scanf(\ ///////////scanf(\ for(b=3;b<=a/2;b+=2)

{ for(c=2;c<=sqrt(b);c++) if(b%c==0) break; if(c>sqrt(b))

d=a+b; ////////////d=a-b; else break;

for(c=2;c<=sqrt(d);c++) if(d%c==0) break; if(c>sqrt(d)) printf(\ } }

本程序用于输出如下所示的图形。请将源程序文件中的两个错误改正过来,注意在答题过程中不得对源程序增行或删行,也不得更改程序的结构。

1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321

10

…… 此处隐藏:658字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言笔试--程序改错题(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/414174.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)