黑龙江大学C语言程序设计试题库程序改错

更新时间:2023-08-08 04:16:01 阅读量: 实用文档 文档下载

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

程序改错 功能:给定 n 个实数,输出平均值,并统计在平均值以下(含平 均值)的实数个数。 例如: n=6 时,输入 23.5, 45.67, 12.1, 6.4, 58.9, 98.4 所得 平均值为 40.828335,在平均值以下的实数个数应为 */

#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));

}

float xa=0.0; 或 for(j=0;n>j;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;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); 3。

答案:

1). float xa=0;

或 2). for(j=0;j<n;j++)

/**********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) if(arr[i]<*pt2)

}

}

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;

*pt1=arr[i

];

*pt2=arr[i

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);

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");

*/ #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);

功能:以下程序能求出 最

大的 n 。

1*1+2*2+ +n*n<=1000 中满足条件的

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

Top