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语言程序改错题及标准答案
/********1 *******/
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);

C程序填空改错及答案

C程序填空改错及答案

1、结果:75#include "stdio.h"fun( int m, int xx[] ){int i,j,k=0;xx[k++]=1;for( i=2; i<=m; i++)for( j=2; j<i; j++)if( _____________) // i%j==0 {xx[k++]=i;break;}_____________; //return k}main(){int zz[100];printf("%d\n",fun(100,zz));}2、结果:8.640500#include <stdio.h>#include <math.h>double fun(int n){/*下行有错*/int s=0; int i; //double s=0.0; int i; for(i=1;i<=n;i++)s+=log(1.0*i);s=sqrt(s);/*下行有错*/return ; //return s;}main(){printf("%lf\n",fun(30));}#include <stdio.h>void main(){int i,n=0;for(i=10006;i<=99996;i++)if(i%10==6 && i%3==0)n++;printf("%d\n",n);}/*求1到1000之内能被7或11整除、但不能同时被7和11整除的整数个数。

请编写程序。

*/#include <stdio.h>void main(){int i,n=0;for(i=1;i<=1000;i++)if((i%7==0||i%11==0)&&(!(i%7==0&&i%11==0))){n=n+1;}printf("%d\n",n);}#include<stdio.h>int fun(int m){int i,k;for(i=m+1;;i++){for(k=2;k<i;k++)/*下行有错*/if(i%k!=0) break; //if(i%k==0) break; if(k==i)/*下行有错*/return k; //return i;}}main(){int n;scanf("%d",&n);printf("%d\n",fun(n));}6、结果:5#include <stdio.h>#include <math.h>main(){int a,b,sum,count=0,i;/*下行有错 */for (a=1; a<=700; a--) // for (a=1; a<=700; a++) {sum=0;for(b=1;b<=a;b++){if(a%b==0)sum=sum+a/b;}for(i=2;i<=9;i++)if(sum==a*i)/*下行有错 */count+=i; //count+=1;}printf("%d\n",count);}7、结果:495.00#include<stdio.h>float fun(int m, int n){int i;double p=1.0;for(i=1;i<=m;i++) p=p*i;for(i=1;i<=n;i++)__________ //p=p/i; for(i=1;i<=m-n;i++) p=p/i;__________ //return p;}main(){ printf("%.2f\n",fun(12,8));}#include<stdio.h>main(){int p,q,r,s,n=0;for(p=1;p<=100;p++)for(q=p;q<=100;q++)for(r=q;r<=100;r++)for(s=r;s<=100;s++)if(1.0/p+1.0/q+1.0/r+1.0/s==1) n++;printf("%d",n);}#include<stdio.h>/*下行有错*/IsPrime(integer n) // int IsPrime(int n) { int i,m;m=1;for(i=2;i<n;i++)/*下行有错*/if(n%i) // if(n%i==0){m=0;break;}return(m);}main( ){ int j,k=2310,sum=0;for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))sum+=j;printf("%d\n",sum);}#include<stdio.h>main(){int i,t=1,s=0;for(i=1;i<=101;i+=2){s=s+t*i;__________ // t=t*(-1); }printf("%d\n",s);}#include "stdio.h"int fun(int a,int b){int i,count=0,low,high;for ( i=a;i<=b;i++ ){low=i%10;high=i/100;if( _____________ ) // if(low==high )count++;}return count;}main(){printf("%d\n",_____________ ); //fun(300,900) }#include<stdio.h>void main(){int num,a,b,c,count=0;/*下行有错*/while(num=101;num<1000;num++) // for(num=101;num<1000;num++) {a=num/100;b=num%100/10;c=num%10;/*下行有错*/if(num+c*100+b*10+a=1333) // if(num+c*100+b*10+a==1333) count++;}printf("%d\n",count);}13、结果:23.197745#include<stdio.h>#include<math.h>double fun(int n){ double sum,s0,s1,s2,s;int k;sum=1.0;if(n<=2)sum=0.0;s0=0.0; s1=0.0; s2=1.0;for(k=4;k<=n;k++){ s=s0+s1+s2;sum+=__________;// sum+=sqrt(s); s0=s1;s1=s2;s2=s;}__________ //return sum;}main(){ printf("%f\n",fun(10));}#include<stdio.h>#include<math.h>main(){ int i,ge,shi,bai,n=0;for(i=1;i<1000;i++){ ge=i%10;shi=i/10%10;bai=i/100;if(i==pow(ge,3)+pow(shi,3)+pow(bai,3)) n++;}printf("%d\n",n);}#include<stdio.h>int fun(int a,int b){ int r,t;if(a<b){ t=a; a=b; b=t;}r=a%b;while(r!=0){ a=b;b=r;/*下行有错*/r=a/b; // r=a%b;}/*下行有错*/return a; // return b; }main(){ int a;a=fun(780,208);printf("%d\n",a);}#include<stdio.h>long fun(int g){switch(g){case 0: return 0;case 1: return 1;case 2: return 1;}return( __________);// return( fun(g-1)+fun(g-2)); }main(){long fib;int n=25;fib=__________ ;//fun(n);printf("%ld\n",fib);}#include<stdio.h>/*下行有错*/void IsPrime(int n) // int IsPrime(int n) { int i,m;m=1;for(i=2;i<n;i++)if(!(n%i)){ m=0;/*下行有错*/continue; //break;}return(m);}main( ){ int j,k=2310,sum=1;for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))sum*=j;printf("%d\n",sum);}#include<stdio.h>double fun(int n){double s=1.0;int i;for(i=1;__________ ;i++) //i<=n s=s-1.0/(i*(i+1));__________ //return s;}main(){printf("%.4f\n",fun(7));}#include<stdio.h>age( int n ){ int c;if( n==1 ) c=10;else __________ //c=age(n-1)+2;return(c);}main(){ int n=10;printf("%d\n", __________ ); // age(n) }21、结果: 5118372#include <stdio.h>#include <math.h>main(){ long sum;int i;sum=0;for (i=5;i<=80;i++){/*下行有错*/if (fmod(i,2)==0) // if (fmod(i,2)==1) sum+=i*i*i;}printf("%ld\n",sum);}#include <stdio.h>main(){ int i,a,b,c,d,n=0;for (i=1000;i<=9999;i++){d=i%10;c=i/10%10;b=i/100%10;a=i/1000;if(a*a+b*b+c*c+d*d==100)n++;}printf("%d\n",n);}#include<stdio.h>int mcf(int a,int b){ int temp;while(b){__________a=b;b=temp;}return a;}main(){printf("%d\n",__________ ); // mcf(234,338) }#include <stdio.h>#include <math.h>int prime(int n){ int yes, i;if(n<=1) {return 0;}yes=1;for(i=2; i<=sqrt(n); i++) /*下行有错*/if(n%i!=0) //if(n%i==0) { yes=0; break;}return yes;}main(){int sum=0, i;for(i=2;i<500; i++)if(prime(i))/*下行有错*/sum+=1; //sum+=i;printf("%d\n", sum);}#include <stdio.h>main(){ int i,a,b,c,n=0;for (i=101;i<=999;i+=2){c=i%10;b=i/10%10;a=i/100;if((a+b+c)%12==0)n++;}printf("%d\n",n);}#include<stdio.h> main(){int i,s=1;for(i=9;i>=1;i--) s=2*(s+1) ; printf("%d",s);}#include <stdio.h>#include <math.h>int su(int x){int j,k;k=sqrt(x) ;for(j=2;j<=k;j++){if (x%j==0) break;}if (x>1&&j>k) return (1);else return (0);}void main(){ long sum=0;int a,i,j;for (a=11;a<=99;a++){ i=a%10;j=a/10;if (su(a)&&su(i*10+j)){sum=sum+a;printf("%5d",a);} }printf("\n %ld",sum);}#include <conio.h>#include <stdio.h>#include <math.h>main(){ long s;long k,n,sum=0,count=0;for (n=2;n<=750;n++){ if (n<10) k=10;else if (n<100) k=100;else k=1000;s=n*n;if (s%k==n) {count++;sum+=n;printf("%4d",n);} }printf("\n%5ld,%5ld",count,sum);}27下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。

