C语言笔试--程序改错题

更新时间:2024-02-03 12:28:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言机试程序改错题

gc22.c程序是输入一个字符串, 将此字符串中最长的单词输出,程序在注释行附近有两个错误,请试调试改正,但调试改正中不得增删语句。

int alph(char c) { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return(1); else return(0); /* find 1 */ }

int longest(char str) ////////////// int longest(char *str) { int len=0,i,length=0,flag=1,point,place; for(i=0;i<=strlen(str);i++) if(alph(str[i])) if(flag) { flag=0; point=i; } else len++; else /* Find 2 */ { flag=0; /////////////flag=1; if(len>length) { length=len; place=point; len=0; } } return(place); }

main( ) { int i; char line[100]; printf(\ gets(line); printf(\

1

for(i=longest(line);alph(line[i]);i++) printf(\ printf(\ }

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

p2->next=NULL; return(head);

}

gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正之,但不得增删语句.

#include void main(void) { char s[255];

2

int i;

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

if(s[i]>='b' && s[i]<='z') //////s[i]>='a' && s[i]<='z' s[i] = s[i] +'a' + 'A'; //////s[i] = s[i] -'a' + 'A' printf(\

gc57.c的功能是互换给定数组中的最大数和最小数。如将下面8个数: 5,3,1,4,2,8,9,6 变成:

5,3,9,4,2,8,1,6

程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。程序有二处错误,请改正。注意:不得增行和删行,也不得修改程序的结构。

main() {

int i;

static int a[8]={5,3,1,4,2,8,9,6}; void jhmaxmin();

printf(\ for(i=0; i<8; i++)

printf(\ printf(\ jhmaxmin(a,8);

printf(\ for(i=0; i<8; i++)

printf(\ printf(\}

void jhmaxmin(p,n)

int p, n; //////// int *p,n; {

int t, *max, *min, *end, *q; end=p+n; max=min=p;

for(q=p+1; q*max) max=q;

if(*q

t=*max; *max=*min; *min=t; }

gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).

3

程序中有两处错误代码,请改正.注意,不得改变程序结构。

#include main() {

int a[8],*p=a; int i,j;

int tempmin,tempcode;

printf(\ for (i=0;i<8;i++) scanf(\ tempmin=*p; for (i=0;i<7;i++) {

for (j=i;j<8;j++)

if (j==i||*(p+j)

{ tempmin=*(p+i); //////////tempmin=*(p+j); tempcode=j; };

if (tempcode!=i)

{ *(p+tempcode)=*(p+i);

*(p+j)=tempcode; /////////////*(p+i)=tempmin; } }

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

printf(\ return(1); }

gc137.c中的sub函数的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。请改正函数sub中的两个错误,使它能得出正确的结果。注意:不要改动main 函数,不得增行或删行,也不得修改程序的结构。

#include \ #include \ #include \

void sub( char *s, char *t ) {

int i, d;

d=strlen( s );

for( i=1; i< d ; i++ ) ///////for(i=0;i

4

for( i=0; i

t[2*d]='/0' ; /////////t[2*d]='\\0'; }

main( ) {

char s[100], t[100]; clrscr( ) ;

printf( \ enter string S : \ scanf(\ sub(s,t) ;

printf( \ result is : %s \\n \ }

gc155.c的功能是从键盘输入一行字符,分别统计其中的字母、数字、空格和其它字符的个数。但该程序中有2处错误,请调试并改正。不允许改变程序结构和增删语句。

#include main() { int c;

int letter=0,digit=0,space=0,other=0; printf(\

while (c=getchar()!='\\n') //////while((c=getchar())!='\\n') if (c>='a'&&c<='z'||c>='A'&&c<='Z') letter++;

else if (c>='0'&&c<='9') digit++;

else if (c=' ') //////////else if(c==' ') space++; else

other++;

printf(\ printf(\ printf(\ printf(\}

gc163.c的功能是实现求1000以内的自然数中的完数及其个数(所谓完数,指它恰好等于除它本身之外的因子之和,如:6=1+2+3,28=1+2+4+7+14),并显示结果。但该程序中有2处错误,请调试并改正。不允许改变程序结构和增删语句。

#include

5

void main(void) {

int i,k,m,n,s,p; //////////////////p=0 int a[100];

printf(\以内的自然数中的完数有:\ for (i=2;i<=10000;i++) { s=0; m=0; for (k=1;k<=i/2;k++) { if (i%k==0) { s=s+k; a[m]=k; m=m+1; } } if (s=i) ////////if(s==i) { p=p+1; printf(\ n=1; while (n

printf(\总个数为: %d\\n\}

gc165.c 程序中的函数find_str()用来返回字符串s2在字符串s1中第一次出现的首地址;如果字符串s2不是s1的子串,则该函数返回空指针NULL。

现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。

include #include

char *find_str(char *s1,char *s2) {

int i,j,ls2;

ls2=strlen(s2);

for(i=0;i<=strlen(s1)-ls2;i++) {

for(j=0;j

if(j==ls2) return(s1+j); //////return(s1+j+1) }

6

return NULL; }

void main() {

char *a=\ ///////*c /* .............. comment two .............. */ c=find_str(a,b);

if(c!=NULL) printf(\ else printf(\未找到字符串%s\\n\}

gc166.c程序的功能是:计算并输出从键盘输入的任一正整数的各位数字之和s以及各位数字之积t。

例如,当输入的正整数为237时, s的值为12,t的值为42。

请改正程序中的两个错误,使它能得出正确的结果。注意:不得增行或删行,也不得修改程序的

结构。

#include \main() {

int n, yw, s=0, t=0; /////////t=1 scanf(\ while(n!=0) {

yw=n; s=s+yw; t=t*yw;

n=n; //////////// n=n/10 }

printf(\}

gc171.c的功能是实现求1000以内的自然数中的完数及其个数(所谓完数,指它恰好等于除它本身之外的因子之和,

如:6=1+2+3,28=1+2+4+7+14),并显示结果。但该程序中有2处错误,请调试并改正。不允许改变程序结构和增删语句。

#include void main(void) {

int i,k,m,n,s,p; ////////////////////p=0

7

int a[100];

printf(\以内的自然数中的完数有:\ for (i=2;i<=10000;i++) { s=0; m=0; for (k=1;k<=i/2;k++) { if (i%k==0) { s=s+k; a[m]=k; m=m+1; } } if (s=i) ////////////////////s==i { p=p+1; printf(\ n=1; while (n

printf(\总个数为: %d\\n\}

gc227.c 中函数fun的功能是:使输入的一个字符串按反序存放,并在主函数中输出。请改正函数fun中的错误,使它能得出正确的结果。

注意:不得改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include main()

{char str[100];

printf(\ scanf(\ fun(str);

printf(\}

fun(str) char str[]; {char t; int i,j;

for(i=0,j=strlen(str);i

{t=str[i];str[i]=str[j-1];str[j+1]=t;} //////{t=str[i];str[i]=str[j-1];str[j-1]=t;} }

8

gc228.c 代码功能为:使用指针将数组a中10个整数按相反的顺序存放。程序中有两处错误代码,请指出并改正之.

void inv(x,n) int *x,n;

{int *p,t,*i,*j,m=(n-1)/2; i=x;

j=n; ///////////j=x+n-1; p=x+m;

for(;i<=p;i++,j--) {t=*i;*i=*j;*j=t;} return; }

main() {int a[10],i;

printf(\ for(i=0;i<10;i++) scanf(\

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

inv(a,n); /////////////////inv(a,10); printf(\for(i=0;i<10;i++) printf(\ printf(\ }

gc234.c中函数fun的功能是:求S的值。

设S= ((2*2)/3) * ((4*4)/(3*5)) * ... * ( (2*k*2*k)/((2*k-1)*(2*k+1)) )

请改正函数fun中的两个错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include \#include \

fun( int k ) ////////////////float fun(int k) { int n;

float s, w, p, q; n = 1; s = 1.0; while ( n <= k ) {

w = 2.0 * n;

9

p = w - 1.0; q = w + 1.0; s = s * w *w/p/q; n++; }

return s /////////////return s; }

main ( ) { clrscr( );

printf(\}

gc273.c功能是:一个偶数总能表示为两个素数之和。 请改正程序的两个错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include \#include \main()

{ int a,b,c,d;

scanf(\ ///////////scanf(\ for(b=3;b<=a/2;b+=2)

{ for(c=2;c<=sqrt(b);c++) if(b%c==0) break; if(c>sqrt(b))

d=a+b; ////////////d=a-b; else break;

for(c=2;c<=sqrt(d);c++) if(d%c==0) break; if(c>sqrt(d)) printf(\ } }

本程序用于输出如下所示的图形。请将源程序文件中的两个错误改正过来,注意在答题过程中不得对源程序增行或删行,也不得更改程序的结构。

1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321

10

12345678987654321 1234567890987654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1

#include #include main() {

int i,j,n;

char s[20]=\printf(\

/* ...........comment 1................*/

n=10; //////////////////////n=19; for(i=-n/2; i<=n/2; i++) {

for(j=0;j<=15+abs(i); j++)printf(\

/* ...........comment 2................*/

for(j=0;j<=n/2-abs(i);j++)printf(\

for(j=n/2-abs(i); j<19;j++)printf(\ ///////////j=n/2+abs(i)+1 printf(\ } }

gc279.c的功能:函数prn_star(m,left)输出正菱形图案,其中参数m 代表图案的行数(为一奇数),left代表图案距屏幕左边的列数。

函数prt_str(m,left)中有两处错误代码,请指出并改正之。

#include void prn_star(m,left) int m,left; { int i,j,p;

for(i=1;i

11

else p=m+1-i;

for (j=1;j<=left+(m-(2*p-1))/2;j++) printf(\

for (j=1;j<=2*p-1;j++) printf(\ printf(\ } }

main()

{ int m,left;

printf(\请输入正菱形图案的行数:\ scanf(\

printf(\请输入正菱形图案距屏幕左边的列数:\ scanf(\ prn_star(m,left); }

gc280.c功能为:M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时,此人出圈,直到圈中只剩下一个人为止。请按退出次序输出出圈人原来的编号以及留在圈中的最后一个人原来的编号。程序中有两处错误代码,请指出并改正之。

#include

#define M 10 /*number of person*/

#define N 2 /*eliminate a person for N compartment*/

void main() { int i,j,k,n; static a[M]; int b[M];

/*eliminate persons from array a to array b */ for (n=0,j=k=M-1;n

for (i=0;ik) j=0; if (!a[j]) continue; /////////continue;改成break; }

b[n]=j+1; /*record No. of eliminated person*/ a[j]=-1; }

12

/*output*/

for (i=0;i

printf(\ \ for (i=0;i

printf(\}

gc304.c中的函数fun()的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。例如:当s中的字符串为:\时,则t中的字符串应为:\。

现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。

#include #include

void fun (char *s, char *t) {

int i, st;

st = strlen(s);

/* .............. comment one .............. */ for(i=0; i < st; i++)

t[st] = s[i]; //////////////t[i]=s[i]; for (i=0; i < st; i++) t[st+i] = s[st-i-1];

/* .............. comment two .............. */

t[st] = '\\0'; /////////////t[2*st]='\\0'; }

void main( ) {

char s[100], t[100];

printf(\ gets(s); fun(s, t);

printf(\}

gc305.c程序的功能是:对由n个一位数数字组成的数字串,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数。

请改正程序中的两个错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

main() {

int number[20],n,m,i;

13

printf(\ scanf(\ printf(\ scanf(\ for(i=0;i

scanf(\ scanf(\ move(number,n,m); for(i=0;i

printf(\ printf(\ }

move(array,n,m) int n,m,array[20]; {

int *p,array_end;

array_end=*(array+n-1);

for(p=array+n-1;p>array;p--)

*p=*(p+1); ////////*p=*(p-1); array=array_end; ///////*array=array_end; m--;

if(m>0) move(array,n,m); }

gc306.c输出如下图案。 AAAAAAA #BBBBBB ##CCCCC ###DDDD ####EEE

程序中有2处错误,请指出改正之。

#include main() { int i,j;

char ch='A';

for (i=0; i<7;i++) //////for(i=0;i<5;i++) { for (j=1;j<=i;j++) printf(\

for ( j=1;j<7;j++) //////for(j=0;j<7-i;j++) printf(\ printf(\ ch++; }

14

}

gc307.c功能为:使用指针将数组中元素按升序排序。程序中有两处错误代码,请指出并改正之。

#include main() {

int k,m,change,a[10]; int *p1;

int **p2=p1; p1=a;

printf(\ for (k=0;k<10;k++) scanf(\ for (k=0;k<9;k++) {

for (m=0;m<9+k;m++) //////m<9+k改成m<9-k { if ((*p2)[m]>(*p2)[m+1]) { change=(*p2)[m]; (*p2)[m]=(*p2)[m+1]; (*p2)[m+1]=change; } } }

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

printf(\ return(1); }

gc342.c的功能是:计算字符串中子串出现的次数

请改正程序中的两个错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include \ #include \ main()

{ char str1[20],str2[20],*p1,*p2; int sum=0;

printf(\ scanf(\

15

p1=str1;p2=str2; while(*p1!='\\0') {

if(*p1==*p2)

{while(*p1==*p2||*p2!='\\0') ////////////////||改为&& {p1++; p2++;} } else

p2++; ///////////////p1++; if(*p2=='\\0') sum++; p2=str2; }

printf(\ getch(); }

gc367.c通过接受键盘输入的月数量,再根据当前的月份,可以计算出某一年的月份。例如,当前的月份是10,加输入的月数量5,月份是3;加输入的月数量 –13,月份是9。程序中输出的月份以英文字符显示。CURRENT为当前月份。程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。

#define CURRENT 11 #include

main() { int month,monthnum; char *ch; char *month_name(int); printf(\ scanf(\ /*------------Found Mistake Below------------*/ if(monthnum>=0) month=(CURRENT-1+monthnum)+1; else month=(12+(CURRENT-1+monthnum))+1; ch=month_name(month); printf(\ }

printf(\%d Months is: %s\\n\ //////////month改为

monthnum

16

/*------------Found Mistake Below------------*/ char *month_name(int n) { char

*name[]={\c\////\前加\

}

return(name[n]);

gc369.c功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。程序中有两处错误代码,请指出并改正之。不得增加行或删除行,也不得更改程序结构。

*Find the saddle point*/ #include #define N 5 #define M 5

main(){

int i,j,k,flag1,flag2,a[N][M],max,maxi,maxj; for (i=0;i

scanf(\ flag2=0;

for (i=0;i

max=a[j][0]; ///////////// max=a[i][0] for (j=0;jmax) { max=a[i][j]; maxj=j; }

for (k=0,flag1=1;ka[k][maxj]) flag1=0; if (flag1) {

printf(\ flag2=1; } }

if (flag2) //////////// !flag2

printf(\}

gc393.c程序通过接受键盘输入的字符串,通过调用函数trimspace(),实现去掉字符串的前空格和尾空格。

程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除

17

行,也不得更改程序结构。

#include main() {

char str[100];

void trimspace(char *); gets(str);

trimspace(str); puts(str); } /*------------Found Mistake Below------------*/ void trimspace(char *p) {

char *q; if(*p!='\\0')

q=strlen(p); ////////////////*q=strlen(p) else return;

/*------------Found Mistake Below------------*/ for(;*q==' ';q--); *q='\\0';

for(q=p;*q==' ';q++); strcpy(p,q);

return; ///////////////册除return }??

gc394.c中函数str1的功能是输入一个英文句子(字符串),将其中每个单词的最后一个字母改写成大写,然后输出此句子。(这里的\单词\是指由空格隔开的字符串)。例如:若输入:\则应输出:\请改正函数str1中的两个错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include \#include \#include \void str1(char *p) { int k=0; for(;*p;p++) if(k) {

if(p==' ') /////////////*p==' ' { k=0;

*p=toupper(*(p-1)); ///////////*(p-1)=toupper(*(p-1))

18

} } else k=1; }

void main() { char str[100]; int d; clrscr();

printf(\ gets(str); str1(str);

printf(\ }??

gc397.c功能为:设数组a[10]包括10个整型元素,求出a[10]中各相邻二个元素之和,并将这些和存储在数组b[10]中,最后按每行三个输出。程序中有三处错误代码,请改正.注意,不得改变程序结构。

#include main() { int a[10],b[10],i;

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

scanf(\ //////////&a[i] } for(i=1;i<10;i++) { b[i]=a[i]+a[i-1]; } for(i=1;i<10;i++) { printf(\ }

}

if ( (i/3)==0) printf(\ //////i%3==0

gc398.c功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。程序中有三处错误代码,请指出并改正之。

例如:输入字母D,打印出如下图形: A BBB

19

CCCCC DDDDDDD CCCCC BBB A

#include ////////////////#include main(){ int i,j,k; char ch;

scanf(\ k=ch-'A'+1;

for (i=1;i<=k;i++){ for (j=40;j>=i;j--) printf(\

for (j=1;j<=i-1;j++) //////////////////for(j=1;j<=2*i-1;j++) printf(\ printf(\ }

k=ch-'A';

for (i=k;i>=1;i--){

for (i=40;i>=i;i--) ///////////////for(j=40;j>=i;i--) printf(\

for (j=1;j<2*i-1;j++) //////////////for(j=1;j<=2*i-1;j++) printf(\ printf(\ } }

gc405.c中,函数fun的功能是:'根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。

例如, 若输入2 则输出: 1 2 2 4 若输入4 则输出: 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16

20

程序有两处错误,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include #define M 10 int a[M][M]={0};

fun(int **a, int m) ///////////**a改为a[M][M] { int j,k;

for (j=0;j

for (k=1;k

main() { int i,j,n; clrscr();

printf(\fun(a,n);

for(i=0;i

printf(\ printf(\} }

在给定gc406.c程序中,函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。

请改正函数fun中的三处错误,使它能得出正确的结果。

注意:不得改变程序的结构和算法,也不能增加或删减程序行

#include #include

void fun(long s, long *t) { int d;

long sl = 1;

/************found************/ t = 0; ///////// *t=0 while (s > 0) { d = s;

/************found************/ if (d%2 == 0) //////// d%2!=0 { *t = d * sl + *t;

21

sl *= 10; }

/************found************/ s = 10; /////// s/=10 } }

main() { long s, t; clrscr();

printf(\ fun(s, &t);

printf(\}

gc407.c程序的功能是:读入一个数字b,求sum=b+bb+bbb。例如:读入数字7,则输出下列表达式的和sum=7+77+777。请指正程序中的三处错误,使它能得出正确的结果。

注意:不得改变程序的结构和算法,也不能增加或删除程序行。

#include \#include \main()

{ int i=-1,j;

long int b,temp,sum;

scanf(\ ////////// &b do

{ i++; temp=0;

for (j=0;j<=i;j++) temp=temp+(long int)pow(10,j-1)*b; //////temp=(long int)pow(10,j)*b sum+=temp;

}while(i<=3); ////////// while(i<3) printf(\}

gc453.c程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。程序有两处错误,请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

22

#include main()

{ char a[]=\int i, j, k; k=strlen(a);

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

for(j=i+2; j<=k; j++ ) //////// for(j=i+2;j<=k;j+=2) if( a[i]a[j] { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a);

printf(\}

gc461.c程序功能为:使用冒泡法对数组data中的数据按升序排列,如data中数据为5,6,3,8,7,则输出为3,5,6,7,8。程序中有三处错误代码,请指出并改正之.注意,不得改变程序结构。

main() {

int i,data[]={5,6,3,8,7};

sort(4,data[1]); ///////sort(5,data) printf(\

for(i=1;i<=4;i++) /////// for(i=0;i<5;i++) printf(\ }

sort(int n,int array[]) {

int i,j,t;

for(i=0;i

for(j=0;j<=n-1;j++) /////////// for(j=0;jarray[j+1]) {

array[j]=t;

array[j]=array[j+1]; array[j+1]=t; } } }

23

gc462.c程序的功能是:打印出如下形式的杨辉三角形。要求根据用户的输入,决定输出几行。程序中有三处错误,请指出并改正。

1

1 1

1 2 1 1 3 3 1

1 4 6 4 1 1 5 10 10 5 1 ......

注意:不得改变程序的结构和算法,也不能增加或删除程序行。

#include \

int yanghui(int x,int y) ////////加上分号; main() {

int i,j,n; clrscr();

printf(\ scanf(\ for (i=1;i<=n;i++) {

for (j=0;j<=n-i;j++) printf(\ \ for (j=1;j<=i;j++)

printf(\ printf(\ } }

int yanghui(x,y) //////// int yanghui( int x,int y) {

int z;

if (y==1||y==x) z=1; else

z=yanghui(x,y-1)+yanghui(x-1,y);

//////////

z=yanghui(x-1,y-1)+yanghui(x-1,y)

return z; }

输入一个范围-32768——32767的整数,调用函数split(),拆解出各位的数字,放入字符数组s[]中。

正数前面加“+”号,负数前面加“-”号,零不加符号。

gc486.c程序有两处错误,请找出并修正,使之符合上述要求。不得增

24

加行或删除行,也不得更改程序结构。

#include int main(void) { char s[7]; int k; void split(int,char *); printf(\ scanf(\ split(k,s); printf(\ return 0; }

void split(int t,char *ps) { int i; char *q=ps,tmp; if (t>0) *ps++='+'; if (t<0) { *ps++='-'; t=-t; }

/*------------Found Mistake Below------------*/ while(t/10!=0) /////// while(t!=0) { i=t/10; *ps++=t-i*10; t=i; } *ps++='0'+t; *ps='\\0';

/*------------Found Mistake Below------------*/ }

for(q++;q

gc488.c程序的功能是:读入一个整数n,求sum=1!+2!+3!+...+n!。请指正程

序中的三处错误,使它能得出正确的结果。

注意:不得改变程序的结构和算法,也不能增加或删除程序行。

25

#include \

long int factorial(int n) {

int i;

long int p=0; /////// p=1 for (i=1;i<=n;i++) p=p*i; return p; }

void main() {

int i,n;

long int sum=0;

scanf(\ /////// &n for (i=1;i<=n;i++)

sum=sum+factorial(n); ///////sum=sum+factorial(i) printf(\ }

26

#include \

long int factorial(int n) {

int i;

long int p=0; /////// p=1 for (i=1;i<=n;i++) p=p*i; return p; }

void main() {

int i,n;

long int sum=0;

scanf(\ /////// &n for (i=1;i<=n;i++)

sum=sum+factorial(n); ///////sum=sum+factorial(i) printf(\ }

26

本文来源:https://www.bwwdw.com/article/ry5w.html

Top