程序改错最终修订版(4)

2018-11-28 15:48

数组的尾部。

例如:当a所指字符串中的内容为“abcdefg”,b所指字符串中的

内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1

efg”;而当a所指字符串中的内容为“1234”,b所指字符

串中的内容为“abcdefg”时,c所指数组中的内容应该为

“1g2f3e4dcba”。 #include \ #include \ #include \

void fun( char *a, char *b, char *c ) {

int i , j; char ch; i = 0;

j = strlen(b)-1;

/**********ERROR**********/ while ( i > j ) {

ch = b[i]; b[i] = b[j]; b[j] = ch; i++; j--; }

/**********ERROR**********/ while ( *a &&*b ) {

if ( *a ) { *c = *a; c++;

/**********ERROR**********/ a+; } if ( *b ) { *c = *b; c++; b++; } } *c = 0; } main() {

char s1[100],s2[100],t[200];

printf(\ scanf(\

printf(\ scanf(\ fun( s1, s2, t );

printf(\ }

答案:while(i

【程序改错】功能:一球从100米高度自由落下,每次落地后反跳回原高度的

一半;再落下,求它在第10次落地时,共经过多少米?

第10次反弹多高? #include \ main() {

/**********ERROR**********/ float sn=100.0;hn=sn/2; int n;

/**********ERROR**********/ for(n=2;n<10;n++) {

sn=sn+2*hn;

/**********ERROR**********/ hn=hn%2; }

printf(\ printf(\ }

答案:float sn=100.0,hn=sn/2; for(n=2;n<=10;n++) hn=hn/2;

【程序改错】题目:定义一个4×4的二维数组a,请编写程序使数组四周元素值为2, 其它元素值为1。 2 2 2 2 2 1 1 2 2 1 1 2 2 2 2 2 #include #define N 4

void fun(int a[N][N]) {/**********ERROR**********/ int i;j; for(i=0;i

/**********ERROR**********/

16

if(i==0&&i==N-1&&j==0&&j==N-1) a[i][j]=2; else

/**********ERROR**********/ a[i][j]==1; } main() {

int a[N][N],i,j; fun(a);

printf(\输出此数组:\\n\ for(i=0;i

for(j=0;j

/**********ERROR**********/ scanf(\ printf(\ } }

答案:int i,j;

if(i==0||i==N-1||j==0||j==N-1) a[i][j]=1;

printf(\

【程序改错】功能:用指针作函数参数,编程序求一维数组中的最大和最小的 元素值. #include \ #define N 10

/***********ERROR***********/

void maxmin(int arr[ ],int *pt1, *pt2, n) { int i;

/***********ERROR***********/ *pt1=*pt2=&arr[0]; for(i=1;i

/***********ERROR***********/ if(arr[i]<*pt1) *pt1=arr[i]; if(arr[i]<*pt2) *pt2=arr[i]; } } main( ) { int

array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; /***********ERROR***********/ *p1=&a;*p2=&b; maxmin(array,p1,p2,N); printf(\

}

答案:void maxmin(int arr[ ],int *pt1,int *pt2,int n) *pt1=*pt2=arr[0];

if(arr[i]>*pt1) *pt1=arr[i]; p1=&a;p2=&b;

【程序改错】功能:将一个数字字符串转换为一个整数(不得调用C语言提供的

将字符串转换为整数的函数)。

例如:若输入字符串\,则函数把它转换为整数值 -1234。

#include \ long fun ( char *p) { int i=1; long n=0;

/**********ERROR**********/ if(p=='-') {

p++; i=-1; }

else if(*p=='+') p++;

while(*p>='0' && *p<='9') n=10*n + *p++ - '0'; /**********ERROR**********/ return n+i; } main() {

char s[6]; long n;

printf(\ gets(s);

/**********ERROR**********/ n == fun(s); printf(\ }

答案:if(*p=='-') return n*i; n = fun(s);

【程序改错】题目:定义一个4×4的二维数组b,数组元素的值由键盘输入,

输出其中的最大值及所在的行、列下标。 #include \ int hang,lie;

/**********ERROR**********/ int fun(int b[4][4]) main()

{ int b[4][4],i,j,max;

17

printf(\给数组元素赋值:\\n\ for(i=0;i<4;i++) for(j=0;j<4;j++)

/**********ERROR**********/ scanf(\ printf(\输出4×4的矩阵:\\n\ for(i=0;i<4;i++) {

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

printf(\ printf(\ } max=fun(b);

printf(\ }

int fun(int b[4][4])

{ /**********ERROR**********/ int i,j,max; for(i=0;i<4;i++) for(j=0;j<4;j++)

/**********ERROR**********/ if(max>b[i][j]) {

max=b[i][j]; hang=i; lie=j; } return max; }

答案:int fun(int b[4][4]); scanf(\ int i,j,max=b[0][0]; if(max

【程序改错】功能:将6个数按输入时顺序的逆序进行排列.

#include \ void sort(char *p,int m) { int i;

char change,*p1,*p2; for(i=0;i

/***********ERROR***********/ *p1=p+i; *p2=p+(m-1-i); change=*p1; *p1=*p2; *p2=change; } }

main( ) { int i;

/***********ERROR***********/ char p,num[6]; for(i=0;i<=5;i++)

/***********ERROR***********/ scanf(\ p=&num[0];

/***********ERROR***********/ sort(*p,6); for(i=0;i<=5;i++) printf(\ }

答案:p1=p+i; p2=p+(m-1-i); char *p,num[6]; scanf(\ sort(p,6);

【程序改错】功能:有1、2、3、4个数字,能组成多少个互不相同且无重复数

字的三位数?都是多少? #include \ main() {

int i,j,k;

/**********ERROR**********/ printf(\

/**********ERROR**********/ for(i=1;i<=5;i++) for(j=1;j<5;j++) for (k=1;k<5;k++) {

/**********ERROR**********/ if (i!=k||i!=j||j!=k) printf(\ } }

答案:printf(\ for(i=1;i<5;i++) if (i!=k&&i!=j&&j!=k)

【程序改错】题目:输出fibonacci数列前20项中,下标为奇数的元素之和。

已知前两项的值分别为1,1。从第三项开始后一项是前两项之和。

运行结果:sum=10945 #include long fun(long a[20]); main() {

18

long a[20]={1,1},sum; sum=fun(a);

printf(\ }

/**********ERROR**********/ fun(long a[20]) {

/**********ERROR**********/ long i,sum; for(i=2;i<20;i++)

/**********ERROR**********/ a[i]=a[i]+a[i-1]; clrscr( );

for ( i=0; i

参考答案m=i; for(k=i;ka[m]) m=k;

【程序改错】题目:定义一个3×3的二维数组b,数组元 for(i=0;i<20;i++) {

printf(\ if((i+1)%5==0) printf(\

/**********ERROR**********************/ if(i%2==1) sum=a[i]; }

return sum; }

答案:long fun(long a[20]) long i,sum=0; a[i]=a[i-1]+a[i-2]; if(i%2==1) sum+=a[i];

【程序改错】功能:求出数组中最大数和次最大数,并把最大数和a[0]中的数

对调、次最大数和a[1]中的数对调。 #include \ #include \ #define N 20

int fun ( int * a, int n ) {

int i, m, t, k ; for(i=0;i<2;i++) {

/**********ERROR**********/ m=0;

/**********ERROR**********/ for(k=1;k

/**********ERROR**********/ if(a[k]>a[m]) k=m; t=a[i];a[i]=a[m];a[m]=t; } } main( ) {

int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;

素的值由键盘输入,

输出其中的最小值及所在的行下标。 #include \ int hang;

int fun(int b[3][3] ); main()

{ int b[3][3],i,j,min; printf(\给数组元素赋值:\\n\ for(i=0;i<3;i++) for(j=0;j<3;j++)

scanf(\ printf(\输出3×3的矩阵:\\n\ for(i=0;i<3;i++) {

for(j=0;j<3;j++) printf(\ printf(\ }

min=fun(b);

printf(\ }

int fun(int b[3][3])

{ /**********ERROR**********/ int i,j,min; for(i=0;i<3;i++) for(j=0;j<3;j++)

/**********ERROR**********/ if(min

min=b[i][j];

/**********ERROR**********/ hang=j; }

/**********ERROR**********/ return hang; }

【参考答案】int i,j,min=b[0][0];

19

if(min>b[i][j]) hang=i; return min;

【程序改错】功能:利用二维数组输出如图所示的图形。 ******* ***** *** * *** ***** ******* #include #include /**********ERROR**********/ #define N= 7 main() {

char a[N][N]; int i,j,z; for(i=0;i

/**********ERROR**********/ a[i][j]=; z=0;

for(i=0;i<(N+1)/2;i++) {

for(j=z;j

/**********ERROR**********/ z=0;

for(i=(N+1)/2;i

for(j=z;j

for(i=0;i

for(j=0;j

/**********ERROR**********/ printf(\ printf(\ } }

【参考答案】#define N 7 a[i][j]=' '; z=z-1;

printf(\

【程序改错】题目:输入0-9之间的数字字符,以#为结束(输入数字字符时不要用任何间隔。)

求数字字符的字面值的平均值。例如:输入1234# 平均值为2.5000000。 #include main() {

float sum=0; int n=0; char x;

printf(\输入0-9之间的数字字符:\ scanf(\ do {

/***********ERROR***********/ sum+=x-0; printf(\ n++;

scanf(\ }

/***********ERROR***********/ while(x=='#') ;

/***********ERROR***********/ printf(\ }

【参考答案】sum+=x-'0'; while(x!='#') ; printf(\

【程序改错】题目:假定输入的字符串中只包含字母和*号。编写程序只删除字符串的后面*号。

例如,******ACF*F*G****,删除后,字符串中的字符为******ACF*F*G

程序中共有3条错误语句,请改正错误。 #include #include void fun(char a[]); void main() { char a[80]; gets(a); fun(a); puts(a); }

void fun(char a[]) {

int i,j=0,n=0;

/**********ERROR**********/ while(a[n]=='\\0')n++;

20


程序改错最终修订版(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国鞋底原料行业市场调查研究报告(目录)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: