填空题
给定程序的功能是求二分之一的圆面积,函数形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S= ,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:S=598.950017。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
double fun(double r)
{
return 3.14159*___1___/2.0;
}
main()
{
double x;
printf("Enter x: ");
scanf("%lf", ___2___);
printf(" s = %lf\n ", fun(___3___));
}
【第1处填空:r*r 第2处填空:&x 第3处填空:x】
改错题
假定整数数列中的数不重复,并存放在数组中。下列给顶程序中,函数fun的功能是删除数列中值为x的元素,同时将其他元素前移。N中存放的是数列中元素的个数。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#define N 20
fun(int *a, int n, int x)
{
int p = 0, i;
a[n] = x;
while (x != a[p])
p = p+1;
if (p == n)
{
return -1;
}
else
{
/********found********/
for (i=p; i
a[i+1] = a[i];
return n-1;
}
}
main()
{
int w[N] = {-3, 0, 1, 5, 7, 99, 10, 15, 30, 90}, x, n, i;
n = 10;
printf("The original data:\n");
for (i=0; i
printf("%5d", w[i]);
printf("\nInput x (to delete):");
scanf("%d", &x);
printf("Delete :%d\n", x);
n = fun(w, n, x);
if (n == -1)
{
printf("***Not be found!***\n\n");
}
else
{
printf("The data after delete :\n");
for (i=0; i
printf("%5d", w[i]);
printf("\n\n");
}
}
【第1处:a[i+1]=a[i];应改为a[i]=a[i+1]】
编程题
请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。
例如,若输入:17,5,则应输出:19,23,29,31,37。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
void fun(int m, int k, int xx[])
{
}
main()
{
int m,n,zz[1000];
FILE *out;
printf("\nPlease enter two integers:");
scanf("%d,%d",&m,&n);
fun( m,n,zz);
for(m=0; m
printf("%d ", zz[m]);
printf("\n");
fun(28, 20, zz);
out = fopen("out.dat", "w");
for (m = 0; m < 20; m++)
fprintf(out, "%d\n", zz[m]);
fclose(out);
}
答案是:
void fun(int m,int k,int xx[])
{
int g=0,I,j,flag=1;
for(i=m+1;i
{
for(j=2;j
{
if(i%j!=0)
flag=1;
else
{
flag=0;
break;
}
}
if(flag==1&&j>=i)
{
if(k>=0)
{
xx[g++]=I;
k--;
}
else
break;
}