一、程式改錯 共139題 (共計1390分)
第1題 (10.0分) 題號:351
/*------------------------------------------------------
【程式改錯】
--------------------------------------------------------
功能:在鍵盤上輸入一個3行3列矩陣的各個元素的值(值為整數),
後輸出矩陣第一行與第三行元素之積,並在fun()函數中輸出。
------------------------------------------------------*/
#include "stdio.h"
main()
{
int i,j,s,a[3][3];;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
s=fun(a);
printf("Sum=%d\n",s);
getch();
}
int fun(int a[3][3])
{
int i,j,sum;
/**********FOUND**********/
sum=0;
/**********FOUND**********/
for(i=0;i<3;i++)
for(j=0;j<3;j++)
/**********FOUND**********/
sum=*a[i][j];
return sum;
}
答案:
1). sum=1;
2). for(i=0;i<3;i+=2) 或 for(i=0;i<3;i=i+2) 或 for(i=0;i<3;i++,i++)
3). sum=sum*a[i][j]; 或 sum*=a[i][j];
第2題 (10.0分) 題號:403
/*------------------------------------------------------
【程式改錯】
--------------------------------------------------------
功能:編寫函數fun求20以內所有5的倍數之積。
------------------------------------------------------*/
#define N 20
#include "stdio.h"
main()
{
int sum;
sum=fun(5);
printf("%d以內所有%d的倍數之積為: %d\n",N,5,sum);
getch();
}
int fun(int m)
{
/**********FOUND**********/
int s=0,i;
for(i=1;i<N;i++)
/**********FOUND**********/
if(i%m=0)
/**********FOUND**********/
s=*i;
return s;
}
答案:
1). int s=1,i;
2). if(i%m==0)
3). s*=i;
第3題 (10.0分) 題號:424
/*------------------------------------------------------
【程式改錯】
--------------------------------------------------------
功能:一個偶數總能表示為兩個素數之和。
------------------------------------------------------*/
#include "stdio.h"
#include <math.h>
main()
{
int a,b,c,d;
/**********FOUND**********/
scanf("%d",a);
for(b=3;b<=a/2;b+=2)
{
for(c=2;c<=sqrt(b);c++)
if(b%c==0)
break;
if(c>sqrt(b))
/**********FOUND**********/
d=a+b;
else
break;
for(c=2;c<=sqrt(d);c++)
/**********FOUND**********/
if(d%c=0)
break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
getch();
}
}
答案:
1). scanf("%d",&a);
2). d=a-b;
3). if(d%c==0)
第4題 (10.0分) 題號:395
/*------------------------------------------------------
【程式改錯】
--------------------------------------------------------
功能:統計出若干個學生的平均成績,最低分以及得最低分的人數。
例如:輸入10名學生的成績分別為92,87,68,56,92,84,67,
75,92,66,則輸出平均成績為77.9,最低高分為56,得最
低分的人數為1人。
------------------------------------------------------*/
#include "stdio.h"
float Min=0;
int J=0;
float fun(float array[],int n)
{