文档库 最新最全的文档下载
当前位置:文档库 › 福建C语言往届试题之改错题

福建C语言往届试题之改错题

福建C语言往届试题之改错题
福建C语言往届试题之改错题

改错题

1)修改程序cmody591.c,按每行10个数的形式输出[10,99]区间内满足“个位数与十位数之积大于它们之和”的所有整数。例如:

整数38,个位数与十位数之积24(3×8)大于它们之和11(3+8)#include

#include

void main()

{ int i,j,k,s,n=0;

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

{ /**/ k=0; /**/

s=0;

j=i;

while(j)

{ k*=j%10;

s+=j%10;

/**/ j=j%10 /**/;

}

if(/**/ k

{ if(n%10==0) printf("\n");

n++;

printf("%-5d",i);

}

}

printf("\n");

getch();

}

cmody591.c

/**/ k=1; /**/

/**/ j=j/10 /**/

/**/ k>s /**/

2)修改程序cmody592.c,使函数pnt(int a[M][M], int n),根据参数n(1

当n=6时,输出:

1113 15 17 19 21

2223 24 25 26 27

3335 37 39 41 43

4445 46 47 48 49

5557 59 61 63 65

6667 68 69 70 71

当n=3时,输出:

1113 15

2223 24

3335 37

#include

#include

#define M 9

void pnt(int a[M][M],int n)

{ int /**/i,j /**/;

for(i=0;i

{ s=(i+1)*11;

for(j=0;j

{ if(i%2==0)

a[i][j]=s+2*j;

else

a[i][j]=/**/ s+j+1 /**/;

}

}

printf("array a(n=%d) is:\n",n);

for(i=0;i

{ for(j=0;j

printf("\n");

}

}

void main()

{ int a[M][M];

int n;

do

{ printf("Please input n(1

scanf("%d",&n);

}while(n<=1 || n>=10);

pnt(/**/ a[ ]/**/,n);

getch();

}

cmody592.c

/**/i,j,s /**/

/**/ s+j /**/

/**/ a/**/

3)修改程序cmody601.c,使字符串中所有大写的英文字母转换为小写英文字母(其它字符不变)。例如:

原字符串:g@O355o6D LuCk!

被转换成:g@o35506d luck!

#include

#include

#include

void main()

{

char src[80],tag[80];

int i;

/**/ i='0'; /**/

printf("Please input source string: ");

gets(src);

strcpy(tag,src);

while(/**/ tag[i]=='\0' /**/)

{

if(tag[i]>='A' && tag[i]<='Z')

/**/ tag[i]-=32; /**/

i++;

}

printf("\nThe source string: %s\n",src);

printf("The target string: %s\n",tag);

getch();

}

cmody601.c

/**/ i=0; /**/

/**/ tag[i]!='\0' /**/

/**/ tag[i]+=32; /**/

(4)修改程序cmody602.c,使函数p_swap( )利用指针变量实现函数main( )中两个变量值的交换。例如:

输入:23,78

显示:Original a=23, b=78

Now a=78, b=23

#include

#include

void p_swap(int *x,int *y)

{

int /**/ t /**/;

temp=*y;

*y=/**/ x /**/;

*x=temp;

}

void main()

{

int a,b;

printf("Input a,b:");

scanf("%d,%d",&a,&b);

printf("Original a=%d, b=%d\n",a,b);

p_swap(&a,/**/ b /**/);

printf("Now a=%d, b=%d\n",a,b);

getch();

}

cmody602.c

/**/ temp /**/

/**/ *x /**/

/**/ &b /**/

(5)修改程序cmody611.c,已知圆柱体底面圆的半径r,从键盘输入圆柱体的高h,若h>=0,则根据以下公式求圆柱体的体积,否则提示出错信息。

result=2

PI h, 其中, 3.14

*r*

PI

#include

#include

#define /**/ PI=3.14 /**/

void main()

{

float r=5.0,h,result;

printf("Please input h:");

scanf("%f",/**/ h /**/);

if(/**/ h<0 /**/)

{

result = PI*r*r*h;

printf("The result is:%.2f\n",result);

}

else

printf("Error!\n");

getch();

}

cmody611.c

/**/ PI 3.14 /**/

/**/ &h /**/

/**/ h>=0 /**/

6)改错题cmody612.c,使函数arrayclass(int a[ ])完成如下功能:

(1)遍历数组a,找出其中做大值max和最小值min;

(2)再次遍历数组a 进行元素归类,若元素与max差值的绝对值小于其与min 差值的绝对值,则将该元素存入数组max_class中,否则存入数组min_class中;

(3)变量n_max和n_min分别表示存入数组max_class和min_class的元素个数。#include

#include

#include

#define N 15

void arrayclass(int a[ ])

{

int max_class[N], min_class[N];

int i, max, min, n_max, n_min;

/**/ n_max=0 /**/;

max=min=a[0];

for(i=1;i

{ if(max

if(min>a[i]) min=a[i];

}

for(i=0;i

{

if( fabs(a[i]-max) < fabs(a[i]-min) )

{ max_class[n_max]=a[i];

n_max++;

}

else

{ min_class[n_min]=a[i] ;

/**/ n_min-- /**/;

}

}

printf("\n max is :%d\n",max);

printf(" Array of max_class is:\n");

for(i=0;i

printf("%5d",max_class[i]);

printf("\n min is :%d\n",min);

printf(" Array of min_class is:\n");

for(i=0;/**/ i<=n_min /**/; i++)

printf("%5d",min_class[i]);

}

void main()

{

int a[N] = {13,24,0,-12,18,29,-8,32,7, 20,3,10,16,-3,26};

arrayclass(a);

getch();

}

cmody612.c

/**/ n_max=n_min=0 /**/

/**/ n_min++ /**/

/**/ i

7) 修改程序cmody621.c,实现求满足

13000

n

i

i =

>

∑的最小正整数n。

#include

void main()

{

int i=1,sum=0;

while(/**/ sum>3000 /**/)

{

/**/ sum=i; /**/

i++;

}

printf("1+2+3+4+...+%d=%d\n",/**/ i /**/,sum);

getch();

}

cmody621.c

/**/ sum<=3000 /**/

/**/ sum+=i; /**/

/**/ i-1 /**/

8) 修改程序cmody622.c, 使函数fun(char *p, char *q)完成如下功能:

将p所指字符串中的字符逐个复制到q所指字符串中,在每4个字符之后插入1个空格(注:若遇空格字符则重新累计字符个数)。例如,

输入:ABC DEFGHI JKL MNOPQRS

输出:ABC DEFG HI JKL MNOP QRS

#include

#include

void fun(char *p, char *q )

{ int n, i;

/**/ i=1; /**/

while(*p)

{ n=1;

while(n<=4 && *p)

{ q[i++]=*p;

if(*p==' ') /**/ n=1; /**/

p++;

n++;

}

if(*p)

{ if(*p!=' ') q[i++]=' ';

else

{ q[i++]=*p;

p++;

}

}

}

/**/ q[i]='0' /**/;

}

void main()

{

char str_a[80],str_b[80];

printf("Enter a string:");

gets(str_a);

printf("The original string is: \n");

puts(str_a);

fun(str_a,str_b);

printf("The string after insert space is: \n");

puts(str_b);

getch();

}

cmody622.c

/**/ i=0; /**/

/**/ n=0; /**/

/**/ q[i]='\0' /**/

9)改错题cmody631.c,实现任意输入一个年份和月份,输出该月有多少天。提示:

(1)二维数组day的第1行存放非闰年每个月的天数,第二行存放闰年每个月的天数;

(2)判断输入年份是否为闰年,若是则从day的第2行获取对应的月份天数,否则从day 的第一行获取对应的月份天数。

#include

#include

void main()

{

int /**/ day /**/={{31,28,31,30,31,

30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,

31}};

int year,month,/**/ flag=1 /**/;

printf("Please input year:");

scanf("%d",&year);

printf("Please input month:");

scanf("%d",&month);

if(year%400==0 || year%4==0 && year%100!=0)

flag=1;

printf("Days of the month is %d.",/**/ day[flag][month] /**/);

printf("\n");

getch();

}

cmody631.c

/**/ day[2][12] /**/

/**/ flag=0 /**/

/**/ day[flag][month-1] /**/

(10) 修改程序cmody632.c,使函数pattern(int n)根据参数n(1

当n=5时:

*

*#*

*#*#*

*#*#*#*

*#*#*#*#*

当n=4时:

*

*#*

*#*#*

*#*#*#*

#include

#include

void pattern(/**/ int /**/)

{ int i,j,space;

for(i=1;/**/ i

{ for(space=1;space<=20-i;space++)

printf(" ");

for(j=1;j<=2*i-1;j++)

{ if(/**/ j%2==0 /**/)

printf("*");

else

printf("#");

}

printf("\n");

}

}

void main()

{ int n;

do

{ printf("Please input n(1

scanf("%d",&n);

}while(n<=1 || n>=10);

pattern(n);

getch();

}

cmody632.c

/**/ int n /**/

/**/ i<=n /**/

/**/ j%2!=0 /**/

11)修改程序cmody491.c, 计算满足以下条件的整数n的最大值。

?

+

+

?

+

-

+

n

?n

?

+

2

5

(

)1

1000

?

4

1<

4

2

3

3

#include

#include

void main()

{

int n=1, sum=0;

/**/ if(sum<1000) /**/

{

sum+=n*(n+1);

n++;

}

printf("n=%d\n",/**/ n /**/);

getch();

}

cmody491.c

/**/ while(sum<1000) /**/

/**/ n-1 /**/

12)修改程序cmody492.c,实现从键盘输入一串字符和整数n,若n小于字符

串长度则从字符串右侧开始截取n个字符,否则显示无法运行。

例如:输入的字符串为”Professor”,n=3,则截取的子串为”sor”。

#include

#include

#include

void main()

{

char str[100],sub[100];

int n,len,i;

printf("Enter string:");

gets(str);

printf("\nEnter n:");

scanf("%d",&n);

len=strlen(str);

if( n>len )

printf("Can't run with %d !\n",n);

else

{ /**/ i=1; /**/

while(i

{

/**/ sub[i]=str[n+i]; /**/

i++;

}

/**/ sub[i]='\n'; /**/

printf("\nsub string is:%s\n",sub);

}

getch();

}

cmody492.c

/**/ i=0; /**/

/**/ sub[i]=str[len-n+i]; /**/

/**/ sub[i]='\0'; /**/

13)修改程序cmody501.c,输出总分最高学生的姓名和总分(8位学生的姓名和两科成绩已存储在结构体数组中)。

#include

#include

struct student

{ char name[10];

float score[2];

};

void main()

{

/**/ student stu[8] /**/={{"Mary",76,85},

{"John",85,90},{"Tom",81,78},{"Susa",87,67},{"Wilu",79,98},{"Yili",65,63},{"Son mu",73,82},{"Lichar",70,71}};

int i=0,p;

float total, max=0;

while(i<8)

{ total=/**/ stu[i].score[1]+stu[i].score[2]; /**/

if(total>max)

{ max=total;

p=i;

}

i++;

}

printf("\n Best is %s, ",stu[p].name);

printf("Total=%.1f \n", /**/ total /**/);

getch();

}

cmody501.c

/**/ struct student stu[8] /**/

/**/ stu[i].score[0]+stu[i].score[1]; /**/

/**/ max /**/

14)修改程序cmody502.c,使函数find(int a[ ]) 计算数组a各元素的平均值,以及每个元素与该平均值的差,并返回差的绝对值的最大值。

#include

#include

#include

#define N 10

double find(int a[])

{ int i;

double max,/**/ aver=1 /**/;

for(i=0;i

aver+=a[i] ;

/**/ aver=N /**/;

max=fabs(a[0]-aver);

for(i=1; i

if(fabs(a[i]-aver)>max)

max= fabs(a[i]-aver) ;

return(/**/ aver /**/);

}

void main()

{ int arr[N]={11,23,15,27,9,20,18,16,24,22};

printf("Result is %lf.\n",find(arr));

getch();

}

cmody502.c

/**/ aver=0 /**/

/**/ aver/=N /**/;

/**/ max /**/

15)修改程序cmody511.c,实现从键盘输入10个100以内互不相同的正整数,输出其中第二大的数

#include

#include

void main()

{

int i,/**/ max1=max2=0 /**/;

int s[10];

printf("Please input 10 numbers:\n");

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

{ scanf("%d",&s[i] );

if(s[i]>max1)

{ /**/max2=s[i];/**/

max1=s[i];

}

else if(s[i]>max2)

{ max2=s[i];

}

}

printf("\n%d\n",/**/ s[i] /**/);

getch();

}

cmody511.c

/**/ max1=0, max2=0 /**/;

/**/max2=max1;/**/

/**/ max2 /**/

16)修改程序cmody512.c,实现将升序排列数组a与b的元素按升序存入数组c中。

#include

#include

void main()

{ int a[5]={3,7,8,15,18};

int b[6]={-3,0,5,9,19,36};

int c[11];

/**/ int i,j; /**/

i=j=k=0;

while(i<5 && j<6)

{ if(a[i]<=b[j])

{ c[k]=a[i] ;

/**/ k--; /**/

i++;

}

else

c[k++]=b[j++];

}

while(i<5)

c[k++]=a[i++];

while(j<6)

c[k++]=/**/ b[j--] /**/;

printf("\nArray a:\n");

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

printf("%3d ",a[i]);

printf("\nArray b:\n");

for(j=0;j<6;j++)

printf("%3d ",b[j]);

printf("\nArray c:\n");

for(k=0;k<11;k++)

printf("%3d ",c[k]);

printf("\n");

getch();

}

cmody512.c

/**/ int i,j,k; /**/

/**/ k++; /**/

/**/ b[j++] /**/;

17)修改程序cmody521.c,实现从键盘输入一个仅包含‘0’、‘1’的字符串,输出其中仅含‘0’的最长子串的长度和这种子串第一次出现的起始位置(第几个字符)。

例如:

输入:0011101000010100001

输出:4 8

#include

#include

#include

void main()

{ char c;

int i , len, p, maxlen=0;

i=0;

/**/ len=10; /**/

printf("\nPlease input the string: ");

while((c=getchar())!='\n')

{ i++;

if/**/ (c='1') /**/

len++;

else

{ if(len>maxlen)

{ maxlen=len;

/**/ p=i; /**/

}

len=0;

}

}

printf("\n%d %d",maxlen,p);

getch();

}

cmody521.c

/**/ len=0; /**/

/**/ (c=='0') /**/

/**/ p=i-maxlen; /**/

18)有1020本挂历,第一天卖一半另加至多两本,半本挂历按四舍五入整为一本,以后每天均按此规则销售。修改程序cmody522.c,使函数days(int n)返回卖完这些挂历所需要的天数。

#include

#include

int days( int n )

{

/**/ int rst,dy=1; /**/

while(n>0)

{ rst=/**/ (n-2)/2 /**/;

n=rst;

dy++;

}

return (/**/ n /**/);

}

void main()

{

printf("days= %d\n", days(1020));

getch();

}

cmody522.c

/**/ int rst,dy=0; /**/

/**/ n/2-2 /**/

/**/ dy /**/

19)修改程序cmody531.c,实现输入一个字符串(长度不超过100个字符),只保留其中字母和数字字符,将其余字符删除后输出。例如:

输入:aS?1%q95R/w0#

输出:aS1q95Rw0

#include

#include

#include

void main()

{ char str[100];

char c;

int i;

i=0;

printf("\nPlease input the string: ");

while((c=getchar())!='\n')

{

if(c>='A'&&c<='Z'||c>='a'&&c<='z'||/**/ c>=0 &&c<=9 /**/)

/**/ str[i]=c; /**/

}

/**/ str[i]='\n'; /**/

puts(str);

getch();

}

cmody531.c

/**/ c>='0' &&c<='9' /**/

/**/ str[i++]=c; /**/

/**/ str[i]='\0'; /**/

20)修改程序cmody532.c,实现如下图形的输出。

1 2 3 4 5

0 1 2 3 4

0 0 1 2 3

0 0 0 1 2

0 0 0 0 1

#include

#include

#define N 5

void main()

{ int /**/ arr(N,N) /**/;

int i,j;

for(i=0;i

{ for(j=0;j

{ if(j

arr[i][j]=/**/ 1 /**/;

else

arr[i][j]=/**/ j-i /**/;

printf("%3d",arr[i][j]);

}

printf("\n");

}

getch();

}

cmody532.c

/**/ arr[N][N] /**/

/**/ 0 /**/

/**/ j-i+1 /**/

21. 修改程序Cmody541.c中的错误,实现将键盘输入字符串中的’1’~’9’转换成比它小1的数字字符,‘0’转换成‘9’。如

输入:ab50cd89EF34GH43

输出:ab49cd78EF23GH32

#include

#include

main()

{

char s1[100], s2[100];

int i,s_len;

printf("Please input string: \n");

gets(s1);

s_len = strlen(s1);

for(/**/i=1; /**/ i

{

if( s1[i] >= '1' && s1[i] <= '9')

/**/s2[i]--;/**/

else if( /**/ s1[i] =0/**/)

s2[i] = s1[i]+9;

else

s2[i] = s1[i];

}

s2[i] = '\0';

puts(s2);

getch();

}

cmody541.c

/**/i=0; /**/

/**/s2[i]=s1[i]-1;/**/

/**/ s1[i] =='0'/**/

22. 修改程序Cmody542.c,其中函数fun( )将0、1字符串表示的二进制数转换成对应的十进制数,并返回转换结果。如:

输入字符串:10100111

输出结果:167

#include

int fun( char *p )

{

int y;

/**/ y=1; /**/

while(*p!='\0')

{y=y*2+*p-'0';

/**/ y++ /**/;

}

return(/**/ 0 /**/);

}

void main()

{

char str_b[9];

printf("Enter binary string: ");

gets(str_b);

printf("\nDecimal is: %d\n",fun(str_b) );

getch();

}

cmody542.c

/**/ y=0; /**/

/**/ p++ /**/;

/**/ y /**/

23. 程序Cmody551.c,计算满足下列条件的所有零件数,保存到数组num[100]中。有一堆零件,总数在100到500之间并且满足:若按5个零件进行分组,则最后多出3个;若按7个零件分组,则多出2个。

#include

void main()

{

int/**/ i,num[100];/**/

count=0 ;

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

if( /**/i%5 =0 && i%7=0 /**/)

{

/**/num[i]=i;/**/

count++;

}

for(i=0; i

printf("%5d", num[i]);

getch();

}

cmody551.c

/**/ i, count, num[100];/**/

/**/i%5 ==3 && i%7==2 /**/

/**/num[count]=i;/**/

24. 修改程序Cmody552.c,其中函数Is_Prime(int x)用于判断x::若x 0则返回值为-1;x>0则判断其是否为素数,若是返回值为1,否则返回值为0.

#include

#include

/**/ integer /**/Is_Prime( int x )

{

int /**/ i/**/;

if(x<=0)

return(-1);

else

{

k=(int)sqrt((double)x);

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

if(x%i== /**/ 1 /**/)

{return(0);

}

return (1);

}

}

void main()

{

int a;

printf("Input a number: ");

scanf("%d",&a);

printf("%d\n", Is_Prime(a));

getch();

}

cmody552.c

/**/ int /**/

/**/ i,k/**/;

/**/ 0/**/

25. 程序Cmody561.c ,计算如下数字表达式:

1

1112-++-+=y y x x x

#include

void main()

{

float x,y;

/**/ int result; /**/

printf("\nPlease input x,y: ");

scanf( "%f%f" ,&x,&y);

while(/**/ x==1 && y==1 /**/)

{

printf("Error :Divided by zero!");

printf("\nPlease input x,y: ");

scanf("%f%f",&x,&y);

}

result= (x*x+1)/(x-1)+(y+1)/(y-1);

printf("\nResult=%.2f\n",result);

getch();

}

cmody561.c

/**/ float result; /**/

/**/ x==1 || y==1 /**/

26. 修改程序Cmody562.c ,其中函数fun_time(int x[ ],int n,int y)将数组x 中每个元素值依次乘以y 。

#include

void fun_time(int x[],int n,/**/ y /**/)

{

int i;

for(i=0;/**/ i>n /**/; i++ )

x[i]*=y;

}

void main()

{

int a[10]={12,4,6,9,0,-2,3,10,-6,19};

int i,k;

printf("Input a multiplier:");

scanf("%d",&k);

fun_time(/**/ a[1] /**/,10,k);

printf("Now array a is:");

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

printf("%4d",a[i]);

printf("\n");

getch();

}

cmody562.c

/**/ int y /**/

/**/ i

/**/ a /**/

27. 程序Cmody571.c,其中的函数chg_str(char s[ ])将字符串中所有偶数位置上的大写字母转换为小写字母。(注:首位为奇数位。)

如:字符串khAB58fDR?!KM将转换为khAb58fdR?!kM

#include

void chg_str(/**/ s[] /**/)

{

int i;

for(i=0;s[i]!='\0';i++)

{if ((/**/ s[i]>='a' /**/ && s[i]<='Z' ) && i%2)

/**/ s[i]=s[i]-32; /**/

}

}

main()

{

char str_s[100];

printf("Enter string: ");

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;ix[i+1]) { t=x[j];x[j]=x[j+1];x[j+1]=t;} } main() { int i,n,a[100]; printf("please input the length of the array:\n"); scanf("%d",&n); for(i=0;ij;j++) 或 for(j=0;jj;j++) 3 if(x[j]>x[j+1]) 或 if(x[j+1]

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语言程序改错

【程序改错】 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

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语言程序改错题

第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语言

(一)功能:用选择法对数组中的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语言题库 程序改错(部分)

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语言程序改错

程序改错 功能:编制统计营业员一天的营业额的程序,设程序采用一个循环实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 有以下统计营业员一天营业额的算法: 统计营业员一天营业额 { 营业额清0; 输入第一笔交易额; while(交易额>0.0) { 累计营业额; 输入下一笔交易额; } 输出营业额; } 记一笔交易额为变量sale,营业额为sigma。 /**********FOUND**********/ float sale,sigma; sigma=0.0; printf("Enter sale data.\n");

/**********FOUND**********/ scanf("%f",&sale); while(sale>0.0) { /**********FOUND**********/ sigma+=sale; 功能:输入两个双精度数,函数返回它们的平方和的平方根值。例如:输入:22.936 和14.121,输出为:y = 26.934415。/**********FOUND**********/ double fun (double *a, double*b) { double c; /**********FOUND**********/ c = sqrt(*a**a + *b**b); /**********FOUND**********/ return c; 【程序改错】 -------------------------------------------------------- 功能:分别统计字符串中大写字母和小写字母的个数。

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

c语言程序改错讲解

一、程序改错共44题 第1题(10.0分)题号:380 难度:中第2章 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:输入两个双精度数,函数返回它们的平方和的平方根值。 例如:输入:22.936 和 14.121,输出为:y = 26.934415。 ------------------------------------------------------*/ #include #include #include /**********FOUND**********/ double fun (double *a, *b) // double fun (double *a, double *b) { double c; /**********FOUND**********/ c = sqr(a*a + b*b); // c = sqrt(a*a + b*b); /**********FOUND**********/ return *c; // return c; } main ( ) { double a, b, y; printf ( "Enter a, b : "); scanf ("%lf%lf", &a, &b ); y = fun (&a, &b); printf ("y = %f \n", y ); } 第2题(10.0分)题号:438 难度:中第2章 /*------------------------------------------------ 【程序改错】 -------------------------------------------------- 功能:编写函数fun,求两个整数的最小公倍数,然后用主 函数main()调用这个函数并输出结果,两个整数由 键盘输入。 ------------------------------------------------*/

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语言程序改错题及答案

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++) {

相关文档