程序改错40

更新时间:2023-09-09 04:08:01 阅读量: 教育文库 文档下载

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

【程序改错】

-------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/

题目1:以下程序的功能是求如下表达式:

1 1 1 S = 1 + —— + ——— + ...... + ——————— 1+2 1+2+3 1+2+3+......+n #include main() {

int n;

float fun();

printf(\/**********FOUND**********/

print(\ printf(\}

/**********FOUND**********/

fun(int n) {

int i,j,t; float s; s=0;

/**********FOUND**********/

while(i=1;i<=n;i++); {

t=0;

for(j=1;j<=i;j++) t=t+j;

/**********FOUND**********/ =s+1/t;

} return s; }

题目2:函数fun的功能是:计算正整数num的各位上的数字之积。例如,输入252,则输出应该是20。

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

long fun (long num) {

/**********FOUND**********/ long k; do {

k*=num;

/**********FOUND**********/ num\\=10;

}while (num); return k; }

main() {

long n;

printf(\/**********FOUND**********/ scanf(\

/**********FOUND**********/

printf(\} 题目3:用\冒泡法\对输入的十个字符排序后按从小到大的次序输出.

#define N 10 main( ) {int i; char str[N];

/***********FOUND***********/ scanf(\

/***********FOUND***********/ sort(str[N]); for(i=0;i

printf(\printf(\}

sort(char str[N]) {int i,j; char t; for(j=1;j

/***********FOUND***********/

for(i=0;(i

{t=str[i];str[i]=str[i+1];str[i+1]=t;} }

题目4:函数fun的功能是:求出两个非零正整数的最大公约数,并

作为函数值返回。例如,若给num1和num2分别输入49和21,则输出的最大公约数为7。

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

int fun(int a,int b) {

int r,t; if(a

/**********FOUND**********/ b=a;

/**********FOUND**********/ a=t; }

r=a%b;

while(r!=0) { a=b; b=r;

/**********FOUND**********/ r=a/b;}

/**********FOUND**********/ return a; }

main() {

int num1,num2,a;

scanf(\ a=fun(num1,num2);

printf(\}

题目5:函数fun的功能是:实现交换两个整数的值。例如给a和b分别输入3和6 ,输出为a=6 b=3

请改正程序中的4个错误,使它能得出正确的结果。

/**********FOUND**********/ void fun (int a, b) {

int t;

/**********FOUND**********/ t=a;

/**********FOUND**********/ a=b;

/**********FOUND**********/ b=t; }

main() {

int a,b;

printf(\ fun(&a,&b);

printf(\}

题目6:在一个一维整型数组中找出其中最大的数及其下标。程序中共有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(\ for(i=0;i

/**********FOUND**********/ get(\

/**********FOUND**********/ m=fun(a,p,N);

printf(\}

题目7:用冒泡法对10个整数从小到大排序。程序中共有4条错误语句,请改正错误。

/**********FOUND**********/ void sort(int x,int n) {

int i,j,k,t;

for(i=0;i

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

/**********FOUND**********/ if(x[i]>x[i+1])

{ t=x[j];x[j]=x[j+1];x[j+1]=t;} } main() {

int i,n,a[100];

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

scanf(\

/**********FOUND**********/ sort(n,a);

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

题目8:fun函数的功能是:实现3行3列矩阵的转置,即行列互换。请改正程序中的错误,使它能得出正确的结果。

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

int i,j,t;

for(i=0;i

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

for(j=0;j

printf(\ printf(\ }

for(i=0;i

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

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

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

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

for(i=0;i

for(j=0;j

printf(\ printf(\ } }

main() {

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

题目9:下面程序的功能是:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。max代表最高分,min代表最低分,avg代表平均分。

main( ) { int i;

/***********FOUND***********/ float a[8],min,max,avg; printf(\

for(i=0;i<=9;i++) {

printf(\/***********FOUND***********/ scanf(\ }

/***********FOUND***********/ max=min=avg=a[1]; for(i=1;i<=9;i++) {

/***********FOUND***********/ if(min

avg=avg/10;

printf(\}

题目10:下面程序的功能是利用二维数组输出如图所示的图形。 ******* ***** *** * *** ***** *******

#include

/**********FOUND**********/ #define N= 7 main() {

char a[N][N]; int i,j,z; clrscr();

for(i=0;i

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

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

for(j=z;j

/**********FOUND**********/ z=0;

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

for(j=z;j

for(i=0;i

for(j=0;j

/**********FOUND**********/ printf(\ printf(\ } }

题目11:下列给定程序中,函数fun的功能是:求1到10的阶乘的和。主函数和fun函数中,各有两个错误,请改正,使其能得到正确的运行结果。

main() {

int i;

float t,s=0;

float fac(int n);

/**********FOUND**********/ for(i=1;i<10;i++)

/**********FOUND**********/ s=fac(i);

printf(\}

float fac(int n) {

/**********FOUND**********/ int y=1; int i;

for(i=1 ;i<=n;i++) y=y*i;

/**********FOUND**********/ return; }

题目12:将一个字符串中第m个字符开始的全部字符复制成为另一个字符串。

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

#include

void strcopy(char *str1,char *str2,int m) /**********FOUND**********/ char p1,p2; int i,j;

/**********FOUND**********/ = str1+m; p2=str2;

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

main() {

int i,m;

char *p1,*p2,str1[80],str2[80]; p1=str1; p2=str2; gets(p1);

scanf(\

/**********FOUND**********/ strcat(str1[0],str2[0],m); puts(p1);puts(p2); }

题目13:fun函数的功能是:给定n个实数,输出平均值,并统计在

平均值以下(含平均值)的实数个数。例如,n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值为40.828335,在平均值以下的实数个数应为3。请改正程序中的错误,使它能

得出正确的结果。

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

int j,c=0;

/**********FOUND**********/ float j=0;

/**********FOUND**********/ for(j=0;j<=n;j++) xa+=x[j]; xa=xa/n;

printf(\/**********FOUND**********/ for(j=0;j<=n;j++)

if(x[j]<=xa) c++; /**********FOUND**********/ return xa; }

main() {

float x[]={23.5,45.67,12.1,6.4,58.9,98.4}; printf(\}

答案:

1). float xa=0; 或 float xa=0.0;

2). for(j=0;jj;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;j++)

3). for(j=0;jj;j++) 或 for(j=0;j<=n-1;j++) 或 for(j=0;n-1>=j;j++) 4). return c; 或 return (c);

题目14:fun函数的功能是:找出大于m的最小素数,并将其作为函数值返回。

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

int fun( int m) {

int i,k;

for(i=m+1;;i++) {

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

/**********FOUND**********/ if(i%k!=0) break;

/**********FOUND**********/ if(k

/**********FOUND**********/ return k; } }

main() {

int n;

scanf(\

printf(\}

答案:

1). for(k=2;kk;k++) 2). if(★i%k★==★0★) break;

3). if(i<=k) 或 if(k>=i) 或 if(★k★==★i★) 4). return i; 或 return (i);

题目15:在主函数中从键盘输入若干个数放入数组中,用0结束输入

并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。

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

double fun(int s[]) {

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

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

if (s[i]>0)

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

/**********FOUND**********/ sum\\=c;

/**********FOUND**********/ return c; }

main() {

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

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

printf(\}

题目16:fun函数的功能是:实现两个字符串的连接。例如:输入dfdfqe和12345时,则输出dfdfqe12345.

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

main() {

char s1[80],s2[80];

void scat(char s1[],char s2[]); gets(s1); gets(s2); scat(s1,s2); puts(s1); }

void scat (char s1[],char s2[]) {

int i=0,j=0;

/**********FOUND**********/ while(s1[i]= ='\\0') i++; /**********FOUND**********/ while(s2[j]= ='\\0') {

/**********FOUND**********/ s2[j]=s1[i]; i++; j++;

}

/**********FOUND**********/ s2[j]='\\0'; }

题目17:函数fun的功能是:根据整型形参m的值,计算如下公式的值。

1 1 1 t = 1- —— - —— - ... - —— 2x2 3x3 mxm 例如,若m=5,则应输出:0.536389

请改正程序中的错误,使它能得出正确的结果。 double fun(int m) {

double y=1.0; int i;

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

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

/**********FOUND**********/ return m; }

main() {

int n=5;

printf(\}

题目18:编写函数fun求20以内所有5的倍数之积。 #define N 20

#include \main()

{ int sum; sum=fun(5);

printf(\以内所有%d的倍数之积为: %d\\n\ getch(); }

int fun(int m) {

/**********FOUND**********/ int s=0,i; for(i=1;i

/**********FOUND**********/ if(i%m=0) /**********FOUND**********/ s=*i; return s; }

题目19:编写函数fun其功能是:输入两个实数,按代数值由小到大输出它们,并在fun()

函数中输出。(输出的数据都保留2位小数) #include \main() {fun(); getch();}

fun(float a,float b ) {

/**********FOUND**********/ float t scanf(\

/**********FOUND**********/ if(a

{t=a;a=b;b=t;}

/**********FOUND**********/ printf(\}

题目20:编写函数fun计算下列分段函数的值: x*20 x<0且x≠-3

f(x)= sin(x) 0≤x<10且x≠2及x≠3 x*x+x-1 其它

#include\#include \float fun(float x) {

/**********FOUND**********/ float y

/**********FOUND**********/ if (x<0 || x!=-3.0) y=x*20;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=sin(x); else y=x*x+x-1;

/**********FOUND**********/ return x; }

main()

{ float x,f;

printf(\ scanf(\ f=fun(x);

printf(\ getch(); }

题目21:编写函数fun求20以内所有5的倍数之积。

#define N 20

#include \main() { int sum; sum=fun(5);

printf(\以内所有%d的倍数之积为: %d\\n\ getch(); }

int fun(int m) {

/**********FOUND**********/ int s=0,i;

for(i=1;i

/**********FOUND**********/ if(i%m=0)

/**********FOUND**********/ s=*i; return s; }

答案:

1). int ★s=1★,★i★;

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

Top