程序改错题答案

2019-01-10 10:29

C 程序改错题

一、要求说明:

1. 在考生文件夹的 Paper/CM 子文件夹中,已有 CM.c 文件 2. 该程序中标有“/****** 1 ******/”、“/****** 2*****/”、“/***** 3*****/”、“/******** 4 *******/”等部分为需要程序改错的标志,其下一行程序语句有错误。考生需根据程序的功能自行改错,并调试运行程序; 3. 单击“回答”按钮后进行程序改错; 二、注意事项:

1. 在改错时,不得删除改错标志(如:“/****** 1 ******/”等),考生在该改错标志下方的下一行,根据程序功能改错;调试运行程序。

2. 不得加行、减行、加句、减句。 三、程序功能:

1 输入x和正数eps,计算多项式

的和,直到末项的绝对值小于eps为止。 (1.19) #include #include void main()

{ double x,eps,s=1,t=1; /******* 1 ********/ float i=0;

/******* 2 **********/ scanf(\ do { i++;

/***** 3 *****/ t=-t*x/i; s+=t;

/***** 4 *****/

} while(fabs(t)>=eps); printf(\}

2 程序运行时,若输入a,n分别为3,6,则输出下列表达式的值: 3+33+333+3333+33333+333333 #include void main()

{ int a,n,i; long s=0,t; /******* 1 ********/ scanf(\ /******* 2 **********/ t=0;

/******* 3 **********/ for(i=1;i<=n;i++) { t=t*10+a;

/******* 4 ********/

(1.11) s=t+s; }

printf(\}

3 程序运行时输入n,输出n的所有质数因子。 (2.3)

例如:输入n为60,则输出 60=2*2*3*5 #include void main() { int n,i;

/****** 1 ******/ scanf(\ printf(\ /****** 2 ******/ i=2; /****** 3 ******/ while(n>1) if(n%i==0) {

printf(\ /****** 4 ******/ n=n/i; }

else i++; printf(\}

4 程序运行时输入整数n,则输出n的各位数字之和。 (1.12)

例如:输入n=1308,则输出12;n=-3204,则输出9 #include void main()

{ /****** 1 ******/ int n,s=0;

scanf(\ /****** 2 ******/ n=n<0?-n:n;

/****** 3 ******/ while(n>0){

/***** 4 *****/ s=s+n; n=n/10; }

printf(\}

5 程序运行时,输入10个数,分别输出其中的最大值和最小值。(2.6) #include void main()

{ float x,max,min; int i; /******** 1 *******/

for(i=1;i<=10;i++) { /****** 2 *******/ scanf(\

/******* 3 ********/ if(i==1)

{ max=x;min=x;} else {

if(x>max) max=x; if(x

/******* 4 ********/

printf(\}

6 输入n,再输入n个点的平面坐标,则输出那些距离坐标原点不超过5的点的坐标值。(2.11) #include #include #include void main() { int i,n;

struct axy { float x,y;}; /***** 1 *****/ struct axy *a; /***** 2 *****/ scanf(\

a=(struct axy*) malloc(n*sizeof(struct axy)); for(i=0;i

scanf(\ /***** 3 ******/ for(i=0;i

if(sqrt(pow(a[i].x,2)+pow(a[i].y,2))<=5) { printf(\

/*************** 4 **************/ printf(\ } }

7 循环输入x,n,调用递归函数计算,显示x的n次方。

当输入n小于0时,结束循环。 #include float f(float x,int n) { /******* 1 ******/ if(n==0) return 1; else

/****** 2 ******/ return x*f(x,n-1); }

void main()

{ float y,z; int m; while(1) {

scanf(\ /****** 3 *******/ if(m<0) break;

/******* 4 ********/ z=f(y,m);

printf(\ } }

8 输入两个字符串s1,s2后,将它们首尾先连。(2.7) #include void main()

{ char s1[80],s2[40]; int j; /***** 1 *****/ int i=0;

printf(\ gets(s1);

printf(\ gets(s2);

/********** 2********/ while(s1[i]!= '\\0') i++;

for(j=0;s2[j]!='\\0';j++) /****** 3 ******/ s1[i+j]=s2[j]; /******* 4 *******/ s1[i+j]= '\\0'; puts(s1); }

9 用“选择法”对10个整数按升序排序。(2.12) #include #define N 10 void main()

{ int i,j,min,temp;

int a[N]={5,4,3,2,1,9,8,7,6,0}; printf(\排序前:\ /******** 1 *********/ for(i=0;i

printf(\ putchar('\\n');

for(i=0;i

for(j=i+1;j

if(a[j]

temp=a[min];a[min]=a[i];a[i]=temp; }

printf(\排序后:\

for(i=0;i

10 将十进制的整数,以十六进制的形式输出。(1.6) #include

/********** 1 *********/ void DtoH(int n) { int k=n & 0xf;

if(n>>4!=0) DtoH(n>>4); /********** 2 *********/ if(k<10)

putchar(k+'0'); else

/********** 3 *********/ putchar(k-10+'a'); }

void main()

{ int a[4]={28,31,255,378},i; for(i=0;i<4;i++) {

printf(\ /******** 4 ********/ DtoH(a[i]); putchar('\\n'); } }

11 输入一个字符串,将其中所有的非英文字母的字符删除后输出。(1.4) #include #include #include void main()

{ char str[81]; int i,flag; /******* 1 ******/ gets(str);

for(i=0;str[i]!='\\0';) {

flag=tolower(str[i])>='a' && tolower(str[i])<='z'; /********* 2 *********/ flag=!flag; if(flag) {

/******* 3 ********/ strcpy(str+i,str+i+1); /******* 4 ********/ i--;


程序改错题答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:各地关于通讯费和交通补贴税前扣除标准文件汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: