C语言改错题以及参考答案
改错参考答案:
(3)将字符串yy在屏幕上输出
#include
void main(){/*********Found************/ char yy[100] = "ok??\n";
/*********Found************/
f0r (; *yy; yy++){putchar(*yy);}}
#include
void main(){/*********Found************/ char*yy="ok??\n";
/*********Found************/
for (; *yy; yy++){putchar(*yy);}}
(4)计算半径为2+3的圆的面积
#include
#define PI
3."14
/*********Found************/
#define S(r) PI*r*r
void main(){/*********Found************/ int mianJi;
mianJi = S(2+3);
printf("mian ji=%
5."2f\n", mianJi);}#include
#define PI
3."14
/*********Found************/
#define S(r) PI*(r)*(r)
void main(){/*********Found************/1floatmianJi; mianJi = S(2+3);
printf("mian ji=%
5."2f\n", mianJi);}(8)打开文件d:
\te.c用于读并判断打开是否成功
#include
void main(){FILE *fp;
/*********Found************/
char fileName[] = "d:
\te.c";
/*********Found************/
fp = fopen(fileName, "w");
/*********Found************/
if (fp == EOF){puts("File Open Error!");
exit
(1);}putchar(fgetc(fp));
fclose(fp);}#include
void main(){FILE *fp;
/*********Found************/
char fileName[] = "d:
\\te.c";
/*********Found************/
fp = fopen(fileName, "r");
/*********Found************/
if (fp ==NULL){puts("File Open Error!");
exit
(1);}putchar(fgetc(fp));
fclose(fp);}(9)申请100个字节的内存空间,显示其首地址,然后释放申请到的内存空间#include
#include
void main(){/*********Found************/
char p[100];2/*********Found************/
if (p = (char *)malloc
(100) == NULL){printf("malloc memory fail!\n");
return ;}printf("%p\n", p);
/*********Found************/
fclose(p);}#include
#include
void main(){/*********Found************/ char*p;
/*********Found************/
if ((p = (char *)malloc
(100))== NULL){printf("malloc memory fail!\n"); exit
(1);}printf("%p\n", p);
/*********Found************/
free(p);}(10)将字符串p显示在屏幕上
#include
/*********Found************/
#define BEGIN
/*********Found************/
#define END
void main(){char *p = "";
const int i = 0;
for (printf("\n"); p[i]; )
BEGIN
putchar(p[i]);
i++;
END}#include
/*********Found************/
#define BEGIN{
/*********Found************/
#define END}3void main(){char *p = "";
const int i = 0;
for (printf("\n"); p[i]; )
BEGIN
putchar(p[i]);
/*********Found************/
p++;
END}(14)调用函数swap,将a和b的值交换,最后在屏幕上显示交换后的a,b之值#include
/*********Found************/
void swap(int x, int y){int tmp;
/*********Found************/
______
*x = *y;
/*********Found************/
y = x;}void main(){int a = 3, b = 4;
swap(a, b);
printf("a=%d b=%d\n", a, b);}#include
/*********Found************/
void swap(int*x, int*y){int tmp;
/*********Found************/
tmp = *x;
*x = *y;
/*********Found************/
*y = tmp;}void main(){int a = 3, b = 4;
/*********Found************/
swap(&a,&b);
printf("a=%d b=%d\n", a, b);}4
(15)调用函数swap,将a和b的值交换,最后在屏幕上显示交换后的a,b之值#include
void swap(int *x, int *y){int *tmp, xy;
/*********Found************/
*tmp = x;
*x = *y;
/*********Found************/
y = *tmp;}void main(){int a = 3, b = 4;
/*********Found************/
swap(*a, *b);
/*********Found************/
printf("a=%d b=%d\n", &a, &b);}#include
void swap(int *x, int *y){int *tmp, xy;
/*********Found************/
xy=*x;
*x = *y;
/*********Found************/
*y =xy;}void main(){int a = 3, b = 4;
/*********Found************/
swap(&a,&b);
/*********Found************/
printf("a=%d b=%d\n",a,b);}(16)worker的信息使用结构体存储,从键盘读入其各项信息并显示
#include
void main(){struct WKER{long ID;
long int num;
char name[20];5char sex;
/*********Found************/
} ;
worker.ID = 1L;
/*********Found************/
scanf("%d %s %s", &worker.num, https://www.360docs.net/doc/5b7745502.html,, &worker.sex);
/*********Found************/
printf("worker's info:
num=%d name=%s sex=%s\n",
worker.num, https://www.360docs.net/doc/5b7745502.html,, worker.sex);}#include
void main(){struct WKER{long ID;
long int num;
char name[20];
char sex;
/*********Found************/
}worker;
worker.ID = 1L;
/*********Found************/
scanf("%ld %s %c", &worker.num, https://www.360docs.net/doc/5b7745502.html,,
&worker.sex);/*********Found************/
printf("worker's info:
num=%ld name=%s sex=%c\n",
worker.num, https://www.360docs.net/doc/5b7745502.html,, worker.sex);}(17)函数userLogin的功能主要是统计并返回登录的用户数,用户名最长30字节#include
long userLogin(char *userName){/*********Found************/
long userCount = 0;
userCount++;
/*********Found************/
return ;}void main( ){/*********Found************/
char *userName;
int i;
while
(1){printf("userName:
");
scanf("%s", userName);
i = userLogin(userName);6}}#include
long userLogin(char *userName){/*********Found************/ staticlong userCount = 0;
userCount++;
/*********Found************/
returnuserCount;}void main( ){/*********Found************/ charuserName[31];
int i;
while
(1){printf("userName:
");
scanf("%s", userName);
i = userLogin(userName);}}
(19)将inBuf中字符串拆分成一个个的单词
/*单词之间的分隔符由串divChar,程序中定义为“;?!,.>/\”。
函数getStrFromBuf的功能是从Buf的开始处寻找第一个单词,将找到的单词作为一个字符串复制到Str处,divStr指明单词间的分隔符。GetStrFromBuf的返回值指向已找到单词的下一个字符。
函数charInStr的功能是判断字符t是否出现在串Str中。
主程序的功能是将inBuf中的所有单词在屏幕上显示出来。
*/
#include
#define Yes 1
#define No 0
char *getStrFromBuf(char *Buf, char *Str, char *divStr);
int charInStr(char *Str, char t);
void main(){char inBuf[100] = ">how old are/ you?", *p, oneWord[20];
char divChar[] = " ;?!,.>/\\";
p = inBuf;
while (*p){/*********Found************/
getStrFromBuf(p, oneWord, divChar);
if (*oneWord){puts(oneWord);7}}}
int charInStr(char *Str, char t){for (; *Str;
Str++){/*********Found************/
if (*Str == *t){/*********Found************/
return No;}}
/*********Found************/
return Yes;}char *getStrFromBuf(char *Buf, char *Str, char *divStr){for (; *Buf; Buf++){if (charInStr(divStr, *Buf) == No){break;}}
for (; *Buf; Buf++){if (charInStr(divStr, *Buf) ==
Yes){break;}/*********Found************/
Str = *Buf;
Str++;}/*********Found************/
*Str = '0';
/*********Found************/
return ;}#include
#define Yes 1
#define No 0
char *getStrFromBuf(char *Buf, char *Str, char *divStr);
int charInStr(char *Str, char t);
void main(){char inBuf[100] = ">how old are/ you?", *p, oneWord[20];
char divChar[] = " ;?!,.>/\\";8p = inBuf;
while (*p)/*当p未指向字符串结束符*/{/*********Found************/
p =getStrFromBuf(p, oneWord, divChar);/*让p指向当前单词后*//*如果找到了一个单词,即oneWord第0字符不为\
0。"有可能找不到,例如找到前一单词you后,p指向?且未结束,再找则没有*/
if (*oneWord){puts(oneWord);}}}/*判断字符t是否出现在串Str中,是则返回Yes,否则返回No */
int charInStr(char *Str, char t){for (; *Str;
Str++){/*********Found************/
if (*Str ==t){/*********Found************/
returnYes;}}
/*********Found************/
returnNo;}/*从Buf的开始处寻找第一个单词,将找到的单词作为一个字符串复制到Str处,divStr指明单词间的分隔符。返回值指向已找到单词的下一个字符。*/
char *getStrFromBuf(char *Buf, char *Str, char *divStr){for (; *Buf; Buf++)/*本循环将指针移至单词的第一字符上,即跳过分隔符*/{
if (charInStr(divStr, *Buf) == No){break;}}
for (; *Buf; Buf++){if (charInStr(divStr, *Buf) == Yes)/*若遇分隔符,则当前单词结束*/{
break;}/*********Found************/
*Str = *Buf;
Str++;}/*********Found************/
*Str = '\0';9/*********Found************/
returnBuf;/*Buf现已指向当前单词后,返回该位置*/}10
c语言程序改错题
程序改错------------------------------------- 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语言程序改错2
C语言程序改错题
程序改错完整版---C语言
齐齐哈尔大学C语言题库 程序改错(部分)