程序填空

题号: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: 00,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'NULL0

题号: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+=1lower=lower+1
  • 位置3: i++i=i+1i+=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 + 11 + 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 < nn > ii <= n - 1n - 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 + ce = 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++++ii=i+1i=1+ii+=1
位置3: 1/t1.0/t1./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!=0x
位置2: elseelse 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==jj==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+1k=1+kk+=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]=sa[N-1-k]=sa[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<1010>n
位置2: high%j==0!(high%j)
位置3: return sumreturn (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<=300i<300300>=i300>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 yreturn (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%10n-n/10*10n-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 = 0s = 0.0
位置 4: return sreturn(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)