文档库 最新最全的文档下载
当前位置:文档库 › c语言填空与改错

c语言填空与改错

c语言填空与改错
c语言填空与改错

1.以下程序求1000以内的所有的完全数之和,请将程序补充完整,并给出正确结果,填入相应窗口。”完全数”是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完全数。

程序:#include

#include

#include

main()

{

int sum,n,m,s,k;

sum=0;

for (n=3;n<=1000;n++) 完数

{

s=0;

k=n/2+1;

for (m=1;m

if (n%m==0)

s=s+m;

if (s==n)

{

sum+=n;

}

}

printf("\nThe sum=%d",sum);

}

s=s+m; sum=sum+n; 530

2.以下程序求[10,1000]之间能被3或5或8整除的数之和。请将程序补充完整,给出正确程序运行结果,填入相应窗口。

#include

#include

#include

main()

{

int i;

long sum;

sum=0;

for ( i=10;i<=1000;i++)

{ if(i%3==0||i%5==0||i%8==0)

sum+=i;

clrscr();

printf("%ld\n",sum);

}

int i; i%3==0||i%5==0||i%8==0 267793

3.下面程序求[3,750]之间同构数之和,请将程序补充完整,并给出正确结果,填入相应窗口。同构数是:一自然数平方的末几位与该数相同时,称此数为自构数,例如:5*5=25,25*25=625则称5、25为自同构数。

程序:

#include

#include

#include

main()

{

long sum,n,m,s,k;

sum=0;

for (n=3;n<=750;n++)

{

if (n<10) k=10;

else

if (n<100) k=100;

else k=1000;

s=n*n;

_________;

if (s%k==0)

{

___________

}

}

printf("\n The sum = %d",sum);

}

s=s-n; sum+=n; 1113

4.下面程序是求[5,75]之间的所有奇数的立方和。请将程序补充完整,并给出正确结果,填入相应窗口。程序:

#include

#include

#include

main()

{

long sum;

int i;

sum=0;

for (i=5;i<=75;i++)

if (i%2!=0)

sum+=i*i*i;

}

clrscr();

printf("%ld\n",sum);

}

int i; sum=sum+i*i*i; 105568

5.下面程序是求[1,450]之间同时满足除3余2和除5余3条件的数的个数。请将程序补充完整,并给出正确结果,填入相应窗口。

程序:

#include

#include

#include

main()

{

int count;

int i;

count=0;

for (i=1;i<=450;i++)

{

if (fmod(i,3)==2 && fmod(i,5)==3)

count++;

}

clrscr();

printf("%d\n",count);

}

count=0; count++; 30

6.下面程序是求[50,450]之间的能被3和5整除的数的平方和。请将程序补充完整,并给出正确结果,填入相应窗口。

程序:

#include

#include

#include

main()

{

long sum;

int i;

sum=0;

for (i=50;i<=450;i++)

if (fmod(i,3)==0 && fmod(i,5)==0)

sum+=i*i;

}

clrscr();

printf("%ld\n",sum);

}

int i; sum=sum+i*i; 27073

7.下面的程序是求[2,500]之间的所有的素数的个数。请将程序补充完整,并给出正确结果,填入相应窗口。

程序:

#include

#include

#include

int prime(int n)

{ int yes, i;

if(n<=1) {return 1;}

yes=1;

for(i=2; i<=sqrt(n); i++)

if(n%i==0){ yes=0; break;} 素数return yes;

}

main()

{ int count=0, i;

clrscr();

for(i=2;i<=500; i++)

if(prime(i)) count++;

printf("%d\n", count);

}

return yes; count++; 95

8.下面的程序是求表达式的值:

s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+......+(1*2*3*....*n)/(3*5*7*.....(2*n+1))

请将程序补充完整,并给出当n=20时,程序的运行结果(按四舍五入保留10位小数)。

程序:

#include

#include

#include

double fun(int n)

{ double s, t; int i;

____________

for(i=1;i<=n; i++)

{ t=t*i/(2*i+1);

____________

}

return s;

}

main()

{printf("\n %12.10lf", fun(20));

}

s=1; s=s+t; 1.5707961494

9.下面的程序是求如下表达式的值。

S=sqrt(ln(1)+ln(2)+ln(3)+……+ln(n))

