C语言程序设计真题-程序填空
程序填空
题号:11634
题目:按公式 π/4 = 1 - 1/3 + 1/5 - … 计算圆周率的近似值,
计算直至其中某项小于 2×10^(-6)。
#include <stdio.h>
#include <math.h>
void main()
{
int s;
float n, ______;
double t;
t = 1;
pi = 0;
n = 1;
s = 1;
while(______ >= 2e-6)
{
pi += t;
n += 2;
______
______
}
pi *= 4;
printf("pi = %.6f\n", pi);
}
答案:
- 位置 1:
pi - 位置 2:
fabs(t) - 位置 3:
s = -s;或s *= -1;或s = -1 * s; - 位置 4:
t = s / n;
题号:9144
功能:建立一个元素值全为0的二维数组,并按指定格式输出。
#include <stdio.h>
void main()
{
int a[5][5] = {______}, i, j;
for(i = 0; i < 5; i++)
{
a[i][i] = ______;
a[i][______] = 6;
}
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++) printf("%2d", ______);
printf("\n");
}
}
答案:
- 位置 1:
0或0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - 位置 2:
6 - 位置 3:
4 - i - 位置 4:
a[i][j]
题号:11587
题目: 给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算结果为:
7 4 1
8 5 2
9 6 3
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include <stdio.h>
#define N 3
void fun(int (*t)[N])
{
int j ,r[N];
for(j=0; j<N; j++) r[j]=t[0][j];
for(j=0; j<N; j++)
t[0][N-j-1]=t[j][______]; /* 位置1 */
for(j=0; j<N; j++)
t[j][0]=t[N-1][j];
for(j=N-1; j>=0;______) /* 位置2 */
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1; j>=0; j--)
t[j][N-1]=r[______]; /* 位置3 */
}
main()
{
int t[][N]={1,2,3,4,5,6,7,8,9}, i, j;
printf("\nThe original array:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%2d ",t[i][j]);
printf("\n");
}
}
答案:
- 位置1:
t[0][N-j-1]=t[j][0]; - 位置2:
for(j=N-1; j>=0;j--) - 位置3:
t[j][N-1]=r[j];
题号:10975
题目: 先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun (char *s, char *t)
{
int i, sl;
sl = ______; /* 位置1 */
for(i=0; i<sl; i++)
t[i] = s[i];
for (i=0; i<sl; i++)
t[sl+i] = ______; /* 位置2 */
t[sl+i] = ______; /* 位置3 */
}
main()
{
char s[100], t[100];
clrscr();
printf("\nPlease enter string s:");
______("%s",s); /* 位置4 */
fun(s, t);
printf("The result is: %s\n", t);
}
答案:
- 位置1:
strlen(s) - 位置2:
s[sl-i-1] - 位置3:
'\0'或0 - 位置4:
scanf
题号:9316
题目: 将两个字符串连接为一个字符串,不许使用库函数strcat。
#include "stdio.h"
#include "string.h"
main()
{
char str1[80], str2[40];
void join(s1, s2);
gets(str1);
gets(str2);
puts(str1);
puts(str2);
join(str1, str2); /* 位置1 */
puts(str1);
}
void join(s1, s2)
char s1[80], s2[40];
{
int i, j;
j = strlen(s1); /* 位置2 */
for (i=0; s2[i] != '\0'; i++) /* 位置3 */
s1[i+j] = s2[i];
s1[i+j] = '\0'; /* 位置4 */
}
答案:
- 位置1:
join(str1, str2) - 位置2:
j=strlen(s1);或for(j=0; s1[j]!='\0'; j++);或for(j=0; s1[j]; j++); - 位置3:
s2[i] !=或*(s2+i) != - 位置4:
'\0'或NULL或0
题号:8709
题目: 给定程序的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串ss输入:AaaaBBbl23CCccccd(字符串中不要有空格),则输出结果应为:upper=5,lower=9。
#include <stdio.h>
int upper, lower;
void ss(char x[])
{
int i=0;
while (x[i])
{
if(x[i] >= 'A' && x[i] <= 'Z') /* 位置1 */
upper++;
else if(x[i] >= 'a' && x[i] <= 'z')
lower++; /* 位置2 */
i++; /* 位置3 */
}
}
main()
{
char s[100];
printf("\nPlease a string:");
scanf("%s", s);
ss(s);
printf("\nupper=%d, lower=%d", upper, lower);
}
答案:
- 位置1:
&& - 位置2:
lower++或lower+=1或lower=lower+1 - 位置3:
i++或i=i+1或i+=1或++i
题号:8019
题目: 以下程序的功能是当 x < 0 时,输出 x+1 的绝对值;当 0 < x < 5 时,输出 2*x+1 的值;当 x > 5 时,输出 x 的 sin 值加 5。
#include "stdio.h"
#include "math.h" /* 位置1 */
void main()
{
float x, f;
scanf("%f", &x);
if (x < 0)
f = fabs(x + 1); /* 位置2 */
else if (x >= 0 && x <= 5)
f = 2 * x + 1;
else
f = sin(x) + 5; /* 位置3 */
printf("x=%f,y=%f\n", x, f); /* 位置4 */
}
答案:
- 位置1:
#include "math.h"或#include <math.h> - 位置2:
x + 1或1 + x - 位置3:
sin(x) - 位置4: 无填空,已给出
题号:11680
题目: 有 n 个人围成一圈,顺序排号(从 1 开始排号)。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位。
#include <stdio.h>
#define nmax 50
void main()
{
int i, k, m, n, num[nmax], *p;
printf("please input the total of numbers:");
scanf("%d", &n);
p = num;
for (i = 0; i < n; i++) /* 位置1 */
*(p + i) = i + 1; /* 位置2 */
i = 0;
k = 0;
m = 0;
while (m < n - 1)
{
if (*(p + i) != 0) /* 位置3 */
k++;
if (k == 3)
{
*(p + i) = 0;
k = 0;
m++;
}
i++;
if (i == n)
i = 0;
}
while (*p == 0) /* 位置4 */
p++;
printf("%d is left\n", *p);
}
答案:
- 位置1:
i < n或n > i或i <= n - 1或n - 1 >= i - 位置2:
i + 1; - 位置3:
*(p + i)或p[i] - 位置4:
*p == 0或!(*p)或!(p[0])或p[0] == 0或!*p
题号:7039
题目: 给定程序中,函数 fun 的功能是:在形参 ss 所指字符串数组中,删除所有串长超过 k 的字符串,函数返回所剩字符串的个数。
ss 所指字符串数组中共有 N 个字符串,且串长小于 M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include <stdio.h>
#include <string.h>
#define N 5
#define M 10
int fun(char (*ss)[M], int k)
{
int i, j = 0, len;
for (i = 0; i < N; i++) /* 位置1 */
{
len = strlen(ss[i]);
if (len <= k) /* 位置2 */
strcpy(ss[j++], ss[i]); /* 位置3 */
}
return j;
}
main()
{
char x[N][M] = {"Beijing", "Shanghai", "Tianjing", "Nanjing", "Wuhan"};
int i, f;
printf("\nThe original string\n\n");
for (i = 0; i < N; i++)
puts(x[i]);
printf("\n");
f = fun(x, 7);
printf("The string which length is less than or equal to 7:\n");
for (i = 0; i < f; i++)
puts(x[i]);
printf("\n");
}
答案:
- 位置1:
N - 位置2:
k - 位置3:
ss[i]
题号:11725
题目: 数组中的元素按现行规律分布,试完成下面的程序。设此时 YMAX = 10。(答案中用大写字符 U 代表空格)
#include "stdio.h"
#define YMAX 10 /* 位置1 */
#define Z 12
main()
{
float y[Z + 1];
int i;
for (i = 0; i < Z + 1; i++)
{
y[i] = 1.0 * YMAX * i / Z;
printf("y[%d] = %f\n", i, y[i]); /* 位置2 */
}
}
答案:
- 位置1:
#define YMAX 10 - 位置2:
i, y[i]
题号:9260
题目: 利用函数计算连续的数组元素累加和。如果和值是负数则返回 0;否则返回和值。
#include <stdio.h>
int max_sum(int x[], int n) /* 位置1 */
{
int i, s = 0;
for (i = 0; i < n; i++)
s = s + x[i];
if (s < 0)
return 0; /* 位置2 */
else
return s; /* 位置3 */
}
void main(void)
{
int x[] = {2, -3, 1, -1, 3, -2, -3, 3};
int n = sizeof(x) / sizeof(int);
int i;
printf("\nMaximum Consecutive Elements Sum Program");
printf("\n========================================");
printf("\n\nGiven Array :");
for (i = 0; i < n; i++)
printf("%4d", x[i]);
printf("\n\nSum is %d", max_sum(x, n));
}
答案:
- 位置1:
int x[] - 位置2:
return 0 - 位置3:
return s
题号:9470
题目: 从键盘上输入两个复数的实部与虚部,求出并输出它们的和、差、积、商。
#include <stdio.h>
void main()
{
float a, b, c, d, e, f;
printf("输入第一个复数的实部与虚部:");
scanf("%f, %f", &a, &b);
printf("输入第二个复数的实部与虚部:");
scanf("%f, %f", &c, &d);
e = a + c; /* 位置1 */
f = b + d;
printf("相加后复数:实部:%f,虚部:%f\n", e, f);
e = a * c - b * d;
f = a * d + b * c; /* 位置2 */
printf("相乘后复数:实部:%f,虚部:%f\n", e, f);
e = (a * c + b * d) / (c * c + d * d);
f = (b * c - a * d) / (c * c + d * d); /* 位置3 */
printf("相除后复数:实部:%f,虚部:%f\n", e, f);
}
答案:
- 位置1:
e = a + c或e = c + a - 位置2:
f = a * d + b * c - 位置3:
f = (b * c - a * d) / (c * c + d * d)
题号:7037
题目: 给定程序中,函数 fun 的功能是:计算形参 x 所指数组中 N 个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参 y 所指数组中,在主函数中输出。
例如,有 10 个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000
主函数中输出:46 32 40 45 48
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double x[], double *y)
{
int i, j;
double av;
av = 0; /* 位置1 */
for (i = 0; i < N; i++)
av = av + x[i] / N; /* 位置2 */
for (i = j = 0; i < N; i++)
if (x[i] > av)
y[j++] = x[i]; /* 位置3 */
y[j] = -1;
return av;
}
main()
{
int i;
double x[N], y[N];
for (i = 0; i < N; i++)
{
x[i] = rand() % 50;
printf("%4.0f ", x[i]);
}
printf("\n");
printf("\nThe average is: %f\n", fun(x, y));
for (i = 0; y[i] >= 0; i++)
printf("%5.1f ", y[i]);
printf("\n");
}
答案:
- 位置1:
0 - 位置2:
x[i] / N - 位置3:
j++
题号:4116
题目: 用 scanf 函数,为字符数组 s1 输入字符串 “ABCDE”。
#include "stdio.h"
main()
{
char s1[10]; /* 位置1 */
scanf("%s", s1); /* 位置2 */
}
答案:
- 位置1:
char - 位置2:
s1
题号:8664
程序填空:
功能:求下式的和
1+1/2!+1/3!+1/4!+…+1/n!
#include "stdio.h"
main()
{/*=======FILL=======*/
float t=1,______,n,i;
scanf("%f",&n);
/*=======FILL=======*/
for(i=1;i<=n;______)
{
t=t*i;
/*=======FILL=======*/
sum=sum+______;
}
printf("%f\n",sum);
}
答案:
位置1: sum=0
位置2: i++ 或 ++i 或 i=i+1 或 i=1+i 或 i+=1
位置3: 1/t 或 1.0/t 或 1./t
题号:229
程序填空:
题目:根据下面程序的输出结果, 完善该程序。(用大写字母U代表空格)
程序输出结果:
s1=C,ASCIIUisU67
x=65535,y=1234567
#include "stdio.h"
main()
{
long int x=65535,y=1234567;
char s1='C';
/*=======FILL=======*/
printf(______,s1,s1);
/*=======FILL=======*/
printf(______,x,y);
}
答案:
位置1: "s1=%c,ASCIIUisU%d"
位置2: "x=%ld,y=%ld"
题号:2129
程序填空:
功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。
#include <stdio.h>
main()
{
int x,i=0,j=0;
float s1=0,s2=0,av1,av2;
scanf("%d",&x);
/*=======FILL=======*/
while(______)
{
if(x%2==0)
{
s1=s1+x;
i++;
}
/*=======FILL=======*/
______
{
s2=s2+x;
j++;
}
/*=======FILL=======*/
______
}
if(i!=0)
av1=s1/i;
else
av1=0;
if(j!=0)
/*=======FILL=======*/
______
else
av2=0;
printf("oushujunzhi:%7.2f,jishujunzhi:%7.2f\n",av1,av2);
}
答案:
位置1: x!=0 或 x
位置2: else 或 else if(x%2==1) 或 else if(x%2!=0) 或 if(x%2)
位置3: scanf("%d",&x)
位置4: av2=s2/j
题号:10104
程序填空:
功能:定义一个5行5列的矩阵,要求主对角线和辅对角线元素值为1,其它元素值为0。
#include "stdio.h"
/*=======FILL=======*/
void ff(______)
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
/*=======FILL=======*/
if(______||(j+i==4)) a[i][j]=1;
/*=======FILL=======*/
else ______;
}
main()
{
int s[5][5],i,j;
ff(s);
printf("输出5×5的矩阵:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",s[i][j]);
printf("\n");
}
}
答案:
位置1: int a[][5] 或 int a[5][5]
位置2: (i==j) 或 (j==i) 或 i==j 或 j==i
位置3: a[i][j]=0
题号:7057
程序填空:
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 5
typedef struct student {
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename)
{
FILE *fp; int i, j;
STU s[N], t;
/*=======FILL=======*/
fp = fopen(filename, ______);
fread(s, sizeof(STU), N, fp);
fclose(fp);
for (i=0; i<N-1; i++)
for (j=i+1; j<N; j++)
/*=======FILL=======*/
if (s[i].sno ______ s[j].sno)
{t = s[i]; s[i] = s[j]; s[j] = t;}
fp = fopen(filename, "wb");
/*=======FILL=======*/
______(s, sizeof(STU), N, fp); /* 二进制输出 */
fclose(fp);
}
main()
{
STU t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78},{10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87},{10001,"MaChao", 91, 92, 77}}, ss[N];
int i,j; FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(t, sizeof(STU), 5, fp);
fclose(fp);
printf("\n\nThe original data :\n\n");
for (j=0; j<N; j++)
{
printf("\nNo: %ld Name: %-8s Scores: ",t[j].sno, t[j].name);
for (i=0; i<3; i++) printf("%6.2f ", t[j].score[i]);
printf("\n");
}
fun("student.dat");
printf("\n\nThe data after sorting :\n\n");
fp = fopen("student.dat", "rb");
fread(ss, sizeof(STU), 5, fp);
fclose(fp);
for (j=0; j<N; j++)
{
printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);
printf("\n");
}
}
答案:
位置1: rb
位置2: >
位置3: fwrite
题号:5430
程序填空:
功能:将一个数组中的元素按逆序存放。
#include <stdio.h>
#define N 7
main ()
{
static int a[N]={12,9,16,5,7,2,1},k,s;
printf("\n the origanal array:\n");
for (k=0;k<N;k++)
printf("%4d",a[k]);
/*=======FILL=======*/
for (k=0;k<N/2; ______)
{
s=a[k];
/*=======FILL=======*/
______
/*=======FILL=======*/
______
}
printf("\n the changed array:\n");
for (k=0;k<N;k++)
/*=======FILL=======*/
______ ("%4d",a[k]);
}
答案:
位置1: k++ 或 k=k+1 或 k=1+k 或 k+=1 或 ++k
位置2: a[k]=a[N-k-1] 或 a[k]=a[N-1-k] 或 a[k]=a[6-k] 或 *(a+k)=*(a+N-k-1) 或 *(a+k)=*(a+N-1-k)
位置3: a[N-k-1]=s 或 a[N-1-k]=s 或 a[6-k]=s 或 *(a+N-k-1)=s 或 *(a+N-1-k)=s
位置4: printf
题号:8747
程序填空:
功能:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。如,s=12345,则t=135。
#include <stdio.h>
void fun (long s, long *t)
{
long sl=10;
/*=======FILL=======*/
*t = s______10;
while(s>0)
{
/*=======FILL=======*/
s=______;
*t+=s%10*sl;
/*=======FILL=======*/
sl=sl______10;
}
}
void main()
{
long s, t;
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
}
答案:
位置1: %
位置2: s/100
位置3: *
题号:5785
程序填空:
功能:计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
#include "stdio.h"
#include "math.h"
int fun( int high )
{
int sum = 0, n=0, j, yes;
/*=======FILL=======*/
while ((high >= 2) && (______))
{
yes = 1;
for (j=2; j<=high/2; j++ )
/*=======FILL=======*/
if (______)
{
yes=0;
break;
}
if (yes)
{
sum +=high;
n++;
}
high--;
}
/*=======FILL=======*/
______;
}
main ( )
{
printf("%d\n", fun (100));
}
答案:
位置1: n<10 或 10>n
位置2: high%j==0 或 !(high%j)
位置3: return sum 或 return (sum)
题号:1664
功能: 以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。
#include <stdio.h>
#include <conio.h>
main()
{
int i,n,sum;
sum=0;
/**********FILL**********/
_______
/**********FILL**********/
for(i=1; _______ ;i++)
/**********FILL**********/
if(_______)
if(i%2==0)
{
sum=sum+i;
n++;
printf("%6d",i);
/**********FILL**********/
if(_______)
printf("\n");
}
printf("\ntotal=%d",sum);
}
答案:
位置 1: n=0
位置 2: i<=300或i<300或300>=i或300>i
位置 3: i%7==0||i%17==0或!(i%7)||!(i%17)或!(i%17)||!(i%7)或!(i%7&&i%17)或i%17==0||i%7==0
位置 4: n%5==0或!(n%5)或n/5*5==n
题号:8410
功能: 删除一个字符串中的字符’t’和字符’s’。
#include <stdio.h>
/************FILL************/
void delnum(_______)
{
int i,j=0;
for(i=0; s[i]!='\0' ;i++)
/************FILL************/
if(s[i]!='t'_______s[i]!='s')
/************FILL************/
s[j++]=_______;
s[j]='\0';
}
main ()
{
char item[100];
printf("\n input a string:\n");
gets(item);
/************FILL************/
_______;
printf("\n%s",item);
}
答案:
位置 1: char s[]
位置 2: &&
位置 3: s[i]
位置 4: delnum(item)
题号:8290
功能: 以下程序的功能:
y=2.0*x*x+3.0*x+4.0 (x<=2)
y=-2.0*x*x+3.0*x-4.0 (x>2)
#include <stdio.h>
double f( double x )
{
/**********FILL**********/
_______;
/**********FILL**********/
if (x<=_______)
y=2.0*x*x+3.0*x+4.0;
else
y=-2.0*x*x+3.0*x-4.0;
/**********FILL**********/
_______;
}
void main( )
{
printf("%f\n", f(f(-1.0)+f(5.0)));
}
答案:
位置 1: double y
位置 2: 2
位置 3: return y 或 return (y)
题号:9902
功能: 输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
#include "stdio.h"
main()
{
int m,n,k,i=0;
for(m=100;m<=1000;m++)
{
/************FILL************/
_______;
n=m;
do
{
/************FILL************/
k=k+_______ ;
n=n/10;
}
/************FILL************/
_______;
if (k%15==0)
{
printf("%5d",m);i++;
/************FILL************/
if(i%10==0) _______;
}
}
}
答案:
位置 1: k=0
位置 2: n%10 或 n-n/10*10 或 n-10*(n/10)
位置 3: while(n>0) 或 while(0<n) 或 while(n!=0) 或 while(0!=n) 或 while(n)
位置 4: printf("\n")
题号:7088
功能: 把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、…中,把偶数从数组中删除,奇数个数通过函数值返回。
例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 9
int fun(int a[], int n)
{ int i,j;
j = 0;
for (i=0; i<n; i++)
/**********FILL**********/
if (a[i]%2==___)
{
/**********FILL**********/
a[j] = a[i]; ___;
}
/**********FILL**********/
return ___;
}
main()
{ int b[N]={9,1,4,2,3,6,5,8,7}, i, n;
printf("\nThe original data :\n");
for (i=0; i<N; i++) printf("%4d ", b[i]);
printf("\n");
n = fun(b, N);
printf("\nThe number of odd : %d \n", n);
printf("\nThe odd number :\n");
for (i=0; i<n; i++) printf("%4d ", b[i]);
printf("\n");
}
答案:
位置 1: 1
位置 2: j++ 或 j=j+1
位置 3: j
题号:3771
功能: 以下程序的功能如(图1)。
(注:原题有图,但此处无法显示,故保留文字描述)
#include "stdio.h"
/************FILL************/
float fun(___, int n)
{
/************FILL************/
___;
float xa=0, s;
for (j=0; j<n; j++ )
xa += x[j]/n;
/************FILL************/
___;
for (j=0; j<n; j++ )
s += (x[j]-xa)*(x[j]-xa)/n;
/************FILL************/
___;
}
main ( )
{
float x[100] = {193.199, 195.673, 195.757, 196.051,
196.092,196.596,196.579, 196.763};
printf("%f\n", fun (x, 8));
}
答案:
位置 1: float x[] 或 float *x
位置 2: int j
位置 3: s = 0 或 s = 0.0
位置 4: return s 或 return(s)
题号:7045
题目: 给定程序中,函数fun的功能是计算下式
$$s = 1 + \frac{1}{2} + \frac{1}{2\times3} + \frac{1}{2\times3\times4} + \cdots + \frac{1}{2\times3\times\cdots\times n}$$
直到$\frac{1}{2\times3\times\cdots\times n} < e$ ,并把计算结果作为函数值返回。
例如,若形参e的值为1e-3,函数的返回值2.985678。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
double fun(double e)
{ int i; double s, x;
/**********FILL**********/
s=0; i=___;
x=1.0;
while(x>e){
/**********FILL**********/
___;
/**********FILL**********/
x=(2.0*i-1)/((___)*(2.0*i));
s=s+x;
}
return s;
}
main()
{ double e=1e-3;
printf("\nThe result is: %f\n",fun(e));
}
答案:
位置 1: 0
位置 2: i++
位置 3: 2.0*i
题号:10023
题目: 统计字符s在字符串str中出现的次数。
例如:若字符串为"aaas lkaaas",则应输出2。
#include <stdio.h>
/************FILL************/
int fun (char t, ___)
{
int i,num=0;
for(i=0; str[i]; i++)
/************FILL************/
if(___)
num++;
return num;
}
main()
{
char str[80],s;
printf("input a string:");
gets(str);
printf("输入要查找的字符s:");
/************FILL************/
s=___;
printf("%d\n",fun(s,str));
}
答案:
位置 1: char str[]
位置 2: t==str[i] 或 str[i]==t
位置 3: getchar()
题号:1977
功能: 利用全局变量计算长方体的体积及三个面的面积。
#include "stdio.h"
int s1,s2,s3;
int vs(int a,int b,int c)
{
int v;
/************FILL************/
v=___;
s1=a*b;
/************FILL************/
s2=___;
s3=a*c;
return v;
}
main()
{
int v,l,w,h;
printf("\ninput length,width and height: ");
/************FILL************/
scanf("%d%d%d",___,&w,&h);
/************FILL************/
v=___;
printf("v=%d s1=%d s2=%d s3=%d\n",v,s1,s2,s3);
}
答案:
位置 1: a*b*c
位置 2: b*c
位置 3: &l
位置 4: vs(l,w,h)

