第一篇:成都信息工程大學 c語言改錯
1、程序D1.c的功能是從鍵盤讀入一個數(shù)并在屏幕上顯示。int main(void){
int xy2;
/*********Found************/
scanf(“%s”, &xy2);
//改為:scanf(“%d”, &xy2);
/*********Found************/
printf(“xy2=%5dn”, &xy2);//改為:printf(“xy2=%5dn”,xy2);
return 0;}
2、程序D2.c的功能是調用函數(shù),顯示兩個實數(shù)間最大的一個。
#include
float fmax(float x, float y);
int main(void){
/*********Found************/
float l, 1;
//i
l = 3.0;
i = 5.6f;
/*********Found************/
printf(“fmax(%5.2f, %5.2f)=%5.2fn”, i, l, fMax(i, l));// fmax
return 0;}
/*********Found************/ int fmax(float x, float y)
//改:float {
if(x < y)return y;
else return x;}
3、程序D4.c的功能是計算半徑為2+3的圓的面積。
#include
#define PI 3.14 /*********Found************/ #define S(bj)PI*bj*bj
//改: PI*(bj)*(bj)
int main(void){
/*********Found************/
int mianJi;
//改為:double
mianJi = S(2+3);
printf(“mian ji=%5.2fn”, mianJi);
return 0;}
4、相似題:D3.C,程序D5.c的功能是將字符串yy顯示在屏幕上。#include
int main(void){
/*********Found************/
char yy[100] = “ok??n”,//改為:;
/*********Found************/
prntf(“%s”, yy);
//改:printf
return 0;}
5、考查點:數(shù)據類型選擇,/運算符的使用功能是計算1/1 + 1/2 + ? + 1/N之和并顯示。#include
#define N 10
int main(void){
/*********Found************/
long jieguo = 0;
//改:float
int fm;
for(fm = 1;fm <= N;fm++)
{
/*********Found************/
jieguo += 1 / fm;
//改:(float)1 / fm
}
printf(“%8.6fn”, jieguo);
return 0;}
6、考查點:輸入分隔格式控制,循環(huán)體的定義,D12.c的功能是從鍵盤讀入a和b的值(輸入格式限定為僅a,b),在屏幕上顯示b行a。
#include
int main(void){
int a, b;
/*********Found************/
scanf(“%d%d”, &a, &b);
//中間加’,’
while(b > 0)
/*********Found************/
___________
//括號’{’
printf(“%dn”, a);
b--;
/*********Found************/
___________
//括號’}’
printf(“bye bye!n”);
return 0;} 7考查點:輸入格式控制、變量交換,程序D1000.c的功能是從鍵盤輸入3個浮點數(shù)a,b,c(輸入時abc之間以空格相隔),首先按照輸入順序顯示在屏幕上,然后按從小到大順序把它們輸出到屏幕上。
#include
int main(void){
float a, b, c, t;
printf(“please input three numbers:n”);
/*********Found************/
scanf(“%f%f”, &a, &b, &c);//改:%f%f%f
printf(“before sort:a=%g,b=%g,c=%gn”, a, b, c);
if(a > b)
{
t = a;
a = b;
/*********Found************/
b = a;//改:t
}
if(a > c)
{
t = a;
a = c;
c = t;
}
if(b > c)
{
t = b;
b = c;
c = t;
}
printf(“after sort:a=%g,b=%g,c=%gn”, a, b, c);
return 0;} 8考查點:格式化輸出、數(shù)據類型的正確使用,程序D1001.c的功能是求分數(shù)序列:2/1,3/2,5/3,8/5,13/8,21/13,....前20項之和,要求顯示的結果中小數(shù)部分有4位。
#include
#define T 20
int main(void){
int n;
/*********Found************/
long i, j, temp, sum;
i = 2;
j = 1;
sum = 0;
for(n=1;n<=T;n++)
{
sum = sum + i / j;
temp = i;
i = i + j;
j = temp;
}
/*********Found************/
printf(“2/1+3/2+5/3+8/5+13/8+...=%5.2fn”, sum);//改:.4
return 0;} 9考查點:用算術表達式實現(xiàn)數(shù)據交換,程序D1002.c的功能是實現(xiàn)兩數(shù)交換。
#include
int main(void){
int x = 5, y = 9;
x = x + y;
y = xx;//改:x – y;
printf(“x=%d, y=%dn”, x, y);
return 0;} 10考查點:整型常量表示、輸出項表示,程序D1003.c的功能是將16進制數(shù)100轉換為10進制數(shù)輸出。#include
int main(void){
/*****Found*****/
int i = 100;//0x100
/*****Found*****/
printf(“%dn”, &i);
//改:去掉&
return 0;}
11、程序D1004.c的功能是輸入姓名,屏幕輸出問候。#include
int main(void){
char s[10];
printf(“please input your name:”);
/*********Found************/
scanf(“%c”, s);//改%s
printf(“hello ”);
/*********Found************/
puts(s[10]);//改:s
return 0;} 12考查點:輸入數(shù)據分隔,輸出項表示,程序D1005.c的功能是從鍵盤讀入兩個整數(shù)并在屏幕上顯示。要求:輸入時限定兩數(shù)之間僅以逗號隔開。#include
int main(void){
int a, b;
/*********Found*********/
scanf(“%d%d”, &a, &b);
//改:中間加’,’
/*********Found*********/
printf(“a=%d,b=%dn”, &a, &b);//去掉&
return 0;}
13、考查點:輸入格式控制、if語句,程序D1006.c的功能是判斷輸入的數(shù)據是否與已經給出的數(shù)據j相等。
#include
int main(void){
long int i = 79870, j = 23;
/*****Found*****/
scanf(“%f”, &i);//改:%ld
/*****Found*****/
if(j == i);
{
printf(“Equal!”);
}
else
{
printf(“Not equal!”);
}
return 0;}
14、考查點:字符輸入函數(shù)使用,分支條件表示,程序D1007.c的功能是使用getchar方式從鍵盤讀入一個字符,判斷該字符是否大寫字符。#include
int main(void){ char ch;
/****Found****/ getchar(ch);// ch = getchar();/*****Found*****/ if('A' <= ch, ch <= 'Z')
//&& {
printf(“yes”);} else {
printf(“no”);}
return 0;}
15、考查點:switch語句結束、case后常量表示,程序D1008.c的功能是判斷用戶是不是輸入的整數(shù)0。
#include
int main(void){
int n;
scanf(“%d”, &n);
/****Found****/
switch(n);
//去掉’;’
{
/****Found****/
case0:
//中間加空格
printf(“Zeron”);
break;
default:
printf(“Non-Zero”);
break;
}
return 0;}
16、考查點:switch語句、case后常量表示,程序D1009.c的功能是輸入一個整數(shù),如果為1時輸出100,為2時輸出200,其它輸出0。
#include
int main(void){
int x, y;
scanf(“%d”, &x);
switch(x)
{
/*********Found************/
case x == 1: //改:1
y = 100;
break;
/*********Found************/
case x == 2: //改:2
y = 200;
break;
default:
/*********Found************/
y = 500;
//改:0
break;
}
printf(“%dn”, y);
return 0;}
17、考查點:switch語句case常量表示,循環(huán)條件表示,程序D1010.c的功能是輸入若干字符數(shù)據(回車表示輸入結束),分別統(tǒng)計其中‘A’、‘B’、‘C’的個數(shù)。#include
int main(void){
char c;
int k1 = 0, k2 = 0, k3 = 0;
/*********Found************/
while(c = getchar()!= 'n')
//加括號()
{
switch(c)
{
/*********Found************/
case A:
//加’’
k1++;
break;
case 'B':
k2++;
break;
case 'C':
k3++;
break;
default :
;
}
}
printf(“A=%d,B=%d,C=%dn”, k1, k2, k3);
return 0;}
18、考查點:一維數(shù)組定義、數(shù)組元素引用、輸入和輸出,程序D1016.c的功能是從鍵盤輸入5個整數(shù),保存到一整型數(shù)組變量中(此數(shù)組只能保存5個數(shù)),并在屏幕上按逆序輸出。#include
int main(void){
/*********Found*********/
int n=5, i, a[n];
//改為5
printf(“ninput 5 numbers:”);
/*********Found*********/
for(i=1;i { scanf(“%d”, &a[i]); } for(i=n-1;i>=0;i--) { printf(“%dt”, a[i]); } return 0;} 19、考查點:數(shù)組的輸入和數(shù)組元素的引用,程序D1017.c的功能是輸入10個浮點數(shù),并輸出這組數(shù)中的最大值和最小值。 #include int main(void){ float a[10], max, min; int i; printf(“Please input 10 floats”); for(i=0;i<10;i++) { /*********Found************/ scanf(“%f”, _____);// &a[i] } max = min = a[0]; for(i=1;i<10;i++) { /*********Found************/ if(_____) // max < a[i] { max = a[i]; } if(min > a[i]) { min = a[i]; } } printf(“Max number is:%.2fnMin number is:%.2fn”, max, min); return 0;} 20、考查點:函數(shù)聲明,靜態(tài)變量使用,程序D1021.c的功能是依次輸出3^1到3^5。 #include /*****Found*****/ int f(n); //用定義形式:int n int main(void){ int i; for(i=1;i<=5;i++) { printf(“%dn”, f(3)); } return 0;} int f(int n){ /*****Found*****/ int p = 1;//改: static int p = p * n; return p;} 21、考查點:靜態(tài)變量使用,函數(shù)調用,程序D1023.c的功能是函數(shù)outnum輸出自己是第幾次被調用。#include void outnum(void); int main(void){ int i; for(i=0;i<5;i++) { /*********Found************/ outnum(i);//改: outnum() } return 0;} void outnum(void){ /*********Found************/ int i = 0; //改:static int i = 0; i++; printf(“%dn”, i);} 22、考查點:函數(shù)調用、函數(shù)定義,程序D1024.c的功能是調用子函數(shù)Average()求兩數(shù)的平均值,并輸出到屏幕上。#include /*********Found*********/ int Average(x, y); //用定義形式:int x, int y int main(void){ int a = 12; int b = 24; int ave; /*********Found*********/ ave = Average(int a, int b);//用使用形式:a, b printf(“Average of %d and %d is %d.n”, a, b, ave); return 0;} /*********Found*********/ int Average(x, y)//int x, int y { int result; result =(x + y)/ 2; return result;} 23、考查點:函數(shù)一般調用和靜態(tài)變量,程序D1025.c的功能是輸入一整數(shù)n(n>0),main()函數(shù)中調用子函數(shù)Func()n次,并在屏幕上打印出每次調用該子函數(shù)的次數(shù)。#include void Func(void); int main(void){ int i, n; printf(“ninput a data:”);scanf(“%d”, &n);for(i=0;i /*********Found*********/ ________________________ // Func()} return 0;} void Func(void){ /*********Found*********/ ________________________ //static int times = 0; times++;printf(“Func()was called %d time(s).n”, times);} 難度2 1、考查點:用指針訪問字符數(shù)組元素,程序D3.c的功能是將字符串yy在屏幕上輸出。 #include int main(void){ /*********Found************/ char yy[200] = “ok??n”;//改為:*yy /*********Found************/ fol(;*yy;yy++) //改為:for { putchar(*yy); } return 0;} 2、考查點:字符數(shù)組定義,字符串輸出控制,標準字符串函數(shù)的使用,程序D6.c的功能是從鍵盤讀入一行字符(包括空格、TAB等字符)并在屏幕上顯示。#include int main(void){ /*********Found************/ char yy<128>; //改為:yy[128] /*********Found************/ getchar(yy); //改為:gets /*********Found************/ printf(“%y”, yy); //改為:%s return 0;} 3、考查點:if-else形式條件的分析,數(shù)據類型選擇,程序D7.c的功能是判斷x和y是否相等,相等則顯示x=y,不等則顯示x<>y。#include int main(void){ /*********Found************/ char x, y;//改為:int x = 39270; y = 41001; /*********Found************/ if(x!= y) //改為:== { printf(“x=y”); } /*********Found************/ else;; //去掉;; { printf(“x<>yn”); } return 0;} 4、考查點:文件路徑名表示,文件打開方式選擇,文件打開成功判斷,程序D8.c的功能是打開文件d:te.c用于讀并判斷打開是否成功。#include int main(void){ FILE *fp;/*********Found************/ char fileName[] = “d:te.c”;//改為: /*********Found************/ fp = fopen(fileName, “w”); //改為:r /*********Found************/ if(fp is NULL) //改為:== { puts(“File Open Error!”); return 1;} putchar(fgetc(fp));fclose(fp); return 0;} 5、考查點:指針,內存分配、內存釋放函數(shù)的使用,程序D9.c的功能是申請100個字節(jié)的內存空間,顯示其首地址,然后釋放申請到的內存空間。 #include int main(void){ /*********Found************/ char pch[2]; //改為:*pch /*********Found************/ if(pch =(char *)malloc(100)== NULL) //將紅色部分括起來 { printf(“malloc memory fail!n”); return 1; } printf(“%pn”, pch); /*********Found************/ close(pch); //改為:free return 0;} 6、考查點:指針作函數(shù)參數(shù),函數(shù)調用,程序D14.c的功能是調用函數(shù)swap,將a和b的值交換,最后在屏幕上顯示交換后的a,b之值。 #include /*********Found************/ void swap(int x, int y);//改為:int *x, int *y int main(void){ int a = 3, b = 4; /*********Found************/ swap(a, b); //改為:&a, &b printf(“a=%d b=%dn”, a, b); return 0;} /*********Found************/ void swap(int x, int y) //改為:int *x, int *y { int tmpX; /*********Found************/ ___________ // tmpX =*x; *x = *y; /*********Found************/ *y = x; //改為:*y = tmpX;} 7、考查點:結構體變量定義,結構體成員的輸入、輸出,程序D16.c的功能是worker2的信息使用結構體存儲,從鍵盤讀入其各項信息并顯示。 #include int main(void){ struct WKER { long ID; long int num; char name[20]; char sex; /*********Found************/ }; //改為:worker2; worker2.ID = 1L; /*********Found************/ scanf(“%s %s %s”, &worker2.num, worker2.name, &worker2.sex);//改:%ld%s%c /*********Found************/ printf(“worker's info: num=%s name=%s sex=%sn”,worker2.num, worker2.name, worker2.sex); //改為:%ld %c return 0;} 8、考查點:復合語句、變量作用域,程序D18.c的功能是從鍵盤上讀入10個大于0的數(shù),調用函數(shù)dispMaxNum顯示其中最大的一個。#include int maxiNum = 0; void dispMaxNum(); int main(void){ int i, oneNumber, maxNumber = 0; printf(“Please input 10 int number:”); { int maxNumber = 0; /*********Found************/ ___________ //{ for(i = 0;i < 10;i++) { scanf(“%d”, &oneNumber); if(oneNumber > maxNumber) { maxNumber = oneNumber; } } } /*********Found************/ ___________ // maxiNum = maxNumber /*********Found************/ ___________ //} dispMaxNum(); return 0;} void dispMaxNum(){ /*********Found************/ printf(“maxNumber=%dn”, maxiNum);} 9、考查點:循環(huán)條件表示,循環(huán)體中改變循環(huán)條件,程序D1011.c的功能是從輸入數(shù)據中統(tǒng)計正整數(shù)和負整數(shù)的個數(shù)。用輸入0來結束輸入,變量i存放正整數(shù)個數(shù),變量j存放負整數(shù)的個數(shù)。#include int main(void){ int i = 0, j = 0, n; printf(“ninput numbers:”); scanf(“%d”, &n); /*********Found*********/ while(______________) // n 或者n!= 0 { if(n > 0) { i++; } if(n < 0) { j++; } /*********Found*********/ _________________________ // scanf(“%d”, &n); } printf(“i=%d,j=%d”, i, j); return 0;} 10、考查點:枚舉算法,for語句條件,條件判斷,程序D1012.c的功能是顯示用1、2、3、4個數(shù)字組成的互不相同且無重復數(shù)字的三位數(shù)。#include int main(void){ int i, j, k; /*********Found************/ for(i=1; ;i++) //改為:i <5 { for(j=1;j<5;j++) { for(k=1;k<5;k++) { /*********Found************/ if(i!=k && i!=j && ______)//j!= k { printf(“%d%d%d ”, i, j, k); } } } } return 0;} 11、考查點:數(shù)組逆序存放,循環(huán)次數(shù)控制,換位操作的實現(xiàn),程序D1013.c的功能是將一個數(shù)組中的值按逆序重新存放。例如,原來順序為8,6,5,4,1,要求改為1,4,5,6,8。 #include #define N 10 int main(void){ int a[N], i, temp; printf(“please input %d integer numbers:n”, N); for(i=0;i { scanf(“%d”, &a[i]); } printf(“the array before reverse:n”); for(i=0;i { printf(“%d ”, a[i]); } printf(“n”); /*********Found************/ for(i=0;i //改為:i { temp = a[i]; /*********Found************/ a[i] = a[N-i]; //改為:a[N-1-i] /*********Found************/ a[N-i] = temp; //改為:a[N-1-i] } printf(“the array after reverse:n”); for(i=0;i { printf(“%d ”, a[i]); } printf(“n”); return 0;} 12、考查點:排序算法的實現(xiàn),排序條件,數(shù)據交換、字符數(shù)組的處理,程序D1014.c的功能是將字符數(shù)組a中元素從大到小排列(值相同的元素不交換位置)。 #include int main(void){ int i, j, k; char a[] = “l(fā)anguage”, t; k = strlen(a); for(i=0;i { for(j=i+1;j { /*****Found*****/ if(a[i] > a[j])//改為:a[i] < a[j] { t = a[j]; /*****Found*****/ a[i] = a[j];//改為:a[j] = a[i] a[i] = t; } } } printf(“%sn”, a); return 0;} 13、考查點:數(shù)組元素下標,數(shù)組作函數(shù)參數(shù),程序D1015.c的功能是定義一個整型數(shù)組,采用子函數(shù)實現(xiàn)數(shù)據輸入。 #include void input(int a[], int n); int main(void){ int a[10], i; /*********Found************/ input(a[10], 10); //改為:a for(i=0;i<10;i++) { printf(“%d ”, a[i]); } return 0;} void input(int a[], int n){ int i; for(i=0;i { scanf(“%d”, &a[i]); /*********Found************/ i--; //改為:i++ } } 14、考查點:函數(shù)調用,字符串結束標志的使用,程序D1018.c的功能是通過函數(shù),將一個字符串中的元音字母復制到另一字符串,然后輸出。 #include void vowel(char str1[], char str2[]); int main(void){ char str1[81], str2[81]; printf(“please input the string:n”); gets(str1); /*********Found************/ vowel(________________);//改為:str1, str2 printf(“the vowel string is:n”); puts(str2); if(strlen(str2)== 0) { printf(“NONE!n”); } return 0;} void vowel(char str1[], char str2[]){ int i, j = 0;/*********Found************/ for(i=0;________________;i++)//改為:str1[i] { if(str1[i]=='A' || str1[i]=='E' || str1[i]=='I' || str1[i]=='O' || str1[i]=='U' || str1[i]=='a' || str1[i]=='e' || str1[i]=='i' || str1[i]=='o' || str1[i]=='u') { str2[j] = str1[i]; j++; } } str2[j] = '