将程序补充完整,当n=60时,给出程序运行结果(按四舍五入保留6位小数)。

程序:

#include

#include

#include

double fun(int n)

{ ________________

int i;

for(i=1;i<=n;i++)

s+=log(1.0*i);

s=sqrt(s);

return s;

}

main()

{

clrscr();

printf(______________);

}

double s=0; “%.6lf”,fun(60) 13.734197

改错:

1.下面的程序是求500以内的所有的素数之和。请修改程序中的错误,使它能得出正确的结果,并给出正确结果。

程序:

#include

#include

#include

int prime(int n)

{ int yes, i; 素数

if(n<=1) {return 1;}

yes=1;

for(i=2; i<=sqrt(n); i++)

if(n%i==0){ yes=0; break;}

return yes;

}

main()

{ int sum=0, i;

clrscr();

for(i=2;i<=500; i++)

if(prime(i)) sum+=i;

printf("%d\n", sum);

}

return yes; 21536

2.下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。

T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1))

请改正程序中的错误,并运行改正后的程序。当从键盘输入70时,给出程序运行的正确结果(按四舍五入保留6位小数)。

程序:

#include

#include

double fun(int m)

{ double t=1.0;

int i=2;

for(i=2; i<=m; i++)

t+=1.0/(i*(i+1));

return t;

}

main()

{ int m;

clrscr();

printf("\n 请输入一个整数: ");

scanf("%d",&m);

printf("\n 结果是: %.6lf \n", fun(m));

}

t+=1.0/( i*(i+1)); return t; %.6lf 1.485915

3.下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。

T=1/1!+1/2!+1/3!+……+1/m!

请改正程序中的错误,并运行改正后的程序。当从键盘输入10时,给出程序运行的正确结果(按四舍五入保留10位小数)。

程序:

#include

#include

double fun(int m)

{ double fac, t=0.0;

int i=1, j;

for(i=1;i<=m;i++)

{ fac=1.0;

for(j=1; j<=i; j++) fac=fac*j;

t+=1.0/fac;

}

return t;

}

main()

{ int m;

clrscr();

printf("\n 请输入整数: ");

scanf("%d", &m);

printf("\n 结果是: %12.10lf \n",fun(m));

}

j<=i fac=fac*j; 1.7182818011

4.下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。

T=1+1/(1*2)+1/(2*3)+……+1/(m-1)*m

请改正程序中的错误,并运行改正后的程序。当从键盘输入70时,给出程序运行的正确结果(按四舍五入保留6位小数)。

程序:

#include

#include

double fun(int m)

{ double t=1.0;

int i=2;

for(i=2;i<=m; i++)

t+=1.0/(i*(i+1));

return ;

}

main()

{ int m;

clrscr();

printf("\n 输入整数: ");

scanf("%d", &m);

printf("\n 结果是: %lf \n",fun(m));

}

t+=1.0/(i*(i-1)); return t; %.6lf 1.985714

5.下面程序中,函数fun的功能是:计算并输出k以内的最大的10个能被13或17整除的自然数之和。请改正程序中的错误,并运行正确的程序。当从键盘输入500时,给出程序运行的正确结果。

#include

#include

int fun(int k)

{ int m=0, mc=0, j;

while((k>=2)&&mc<10)

{ if ((k%13==0) || (k%17==0))

{ m=m+k; mc++; }

k--;

}

return m;

}

main()

{ int k;

clrscr();

printf("\n 请输入整数:");

scanf("%d", &k);

printf("\n 结果是: %d\n",fun(k));

}

&& || 4622

6.下列程序的功能是:求出以下分数序列的前30项之和,

2/1,3/2,5/3,8/5,13/8,21/13,……

请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。程序:

#include

#include

main()

{ long a,b,c,k;

double s;

clrscr();

s=0.0; a=2; b=1;

for(k=1;k<=30;k++)

s=s+a/b;

c=a; a=a+b; b=c;

printf("\n 结果: %lf\n", s);

}

{s=s+(float)a/b; c=a; a=a+b; b=c;} %.6lf 48.840601

7.下面的程序是求400以内的所有的素数之和。请修改程序中的错误,使它能得出正确的结果,给出正确结果。

#include

#include

#include

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){ yes=0; break;}

return yes;

}

main()

