程序改错
【程序改错】
1.下列给定程序中函数fun的功能是:删除s所指字符中所有的小写字母c 。
请改正程序中的错误,使它能得出正确的结果。
#include
void fun( char *s )
{ int I,j;
for(i=j=0; s[i]!='\0'; i++)
if(s[i]!='c')
/***********FOUND***********/
s[j++]=s[i];
/***********FOUND***********/
s[j]='\0';
}
main()
{ char s[80];
printf("Enter a string: "); gets(s);
printf("The original string: "); puts(s);
fun(s);
printf("The string after deleted : "); puts(s);printf("\n\n");
}
2. 下列给定程序中,函数fun的功能是:根据整型参数m,计算如下公式的值。y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)
例如,若m=2000,则应输出0.000160。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
#include
/***********FOUND***********/
double fun (int m)
{ double y=0, d;
int i;
/***********FOUND***********/
for(i=100;i<=m;i+=100)
{d=(double)i*(double)i;
y+=1.0/d;
}
return(y);
}
void main()
{ int n=2000;
system("CLS");
printf("\nThe result is %lf\n",fun(n));
}
3. 下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+……
例如,当给指定精度的变量eps输入0.0005时,应输出Pi=3.140578。请改正程序中的错误,使它能得出正确的结果。
#include
#include
double fun(double eps)
{ double s,t; int n=1;
s=0.0;
/***********FOUND***********/
t=1;
while( t>eps)
{ s+=t;
t=t * n/(2*n+1);
n++;
}
/***********FOUND***********/
return(2*s);
}
main()
{ double x;
printf("\nPlease enter a precision: "); scanf("%lf",&x);
printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));
}
4. 下列给定程序中,函数fun的功能是:计算整数n的阶乘。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
double fun(int n)
{
double result=1.0;
while(n>1&&n<170)
/***********FOUND***********/
result*=n--;
/***********FOUND***********/
return result;
}
void main()
{int n;
system("CLS");
printf("Enter an integer: ");
scanf("%d",&n);
printf("\n\n%d!=%lg\n\n ",n,fun(n));
}
5. 下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。t=1/2-1/3-…-1/m
例如,若输入5,则应输出-0.283333。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
#include
double fun(int m)
{
double t=1.0;
int i;
for(i=2;i<=m;i++)
/***********FOUND***********/
t-=1.0/i;
/***********FOUND***********/
return t ;
}
void main()
{int m;
system("CLS");
printf("\nPlease enter 1 integer numbers:\n");
scanf("%d",&m);
printf("\n\nThe result is %1f\n",
fun(m));
}
6. 下列给定程序中,函数fun的功能是:求S的值。
S=(2×2/(1×3))×(4×4/(3×5))×(6×6/(5×7))×…×(2k)×(2k)/((2k-1)×(2k+1)) 例如,当k为10时,函数的值应为1.533852。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
#include
#include
/***********FOUND***********/
double fun(int k)
{
int n; double s, w, p, q;
n=1;
s=1.0;
while(n<=k)
{
w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
/***********FOUND***********/
return s;
}
void main()
{ system("CLS");
printf("%f\n ",fun(10));
}
7. 下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
请改正程序中的错误,使它能得出正确的结果。
#include
long fun (long num)
{
/***********FOUND***********/
long k=1;
do
{ k*=num%10 ;
/***********FOUND***********/
num/=10 ;
} while(num) ;
return (k) ;
}
main( )
{ long n ;
printf("\nPlease enter a number:") ; scanf("%ld",&n) ;
printf("\n%ld\n",fun(n)) ;
}
8. 下列给定程序中函数fun的功能是:判断一个整数是否为素数,若是素数返回1,否则返回0。
在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
#include
int fun(int m)
{ int k=2;
while (k<=m&&(m%k))
/***********FOUND***********/
k++;
/***********FOUND***********/
if(m==k)
return 1;
else return 0;
}
void main()
{ int n;
system("CLS");
printf("\nPlease enter n: ");
scanf("%d",&n);
if(fun(n)) printf("YES\n");
else printf("NO!\n");
}
9. 下列给定程序中函数fun的功能是:用下面的公式见图1
求π的近似值,
直到最后一项的绝对值小于指定的数(参数num)为止。
例如,程序运行后,输入0.0001,则程序输出3.1414。
请改正程序中的错误,使它能输出正确的结果。
#include
#include
float fun ( float num )
{ int s ;
float n, t, pi ;
t = 1 ; pi = 0 ; n = 1 ; s = 1 ;
/***********FOUND***********/
while(fabs(t)>=num)
{
pi = pi + t ;
n = n + 2 ;
s = -s ;
/***********FOUND***********/
t = s / n ;
}
pi = pi * 4 ;
return pi ;
}
main( )
{ float n1, n2 ;
printf("Enter a float number: ") ;
scanf("%f", &n1) ;
n2 = fun(n1) ;
printf("%6.4f\n", n2) ;
}
10. 下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值。t=1+1/2+1/3+1/4+…+1/m
例如,若输入5,则应输出2.283333。
请改正程序中的错误,使它能得出正确的结果。
#include
#include
#include
double fun(int m)
{
double t=1.0;
int i;
for(i=2;i<=m;i++)
/***********FOUND***********/
t+=1.0/i;
/***********FOUND***********/
return t;
}
void main()
{int m;
system("CLS");
printf("\nPlease enter 1integer number: ");
scanf("%d",&m);
printf("\nThe result is %1f\n", fun(m));
}
11. 下列给定程序中函数fun的功能是:求出如图的分数序列的前n项之和。和值通过函数值返回。
例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出正确的结果。
#include
/***********FOUND***********/
double fun (int n)
{ int a, b, c, k; double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ ) {
/***********FOUND***********/
s=s+(double)a/b;
c = a; a = a + b; b = c;
}
return s;
}
main( )
{ int n = 5;
printf( "\nThe value of function is: %lf\n", fun ( n ) );
}
12. 下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,
并统计平均值以上(含平均值)的实数个数。
例如,n=8时,输入193.199、195.673、195.757、196.051、196.092、196.596、196.579、
196.763、所得平均值为195.838745,在平均值以上的实数个数应为5。
请改正程序中的错误,使其能得出正确的结果。
#include
#include
#include
int fun(float x[], int n)
/***********FOUND***********/
{int j, c=0; float xa=0.0;
for (j=0; j xa += x[j]/n; printf("ave =%f\n",xa); for (j=0; j /***********FOUND***********/ if (x[j] >= xa) c++; return c; } main () {float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763}; system("cls"); printf("%d\n", fun (x, 8)); } 13. 下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。请修改程序中的错误,使它能得出正确的结果。 #include #define N 20 void fun(int a[], int n) { int i, j, t, p; for (j = 0 ;j < n-1 ;j++) { /***********FOUND***********/ p = j; for (i = j;i < n; i++) if(a[i] < a[p]) /***********FOUND***********/ p = i; t = a[p] ; a[p] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); } 14. 给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。 假如:若a=见图 则结果应为1,5,9,13, 请改正函数fun中指定部位的错误,使它能得出正确的结果。 #include #define N 4 void fun(int a[][N], int b[]) { int i, j; for (i=0; i { /***********FOUND***********/ b[i] = a[i][0]; /***********FOUND***********/ for (j=1; j /***********FOUND***********/ if ( b[i] > a[i][j] ) b[i] = a[i][j]; } } main() { int a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N]; int i; fun(a,b); for (i=0; i printf("\n"); } 15. 下列给定程序中函数fun的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。 例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。请改正程序中的错误,使它得出正确的结果。 #include int fun(int *x,int y) { int t ; /***********FOUND***********/ t = *x ; *x = y ; /***********FOUND***********/ return(t) ; } main() { int a = 3, b = 8 ; printf("%d %d\n", a, b) ; b = fun(&a, b) ; printf("%d %d\n", a, b) ; } 16. 下列给定程序中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中, 然后把s所指串中的字符按正序连接到t所指串之后。 例如:当s所指的字符串为"ABCDE"时,t所指的字符串应为"EDCBAABCDE"。 请改正程序中的错误,使它能得出正确的结果。 #include #include void fun (char *s, char *t) { /***********FOUND***********/ int i,sl; sl = strlen(s); for (i=0; i /***********FOUND***********/ t[i] = s[sl-i-1]; for (i=0; i<=sl; i++) t[sl+i] = s[i]; t[2*sl] = '\0'; } main() { char s[100], t[100]; printf("\nPlease enter string s:"); scanf("%s", s); fun(s, t); printf("The result is: %s\n", t); } 程序改错 ================================================== 题号:7471 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:计算正整数num的各位上的数字之积。 例如:若输入:252,则输出应该是:20。 若输入:202,则输出应该是:0。 ------------------------------------------------------*/ #include num/=10; 【或】 num=num/10; 位置 3: } while(num) ; 【或】 while(num!=0) 题号:7383 /*------------------------------------------------------ 【程序改错】:只允许修改错误代码,其他代码不允许修改! -------------------------------------------------------- 功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。例如:输入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) { int i;float sum=0,ave; Min=array[0]; for(i=0;i 程序改错题 (注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1. 输出计算结果。 main() { int a=b=10; a+=b+5; b*=a+=10; printf("%d%d\n",a,b); } 2. 输出计算结果。 #include 输出程序运行结果。 #include 程序改错C
程序改错题
c语言程序改错