C语言程序改错题及答案

C语言程序改错题及答案
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str
scanf("%d\n",&n); str=(char*)malloc(n); gets(str);
int a[N]={5,4,3,2,1,9,8,7,6,0};
printf("\nThe array is:\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++)
/****** 2 *****/
putchar(\n);//‘\n’
}
}
12、在考生目录下,有Modify.c程序,该程序中“/***** N *****/”的下一行中有错误,
请改正(注意:不得加行、减//行、加句、减句,否则后果自负)。
该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。
}
11、在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)

程序改错完整版---C语言

程序改错完整版---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语言程序改错及填空题

C语言程序改错及填空题

每个注行邻近,更正。

更正中,不得改程序构,也不得增句。

#define NULL 0struct stud{long num;char name[10];float score;struct stud *next;};/* ⋯⋯⋯⋯⋯ comment⋯⋯⋯⋯⋯*/ int n;struct stud create()////////struct stud *create(void){struct stud *head,*p1,*p2;n=0;p1=p2=(struct stud *)malloc(sizeof(struct stud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);/*⋯⋯⋯⋯⋯ comment ⋯⋯⋯⋯⋯*/head=NULL;while(p1!=0)//////////while(p1->num!=0){n=n+1;if(n==1) head=p1;else p2->next=p1;p1=(struct stud *)malloc(size(struct stud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);}p2->next=NULL;return(head);}gc57.c 的功能是互定数中的最大数和最小数。

如将下边8 个数:5,3,1,4,2,8,9,6变为:5,3,9,4,2,8,1,6程序中,最大数与最小数的交换操作经过函数调用来实现,让指针max 和 min 分别指向最大数和最小数。

程序有二处错误,请更正。

注意:不得增行和删行,也不得改正程序的构造。

main(){int i;static int a[8]={5,3,1,4,2,8,9,6};void jhmaxmin();printf(" Original array: \n");for(i=0; i<8; i++)printf("%5d",a[i]);printf("\n");jhmaxmin(a,8);printf(" Array after swaping max and min: \n");for(i=0; i<8; i++)printf("%5d",a[i]);printf("\n");}// 注意: void jhmaxmin(p,n)int p, n;这是一种老的函数形式,此刻一般这样写void jhmaxmin(int p,int n)void jhmaxmin(p,n)int p, n;//////// int *p,n;{int t, *max, *min, *end, *q;end=p+n;max=min=p;for(q=p+1; q<end; q++){ if(*q>*max) max=q;if(*q<max) min=q; ////////*q<*min}t=*max; *max=*min; *min=t;}gc101.c 的功能为 : 输入 8 个整数 , 使用指针以选择法对其进行排序( 从小到大 ). 程序中有两处错误代码 , 请更正 . 注意,不得改变程序构造。

c语言程序改错

c语言程序改错

c语⾔程序改错【程序改错】1.功能:利⽤递归函数调⽤⽅式,将所输⼊的5个字符,以相反顺序打印出来。

char next;next=getchar();palin(n-1);2.功能:求⼴义菲玻那契级数的第n项。

⼴义菲玻那契级数的前n项为: 1,1,1,3,5,9,17,31,……项值通过函数值返回 main ( )函数。

例如:若 n = 15,则应输出:The value is: 2209。

for (k=4; k<=n; k++)a=b;return d;3.功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*mdouble y=0.0;4.功能:编制统计营业员⼀天的营业额的程序,设程序采⽤⼀个循环实现,每次循环输⼊⼀笔交易⾦额并累计营业额。

由于营业员⼀天完成的交易次数是不确定的,为此以最后附加输⼊⼀笔0或负数交易额作为交易⾦额已全部输⼊结束的标志。