{ int sum=0, i;

clrscr();

for(i=2;i<=400; i++)

if(prime(i)) sum+=i;

printf("%d\n", sum);

}

yes=1; yes=0; 13887

8.下面的程序是计算:s=f(-30)+f(-29)+......+f(-1)+f(0)+f(1)+......+f(30)

的值。其中函数定义如下:

f(x)=(x+1)/(x-2) if x>=1

f(x)=0 if x=0 or x=2

f(x)=(x-1)/(x-2) if x<0

请改正程序中的错误,并给出正确程序的运行结果(按四舍五入保留6位小数)。程序:

#include

#include

#include

double f(double x)

{ if(x==0 && x==2)

return 0.0 ;

else if(x<0.0)

return (x-1)/(x-2);

else

return (x+1)/(x-2);

}

double fsum(int n)

{ int i; double s=0.0, y;

for(i=-n; i<=n;i++)

{y=f(1.0*i); s+=y;}

}

main()

{ clrscr();

printf("%lf\n", fsum(30));

}

x==0 || x==2 return s; %.6lf 65.223018

9.下面的程序是计算如下公式的A15值。

A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ......

请改正程序中的错误,并给出程序运行的正确结果(按四舍五入保留10位小数)程序:

#include

#include

double fun(int n)

{ int A=1.0;int i;

for(i=2; i<=n; i++)

A+=1.0/(1+A);

return A;

}

main()

{ clrscr();

printf("%12.10lf\n", fun(15));

}

double A=1.0; A=1.0/(1+A); 0.6180344478

C语言程序改错及填空题

下列程序是建立一个包含学生有关数据的单向链表。但该程序有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)

C语言改错题库

C语言改错题库 目录 C语言改错题库 (1) 从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。 (3) 2.求一维数组a中的值为偶数的元素之和。 (3) 3.求二维数组a中的最大值。 (4) 5.猴子第一天摘下若干桃子 (5) 6. 将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。 (5) 7.求出a所指数组中最大数(规定最大数不在a[0]中),最大值和a[0]中的数对调。 (6) 8.输出200~300之间的所有素数,要求每行输出8个素数。 (6) 9.打印九九乘法表 (6) 10.输出100~200之间既不能被3整除也不能被7整除的整数并统计这些整数的个数,要求每行输出8个数。 (7) 10.输出100~200之间既不能被3整除也不能被7整除的整数并统计这些整数的个数,要求每行输出8个数。 (7) 11.打印输出以下图形 (8) 12.求:1!+2!+3!+ ...... + 20! (8) 13.输入一个百分制成绩,打印出五级记分成绩。 (8) 14.求一维数组a中值为奇数的元素的平均值。 (9) 15.将[m,n]之间的所有素数存放到一维数组a中,并输出。 (9) 16.求一维数组a中所有元素的平均值。 (10) 17.将[2,100]之间的所有素数存放到一维数组a中,并输出这些素数。 (10) 18.求一维数组a中所有元素的平均值,结果保留两位小数。 (11) 19. 当M为5时,如果从键盘上输入的5个数 (11) 20. 在第一个循环中给a数组的前10个数组元素 (12) 21. 把数组a(大小为M)中前M-1个元素中的最大值放入a的最后一个元素中。 (12) 22.求排列组合的值 (12) 23. 计算正整数num的各位上的数字之和。 (13) 24.从键盘上输入一个正整数n,计算并输出n的阶乘。 (13) 25.从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数. 例如:从键盘上输入2345, (14) 26. 求一维数组a中素数的个数。 (14) 27.输出Fabonacci数列:1,1,2,3,5,8,......的前20项的值,要求每行输出5个数。 .. (15) 28.求一维数组a中非素数之和。 (15) 29.求两个正整数m,n之间的非素数之和(包含m和n)。 (16) 30.将无符号八进制数字构成的字符串转换为十进制整数。 (16) 31.计算1到M(M为100)之间的奇数之和及偶数之和。 (16) 32.实现在N行M列的二维数组中,找出每一行上的最大值,且原数组值不变。 (17)

C语言程序改错题

