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

2018-11-28 15:48

int i,j=0,n=0;

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

/**********ERROR**********/ while(a[n]!='*')n--;

for(i=0;i<=n;i++) a[j++]=a[i]; /**********ERROR**********/ a[j]='0'; }

【参考答案】while(a[n]!='\\0')n++; while(a[n]=='*')n--; a[j]='\\0';

【程序改错】题目:定义一个N×N的二维数组,并在键盘给数组元素赋值。

请编写程序使数组右下半三角元素中的值全部置成0。

并以矩阵形式输出该数组,例如,如果a数组中的值为

1 5 6 8 8 5 3 7 12 4 10 3 6 8 7 13

则重新赋值后a数组中的值应为 1 5 6 0 8 5 0 0 12 0 0 0 0 0 0 0 #include #include \ #define N 4 void fun(int a[][N]) {int i,j; for(i=0;i

/**********ERROR**********/ for(j=N-i;j

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

int a[N][N],i,j;

printf(\产生一个4*4矩阵\ for(i=0;i

{ for(j=0;j

printf(\ printf(\ } fun(a);

printf(\输出变化后的数组:\\n\ for(i=0;i

{ /**********ERROR**********/ for(j=0;j<=N;j++) printf(\ printf(\ } }

参考答案for(j=N-1-i;j

scanf(\ for(j=0;j

【程序改错】功能:八进制转换为十进制。 #include \ main() {

/**********ERROR**********/ char p,s[6]; int n; p=s; gets(p);

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

/**********ERROR**********/ while(*(p)=='\\0') {

n=n*8+*p-'0'; p++; }

printf(\ }

参考答案char *p,s[6]; n=0;

while(*(p)!='\\0')

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

输出主对角线元素的最大值。 如:输入 2 3 5 7 6 6 7 3 3 7 5 7 1 3 5 7

输出:主对角线元素的最大值是7 #include \ #define N 4

11

int fun(int a[N][N]) {int i,max;

/**********ERROR**********/ max==a[0][0]; for(i=0;i

/**********ERROR**********/ if(a[i][i]

main( ) {

int array[N]={10,7,19,29,4,0,7,35,-16,21},min; /***********ERROR***********/ min=maxmin(int array,int N); printf(\ 【参考答案】

【程序改错】功能:求一个3行4列矩阵的外围元素之和。 例如:矩阵元素为1,2,3,4,5,6,7,8,9,10,11, main()

{int a[N][N],i,j;

printf(\给数组元素赋值:\\n\ for(i=0;i

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

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

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

printf(\主对角线元素的最大值是%d\\n\ }

【参考答案】max=a[0][0]; if(a[i][i]>max) scanf(\

printf(\主对角线元素的最大值是%d\\n\ 【程序改错】功能:编程序求一维数组中的最大和最小的元素值.

#include #define N 10 int max;

/***********ERROR***********/ int maxmin(int arr[ ],n) {

int i,min;

/***********ERROR***********/ max=min=0; for(i=1;i

/***********ERROR***********/ if(arr[i]

return min; }

12时,

四框元素值之和应为65。 #include \

int fun(int a[3][4],int m,int n) {

/**********ERROR**********/ int i,j,s,s1=s2=s3=s4=0; for(j=0;j

s1=s1+a[0][j];

/**********ERROR**********/ s2=s2+a[m][j]; }

/**********ERROR**********/ for(i=0;i

s3=s3+a[i][0]; s4=s4+a[i][n-1]; }

/**********ERROR**********/ s=s1-s2-s3-s4; return s; }

main() {

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(\ }

参考答案int i,j,s,s1=0,s2=0,s3=0,s4=0; s2=s2+a[m-1][j]; for(i=1;i

【程序改错】题目:以下函数用于实现字符串的拷贝。#include \

void copystring(char *from, char *to) {

for( ; *from!='\\0'; from++, to++) /**********ERROR**********/

12

to=from;

/**********ERROR**********/ to='\\0'; } main()

{ char p1[10]={\ copystring(p1,p2); printf(\ }

参考答案*to=*from; *to='\\0';

【程序改错】功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输

出主对角线上的元素之和sum。 #include void fun() {

int a[3][3],sum; int i,j;

/**********ERROR**********/ a=0;

for(i=0;i<3;i++) for(j=0;j<3;j++)

/**********ERROR**********/ scanf(\ for(i=0;i<3;i++)

/**********ERROR**********/ sum=sum+a[i][j];

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

main() { fun(); }

【参考答案】sum=0; scanf(\ sum=sum+a[i][i]; printf(\

【程序改错】题目:将一个数组中的值按逆序重新存放。 例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。

程序中共有4条错误语句,请改正错误。 #include \ #define N 5 main() {

int a[N],i,temp;

printf(\:\\n\ for(i=0;i

/**********ERROR**********/ scanf(\ printf(\:\\n\ for(i=0;i

{ temp=a[i];a[i]=a[N-1-i];a[N-1-i]=temp; } printf(\,array a:\\n\ for(i=0;i

【参考答案】scanf(\ for (i=0;i

【程序改错】功能:将若干学生的档案存放在一个文件中,并显示其内容。 #include struct student { int num; char name[10]; int age; };

struct student stu[3]={{001,\ {002,\ {003,\ #include void main() {

/**********ERROR**********/ struct student p;

/**********ERROR**********/ file fp; int i;

if((fp=fopen(\ {

printf(\ return; }

/**********ERROR**********/ for(*p=stu;p

fwrite(p,sizeof(struct student),1,fp);

13

fclose(fp);

fp=fopen(\ printf(\ for(i=1;i<=3;i++) {

fread(p,sizeof(struct student),1,fp); /**********ERROR**********/

scanf(\ }

fclose(fp); }

【参考答案】struct student *p; FILE *fp;

for(p=stu;p

printf(\%-10s M\\n\,p->name,(*p).age);

【程序改错】题目:将二维数组中每个元素的值乘以3。 如:原数组 1 2 3 新数组 3 6 9 4 5 6 12 15 18 7 8 9 21 24 27 程序中共有4条错误语句,请改正错误。 #include #define N 3 void fun(int a[N][N]) { int i,j;

/**********ERROR**********/ for(i=0;i

/**********ERROR**********/ a[i][j]=3; }

void main()

{ int a[N][N]={ {1,2,3},{4,5,6},{7,8,9} }; int i,j;

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

{/**********ERROR**********/ for(j=0;j

printf(\ printf(\ } fun(a);

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

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

} }

【参考答案】for(i=0;i

【程序改错】功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的 最大的n。 #include \ #include \ main() { int n,s;

/**********ERROR**********/ s==n=0;

/**********ERROR**********/ while(s>1000) { ++n; s+=n*n; }

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

答案:s=n=0; while(s<=1000) printf(\

【程序改错】功能:将整型数组中所有小于0的元素放到所有大于0的元素的前

面(要求只能扫描数组一次)。 #include \ #define Max 100 void fun(int a[],int n) {

/**********ERROR**********/ int i=5;j=n-1,temp; while(i

while(a[i]<0) i++;

while(a[j]>=0)

/**********ERROR**********/ j++;

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

temp=a[i]; a[i]=a[j];

14

a[j]=temp; } } }

void main() {

static a[]={1,-3,-1,3,2,4,-4,5,-5,-2},n=10,i; fun(a,n); for(i=0;i<10;i++) printf(\ }

答案:int i=0,j=n-1,temp; j- -; if(i

【程序改错】功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,

75,92,66,则输出平均成绩为77.900002,最低高分为56.000000,得最 低分的人数为1人。 #include float Min=0; int J=0;

float fun(float array[],int n) {

int i;float sum=0,ave; Min=array[0]; for(i=0;i

if(Min>array [i]) Min=array [i]; /**********ERROR**********/ sum=+array [i]; }

/**********ERROR**********/ ave=sum\\n; for(i=0;i

/**********ERROR**********/ if(array[i]=Min) J++; return(ave); } main( ) {

float a[10],ave; int i=0; for(i=0;i<10;i++) scanf(\ ave=fun(a,10); printf(\

printf(\ printf(\ }

答案:sum+=array[i]; ave=sum/n;

if(array[i]==Min) J++;

【程序改错】功能:计算数组元素中值为正数的平均值(不包括0)。

例如:数组中元素的值依次为39,-47,21,2,-8,15,0, 则程序的运行结果为19.250000。 #include double fun(int s[]) {

/**********ERROR**********/ int sum=0.0; int c=0,i=0;

/**********ERROR**********/ while(s[i] =0) {

if (s[i]>0) {

sum+=s[i]; c++; } i++; }

/**********ERROR**********/ sum\\=c;

/**********ERROR**********/ return c; } main() {

int x[1000];int i=0; do {

scanf(\ while(x[i++]!=0); printf(\ }

答案:double sum=0; while(s[i]!=0) sum/=c; return sum;

【程序改错】功能:首先把b所指字符串中的字符按逆序存放, 然后将a所指字

符串中的字符和b所指字符串中的字符,按排列的顺序交叉

合并到c所指数组中,过长的剩余字符接在c所指

15


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

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

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

马上注册会员

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