float sale,sigma;scanf("%f",&sale);sigma=sigma+sale;5.功能:读取7个数(1-50)的整数值,每读取⼀个值,程序打印出该值个数的*。

while(n<8) while(a<1||a>50);for(i=0;i6.功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。

printf("%8f",f1);for(i=1;i<20;i++)f1=f2;f2=f3;7.功能:⼀个偶数总能表⽰为两个素数之和。

scanf("%d",&a);d=a-b;if(d%c==0)8.功能:利⽤⼆维数组输出如图所⽰的图形。

*******************************#define N 7a[i][j]=' ';z=z-1;printf("%c",a[i][j]);9.题⽬:求两个整数的最⼩公倍数。

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. 题目:编写一个程序,实现字符串的反转。

C语言改错题-含答案

C语言改错题-含答案

第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。

例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。

------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。

和值通过函数值返回main 函数。

2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。

------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********FOUND**********/fun ( int n ){int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ){/**********FOUND**********/s = (double)a / b;c = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。

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

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

c语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。

然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。

下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。

题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。

为了修复这个错误,我们应该在声明变量时对其进行初始化。

```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。

访问数组的第6个元素会导致越界错误。

```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。

```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。

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

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

c语言改错题题库及详解答案1. 题目:以下代码段中存在错误,请找出并改正。

```c#include <stdio.h>int main() {int a = 10;int b = 20;int c = a + b;printf("The sum is %d", c);return 0;}```答案:代码中缺少了字符串结束的空格。

应改为:```cprintf("The sum is %d ", c);```2. 题目:找出并改正以下代码段中的错误。

```c#include <stdio.h>int main() {int num = 100;if (num = 100)printf("Number is 100\n");return 0;}答案:代码中使用了赋值运算符 "=" 而不是比较运算符 "=="。

应改为:```cif (num == 100)```3. 题目:以下代码段中存在逻辑错误,请指出并改正。

```c#include <stdio.h>int main() {float a, b, c;scanf("%f %f", &a, &b);c = a / b;printf("The result is %f", c);return 0;}```答案:代码中没有检查除数 b 是否为 0,这会导致运行时错误。

应添加检查:```cif (b != 0) {c = a / b;printf("The result is %f", c);} else {printf("Error: Division by zero.\n");}```4. 题目:找出并改正以下代码段中的语法错误。

C语言程序设计改错信息

C语言程序设计改错信息
十二、123页:将图5-2的地址法列中:&a[0]+0、&a[0]+1、&a[0]+2、&a[1]+0、&a[1]+1、&a[1]+2的&全部删除
十三、159页:删除第7行:函数名就是这个函数源代码在内存中的起始地址,编译器将不带“()”的函数名解释为该函数的入口地址.中的“源”字
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人所有
printf("%d,%o,%u\n",a,a,A.。
}
改为
6.下面程序输出结果是().
#include <stdio.h>
main()
{
int a=-1。
printf("%d,%o,%u\n",a,a,a)。
}
第76页
10.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是().
void main()
{
int a。
float b,c。
scanf("%2d%3f%4f",&a,&b,&c)。
printf("\na=%d,b=%.1f,c=%.1f\n",a,b,c)。
}
第76页
5.执行下面程序:
#include <stdio.h>
main()
{
int a=0,b=9。
printf("a=%%d,b=%%d\n",a,B.。
s=s+i。
printf("s=%d\n",s)。

C语言程序改错

C语言程序改错

【程序改错】功能:求1到20的阶乘的和。

答案:1). t=1; 或t=1.0;2). t=★t★*★j★; 或t*=j; 或t=j*t;3). s=★s★+★t★; 或s+=t; 或s=t+s;4). printf("jiecheng=%f\n",s);【程序改错】功能:计算正整数num的各位上的数字之积。

例如:输入252,则输出应该是20。