第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ double fun( r) double fun(double r) { double s; /**********FOUND**********/ s=1/2*3.14159* r * r; s=1.0/2*3.14159*r*r; /**********FOUND**********/ return r; return s; } main() { float x;

printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; int sl,i; sl = strlen(s); for (i=0; i

C语言程序改错2

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 2 float s=0,t=1,p=1; 3 while(fabs(t)>1e-4)或while(fabs(t)>0.0001) 4 printf("pi=%f\n", s * 4 ); 4、功能:计算正整数num的各位上的数字之积。例如,输入252,则输出应该是20。『答案』:1 long k=1; 或long int k=1; 2 num/=10; 或num=num/10; 3 scanf("%ld",&n); 4 printf("\n%ld\n",fun(n)); 5、功能:(与上题略有不同)计算正整数num的各位数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 『答案』:1 {long k=1; 2 num/=10; 或num=num/10; 3 } while(num) ; 或}while(num!=0); 或}while(num>0); 6、题目:判断m是否为素数,若是返回1,否则返回0。 『答案』:1 int fun( int m) 或fun( int m) 2 for(i=2;isqrt(i)) 4 return i; 或return (i);

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

(一)功能:用选择法对数组中的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; k

C语言常见改错

C语言改错题常见错误归纳 一、书写错误 1:mian→(main)见例一 2:print→(printf) 3:include→(#include) 二、类型定义错误 1:在主函数中,要注意计算时用到的与定义是否一致。(int是十进制整数,float是实数,double是双精度、只是较float更精确)见例四 2:在子函数中注意大括号外定义类型与里面的要相同。见例三 三、格式错误 1:常见格式int→%d,long→%ld,float→%f,double→%lf 2:所需输出结果与已定义类型不同,可以利用强制转换符。如定义sum为int,但要输出实数float,可以(float)sum 。见例一 四、固定语句格式错误 1:for(;;); 2:while(); 3:switch(){ };(for,while,switch后面无分号)见例五 4:do{ }while();(do{ }while结构后面有分号)

五、赋值错误 1:未赋初值。如求和时一般sum=0,求阶乘时一般n=1。见例一 2:注意题中赋值是否正确。如究竟i是赋1还是0。见例五 六、大小关系错误 1:大于号和小于号与所求程序不符。见例一 2:是否携带等号<=,>= 七、返回值错误 1:在子函数中,return (i)i 是要返回到主函数的值。 2:在子函数中,return(1)返回主函数是执行后yes 的结果,return(0) 返回执行后no的结果。见例二 3:一般在主函数中很少涉及返回值的错误 八、其他错误 1、参数未定义:程序中出现的任何变量i或常量j=1,都要定义他们的类型。 2、等号与赋值弄混好:==为等号,=为赋值号。见例二 3、与scanf搭配未加地址符, 也不可加\n换行符在d 后面,scanf(“%d”,&i); 4、行末未加分号,每行后面需要分号。 5、子函数中形参为定义好。见例六 经典例题

齐齐哈尔大学C语言题库 程序改错(部分)

1.【程序改错】 题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) int fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} *b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i

C语言程序改错题

第1题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; sl = strlen(s); for (i=0; i

C语言改错题

题号: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);

C语言程序改错题及答案

程序调试1、 #include #include void fun(char *s,char *t) { int i,sl; sl=strlen(s); for(i=0;i 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、

C语言程序改错练习题

