C语言程序改错题及标准答案
最新二级C语言考试题库及答案程序改错专项练习 精华版

1、在考生文件夹下,给定程序MODI.C的功能是:
求一维数组a中所有元素的平均值,结果保留两位小数。
例如,当一维数组a中的元素为:10,4,2,7,3,12,5,34,5,9
程序的输出应为:The aver is: 9.10。
#include <conio.h>
#include <stdio.h>
#include <math.h>
void main()
{
int score,t;
printf("Please enter a score:");
do
{scanf("%d",&score);}
while(score<0||score>100);
t=score/10;
/*************found**************/
#include <stdio.h>
void main()
{
int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos;
max = a[0];
pos = 0;
for ( i=1; i<10; i++)
/************found************/
if (max > a[i])
4 2 34
7 3 12
5 6 5
程序的输出应为:The min is: 2。
#include <conio.h>
#include <stdio.h>
void main()
{
C语言程序改错——答案

int j,c=0; /**********FOUND**********/
float j=0;
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资0配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试.,卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试5交写卷、底重保电。要护气管设装设线备置备4敷高动调、设中作试电技资,高气术料并中课3中试且资件、包卷拒料中管含试绝试调路线验动卷试敷槽方作技设、案,术技管以来术架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。
#include "stdio.h"#define N 20void fun(int a[], int n){int i, j, t, k;for (j = 0 ;j < n-1 ;j++){/**********ERROR**********/k = jfor (i = j+1;i < n; i++)/**********ERROR**********/if(a[i] >a[k])/**********ERROR**********/k=j;t = a[k] ;a[k] = a[j] ;a[j] = t;}}main(){int a[N]={9,6,8,3,-1},i, m = 5;printf("排序前的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");fun(a,m);printf("排序后的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");}【参考答案】k = j;【参考答案】if(a[i] < a[k])if(a[k] > a[i])【参考答案】k = i;(二)功能:求广义菲玻那契级数的第n项。
广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,……项值通过函数值返回 main ( )函数。
例如:若 n = 15,则应输出:The value is: 2209。
#include "conio.h"#include "stdio.h"long fun ( int n ){long a=1, b=1, c=1, d=1, k;/**********ERROR**********/for (k=4; k<n; k++){d = a+b+c;/**********ERROR**********/a=bb=c;c=d;}/**********ERROR**********/return k;}main( ){int n = 15;printf( "The value is: %ld\n", fun ( n ) );}【参考答案】for (k=4; k<=n; k++)【参考答案】a=b;【参考答案】return d;(三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
程序改错完整版---C语言

(一)功能:用选择法对数组中的 #include "stdio.h"n 个元素按从小到大的顺序进行排序#define N 20 void fun(int a[], int n){int i, j, t, k;for (j = 0 ;j < n-1 ;j++) {k = jfor (i = j+1;i < n; i++)if(a[i] >a[k])k=j; t = a[k] ; a[k] = a[j] ; a[j] = t;}}main(){int a[N]={9,6,8,3,-1},i, m = 5; printf(" 排序前的数据 :") ; for(i = 0;i < m;i++) printf("%d ",a[i]);printf("\n");fun(a,m);printf(" 排序后的数据 :") ; for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");【参考答案】 k = j;【参考答案】 if(a[i] < a[k]) if(a[k] > a[i]) ERROR* ERROR* ERROR*参考答案】k = i;(二)功能:求广义菲玻那契级数的第n项。
广义菲玻那契级数的前n 项为:1 ,1,1,3,5,9,17,31,⋯⋯项值通过函数值返回main ( ) 函数。
例如:若n = 15 ,则应输出:The value is: 2209 。
#include "conio.h"#include "stdio.h" long fun ( int n ) {long a=1, b=1, c=1, d=1, k;ERROR*for (k=4; k<n; k++) {d = a+b+c;ERROR*a=bb=c; c=d;}ERROR*return k;}main( ){int n = 15;printf( "The value is: %ld\n", fun ( n ) ); }【参考答案】for (k=4; k<=n; k++) 【参考答案】a=b;【参考答案】return d;(三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
C语言程序改错基本题库

if(a[i]<0) break;
s +=a[i];
coun t++;
}
printf(“s=%n”,s, count);
程序改错
一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执 行结果。
1.求1234n
mai n()
{ long int sum;
int n,i=1;
scan f("%d", n);
printf( \n”
while(i<n)
{ sum=sum*i;
i++;
}
pri
}
2.求一个数组中最大值及其下标。
第八行改为:if(max<a[j])
第十三行改为:printf(下标:%d\n最大值:%d”,m,max)
3.第三行改为:int c;
第五行改为:printf( c=%d”,c);
4.第一行改为:float sum(float x, float y );
第四行改为:return(z);
第八行:float c;
c=a+b;
printf( C=%d”
}
4.用一个函数求两个数之和。
sum(x,y)
{ float z;
z=x+y;
return;
}
main ()
{ float a,b;
intc,
sca nf("%f,%f",&a,&b);
c=sum(a,b);
prin tf("\nSum is %f",sum);
}
5•用指针作函数参数,对输入的两个整数按大小顺序输出。
C语言程序改错基本题库

北京石油化工学院12级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。
1.求1234nmain(){ long int sum;int n,i=1;scanf("%d",n);printf(“\n”);while(i<n){ sum=sum*i;i++;}printf("sum=%d",sum);}2.求一个数组中最大值及其下标。
main( ){ int max,j,m;int a[5];for(j=1;j<=5;j++)scanf(“%d”,a);max=a[0];for(j=1;j<=5;j++)if(max>a[j]){ max=a[j];m=j;}printf(“下标:%d\n最大值:%d”, j, max)}*3. 求3+4int a=3,b=4;main(){ int a,c;c=a+b;printf(“c=%d”);}4.用一个函数求两个数之和。
sum(x,y){ float z;z=x+y;return;}main(){ float a,b;int c;scanf("%f,%f",&a,&b);c=sum(a,b);printf("\nSum is %f",sum);}5.用指针作函数参数,对输入的两个整数按大小顺序输出。
swap(int *p1,*p2){ int *p;*p=*p1;*p1=*p2;*p2=*p;}main(){ int a,b;int *q1,*q2;scanf("%d,%d",&a,&b);&q1=a,&q2=b;if(a<b) swap(*q1,*q2);printf("\n%d,%d\n",q1,q2);}前五题答案:1.sum应初始化即加入sum=1第四行改为:scanf(“%d”,&n);第六行改为:while(i<=n)第十行改为:printf("sum=%ld",sum);2. 第四行改为:for(j=0;j<5;j++)第五行改为:scanf(“%d”,&a[j]);第七行改为:for(j=0;j<5;j++)第八行改为:if(max<a[j])第十三行改为:printf(“下标:%d\n最大值:%d”, m,max)3. 第三行改为:int c;第五行改为:printf(“c=%d”,c);4. 第一行改为:float sum(float x, float y );第四行改为:return(z);第八行:float c;第十一行:printf("\nSum is %f",c);5. 第2、3行:{ int t;t=*p1;*p1=*p2;*p2=t;第9行:q1=&a,q2=&b;第10行:if(a<b) swap(q1,q2);第11行:printf("\n%d,%d\n",*q1,*q2);6.程序读入20个整数,统计非负数个数,并计算非负数之和.#include “stdio.h”main(){int i, a[20], s , count ;s=count=1; s=count=0;for( i=1; i<20; i- -) for(i=0;i<20;i--)scanf(“%d”, a[i] );scanf(“%d”,&a[i]);for(i=0;i<20;i++){if(a[i]<0)break; continue;s +=a[i];count++;}printf(“s=%f count=%f\n”, s, count);}printf(“s=%d count=%d\n”,s,count);7. x , y两个数中,让x中存较大的数,y存较小的数#include<stdio.h>main( ){int x , y=200 , z=0;x=180;if ( x<y)z=x; x=y; y=z; { z=x;x=y;y=z;}printf(“x=%d,y=%d\n”,&x,&y);}printf(“x=%d,y=%d\n”,x,y); }8. 从键盘输入整数x的值,并输出y的值.main(){ float x,y; 正确的: int x; float y;scanf(“%d”,&x);y=3.5+x;printf(“y=%d”); printf(“y=%f”,y);}9. 从1加到100,并输出.Main ( ){int i , sumi=1;While ( i<=100 ){ sum=sum*i;i++ ;}printf ( “%c”, sum )}10、求一个4×4矩阵的对角线元素之和main( ){int a[4][4], sum=0;int i,j;printf(“Enter data:\n”);for(i=0;i<=4;I++)for(j=0,j<=4;j++)scanf(“%d”,&a[i][j]);for(i=0;i<4;I++)for(j=0;j<4;j++)sum=sum+a[i][j];printf(“sum=%5d\n”,sum);}12.求1+2+3+4+……n的值。
C语言程序改错基本题库

北京石油化工学院12级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。
1 .求1234nmai n(){ long int sum;int n,i=1;scan f("%d", n);prin “ \n ”);while(i< n){ sum=sum* †i;}†3.求3+4int a=3,b=4;main (){ int a,c;c=a+b;printf( “c=%d');}4. 用一个函数求两个数之和。
}前五题答案:应初始化即加入sum=1第四行改为:scanf( “ %d,&n);第六行改为:while(i<=n)第十行改为:prin tf("sum=%ld",sum);2. 第四行改为:for(j=0;j<5;j++)第五行改为:scanf( “ %d,&a[j]);第七行改为:for(j=0;j<5;j++)第八行改为:if(max<a[j])第十三行改为:printf( "下标:%d\n最大值:%d”3. 第三行改为:int c;第五行改为:printf( “ c=%d' ,c);4. 第一行改为:float sum(float x, float y );i++;}prin tf("sum=%d",sum);}2 .求一个数组中最大值及其下标。
mai n(){ int max,j,m;int a[5];for(j=1;j<=5;j++)scanf( “ %d ,a);第四行改为:return(z);第八行:float c;第 ^一行:prin tf("\nSum is %f',c);5. 第2、3 行:{ int t;t=*p1;*p1=*p2;*p2=t;7. x , y 两个数中,让x中存较大的数,y存较小的数#in clude<>mai n(){int x , y=200 , z=0;x=180;if ( x<y)z=x; x=y; y=z; { z=x;x=y;y=z;} printf( “x=%d,y=%d\n” ,&x,&y);}printf( “x=%d,y=%d\n” ,x,y); }8. 从键盘输入整数x的值,并输出y的值.main (){ float x,y; ______ 正确的: int x; float y;scanf( “ %d,&x);y=+x;printf( "y=%d' ); printf( _____ “y=%f”,y);}9. 从1加到100,并输出.Mai n (){ int i,j,temp,*p;for(i=0; i<n-1; i++)for(j=n-1; j>i; j--)if(data[j]<data[j-1])max=a[0];for(j=1;j<=5;j++)if(max>a[j]){ max=a[j]; m=j;}printf( "下标:%d\n 最大值:%d”,j, max)sum(x,y){ float z;z=x+y;return;}main (){ float a,b;int c;sca nf("%f,%f",&a,&b);c=sum(a,b);prin tf("\nSum is %f",sum);}5 •用指针作函数参数,对输入的两个整数按大小顺序输出。
C语言程序改错答案

C语⾔程序改错答案题⽬:下题是⼀段有关结构体变量传递的程序.答案:1). a.c='a';2). printf("%d,%c",a.x,a.c);3). b.c='y';题⽬:下列程序中,函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后⾯。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“ABCDEEDCBA”。
答案:1). for(i=0;i2). t[sl+i]=s[sl-i-1];3). t[sl+i]='\0';题⽬:编写函数fun其功能是在键盘上输⼊⼀个3⾏3列矩阵的各个元素的值(值为整数),然后输出矩阵第⼀⾏与第三⾏元素之积,并在fun()函数中输出。
答案:1). sum=1;2). for(i=0;i<3;i+=2) 或 for(i=0;i<3;i=i+2) 或 for(i=0;i<3;i++,i++)3). sum=sum*a[i][j]; 或 sum*=a[i][j];题⽬:函数fun的功能是:⽤下⾯的和式求圆周率的近似值。
直到最后⼀项的绝对值⼩于等于0.0001。
π 1 1 1— = 1 - — + — - — + ...2 3 5 7请改正程序中的错误,使它能得出正确的结果。
答案:1). #include "math.h"2). float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1;3). while(fabs(t)>1e-4) 或 while(0.00010.0001)4). printf("pi=%f\n",★s★*★4★);题⽬:给定程序MODI1.C中函数fun的功能是:将长整型数中每⼀位上为奇数的数依次取出,构成⼀个新数放在t中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<=10;i++) {//i<10循环的个数不对,如果i<=10话则i=1;那下面的应改为i==1
scanf("%f",&x);
/******* 2 ********/
if(i=1) { max=x;min=x;}// i==0保证第一次时条件成立
t=t*10+i;//t=t*10+1;
s=s+t;
}
s=s*a;
printf("%d\n",s);
}
8、
#include<stdio.h>
#include<math.h>
voidmain()
{floatx,eps,s=1,t=1,i=1;
scanf("%f%f",&x,&eps);
do{
/***** 1*****/
if(x>max)max=x;
if(x<min) min=x;
}
printf("%f,%f\n",max,min);
}
10、.在考生目录下,有Modify.c程序,该程序中"/*****N*****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。
该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
t=-t*x/++i;//t= -t*x/i++;
s+=t;
/*****2*****/
} while(fabs(t)<eps)//while(fabs(t)>=eps);
printf("%f\n",s);
}
9、
#include <stdio.h>
voidmain()
{floatx,max,min;int i;
/****** 2 ******/
itoa(n,str+6);//itoa(n,str+5);
printf("%s",str);
}
5、
#include <stdio.h>
#define N10
void main()
{
inti,j,min,temp;
int a[N]={5,4,3,2,1,9,8,7,6,0};
/******2******/
temp=a[min]; a[min]=a[j];a[j]=temp;/*数据交换 */
//temp=a[min];a[min]=a[i]; a[i]=temp;
}
printf("\nThe sortednumbers: \n");/*输出排序结果*/
for (i=0;i<N;i++)
#include<stdio.h>
#include<ctype.h>
voidmain()
{char a[80];intn[5]={0},i;
printf("\nNewstring:%s",s1);
}
}
7、
#include <stdio.h>
void main()
{inti,a,n,t=0;
/*****1*****/
s=0;//int s=0;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++) {
ﻩ/*******2 ******/
程序调试
1、
#include<stdio.h>
#include<string.h>
void fun(char *s,char *t)
{
inti,sl;
sl=strlen(s);
for(i=0;i<sl;i++)
t[i]=s[i];
for(i=0;i<sl;i++)
/********1********///t[sl+i]=s[s1-1-i];
printf("%5d",a[i]);
printf("\n");
}
6、
#include<stdio.h>
voidmain()
{
char s1[80],s2[40];
int i=0,j=0;
printf("\nInput the first string:");
scanf("%s",s1);
printf("\nInputthesecondstring:");
printf("\nThearrayis:\n"); /*输出数组元素*/
for(i=0;i<N;i++)
printf("%5d",a[i]);
for (i=0;i<N-1;i++)/* 排序操作*/
{
min= i;
for (j=i+1;j<N; j++)
/******1******/
if (a[min]<=a[j])min=j;//if(a[min]>*****2********/
t[sl]="\0";//t[sl+s1]=’\0’;
}
void main()
{
chars[100],t[100];
scanf("%s",s);
fun(s,t);
printf("%s",t);
}
2、
#include <stdio.h>
scanf("%s",s2);
while (s1[i] !='\0')
/****** 1 ******/
i+1;// i=i+1;
while(s2[j]!='\0')
/****** 2 ******/
s1[++i]=s2[++j];/*拼接字符到s1*///s1[i++]=s2[j++];
s1[i] ='\0';
#include<math.h>
voidmain()
{ intn,s=0;
scanf("%d",&n);
n=fabs(n);
/********1*******/
while(n>1){//1}n2}n!=0
s=s+n%10;
/********2 ******/
n=n%10;// n=n/10;
}
printf("%d\n",s);
}
4、
#include<stdio.h>
voiditoa(longi,char*s)
{
if(i==0)
return;
/******1******/
*s='1'+i%10;//*s = '0'+i%10;
itoa(i/10,s-1);
}
voidmain()
{
longn;
charstr[7]="";
scanf("%ld",&n);
void main()
{int n,i;
scanf("%d",&n);
/******1 ******/
i=1;//i=2;
while(n>1)
if(n%i==0){
printf("%d\t",i);
n/=i;
}
else
/******** 2*******/
n++;// i++;
}
3、
#include <stdio.h>