资源描述
程序改错
功能:给定n个实数,输出平均值,并统计在平均值以下(含平
均值)的实数个数。
例如:n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得
平均值为40.828335,在平均值以下的实数个数应为3。
#include <stdio.h>
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("ave=%f\n",xa);
/**********FOUND**********/
for(j=0;j<=n;j++)
if(x[j]<=xa) c++;
return c;
void main(void)
float x[]={23.5,45.67,12.1,6.4,58.9,98.4};
printf("%d\n",fun(x,6));
答案:
1). float xa=0; 或 float xa=0.0;
2). for(j=0;j<n;j++) 或 for(j=0;n>j;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;j++)
3). for(j=0;j<n;j++) 或 for(j=0;n>j;j++) 或 for(j=0;j<=n-1;j++) 或 for(j=0;n-1>=j;j++)
功能:编写函数fun,求两个整数的最小公倍数,然后用主
函数main()调用这个函数并输出结果,两个整数由
键盘输入。
#include "stdio.h"
main()
unsigned int m,n,q;
printf("m,n=");
scanf("%d,%d",&m,&n);
/**********FOUND**********/
q==fun(m,n);
printf("p(%d,%d)=%d",m,n,q);
getch();
int fun(int m,int n)
int i;
/**********FOUND**********/
if (m=n)
i=m;
m=n;
n=i;
for(i=m;i<=m*n;i+=m)
/**********FOUND**********/
if(i%n==1)
return(i);
答案:
1). q=fun(m,n);
2). if (m<n)
3). if(i%n==0)
功能:利用递归方法求5!。
#include"stdio.h"
#include "stdio.h"
main()
int i;
int fact();
printf("5!=%d\n",fact(5));
int fact(j)
int j;
int sum;
/**********FOUND**********/
if(j=0)
/**********FOUND**********/
sum=0;
else
sum=j*fact(j-1);
/**********FOUND**********/
return j;
答案:
1). if(j==0)
2). sum=1;
3). return sum;
功能:用指针作函数参数,编程序求一维数组中的最大与最小的
元素值.
#define N 10
/***********FOUND***********/
void maxmin(int arr[ ],int *pt1, *pt2, n)
int i;
/***********FOUND***********/
*pt1=*pt2=&arr[0];
for(i=1;i<n;i++)
/***********FOUND***********/
if(arr[i]<*pt1) *pt1=arr[i];
if(arr[i]<*pt2) *pt2=arr[i];
main( )
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
/***********FOUND***********/
*p1=&a;*p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
答案:
1). void maxmin(int arr[ ],int *pt1,int *pt2,int n) 或 maxmin(int arr[ ],int *pt1,int *pt2,int n) 或 void maxmin(int *arr,int *pt1,int *pt2,int n)
2). *pt1=*pt2=arr[0]; 或 *pt1=*pt2=*(arr+0); 或 *pt2=*pt1=arr[0];
3). if(arr[i]>*pt1) *pt1=arr[i]; 或 if(*(arr+i)>*pt1)) *pt1=arr[i]; 或 if(*pt1<*(arr+i))) *pt1=arr[i]; 或 if(*pt1<arr[i]) *pt1=arr[i];
4). p1=&a;p2=&b;
功能:将长整型数中每一位上为偶数的数依次取出,构成一个新
数放在t中。高位仍在高位,低位仍在低位。
例如:当s中的数为:87654时,t中的数为:864。
#include <conio.h>
#include <stdio.h>
void fun (long s, long *t)
int d;
long sl=1;
*t = 0;
while ( s > 0)
d = s%10;
/**********FOUND**********/
if(d%2=0)
/**********FOUND**********/
*t=d* sl+ t;
sl *= 10;
/**********FOUND**********/
s\=10;
main()
long s, t;
clrscr();
printf("\nPlease enter s:");
scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
getch();
答案:
1). if( d%2 == 0 ) 或 if(d%2!=1)
2). *t=d* sl+ *t; 或 *t+=d*sl; 或 *t+=sl*d; 或 *t=*t+d* sl; 或 *t=*t+sl*d;
3). s/=10; 或 s=s/10;
功能:根据整型形参m,计算如下公式的值:
y=1/2+1/8+1/18+...+1/2m*m
#include "stdio.h"
double fun(int m)
/**********FOUND**********/
double y=0
int i;
/**********FOUND**********/
for(i=1; i<m; i++)
/**********FOUND**********/
y=+1.0/(2*i*i);
return(y);
main()
int n;
clrscr();
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result is %1f\n", fun(n));
getch();
答案:
1). double y=0;
2). for(i=1; i<=m; i++)
3). y+=1.0/(2*i*i);
功能:以下程序输出前六行杨辉三角形,既
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
main( )
static int a[6][6];
int i,j,k;
/***********FOUND***********/
for(i=1;i<=6;i++)
for(k=0;k<10-2*i;k++)
printf(" ");
for(j=0;j<=i;j++)
/***********FOUND***********/
if(j==0&&j==i)
a[i][j]=1;
else
/***********FOUND***********/
a[i][j]=a[i-1][j-1]+a[i][j-1];
printf(" ");
printf("%-3d",a[i][j]);
/***********FOUND***********/
printf("\t");
答案:
1). for(i=0;i<6;i++) 或 for(i=0;i<=5;i++)
2). if(j == 0 || j == i)
3). a[i][j]=a[i-1][j]+a[i-1][j-1]; 或 a[i][j]=a[i-1][j-1]+a[i-1][j];
4). printf("\n");
功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的
最大的n。
#include "string.h"
main()
int n,s;
/**********FOUND**********/
s==n=0;
/**********FOUND**********/
while(s>1000)
++n;
s+=n*n;
/**********FOUND**********/
printf("n=%d\n",&n-1);
getch();
答案:
1). s=n=0;
2). while(s<=1000)
3). printf("n=%d\n",n-1);
功能:读入一个整数k(2≤k≤10000),打印它的所有质因子(即
所有为素数的因子)。
例如:若输入整数:2310,则应输出:2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
#include "conio.h"
#include "stdio.h"
/**********FOUND**********/
IsPrime(integer n )
int i, m;
m = 1;
for ( i = 2; i < n; i++ )
/**********FOUND**********/
if ( n%i )
m = 0;
break;
/**********FOUND**********/
return ( n );
main( )
int j, k;
clrscr();
printf( "\nPlease enter an integer number between 2 and 10000: " );
scanf( "%d", &k );
printf( "\n\nThe prime factor(s) of %d is( are ):", k );
for( j = 2; j <= k; j++ )
if((!( k%j))&&( IsPrime(j))) printf( "\n %4d", j );
printf("\n");
答案:
1). IsPrime(int n)
2). if(!(n%i))
3). return ( m );
功能:请编写函数fun,对长度为8个字符的字符串,将8个字符按
降序排列。
例如:原来的字符串为CEAedcab,排序后输出为edcbaECA。
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
int fun(char *s,int num)
/**********FOUND**********/
int i;j;
char t;
for(i=0;i<num;i++)
/**********FOUND**********/
for(j=i;j<num;j++)
/**********FOUND**********/
if(s[i]>s[j])
t=s[i];
s[i]=s[j];
s[j]=t;
main()
char s[10];
clrscr();
printf("输入8个字符的字符串:");
gets(s);
fun(s,8);
printf("\n%s",s);
getch();
答案:
1). int i,j;
2). for(j=i+1;j<num;j++)
3). if(s[i]<s[j])
功能:计算正整数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 ;
clrscr() ;
printf("\Please enter a number:") ; scanf("%ld",&n) ;
printf("\n%ld\n",fun(n)) ;
getch();
答案:
1). long k=1;
2). num/=10;
3). } while(num) ; 或 while(num!=0)
第 14 页
展开阅读全文