您好,欢迎访问三七文档
C程序改错题一、要求说明:1.在考生文件夹的Paper/CM子文件夹中,已有CM.c文件2.该程序中标有“/******1******/”、“/******2*****/”、“/*****3*****/”、“/********4*******/”等部分为需要程序改错的标志,其下一行程序语句有错误。考生需根据程序的功能自行改错,并调试运行程序;3.单击“回答”按钮后进行程序改错;二、注意事项:1.在改错时,不得删除改错标志(如:“/******1******/”等),考生在该改错标志下方的下一行,根据程序功能改错;调试运行程序。2.不得加行、减行、加句、减句。三、程序功能:1输入x和正数eps,计算多项式的和,直到末项的绝对值小于eps为止。(1.19)#includestdio.h#includemath.hvoidmain(){doublex,eps,s=1,t=1;/*******1********/floati=0;/*******2**********/scanf(%lf%lf,&x,&eps);do{i++;/*****3*****/t=-t*x/i;s+=t;/*****4*****/}while(fabs(t)=eps);printf(%f\n,s);}2程序运行时,若输入a,n分别为3,6,则输出下列表达式的值:(1.11)3+33+333+3333+33333+333333#includestdio.hvoidmain(){inta,n,i;longs=0,t;/*******1********/scanf(%d%d,&a,&n);/*******2**********/t=0;/*******3**********/for(i=1;i=n;i++){t=t*10+a;/*******4********/s=t+s;}printf(%ld\n,s);}3程序运行时输入n,输出n的所有质数因子。(2.3)例如:输入n为60,则输出60=2*2*3*5#includestdio.hvoidmain(){intn,i;/******1******/scanf(%d,&n);printf(%d=,n);/******2******/i=2;/******3******/while(n1)if(n%i==0){printf(%d*,i);/******4******/n=n/i;}elsei++;printf(\b\n);}4程序运行时输入整数n,则输出n的各位数字之和。(1.12)例如:输入n=1308,则输出12;n=-3204,则输出9#includestdio.hvoidmain(){/******1******/intn,s=0;scanf(%d,&n);/******2******/n=n0?-n:n;/******3******/while(n0){/*****4*****/s=s+n%10;n=n/10;}printf(%d\n,s);}5程序运行时,输入10个数,分别输出其中的最大值和最小值。(2.6)#includestdio.hvoidmain(){floatx,max,min;inti;/********1*******/for(i=1;i=10;i++){/******2*******/scanf(%f,&x);/*******3********/if(i==1){max=x;min=x;}else{if(xmax)max=x;if(xmin)min=x;}}/*******4********/printf(%f,%f\n,max,min);}6输入n,再输入n个点的平面坐标,则输出那些距离坐标原点不超过5的点的坐标值。(2.11)#includestdio.h#includemath.h#includestdlib.hvoidmain(){inti,n;structaxy{floatx,y;};/*****1*****/structaxy*a;/*****2*****/scanf(%d,&n);a=(structaxy*)malloc(n*sizeof(structaxy));for(i=0;in;i++)scanf(%f%f,&a[i].x,&a[i].y);/*****3******/for(i=0;in;i++)if(sqrt(pow(a[i].x,2)+pow(a[i].y,2))=5){printf(%f,,a[i].x);/***************4**************/printf(%f\n,(a+i)-y);}}7循环输入x,n,调用递归函数计算,显示x的n次方。当输入n小于0时,结束循环。#includestdio.hfloatf(floatx,intn){/*******1******/if(n==0)return1;else/******2******/returnx*f(x,n-1);}voidmain(){floaty,z;intm;while(1){scanf(%f%d,&y,&m);/******3*******/if(m0)break;/*******4********/z=f(y,m);printf(%f\n,z);}}8输入两个字符串s1,s2后,将它们首尾先连。(2.7)#includestdio.hvoidmain(){chars1[80],s2[40];intj;/*****1*****/inti=0;printf(Inputthefirststring:);gets(s1);printf(Inputthesecondstring:);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)#includestdio.h#defineN10voidmain(){inti,j,min,temp;inta[N]={5,4,3,2,1,9,8,7,6,0};printf(排序前:);/********1*********/for(i=0;iN;i++)printf(%4d,a[i]);putchar('\n');for(i=0;iN-1;i++){/*****2******/min=i;for(j=i+1;jN;j++)/******3******/if(a[j]a[min])min=j;temp=a[min];a[min]=a[i];a[i]=temp;}printf(排序后:);for(i=0;iN;i++)printf(%4d,a[i]);/******4********/putchar('\n');}10将十进制的整数,以十六进制的形式输出。(1.6)#includestdio.h/**********1*********/voidDtoH(intn){intk=n&0xf;if(n4!=0)DtoH(n4);/**********2*********/if(k10)putchar(k+'0');else/**********3*********/putchar(k-10+'a');}voidmain(){inta[4]={28,31,255,378},i;for(i=0;i4;i++){printf(%d--,a[i]);/********4********/DtoH(a[i]);putchar('\n');}}11输入一个字符串,将其中所有的非英文字母的字符删除后输出。(1.4)#includestdio.h#includestring.h#includectype.hvoidmain(){charstr[81];inti,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--;}i++;}printf(%s\n,str);}12显示两个数组中,数值相同的元素。#includestdio.hvoidmain(){/********1*******/inti,j;inta[6]={1,3,5,7,9,11};intb[7]={2,5,7,9,12,16,3};/*******2*******/for(i=0;i6;i++){for(j=0;j7;j++)/********3*******/if(a[i]==b[j])break;/*******4********/if(j7)printf(%d,a[i]);}printf(\n);}13逐个显示字符串中各字符的机内码。提示:英文字符字母的机内码首位为0,汉子的每个字节首位为1.程序正确运行后,显示如下:#includestdio.hvoidmain(){/********1*******/chara[7]=a2汉字;inti,j,k;/********2*******/for(i=0;a[i]!='\0';i++){printf(a[%d]的机内码为:,i);for(j=1;j=8;j++){k=a[i]&0x80;if(k!=0)putchar('1');/******3*****/elseputchar('0');/******4*****/a[i]=a[i]1;}printf(\n);}}141.输入一个整数mm作为密码,将字符串中每个字符与mm做一次按位异或操作,进行加密,输出被加密后的字符串(密文)。2.再将密文中的每个字符与mm做一次按位异或操作,输出解密后的字符串(明文)。#includestdio.hvoidmain(){chara[]=a2汉字;intmm,i;/********1*******/printf(请输入密码:);/********2*******/scanf(%d,&mm);for(i=0;a[i]!='\0';i++)/*各字符与mm作一次按位异或*/a[i]=a[i]^mm;puts(a);/***各字符与mm再作一次按位异或***//********3*******/for(i=0;a[i]!='\0';i++)/******4******/a[i]=a[i]^mm;puts(a);}15输入n(小于10的正整数),输出如下形式的数组。例如:输入n=5,数组为:输入n=6,数组为:#includestdio.hvoidmain(){inta[9][9]={{0}},i,j,n;/***********1**************/while(scanf(%d,&n),n0||n9);for(i=0;in;i++){/******2********/for(j=0;j=i;j++)/*******3*********/a[i][j]=i-j+1;}for(i=0;in;i++){for(j=0;jn;j++)/********4*********/printf(%3d,a[i][j]);putchar('\n');}}
本文标题:程序改错题答案
链接地址:https://www.777doc.com/doc-2238036 .html