C语言程序改错题及答案
程序调试
1、
#include
#include
void fun(char *s,char *t)
{
int i,sl;
sl=strlen(s);
for(i=0;i t[i]=s[i]; for(i=0;i /********1********/ // t[sl+i]=s[s1-1-i]; t[sl+i]=s[sl-i]; /********2********/ t[sl]="\0";// t[sl+s1]=’\0’; } void main() { char s[100],t[100]; scanf("%s",s); fun(s,t); printf("%s",t); } 2、 #include 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 #include void main() { int n,s=0; scanf("%d",&n); n=fabs(n); /******** 1 *******/ while(n>1) { // 1}n 2}n!=0 s=s+n%10; /******** 2 ******/ n=n%10;// n=n/10; } printf("%d\n",s); } 4、 #include void itoa(long i,char *s) { if(i==0) return; /****** 1 ******/ *s = '1'+i%10;//*s = '0'+i%10; itoa(i/10,s-1); } void main() { long n; char str[7]=""; scanf("%ld",&n); /****** 2 ******/ itoa(n,str+6);// itoa(n,str+5); printf("%s",str); } 5、 #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("\nThe array is:\n"); /* 输出数组元素*/ for (i=0;i printf("%5d",a[i]); for (i=0;i { min = i; for (j=i+1; j /****** 1 ******/ if (a[min]<=a[j])min =j; // if (a[min]>=a[j]) /****** 2 ******/ temp=a[min]; a[min]=a[j]; a[j]=temp;/* 数据交换*/ // temp=a[min]; a[min]=a[i]; a[i]=temp; } printf("\nThe sorted numbers: \n"); /* 输出排序结果*/ for (i=0;i printf("%5d",a[i]); printf("\n"); } 6、 #include void main() { char s1[80],s2[40]; int i=0,j=0; printf("\nInput the first string:"); scanf("%s",s1); printf("\nInput the second string:"); 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'; printf("\nNew string: %s",s1); } } 7、 #include void main() { int i,a,n,t=0; /***** 1 *****/ s=0;// int s=0; scanf("%d%d",&a,&n); for(i=1;i<=n;i++) { /******* 2 ******/ t=t*10+i; // t=t*10+1; s=s+t; } s=s*a; printf("%d\n",s); } 8、 #include #include void main() { float x,eps,s=1,t=1,i=1; scanf("%f%f",&x,&eps); do { /***** 1 *****/ t=-t*x/++i;// t = -t * x / i++; s+=t; /***** 2 *****/ } while(fabs(t) printf("%f\n",s); } 9、 #include void main() { float x,max,min; int i; /******** 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保证第一次时条件成立 if(x>max) max=x; if(x } printf("%f,%f\n",max,min); } 10、. 在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下 一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。 该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。 #include #include void main() { char a[80]; int n[5]={0},i; gets(a); for(i=0; a[i]!=’\0’; i++) /***** 1 *****/ switch(tolower(a+i)) { // (tolower(a[i])) case 'a': n[0]++; break; case 'e': n[1]++; break; case 'i': n[2]++; break; case 'o': n[3]++; break; /***** 2 *****/ case'U': n[4]++; break; // ‘u’ } for(i=0;i<5;i++) printf("%d\n",n[i]); } 11、在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下 一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负) 该程序功能:输入n(0 则输出: 1 222 33333 4444444 #include void main() { int i,j,n; /***** 1 *****/ scanf("%d",n); // &n for(i=1;i<=n;i++) { for(j=1;j<=n+1-i;j++) putchar(' '); for(j=1;j<=2*i-1;j++) putchar((char)(i+48)); /****** 2 *****/ putchar(\n); // ‘\n’ } } 12、在考生目录下,有Modify.c程序,该程序中“/***** N *****/”的下一行中有错误, 请改正(注意:不得加行、减//行、加句、减句,否则后果自负)。 该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。 #include #include #include void main() { int n,i; /***** 1 *****/ char str;// char *str scanf("%d\n",&n); str=(char*)malloc(n); gets(str); /***** 2 *****/ for(i=1;i if(str[i]>='a'&& str[i]<='z') str[i]=str[i]-32 ; puts(str); } 程序改错------------------------------------- 1题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 -----------------*/ #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i 下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。 #include <> main() { int a[8],*p=a; int i,j; int tempmin,tempcode; printf("\n input the numbers:\n"); for (i=0;i<8;i++) scanf("%d",p+i); tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j) 【程序改错】 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*m double 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;i 1、以下程序的功能是求如下表达式: 1 1 1 S = 1 + ——+ ———+ ...... + ——————— 1+2 1+2+3 1+2+3+......+n 『答案』:1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 4 s+=1.0/t 或s= s + 1.0 /t; 2、题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 1 1 1 t = 1- ——- ——- ... - —— 2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 『答案』:1 for(i=2;i<=m;i++)或for(i=2;i 第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include (一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (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; kc语言程序改错题
C语言程序改错及填空题
c语言程序改错
C语言程序改错2
C语言程序改错题
程序改错完整版---C语言
齐齐哈尔大学C语言题库 程序改错(部分)