提示:错误在 “ FOUND ” 之下
请改正程序中的错误,使它能得出正确的结果。 注意;不要改动main 函数,不得增行或删行,也不得更改程序的结构.
1
题目:下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。 例如:若n=5,则应输出8.391667。分数序列为:s=2/1+3/2+5/3+8/5+11/8 …。
#include <stdio.h>
/***********FOUND***********/
void 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 + (int)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 ) );
}
void fun ( int n ) 的 void 改 double
s = s + (int)a / b 的(int)改(double)
2
下列给定程序中函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数为止,π/4=1-1/3+1/5-1/7+…,例如,程序运行后,输入0.0001,程序输出3.1414
#include <math.h>
#include <stdio.h>
float fun ( float num )
{
int s ;
float n, t, pi ;
t = 1 ; pi = 0 ; n = 1 ; s = 1 ;
/***********FOUND***********/
while(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) ;
}
while(t >= num) 改成 while(fabs(t) >= num)
t=s%n; 的 % 改成 /
3
题目:下列给定程序中函数fun和funx的功能是:用二分法求方程 的一个根,并要求绝对误差不超过0.001。例如:若给m输入-100,n输入90,则函数求得的一个根为2.000。
#include <stdio.h>
#include <math.h>
double funx(double x)
{
return(2*x*x*x-4*x*x+3*x-6);
}
double fun( double m, double n)
{
/***********FOUND***********/
int r;
r=(m+n)/2;
/***********FOUND***********/
while(fabs(n-m)<0.001)
{
if(funx(r)*funx(n)<0)
m=r;
else
n=r;
r=(m+n)/2;
}
return r;
}
main( )
{
double m,n, root;
printf("Enter m n : \n");
scanf("%lf%lf",&m,&n);
root=fun( m,n );
printf("root = %6.3f\n",root);
}
int r; 的 int 改成 double
while(fabs(n-m)<0.001) 的 < 改成 >
4
题目:下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
例如:当给指定精度的变量eps输入0.0005时,应输出Pi=3.140578。
π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+……
#include <math.h>
#include <stdio.h>
double fun(double eps)
{
double s,t;
int n=1;
s=0.0;
/***********FOUND***********/
t=0;
while( t>eps)
{
s+=t;
t=t * n/(2*n+1);
n++;
}
/***********FOUND***********/
return(s);
}
main()
{
double x;
printf("\nPlease enter a precision: ");
scanf("%lf",&x);
printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));
}
t=0; 改成 t=1
return(s); 的 s 改成 2 * s
5
题目:下列给定程序中函数fun的功能是:计算n!。
例如:给n输入5,则输出120.000000。
#include <stdio.h>
double fun ( int n )
{
double result = 1.0 ;
/***********FOUND***********/
if n = = 0
return 1.0 ;
while( n >1 && n < 170 )
/***********FOUND***********/
result = n--;
return result ;
}
main ( )
{
int n ;
printf("Input N:") ;
scanf("%d", &n) ;
printf("\n\n%d! =%lf\n\n", n, fun(n)) ;
}
if n = = 0 改成 if(n == 0)
result = n–; 改成 result *= n–;
6
题目:下列给定程序中函数fun的功能是:计算并输出下列级数的前N项和SN,直到SN+1的值大于q为止,q的值通过形参传入。SN=2/1+3/2+4/3+(N+1)/N 。 例如:若q的值为50.0,则函数值应为49.394948。
#include <conio.h>
#include <stdio.h>
double fun(double q)
{
int n;
double s,t;
n=2;
s=2.0;
while (s <= q)
{
t=s;
/***********FOUND***********/
s=s+ (n+1)/n;
n++;
}
printf("n=%d\n",n);
/***********FOUND***********/
return s;
}
main ( )
{
printf("%f\n",fun(50));
}
s=s+ (n+1)/n; 改成 s=s+1.0* (n+1)/n; 或者 s=s+(double)(n+1)/n;
return s; 改成 return t;
7
题目:下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值。
t=1+1/2+1/3+1/4+…+1/m
例如:若输入5,则应输出2.283333。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
double fun(int m)
{
double t=1.0;
int i;
for(i=2;i<=m;i++)
/***********FOUND***********/
t+=1.0/k; /*只修改错误的地方其他不要改写否则不得分*/
/***********FOUND***********/
return i;
}
void main()
{
int m;
system("CLS");
printf("\nPlease enter 1integer number: ");
scanf("%d",&m);
printf("\nThe result is %1f\n", fun(m));
}
t+=1.0/k; 的 k 改成 i
return i; 改成 return t;(即 i 改 t)
8
题目:下列给定程序中,函数fun的功能是:找出100~n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
#include <stdio.h>
#define N 100
int fun(int *s, int n)
{
int i,j,k,a,b,c;
j=0;
for(i=100; i<n; i++)
{
/***********FOUND***********/
k=n;
a=k%10;
k/=10;
/***********FOUND***********/
b=k/10;
c=k/10;
if(a==b && a==c)
s[j++]=i;
}
return j;
}
void main()
{
int a[N], n,num=0, i;
do
{
printf("\nEnter n(<=1000) :");
scanf("%d",&n);
}
while(n > 1000);
num= fun(a,n);
printf("\n\nThe result :\n");
for(i=0; i<num; i++)
printf("%5d",a[i]);
printf("\n\n");
}
k = n; 改成 k = i;
b=k/10; 的 / 改成 %
9
题目:数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功能是:计算前n(4≤n≤50)项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回。
例如:当n的值为20时,该数列为3、8、13、18、23、28、…、93、98,
符合此条件的累加值应为42、126、366、570、1010。
#include <stdio.h>
#define N 20
int fun(int n,int *a)
{
/***********FOUND***********/
int i,j,k,sum;
sum=0;
for(k=3,i=0;i<n;i++,k+=5)
{
sum=sum+k;
/***********FOUND***********/
if(sum%4=2)
a[j++]=sum;
}
return j;
}
main()
{
int a[N],d,n,i;
printf("\nEnter n (4<=n<=50): ");
scanf("%d",&n);
d=fun(n,a);
printf("\n\nThe result :\n");
for(i=0; i<d; i++)printf("%6d",a[i]);
printf("\n\n");
}
int i,j,k,sum; 改成 int i,j=0,k,sum;
if(sum%4=2) 改成 if(sum%4 == 2)
return j; 改成 return j++;
10
题目:下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。
t=1/2-1/3-…-1/m
例如:若输入5,则应输出-0.283333。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
double fun(int m)
{
double t=1.0;
int i;
for(i=2;i<=m;i++)
/***********FOUND***********/
t=1.0-1/i;
/***********FOUND***********/
return;
}
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));
}
t=1.0-1/i; 改成 t-=1.0-1/i;(即=变-=)
return; 改成 return t;
11
题目:下列给定程序中,函数fun的功能是:根据整形参m的值,计算如下公式的值。
如图。 例如:若m中的值为5,则应输出0.536389。
#include <stdio.h>
double fun ( int m )
{
double y = 1.0 ;
int i ;
/***********FOUND***********/
for(i = 2 ; i < m ; i++) /*只修改错误的地方其他不要改写否则不得分*/
/***********FOUND***********/
y -= 1 /(i * i) ;
return( y ) ;
}
main( )
{
int n = 5 ;
printf( "\nThe result is %lf\n", fun ( n ) ) ;
}
for(i = 2 ; i < m ; i++) 的 i<m 改成 i<=m
y -= 1 /(i * i); 改成 y -= 1.0 /(i * i) ;
12
题目:fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。
#include <stdio.h>
#include <stdlib.h>
#define N 20
int fun( int *b )
{
/***********FOUND***********/
int t[N] ,i, num
for(i=0; i<N; i++)
if(b[i]>=10)
/***********FOUND***********/
t[++num]=b[i];
/***********FOUND***********/
for(i=0; i<nun; i++) /*只修改错误的地方其他不要改写否则不得分*/
b[i]=t[i];
return( num );
}
main()
{
int a[N],i,num;
printf("a数组中的数据 :\n");
for(i=0;i<N ;i++)
{
a[i]=rand()%21;
printf("%4d",a[i]);
}
printf("\n");
num=fun(a);
for(i=0;i<num ;i++)
printf("%4d",a[i]);
printf("\n");
}
int t[N] ,i, num 改成 int t[N] ,i, num=0;(别忘记分号哦)
t[++num]=b[i]; 改成 t[num++]=b[i];
for(i=0; i<nun; i++) 的 nun 改成 num
13
功能:计算正整数num的各位上的数字之积。
例如:若输入:252,则输出应该是:20。
若输入:202,则输出应该是:0。
#include <stdio.h>
#include <conio.h>
long fun (long num)
{
/**********FOUND**********/
long k=1
do
{
k*=num%10 ;
/**********FOUND**********/
num\=10;
/**********FOUND**********/
}while(!num) ;
return (k) ;
}
main( )
{
long n ;
printf("Please enter a number:") ; scanf("%ld",&n) ;
printf("\n%ld\n",fun(n)) ;
}
long k=1 后面加一个英文状态下的分号
num=10; 的 \ 改成 /
while(!num); 改成while(num); 或者 while(num!=0);
14
功能:求出以下分数序列的前n项之和。和值通过函数值返回main
函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……
例如:若n = 5,则应输出:8.391667。
#include <conio.h>
#include <stdio.h>
/**********FOUND**********/
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 = (double)a / b;
c = a;
a = a + b;
b = c;
}
/**********FOUND**********/
return c;
}
main( )
{
int n = 5;
printf( "\nThe value of function is: %lf\n", fun ( n ) );
}
fun ( int n ) 改成 double fun ( int n )
s = (double)a / b; 改成 s += (double)a / b; 或者 s += a / (double)b; 或者 s =s+ a / (double)b; 或者s +=(double) a / b;
return c; 的 c 改成 s
15
功能:根据整型形参 n,计算某一数据项的值。
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,
A[n]=1/(1 + A[n-1])
例如:若 n=10,则应输出:a10=0.617977。
#include <conio.h>
#include <stdio.h>
/**********FOUND**********/
int fun ( int n )
{
double A=1; int i;
/**********FOUND**********/
for (i=2; i<n; i++) /*只修改错误的地方其他不要修改否则不得分*/
/**********FOUND**********/
A =(float) 1.0\(1+A); /*只修改错误的地方其他不要修改否则不得分*/
return A ;
}
main( )
{
int n ;
printf("\nPlease enter n: ") ;
scanf("%d", &n ) ;
printf("A%d=%f\n", n, fun(n) ) ;
}
int fun ( int n ) 改成 float fun ( int n )
for (i=2; i<n; i++) 的 i<n 改成 i<=n
A =(float) 1.0(1+A); 的 \ 改成 /
16
功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n项为: 1,1,1,3,5,9,17,31,……
项值通过函数值返回 main ( )函数。
例如:若 n = 15,则应输出:The value is: 2209。
#include <conio.h>
#include <stdio.h>
long fun ( int n )
{
long a=1, b=1, c=1, d=1, k;
/**********FOUND**********/
for (k=4; k<n; k++) /*只修改错误的地方其他不要修改否则不得分*/
{
d = a+b+c;
/**********FOUND**********/
a=b
b=c;
c=d;
}
/**********FOUND**********/
return k;
}
main( )
{
int n = 15;
printf( "The value is: %ld\n", fun ( n ) );
}
for (k=4; k<n; k++) 的 k<n 改成 k<=n
a=b 后面加一个英文状态下的分号
return k; 的 k 改成 d
17
功能:输入两个双精度数,函数返回它们的平方和的平方根值。
例如:输入:22.936 和 14.121,输出为:y = 26.934415。
#include <stdio.h>
#include <conio.h>
#include <math.h>
/**********FOUND**********/
double fun (double *a, *b)
{
double c;
/**********FOUND**********/
c = sqr(a*a + b*b);
/**********FOUND**********/
return *c;
}
main ( )
{
double a, b, y;
printf ( "Enter a, b : ");
scanf ("%lf%lf", &a, &b );
y = fun (&a, &b);
printf ("y = %f \n", y );
}
double fun (double *a, *b) 改成 double fun (double *a,double *b)
c = sqr(a *a + b *b); 改成 c = sqr(*a * *a + *b * *b);
return *c; 改成 return c;
18
功能:编写一个程序,从键盘接收一个字符串,然后按照字符顺
序从小到大进行排序,并删除重复的字符。
#include <stdio.h>
#include <string.h>
void main()
{
char str[100],*p,*q,*r,c;
printf("输入字符串:");
gets(str);
/**********FOUND**********/
for(p=str;p;p++)
{
for(q=r=p;*q;q++)
if(*r>*q)
r=q;
/**********FOUND**********/
if(r==p)
{
/**********FOUND**********/
c=r;
*r=*p;
*p=c;
}
}
for(p=str;*p;p++)
{
for(q=p;*p==*q;q++);
strcpy(p+1,q);
}
printf("结果字符串:%s\n\n",str);
}
for(p=str;p;p++) 改成 for(p=str;*p;p++)
if(r == p) 改成 if(r!=p)
c=r; 改成 c=*r;
19
功能:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,
当输入n为奇数时,调用函数1/1+1/3+…+1/n(利用指针函数)
#include <stdio.h>
main()
{
float peven(),podd(),dcall();
float sum;
int n;
while (1)
{
/**********FOUND**********/
scanf("%d",n);
if(n>1)
break;
}
if(n%2==0)
{
printf("Even=");
sum=dcall(peven,n);
}
else
{
printf("Odd=");
sum=dcall(podd,n);
}
printf("%f",sum);
}
float peven(int n)
{
float s;
int i;
s=0;
for(i=2;i<=n;i+=2)
/**********FOUND**********/
s+=1%(float)i;
return(s);
}
float podd(n)
int n;
{
float s;
int i;
/**********FOUND**********/
s=1;
for(i=1;i<=n;i+=2)
s+=1/(float)i;
return(s);
}
float dcall(fp,n)
float (*fp)();
int n;
{
float s;
s=(*fp)(n);
return(s);
}
scanf(“%d”,n); 改成 scanf(“%d”,&n);
s+=1%(float)i; 的 % 改成 /
s=1; 改成 s=0;
20
下列给定程序中,函数fun()的功能是根据整型形参m,
计算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)
例如:m中的值为5,则应输出0.838611。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,
也不得更改程序的结构。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
double fun(int m)
{
double y=1.0;
/***********FOUND***********/
int j=1;
int i;
for(i=2; i<=m; i++)
{
j=-1*j;
/***********FOUND***********/
y+=1/(i * i);
}
return(y);
}
void main()
{
int n=5;
system("CLS");
printf("\nThe result is %lf\n" ,fun(n));
}
int j=1; 改成 double j=1.0;
y+=1/(i * i); 改成 y+=j/(i * i);
21
主函数main()首先从键盘接收N个整数,依次存放在数组a中;
其次,调用fun函数在N个整数中找出第一个奇数,并返回该数的下标值。
如果数组中无奇数,则返回-1;
#include<stdio.h>
#define N 8
int fun(int [], int );
int main()
{
int a[N], i;
for (i=0; i<N; i++)
/***********FOUND***********/
scanf("%d",&(a+i));
i = fun(a,N);
if(i>=0)
printf("第一个奇数是%d\n ",a[i]);
return 0;
}
int fun(int a[], int n)
{
int i;
for (i=0; i<n; i++)
/***********FOUND***********/
if (a[i]/2!=0)
break;
/***********FOUND***********/
if (i<n) return 1;
else return -1;
}
scanf(“%d”,&(a+i)); 改成 scanf(“%d”,a+i);
if (a[i]/2!=0) 的 / 改成 %
return 1; 改成 return i;
22
主函数main()统计字符串中英文字符(区分大小写)、数字字符、空格、
以及其他字符的个数。
#include <stdio.h>
int main()
{
int upper=0,lower=0,digit=0,space=0,other=0;
char *p,s[80]={"This is C program dsign , Edit 4!"};
p=&s[0];
/***********FOUND***********/
while (*p!=="\0")
{
if (('A'<=*p) && (*p<='Z'))
++upper;
else if (('a'<=*p) && (*p<='z'))
++lower;
/***********FOUND***********/
else if (*p=' ')
++space;
/***********FOUND***********/
else if ((*p<='9') || (*p>='0'))
++digit;
else
++other;
p++;
}
printf("大写:%d\t小写:%d\n",upper,lower);
printf("空格:%d\t数字:%d\t其它:%d\n",space,digit,other);
return 0;
}
while (*p! == “\0”) 改成 while (*p!=‘\0’)
else if (*p=’ ') 改成 else if (*p == ’ ')
else if ((*p<=‘9’) || (*p>=‘0’)) 的 || 改成 &&
23
题目:reverse()函数将一维数组a中元素逆序。
#include<stdio.h>
#define N 10
/***********FOUND***********/
void reverse(int a,int n){
int i;
/***********FOUND***********/
for(i=0;i<n;i++){ /*只修改错误的地方其他不要修改否则不得分*/
a[n-1-i]=a[n-1-i]+a[i];
/***********FOUND***********/
a[i]=a[i]-a[n-1-i];
a[n-1-i]=a[n-1-i]-a[i];
}
return ;
}
int main(){
int i;
int a[N]={23,0,-4,8,9,13,6,-21,17,5};
for(i=0;i<N;i++)
printf("%d\t",a[i]);
printf("\n");
reverse(a,N);
for(i=0;i<N;i++)
printf("%d\t",a[i]);
printf("\n");
return 0;
}
void reverse(int a,int n) 改成 void reverse(int a[],int n)
for(i=0;i<n;i++) 改成 for(i=0;i<n/2;i++)
a[i]=a[i]-a[n-1-i]; 改成 a[i]=a[n-1-i]-a[i];
24
题目:check()函数判断数组a中的n个元素经排序后,是否构成一
个等差数列。
例如数组元素4,7,9,5,6,8,10经升序排序后构成一个等差
数列,而9,7,2,1,6经排序后不构成等差数列。
所谓等差数列是指数列中所有相邻两数的差都相等。
#include <stdio.h>
int check(int a[],int n){
int i,j,k,flag;
for(i=0;i<n-1;i++){
flag=0;
for(j=n-1;j>i;j--)
if(a[j]<a[j-1]){
k=a[j];a[j]=a[j-1];a[j-1]=k;
flag=1;
}
/***********FOUND***********/
if(flag)break;
}
for(i=1;i<n-1;i++)
/***********FOUND***********/
if(a[i]-a[i-1]==a[i+1]-a[i])
break;
/***********FOUND***********/
if(i<=n-1)return 0;
return 1;
}
int main(){
int a[]={4,7,9,5,6,8,10},b[]={9,7,2,1,6};
int i,v;
v=check(a,7);
for(i=0;i<7;i++)
printf("%d\t",a[i]);
printf("%s等差级数\n",v==1? "是":"不是");
v=check(b,5);
for(i=0;i<5;i++)
printf("%d\t",b[i]);
printf("%s等差级数\n",v==1? "是":"不是");
return 0;
}
if(flag)break; 改成 if(flag == 0)break;
if(a[i]-a[i-1] == a[i+1]-a[i]) 改成 if(a[i]-a[i-1]!=a[i+1]-a[i])
if(i<=n-1)return 0; 改成 if(i<=n-2)return 0;
25
题目:sort()函数将from数组中的元素逐个放入to数组中,使得
to数组中的元素按升序排列。
#include <stdio.h>
#define N 10
void sort(int from[],int to[]){
int i,j,k;
/***********FOUND***********/
for(i=0;i<N-1;i++){ /*只修改错误的地方其他不要修改否则不得分*/
k=0;
for(j=0;j<N;j++)
if(from[i]>from[j] || from[i]==from[j] && i>j)
k++;
/***********FOUND***********/
to[i]=from[k];
}
}
int main(){
int a[N]={12,5,-3,20,6,0,9,5,12,-7},b[N];
int i;
for(i=0;i<N;i++)
printf("%d\t",a[i]);
/***********FOUND***********/
sort(b[N],a[N]);
for(i=0;i<N;i++)
printf("%d\t",b[i]);
return 0;
}
for(i=0;i<N-1;i++) 改成 for(i=0;i<=N-1;i++)
to[i]=from[k]; 改成 to[k]=from[i];
sort(b[N],a[N]); 改成 sort(a,b);
26
题目:下面程序中,函数fun的功能是:在任意给定的9个正整数中
找出按升序排列时处于中间的数,将原数据序列中比该中间
数小的数用该中间数替换,位置不变,在主函数中输出处理
后的数据序列,并将中间数作为函数值返回。
例如,有9个正整数:1 5 7 23 87 5 8 21 45
按升序排列时的中间数为:8
处理后主函数中的输出为:8 8 8 23 87 8 8 21 45
#include <stdio.h>
#define N 9
int find(int []);
void sort(int []);
void main()
{
int i, x[N]={1,5,7,23,87,5,8,21,45};
for(i=0; i<9;i++)
printf("%5d",x[i]);
printf("\n");
/***********FOUND***********/
printf("The mid number is:%5d\n",find(x[]));
for(i=0; i<9;i++)
printf("%5d",x[i]);
printf("\n");
}
int find(int x[])
{
int i,mid,b[N];
for(i=0;i<N;i++)
b[i]=x[i];
sort(b);
mid=b[N/2];
for(i=0; i<N;i++)
/***********FOUND***********/
if(x[i] < mid) mid=x[i];
return mid;
}
void sort(int b[])
{
int i,j,k,t;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
/***********FOUND***********/
if(b[k]<b[j]) k=j;
if(k != i )
{
t=b[i]; b[i]=b[k]; b[k]=t;
}
}
}
printf(“The mid number is:%5d\n”,find(x[])); 改成 printf(“The mid number is:%5d\n”,find(x));
mid=x[i]; 改成 x[i]=mid;
if(b[k]<b[j]) 的 < 改成 >
27
题目:下面的程序中,函数fun的功能是:从低位开始取出长整型
变量s中奇数位上的数,依次构成一个新数放在t中。高位
仍在高位,低位仍在低位。例如,当s中的数为:654321时,
t中的数为:531。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
/***********FOUND***********/
void fun (long);
long getnumber();
void main()
{
long s,t;
srand((unsigned)time(NULL)); /*初始化随机数时间序列*/
s=getnumber(); /*随机获取一个长整数*/
t=fun(s);
printf("The result is: %ld,%ld\n", s,t);
}
long fun (long s)
{
long t=0;
/***********FOUND***********/
long step=10;
while (s > 0)
{
t=t+s%10*step;
step=10*step;
/***********FOUND***********/
s = s/10;
}
return t;
}
long getnumber()
{
int i,k;
long n=0;
k=rand()%4+5;
for(i=0;i<k;i++)
{
while(n==0)
n=10*n+rand()%10;
n=10*n+rand()%10;
}
return n;
}
void fun (long); 改成 long fun (long);
long step=10; 改成 long step=1;
s = s/10; 改成 s = s/100;
28
题目:有一数组内放10个整数,要求求出所有元素的平均值.
#include <stdio.h>
float average(float array[10])
{
int i;
float aver,sum=array[0];
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10.0;
return(aver);
}
main( )
{
float score[10],aver ;
int i;
printf("input 10 scores:\n");
for(i=0;i<10;i++)
/***********FOUND***********/
scanf("%f", score);
printf("\n");
/***********FOUND***********/
aver=average(score[10]);
printf("average score is %5.2f",aver);
}
scanf(“%f”, score); 改成 scanf(“%f”, &score);
aver=average(score[10]); 改成 aver=average(score);