程序改错练习题 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。 1.求1?2?3?4? ?n main() { int sum; 正确:int sum=1; int n,i=1; scanf("%d",n); scanf(“%d”,&n); printf(“\n”); while(ia[j]) if(max

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存较小的数 #include main( ){ int x , y=200 , z=0; x=180; if ( x

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!");

C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案

实验一Visual C++集成环境实验内容 (一)程序改错 1. (1)无法运行 (2)将第二个C程序重新存放到另一个工程文件中 (3)同一个工程文件只能有一个main函数 2. (1)/*一个简单的程序*/ (2)void main() (3)} 3. (1)int a,b,c; (2)a=2; (3)c=a*b; (二)完善程序 1. (1)year (2)month (3)day 2. (1)c (2)a*a+b*b (3)c 3. (1)4 (2)4*a (3)s 课后练习 1.D

2.D 3.A 4.C 5.C 6.C 7.stdio.h 8.main函数 实验二数据类型、运算符和表达式课前练习 1. 20 8 70 0 2. Abs3 Class _else sum my_class 、 3block a+b for fun(4) a-b 3.B 4.D 5.A 6.C 7.D 8.B 实验内容 (一)程序改错 1. (1)int x1,x2,x3,x4; (2)scanf("%d,%d",&a,&b); (3)c=x4*1000+x2*100+x3*10+x1; 2. 程序1: ① 2 2 ②error C2065: 'a1' : undeclared identifier 变量a1没有定义 sum=a+b+c ③ 1 error C2146: syntax error : missing ';' before identifier 'printf' printf语句之前缺少分号

sum=a+b+c; ④0 error(s), 0 warning(s) ⑤a=1 b=3 c=2 sum=6 ⑥语句以分号结束;变量要先定义后使用。程序2: ① 2 2 ②error C2065: 'sum' : undeclared identifier 变量sum没有定义 int sum=a+b; 1 error C2086: 'c' : redefinition 变量c重复定义 c=a+b+sum; ③a=1 b=3 sum=8 ④在同一个函数体内,变量要先定义后使用,但不能重复定义 程序3: ① 1 error C2106: '=' : left operand must be l-value 赋值符号左边参数错误 c=a+b; ②c=4 ③赋值符号左边只能是变量,不能是常量或表达式 3. (1)t=a; (2)a=b;; (3)printf("a=%d\tb=%d\n",a,b); (二)完善程序 1. (1) int n (2)”%d”,&n (3)s 2. (1)float s (2)(float)a/b (3)%f 3. (1)#include (2)pow(x,y) (3)“%lf”,s

C语言程序改错基本题

北京石油化工学院12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求3+4 int a=3,b=4; main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。

sum(x,y) { float z; z=x+y; return; } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a

2013计算机等级考试二级C语言程序改错题

2013计算机等级考试二级C语言程序改错题 1、下列给定程序中,函数fun的功能是:将s所指字符串的郑旭和反序进行连接,形成的新串放在t所指的数组中 2、函数fun的功能是:用下面的公式求π的近似值,知道最后一项的绝对值小于指定的数为止。 3、函数fun的功能是:传入一个整数m,计算如下公式的值。T=1/2-1/m。 4、函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。、从参数1-55,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的属猪5 中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。 6、求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未能找到,则函数值为null。 7、按以下递归公式求函数的值fun(n)={10 (n=1)。 8、函数fun和funx的功能是:用二分法求方程2x-4x+3x-6=0的一个根,并要求绝对误差不超过0.001。 9、首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的升序字符接在c所指的数组的尾部。 10、计算整数n的阶乘。 11、计算函数F(x,y,z)=(x+y)的值。其中x和y的值不相等,z和y的值不相等。 12、利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值;否则,返回-1。 13、求三个数的最小公倍数。

14、将s所指字符串中最后一次出现的鱼t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。 15、逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符一次存放到c所指的数组中,形成一个新的字符串。 16、根据以下公示求π值,并作为函数值返回。 17、将s所指字符串中出现的与t1所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。 18、从s所指字符串中,找出t所指字符串的个数作为函数值返回。 19、对n名学生的学习成绩,从高到地的顺序找出钱m(<10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 20、根据整形参数m,计算如下公式的值y=1/(100*100)+。 21、从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t 中。高位仍在高位,低位仍在低位。 22、将p所指字符串中的所有字符复制到b中,要求每复制3个字符之后插入一个空格。 23、把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。 24、用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列1,1,2,3,5,。 25、将一个由八进制数字字符组成的字符串转换成十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。 26、按顺序给s所指数组的元素赋予2开始的偶数,然后再按顺序对每5个元素求平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。

C语言程序改错及填空题

C语言程序改错及填空题

gc23.c下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在 每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct 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() {

c语言试题及答案 ()

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以/* 符号作为开始标记,以 */ 符号作为结束标记。

C语言程序改错题及答案

C语言程序改错题及答 案 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

程序调试 1、 #include <> #include <> void fun(char *s,char *t) { int i,sl; sl=strlen(s); for(i=0;i #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、在考生目录下,有程序,该程序中"/***** N *****/"的下 一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负) 该程序功能:输入n(0 void main() { int i,j,n; /***** 1 *****/ scanf("%d",n); // &n for(i=1;i<=n;i++) {

相关文档