C语言改错题

合集下载

C语言程序改错

C语言程序改错

C语言程序改错〖第1题〗『程序改错』(5分)(题号:422)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/#include"stdio.h"main( ){/**********FOUND**********/long a,b,c,d,e,x,scanf("%ld",&x);a=x/10000;/**********FOUND**********/b=x/10000/1000;c=x%1000/100;d=x%100/10;e=x%10;/**********FOUND**********/if (a==0)printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);else if (d!=0) printf("there are 2, %ld %ld\n",e,d);else if (e!=0) printf(" there are 1,%ld\n",e);getch();}答案:1). long a,b,c,d,e,x;2). b=x%10000/1000; 或 b=x/1000%10;3). if (a!=0) 或 if (!a)〖第2题〗『程序改错』(5分)(题号:411)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。

c语言改错

c语言改错
{
printf("%s\t%d\n",c[i].id,c[i].score);
n++; /*$ERROR3$*/
}
i++;
}
printf("n=%d\n",n);
}
3.题目:
从键盘输入一个小于10000的十进制正整数,求出它是几位数。如输入528,则结果为n=3。
while(n<=9) /*$ERROR1$*/
{
flag=0;
for(j=2;j<i;j++)
if(i%j!=0) /*$ERROR2$*/
{
flag=1;
break;
else
switch(a/20)
{
case 5: ; /*$ERROR3$*/
case 4: printf("A"); break;
case 3: printf("B"); break;
{
t=0; /*$ERROR2$*/
for(j=1;j<=i;j++)
t=t+j;
if(i%2!=0) /*$ERROR3$*/
s=s+1.0*i/t;
else
s=s-1.0*i/t;
#include <stdio.h>
long f(int n)
{
if(n==1|| n==2) /*$ERROR1$*/
return 1;
else
return f(n-1) + f(n-2); /*$ERROR2$*/

C语言程序改错练习题

C语言程序改错练习题

C语言程序改错练习题程序改错练习题下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。

1.求1?2?3?4? ?nmain(){ int sum; 正确:int sum=1;int n,i=1;scanf("%d",n); scanf(“%d”,&n);printf(“\n”);while(i<="n)</p">{ sum=sum*i;i++; }printf("sum=%c",sum); printf("sum=%d",sum);}2.求一个数组中最大值及其下标。

main( ){ int max,j,m;int a[5];for(j=1;j<=5;j++) 正确:for(j=0;j<5;j++)scanf(“%d”,a); scanf(“%d”,&a[j]);max=a[0];for(j=1;j<=5;j++) for(j=0;j<5;j++)if(max>a[j]) if(max<a[j])< p="">{ max=a[j];m=j;}printf(“下标:%d\n最大值:%d”, j, max) printf(“下标:%d\n 最大值:%d”, m,max);}3.用一个函数求两个数之和。

sum(x,y) 正确:float sum(float x, float y ){ float z;z=x+y;return ; return z;}main(){ float a,b;int c; float c;scanf("%f,%f",&a,&b);c=sum(a,b);printf("\nSum is %f",sum); printf("\nSum is %f",c);}4. x , y两个数中,让x中存较大的数,y存较小的数#includemain( ){int x , y=200 , z=0;x=180;if ( x<y)< p="">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);}5.用指针作函数参数,对输入的两个整数按大小顺序输出。

C语言考试改错

C语言考试改错

第一套改错:fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。

1、m=0; 改为m=i;2、if(a[k]>a[m]) k=m;改为if(a[k]>a[m]) m=k;第二套改错:fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。

1、void fun(char str, char ch ) 改为void fun(char *str, char ch ) 2、if ( *str == ch )改为if ( *str! = ch )3、str[1] = '0';改为str[1] = 0;第四套改错:fun函数的功能是:将p所指字符串中的每个单词的最后一个字母改成大写。

(这里的“单词”是指由空格隔开的字符串)。

1、if( p == ' ' )改为if( *p == ' ' )2、* (p-1) = toupper( *( p - 1 ) ) 改为* (p-1) = toupper( *( p - 1 ) );第六套改错:fun函数的功能是:tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。

1、if(( ‘a’ <= tt[i] )||( tt[i] <= ‘z’ ) )改为if(( ‘a’ <= tt[i] )&&( tt[i] <= ‘z’ ) )2、tt[i] + = 32;改为tt[i] - = 32;第三套改错:fun的功能是:计算整数n的阶乘。

1、result*=--n; 改为result*=n--;2、return _____;改为returnresult;第五套改错:fun函数的功能是:根据形参m,计算如下公式的值。

t=1+1/2+1/3+1/4+……+1/m1、t + = 1.0/k; 改为t + =1.0/i;2、________改为return t;第七套改错:fun函数的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。

最常用的一些c语言改错题

最常用的一些c语言改错题
int arrmin( int arr[3][3])
{int i,j,min;
min=0;(应改为:min=arr[0];)
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if (min>arr[i][j])
min=arr[i][j];
return (min);
}
void main()
max=arr[0];
pos= 0;
for(i=1; i<n; i++) if (max<arr[i])
{
max=arr[i];
int a,n;(应改为:int a[],n;)
{
int j; float aver;
float s;(应改为:float s=0;)
for(j=0; j<n; j++) s+=a[j];
aver=s/n;
return (aver);
void main(){int a[12]={10,4,2,7,3,12,5,34,5,9,6,8};
if(prime==1)(应改为:if(prime(i)==1;)
{a[c]=i;
printf("%4d",a[c]);
++c;
}
}
七、求一维数组a中值为奇数的元素的平均值。
#include <conio.h>
#include <stdio.h>
double average( int arr[],int n)
改错题 一、求一维数组a中所有元素的平均值,结果保留两位小数。

c语言改错题

c语言改错题
}
printf("\n");
}
output(stu);
}
void output(struct student stu[2])
{
int i, j;
printf("学号姓名成绩1成绩2成绩3\n");
for(i=0; i<2; i++)
{
/***********SPACE***********/
【printf】("%-6s%-6s", stu[i].number, stu[i].name);
功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个
(*a)++ ;
if ( *s >= 'a' && *s <= 'z' )
/**********FOUND**********/
(*b)++;
s++;
}
}
main( )
{
char s[100]; int upper = 0, lower = 0 ;
printf( "\nPlease a string : " ); gets ( s );
printf("stuNo:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
sum=0;
/***********SPACE***********/
for(j=0;【j<3】;j++)

大学C语言期末考试练习题程序改错(带详解答案)

大学C语言期末考试练习题程序改错(带详解答案)

y=3.5+x;
printf(“y=%d”);
}
正确的:
int x; float y;
printf(“y=%f”,y);
6 编程计算下面分段函数, 输入 x, 输出 y
x 1 x 0 y 2x 1 0 x 10
3x 11 x 10
main() { int x,y;
第三处改为:if(n%3==0)
第四处改为:sum=sum+n;
8. 求表达式 c ab 的值
#include <stdio.h>
#include <math.h>
int fun(int x, int y);
main()
{ int a,b; float f; scanf(“%d,%d”,a,b); //与改错第 1 题中的 scanf 错误相同 if(ab>0){ // C 语言中乘号不能省略,且用*表示乘法运算 fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里
} 第四行改为:for(j=0;j<5;j++) 第五行改为:scanf(“%d”,&a[j]); 第七行改为:for(j=1;j<5;j++) 第八行改为:if(max<a[j]) 第十三行改为:printf(“下标:%d\n 最大值:%d”, m,max)
3.用一个函数求两个数之和。 sum(x,y) //函数定义的一般形式 p173-174 { float z; z=x+y; return; //return 语句后面可以返回 0、常量、变量和表达式的值。 } main() { float a,b; int c; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定

c语言题库改错题及详解答案

c语言题库改错题及详解答案

c语言题库改错题及详解答案C语言是一种广泛使用的计算机编程语言,它以其强大的功能和灵活性而闻名。

在学习和掌握C语言的过程中,练习题库中的改错题是提高编程技能的有效方式。

以下是一些常见的C语言改错题及其详解答案。

1. 题目:编写一个程序,计算并输出1到10的累加和。

错误代码:```cint main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum = sum + i;}print("Sum is %d", sum);return 0;}```错误点: `print` 函数应为 `printf`。

正确代码:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i; // 可以简化为 sum += i;}printf("Sum is %d\n", sum);return 0;}```2. 题目:编写一个程序,判断输入的年份是否为闰年。

错误代码:```cint main() {int year;printf("Enter a year: ");scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```错误点:逻辑判断的括号使用不正确。

正确代码:```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```3. 题目:编写一个程序,实现字符串的反转。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题号:1题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列/************FOUND***********/a[i]=a[i-1];/************FOUND***********/exit;}正确答案:a[i+1]=a[i];break;}题号:2题目:以下程序的功能是求如下表达式:/************FOUND***********/print("%d",n) ;/************FOUND***********/fun(int n)正确答案:scanf(“%d”,&n);float fun(int n)题号:3题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。

/**********FOUND**********/y-=1/(i*i);/**********FOUND**********/return m;正确答案:y-=1.0/(i*i);return c;题号:4题目:以下程序把一由小到大的有序数列放在a[1]到a[n]中,a[0]用做工作单元,程序把读入的x值插入到a数组中,插入后,数组中的数仍有序。

/************FOUND***********/{ a[i]=a[i+1];/************FOUND***********/for(i=0;i<=n;i++)正确答案:{ a[i+1]=a[i];for(i=1;i<=n;i++)题号:5题目:函数scopy的功能是:将一个字符串前面n个子字符送到一个字符型数组中去,然后再加上一个'\0'。

不用系统提供的函数strcpy。

请改正程序中的2个错误,使它能得出正确的结果。

/**************FOUND**************/scanf("%d",n);/**************FOUND**************/scopy(str1,str2);正确答案:scanf("%d",&n);scopy(str1,str2,n);题号:6题目:函数fun的功能是:求n!。

主函数的功能是计算: x!+y!+z!的值。

请改正程序中的错误,使它能得出正确的结果。

/**********FOUND**********/scanf("%d,%d,%d",x,y,z);/**********FOUND**********/printf("Sum=%d\ n",sum);正确答案:scanf("%d,%d,%d",&x,&y,&z);printf("Sum=%ld\ n",sum);题号:7题目:编写函数fun求整数n以内(不包括n)3的倍数之和,在main函数中由键盘输入n值,并输出运算结果。

/**********FOUND**********/scanf("%d",n);/**********FOUND**********/result=fun( );正确答案:scanf("%d",&n);result=fun(n);题号:8题目:函数fun的功能是:求1到20的阶乘的和。

/**********FOUND**********/s+t=s;/**********FOUND**********/printf("jiecheng=%d\n",s);正确答案:s+=t;printf("jiecheng=%f\n ",s);题号:9题目:函数fun的功能是:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。

/************FOUND***********/f2=f1;/************FOUND***********/f3=f2;正确答案:f1=f2;f2=f3;题号:10题目:函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。

k的值由主函数传入,若k的值为500,则函数值为4622。

/**********FOUND**********/while ((k>=2)||(mc<10))/**********FOUND**********/if((k%13=0)||(k%17=0))正确答案:while ((2<=k)&&(mc<10))if((k%17==0)||(k%13==0))题号:11题目:函数fun的功能是:计算正整数num的各位上的数字之积。

/**********FOUND**********/scanf("%ld", n);/**********FOUND**********/printf("\n%ld\n",fun(long n));正确答案:scanf("%ld", &n);printf("\n%ld\n",fun(n));题号:12题目:函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。

例如,若给num1和num2分别输入49和21,则输出的最大公约数为7。

/************FOUND***********/r=a/b;}/************FOUND***********/return a;正确答案:r=a%b;}return b;题号:13题目:在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。

下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。

/************FOUND***********/int sum=0.0;/************FOUND***********/while(s[i] =0)正确答案:double sum=0.0;while(s[i] !=0)题号:14题目:fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。

/**********FOUND**********/a=0;/**********FOUND**********/scanf("%d",a[i][j]);正确答案:sum=0;scanf("%d",&a[i][j]);题号:15题目:fun函数的功能是:实现3行3列矩阵的转置,即行列互换。

/**********FOUND**********/a[i][j]=t;/**********FOUND**********/t=a[j][i];正确答案:t=a[j][i];a[i][j]=t;题号:16题目:fun函数的功能是:求一个3行4列矩阵的外框的元素值之和矩阵元素为1,2,3,4,5,6,7,8,9,10,时……/**********FOUND**********/int i,j,s,s1=s2=s3=s4=0;/**********FOUND**********/s2=s2+a[m][j];正确答案:int i,j,s,s1=0,s2=0,s3=0,s4=0;s2=s2+a[m-1][j];题号:17题目:以下程序输出前六行杨辉三角形,既11 11 2 11 3 3 11 4 6 4 1……………………/***********FOUND***********/if(j==0&&j==i)/***********FOUND***********/a[i][j]=a[i-1][j-1]+a[i][j-1];正确答案:if(j==0||j==i)a[i][j]=a[i-1][j-1]+a[i-1][j];题号:18题目:fun函数的功能是:实现两个字符串的连接。

例如:输入dfdfqe和12345时,则输出dfdfqe12345./**********FOUND**********/s2[j]=s1[i];/**********FOUND**********/s2[j]='\ 0';正确答案:s[i]=s2[j];s1[i]='\0';题号:19题目:fun函数的功能是:给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。

/**********FOUND**********/for(j=0;j<=n;j++)/**********FOUND**********/return xb;正确答案:for(j=0;j<n;j++)return c;题号:20题目:fun函数的功能是:找出大于m的最小素数,并将其作为函数值返回。

/**********FOUND**********/for(k=1;k<i;k++)/**********FOUND**********/if(i%k!=0) break;正确答案:for(k=2;k<i;k++)if(i%k= =0) break;题号:21题目:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。

例如:当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD"。

/**********FOUND**********/void fun (char s, char t)/**********FOUND**********/d = len(s);正确答案:void fun (char s[], char t[])d = strlen(s);题号:22题目:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置./***********FOUND***********/scanf("%d", a[i]);/***********FOUND***********/for(i=3;i<10;i++)正确答案:scanf("%d", &a[i]);for(i=1;i<10;i++)题号:23题目:有一数组内放10个整数,要求求出所有元素的平均值./***********FOUND***********/for(i=0;i<10;i++)/***********FOUND***********/int score[10],aver ;正确答案:for(i=1;i<10;i++)float score[10],aver ;题号:24题目:一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将它插入数组中./***********FOUND***********/if(number>end) a[11]=number;/***********FOUND***********/if(a[i]<number)正确答案:f(number>end) a[10]=number;if(a[i]>number)题号:25题目:用"起泡法"对输入的十个字符排序后按从小到大的次序输出./***********FOUND***********/scanf("%s",&str);/***********FOUND***********/sort(str[N]);正确答案:scanf("%s",str);sort(str);题号:26题目:函数fun的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

相关文档
最新文档