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

2018-11-28 15:48

次取出,构成一个新

数放在t中。高位仍在高位,低位仍在低位。 #include \ #include \ void fun (long s, long *t) { int d; long sl=1;

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

/**********ERROR**********/ if (d%2 == 0) {

*t = d * sl + *t; sl *= 10; }

/**********ERROR**********/ s \\= 10; } } main() {

long s, t;

printf(\ fun(s, &t);

printf(\ } 答案*t = 0; if(d%2) s /= 10;

【程序改错】功能:m个人的成绩存放在score数组中,请编写函数fun,

它的功能是:将高于和等于平均分的人数作为函数值返回,

将高于和等于平均分的分数放在above所指的数组中。

程序中共有4条错误语句,请改正错误。 #include

int fun(float score[], int m, float above[]) {

/**********ERROR**********/ float av=1; int i,n=0; for(i=0;i

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

av\\=m;

for(i=0;i

if (av<=score[i]) above[n++]=score[i]; /**********ERROR**********/ return above; } main( ) { int i, n;

float score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90} ,above[9] ;

/**********ERROR**********/ n =int fun(score, 9, above) ;

printf( \ for (i = 0 ; i < n ; i++) printf(\\above[i]) ; }

答案float av=0; av=av/m; return n;

n = fun(score,9,above) ;

【程序改错】功能:以下程序把两个数按由大到小的顺序输出来.

#include \

/***********ERROR***********/ void swap( int *p1,*p2) { int p; p=*p1; *p1=*p2; *p2=p; } main( ) {

int a,b, *p,*q; printf(\ /***********ERROR***********/ scanf(\ p=&a; q=&b; if(a

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

答案swap( int *p1,int *p2) scanf(\

printf(\

【程序改错】功能:编写函数fun求1000以内所有8的倍数之和。

26

#include \ #define N 1000 int fun(int m) {

/**********ERROR**********/ int s=0;i;

/**********ERROR**********/ for(i=1;i>N;i++)

/**********ERROR**********/ if(i/m==0) s+=i; return s; } main() { int sum; sum=fun(8);

printf(\以内所有%d的倍数之和为:%d\\n\}

答案int s=0,i; for(i=1;i

【程序改错】功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。 k的值由主函数传入。 #include int fun(int k) {

int m=0,mc=0;

/**********ERROR**********/ while ((k>=2)||(mc<10)); {

/**********ERROR**********/ if((k=0)||(k=0)) { m=m+k; mc++;

}

/**********ERROR**********/ k++; }

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

printf(\ }

答案:1.while((2<=k)&&(mc<10))

2.if(k==0||k==0) 3.k--; 4.return m;

【程序改错】功能:将整型数组中所有小于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]; 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

【程序改错】题目:以下程序的功能是:对输入的一行字符中的数字字符按它们的字面值进行累加,输出此累加和。 # include #include \ main() { char ch;

/***********ERROR***********/ int a,s;

/***********ERROR***********/ while((ch==getchar())!='\\n')

27

if(isdigit(ch)) { a=ch-'0'; s=s+a; }

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

【参考答案】int a,s=0; while((ch=getchar())!='\\n') printf(\

【程序改错】题目:从键盘上输入一个3行3列的矩阵的各个元素的值,

输出辅对角线元素之和。 #include #define N 3

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

/**********ERROR**********/ sum=a[i][N-1-i]; /**********ERROR**********/ return sum } main()

{int a[N][N],y,i,j; for(i=0;i

scanf(\ y=fun(a);

printf(\ 【参考答案】char i++ 0 %s

【程序改错】功能:根据整型形参m的值,计算如下公式的值。

1 1 1 t = 1- -- - -- - ... - -- 2x2 3x3 mxm

例如:若m=5,则应输出:0.536389 #include double fun(int m) {

double y=1.0; int i;

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

/**********ERROR**********/ y-=1/(i*i);

/**********ERROR**********/ return m; }

main() { int n=5;

printf(\ }

for(i=2;i<=m;i++) y=y-1.0/i/i; return(y);

【程序改错】功能:判断m是否为素数,若是返回1,否则返回0。

#include /**********ERROR**********/ void fun( int n) {

int i,k=1; if(m<=1) k=0;

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

/**********ERROR**********/ if(m%i=0) k=0;

/**********ERROR**********/ return m; }

void main() {

int m,k=0; for(m=1;m<100;m++) if(fun(m)==1) {

printf(\ if(k%5==0) printf(\ } }

【参考答案】fun( int m) for(i=2;m>i;i++) if(0==m%i) k=0; return k;

【程序改错】题目:输入一个字符串, 输出其中的大写字符。例如输入abcdAbCD输出ACD #include

28

#include

/***********ERROR***********/ void fun(char p[],n) {int i; for(i=0;i

/***********ERROR***********/ if(p[i]>='A'||p[i]<='Z') /***********ERROR***********/ printf(\ } main() {char str[80]; int n;

printf(\ gets(str);

printf(\ puts(str); n=strlen(str); fun(str,n); printf(\ }

【参考答案】void fun(char p[], int n) if(p[i]>=65&&p[i]<=90) printf(\

【程序改错】题目:以下函数功能,完成字符串的复制。 #include \ #include \ void f(char *p) {

char str[10],*p1; strcpy(str,\ /**********ERROR**********/ p1=*str;

for(;*p++=*p1++;); } main( ) {

/**********ERROR**********/ char a[20],p=a; f(p); puts(p); }

【参考答案】p1=str; char a[20],*p=a;

【程序改错】功能:实现3行3列矩阵的转置,即行列互换。

#include \ void fun(int a[3][3],int n) {

int i,j,t; for(i=0;i

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

for(j=0;j

for(i=0;i

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

/**********ERROR**********/ a[i][j]=t; a[i][j]=a[j][i];

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

for(i=0;i

for(j=0;j

void main() {

int b[3][3]; fun(b,3); }

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

【程序改错】功能:在字符串str中找出ASCII码值最小的字符,将其放在第一

个位置上,并将该字符前的原字符串顺序向后移动。#include \ #include \ void fun(char *p) {

char min,*q=p;int i=0; min=p[i]; while(p[i]!=0) {

if(min>p[i])

29

{ min=p[i];

/**********ERROR**********/ p=p+i; } i++; }

/**********ERROR**********/ while(q

/**********ERROR**********/ *q=(q-1); q--; } p[0]=min; } main() {

char str[80];

printf(\ printf(\ fun(str);

printf(\ }

【参考答案】q=p+i; while(q>p) *q=*(q-1);

【程序改错】功能:在一个已按升序排列的数组中插入一个数,插入后,数

组元素仍按升序排列。 #include #define N 11 main() {

int i,number,a[N]={1,2,4,6,8,9,12,15,149,156}; printf(\array:\\n\

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

printf(\ for(i=0;i

/**********ERROR**********/ for(i=N-1;i>=0;i--) if(number<=a[i]) /**********ERROR**********/ a[i]=a[i-1]; else

{

a[i+1]=number;

/**********ERROR**********/ exit; }

if(number

【参考答案】scanf(\ for(i=N-2;i>=0;i- -) a[i+1]=a[i]; break;

【程序改错】题目:任意输入10个数,输出其中的最大数; 并且要求最大数与第一个位置上的数互换后,输出这10个数。

程序中共有4条错误语句,请改正错误。 #include #define N 10

/**********ERROR**********/ void max(int a[],int n) main() {

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

scanf(\ for(i=0;i

printf(\ printf(\ /**********ERROR**********/ max(int a,int N); for(i=0;i

printf(\ }

void max(int a[],int n) {

int max,i,p=0,t; /**********ERROR**********/ max=a[i]; for(i=0;ia[i]) {max=a[i]; p=i;} t=a[0];a[0]=a[p];a[p]=t; printf(\ }

答案void max(int a[],int n);

30


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

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

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

马上注册会员

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