答案:1). long k=1;2). num/=10; 或num=num/10;3). scanf("%ld",&n);4). printf("\n%ld\n",fun(n));【程序改错】功能:求出两个非零正整数的最大公约数,并作为函数值返回。

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

答案:1). a=b;2). b=t;3). r=a%b;4). return b; 或return (b); 或return(b);【程序改错】功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。

max代表最高分,min代表最低分,avg代表平均分。

答案:1). float a[10],min,max,avg;2). scanf("%f",&a[i]); 或scanf("%f",a+i);3). max=min=avg=a[0];4). if (min>a[i]) 或if (a[i]<min)【程序改错】功能:输入10个数,要求输出这10个数的平均值答案:1). for(i=1;i<10;i++) 或for(i=1;i<=9;i++)2). float score[10],aver; 或float aver,score[10];3). scanf("%f", &score[i]); 或scanf("%f", score+i);4). aver=average(score);【程序改错】功能:判断整数x是否是同构数。

c语言程序改错题

c语言程序改错题

【程序改错】功能: 根据整型形参m的值, 计算如下公式的值。

1 1 1.....1.—..—......——2x2 3x3 mxm例如: 若m=5, 则应输出: 0.536389------------------------------------------------------*/#include <stdio.h>double fun(int m){double y=1.0;int i;/**********FOUND**********/for(i=2;i<m;i--) for(i=2;i<=m;i++) /**********FOUND**********/y-=1/(i*i); y-=1.0/(i*i)/**********FOUND**********/return m; return y}main(){int n=5;printf("\nthe result is %lf\n",fun(n));}【程序设计】---------------------------------------------------------题目: 编程求所有4位数, 这些数具有以下特点: 这数本身是平方数, 且其低2位和高2位所组成的2个2位数也是平方数。

要求: 使用程序中定义的变量-------------------------------------------------------*/#include <stdio.h>#include <math.h>main(){int qw,bw,sw,gw; // qw千位数bw百位数sw十位数gw个位数int a,b; //a 高两位低两数int i; //循环变量/**********Program**********/for(i=1000;i<10000;i++){qw=i/1000;bw=i/100%10;sw=i/10%10;gw=i%10;1a=qw*10+bw;b=sw*10+gw;if(sqrt(i)==(int)sqrt(i)&&sqrt(a)==(int)sqrt(a)&&sqrt(b)==(int)sqrt(b)) printf(“%d\n”,i);}/********** End **********/}【程序设计】功能: 从键盘为一维整型数组输入10个整数, 调用fun 函数找出其中最小的数, 并在main函数中输出。

C语言程序改错

C语言程序改错

1-7919 计算并输出k以内最大的10个能被13或17整除的自然数之和。

K的值由主函数导入。

错1:while((2<=k)&&(mc<10)) 错2:if(k%13==0||k%17==0)错3:k--; 错3:return m;1-2511 功能:计算正整数num的各位上的数字之积。

例如:输入252,则输出应该是20。

错1:long k=1; 错2:num/=10;错3:scanf("%ld",&n); 错4:printf("\n%ld\n",fun(n));1-354 功能:输出fabonacci数列前20项,要求变量类型定义为浮点型,输出时只输出整数部分,输出项数不得多于或少于20.错1:printf(“%f”,f1); 错2:for(i=1;i<20;i++)错3:f1=f2; 错4:f2=f3;1-2544 功能:在一个一维整型数组中找出其中最大的数及其下标。

错1:int fun(int *a,int *b,int n) 错2:*b=c-a;错3:scanf(“%d”,a+i); 错4:max=fun(a,&p,N)1-1859 功能:实现交换两个整数的值。

例如:给a和b分别输入3和6,输出为a=6,b=3。

错1:fun(int *a,int *b) 错2:t=*a;错3:*a=*b; 错4:*b=t;1-840 功能:求1到20的阶乘的和。

错1:t=1; 错2:t=t*j;错3:s=s+t; 错4:printf("jiecheng=%f\n",s);1-6949 用起泡法对10个整数从小到大排序错1:void sort (int *x,int n) 错2:for(j=0;j<n-1-i;j++)错3:if(x[j]>x[j+1]) 错4:sort (a,n);1-4336 输入aSdFG输出为asdfg错1:char fun (char *c) 错2:return *c;错3:char s[81],*p=s; 错4:printf(“%c”,*p);1-4489 为一维数组输入10个整数。

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

大学C语言期末考试练习题程序改错(带详解答案)
辑地址下标。因此输出的时候只能从 a[1]开始输出,无法输出 a[0].因此应将 j 赋初值 0, 相应的循环条件改为 j<5 或者 j<=4 用于控制循环执行 5 次
scanf(“%d”,a); //若 scanf 语句有错误,常见考点有两个:(1)格式声明符号要 与后面欲赋值的变量的类型一致,此题%d 与 a 的类型 int 一致(详见 p69-78);(2)变量 的前面要有地址符号&
{ sum=sum*i; // 若不为 sum 赋初值,则此处无法计算 sum*i。 i++;
} printf("sum=%d",sum); //若 printf 语句有错误,常见考点有 1 个:格式声明符号 要与后面欲输出的变量的类型一致,此题%d 与 sum 的类型 long int 不一致,应改为%ld (详见 p69-78);
第三处改为: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); // 调用带有返回值的函数,应将函数的返回值保存在变量里
略 { if(n%3=0) // = 是赋值符号,用于将右边的值赋给左边的变量;== 是
关系符号,用来判断两个值是否相等 。改错中 if 后面表达式中的赋值符号是常见的 考点。

(完整word版)C语言程序改错总结

(完整word版)C语言程序改错总结

难度11、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。

int main(void){int xy2;/*********Found************/scanf("%s", &xy2); //改为:scanf("%d”,&xy2);/*********Found************/printf("xy2=%5d\n", &xy2); //改为:printf("xy2=%5d\n”,xy2);return 0;}2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。

#include<stdio。

h>float fmax(float x, float y);int main(void){/*********Found************/float l,1; //il = 3。

0;i = 5.6f;/*********Found************/printf("fmax(%5.2f,%5.2f)=%5.2f\n”, i, l, fMax(i,l)); // fmaxreturn 0;}/*********Found************/int fmax(float x, float y) //改:float{if (x < y)return y;else return x;}3、程序D4.c的功能是计算半径为2+3的圆的面积。

#include<stdio.h〉#define PI 3。

14/*********Found************/#define S(bj)PI*bj*bj //改:PI*(bj)*(bj) int main(void){/*********Found************/int mianJi;//改为:doublemianJi = S(2+3);printf(”mian ji=%5。

C语言程序改错题

C语言程序改错题

C语言程序改错题第 1题(10.0 分)/*------------------------------------------------------ 功能:将一个正整数分解质因数。

例如:输入 90,打印出 90=2*3*3*5------------------------------------------------------*/ #include "stdio.h"main(){int n,i;printf("\nplease input a number:\n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++){/**********FOUND**********/while(n==i){/**********FOUND**********/if(n%i==1){printf("%d*",i);/**********FOUND**********/n=n%i;}elsebreak;}}printf("%d",n);}答案:1). while(n!=i)2). if(n%i==0) 或 if (!(n%i))3). n=n/i;第 2 题(10.0 分)/*------------------------------------------------------ 功能:删除字符串 s 中的所有空白字符(包括Tab 字符、回车符及换行符)。

输入字符串时用'#'结束输入。

-----------------------------------------------------*/ #include <string.h>#include <stdio.h>#include <ctype.h>fun ( char *p){int i,t; char c[80];/**********FOUND**********/for (i = 1,t = 0; p[i] ; i++)/**********FOUND**********/if(!isspace((p+i))) c[t++]=p[i]; /**********FOUND**********/c[t]="\\0";strcpy(p,c);}main( ){char c,s[80];int i=0;printf("Input a string:");c=getchar();while(c!='#'){s[i]=c;i++;c=getchar();}s[i]='\0';fun(s);puts(s);}答案:1). for (i = 0,t = 0; p[i] ; i++)2). if(!isspace(*(p+i))) c[t++]=p[i];3). c[t]='\0';第 3 题(10.0 分)/*------------------------------------------------------ 功能:有 n 个人围成一圈,顺序排号。

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

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的余数代替该位数字。

再将新生成数据的第一位和第四位交换,第二位和第三位交换。

举例:输入一个四位整数1234,则结果为:9876。

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

------------------------------------------------------*/#include "stdio.h"main(){int a,i,aa[4],t;printf("输入一个四位整数:");/**********FOUND**********/scanf("%d",&a);aa[0]=a%10;/**********FOUND**********/aa[1]=a%100%10;aa[2]=a%1000/100;aa[3]=a/1000;/**********FOUND**********/for(i=0;i<=3;i++){aa[i]+=5;aa[i]%=10;}for(i=0;i<=3/2;i++){t=aa[i];aa[i]=aa[3-i];aa[3-i]=t;}for(i=3;i>=0;i--)printf("%d",aa[i]);getch();}〖第1题〗『程序改错』(5分)(题号:253)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:输入10个数,要求输出这10个数的平均值--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/float average(float array[10]){int i;float aver,sum=array[0];/***********FOUND***********/for(i=0;i<10;i++)sum=sum+array[i];aver=sum/10.0;return(aver);}main( ){/***********FOUND***********/int score[10],aver ;int i;printf("input 10 scores:\n");for(i=0;i<10;i++)/***********FOUND***********/scanf("%f", score);printf("\n");/***********FOUND***********/aver=average(score[10]);printf("average score is %5.2f",aver); }答案:1). for(i=1;i<10;i++) 或for(i=1;i<=9;i++)2). float score[10],aver; 或 float aver,score[10];3). scanf("%f", &score[i]); 或scanf("%f", score+i);4). aver=average(score);〖第2题〗『程序改错』(5分)(题号:414)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

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

------------------------------------------------------*/#include "stdio.h"main(){char c;int letters=0,space=0,digit=0,others=0; printf("please input some characters\n"); /**********FOUND**********/while((c=getchar())=='\n'){/**********FOUND**********/if(c>='a'&&c<='z'&&c>='A'&&c<='Z')letters++;/**********FOUND**********/else if(c=!' ')space++;else if(c>='0'&&c<='9')digit++;elseothers++;}printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);}答案:1). while((c=getchar())!='\n')2). if( c>='a'&&c<='z' ||c>='A'&&c<='Z' ) 或 if( c<='z'&&c>='a' ||c>='A'&&c<='Z' ) 或 if( c<='z'&& c>='a'||3). else if(c==' ')〖第3题〗『程序改错』(5分)(题号:250)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:以下程序输出前六行杨辉三角形,即11 11 2 11 3 3 11 4 6 4 1……………………--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。

------------------------------------------------------*/main( ){static int a[6][6];int i,j,k;/***********FOUND***********/for(i=1;i<=6;i++){for(k=0;k<10-2*i;k++) printf(" ");for(j=0;j<=i;j++){/***********FOUND***********/if(j==0&&j==i)a[i][j]=1;else/***********FOUND***********/a[i][j]=a[i-1][j-1]+a[i][j-1];printf(" ");printf("%-3d",a[i][j]); }/***********FOUND***********/printf("\t");}}答案:1). for(i=0;i<6;i++) 或for(i=0;i<=5;i++)2). if(j == 0 || j == i)3). a[i][j]=a[i-1][j]+a[i-1][j-1]; 或 a[i][j]=a[i-1][j-1]+a[i-1][j];4). printf("\n");答案:1). scanf("%d",&a);2). aa[1]=a%100/10; 或aa[1]=a/10%10;3). for(i=0;i<=3;i++) 或for(i=0;i<4;i++)〖第1题〗『程序改错』(5分)(题号:3)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:用起泡法对10个整数从小到大排序。

相关文档
最新文档