2015年计算机二级C语言上机操作题及答案(37)
发布时间:2011/7/14 11:24:33 来源:城市学习网 编辑:ziteng
第37套
填空题
从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入dun函数,该函数的功能是:从数组xx中找出个位和十位的数字之和大于5的所以无符号整数,结果保存在数组yy,中其个数由fun函数返回。
例如:当xx[8]={123,11,23,222,42,333,14,5451}时,bb[3]={42,333,5451}
注意:部分源程序给出如下
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填如所编写的若干表达式或语句。
试题程序:#include <stdio.h>
#define N 1000
int fun(int xx[], int bb[], int num)
{
int i, n = 0;
int g, s;
for (i=0; i<num; i++)
{
g = ___1___;
s = xx[i]/10%10;
if ((g+s) > 5)
___2___;
}
return ___3___;
}
main()
{
int xx[N];
int yy[N];
int num = 0, n = 0, i = 0;
printf("Input number :\n");
do
{
scanf("%u", &xx[num]);
} while (xx[num++] != 0);
n = fun(xx, yy, num);
printf("\nyy= ");
for (i=0; i<n; i++)
printf("%u ", yy[i]);
}
第1处填空:xx[i]%10
第2处填空:bb[n++]=xx[i]
第3处填空:n[NextPage] 改错题
下列给定程序中,函数fun的功能是:计算s所指字符串含有t所指字符串的数目,,并作为函数的值返回。
请改正函数fun 中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题 程序:
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define N 80
int fun(char *s, char *t)
{
int n;
char *p, *r;
n = 0;
/********found********/
p = &s[0];
*r = t;
while (*p)
{
if (*r == *p)
{
r++;
if (*r == '\0')
{
n++;
/********found********/
___ì???___
}
}
p++;
}
return n;
}
main()
{
char a[N], b[N];
int m;
printf("\nPlease enter string a :");
gets(a);
printf("\nPlease enter substring b :");
gets(b);
m = fun(a, b);
m = printf("\nThe result is:m=%d\n", m);
}
第1处:*r=t;应改为r=t;或r=&t[0];
第2处:应填r=t;或r=&t[0];[NextPage] 编程题
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数FUN,它的功能是:求出该学生的平均分并放在记录的AVE成员中。请自己定义正确的形参。
例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include <stdio.h>
#define N 8
typedef struct
{
char num[10];
double s[N];
double ave;
} STREC;
void fun(STREC *p)
{
}
main()
{
STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
int i;
FILE *out;
fun( &s );
printf("The %s's student data:\n", s.num);
for(i=0;i<N;i++)
printf("%4.1f\n",s.s[i]);
printf("\nave=%7.3f\n",s.ave);
out=fopen ("out.dat", "w");
fprintf(out, "The %s's student data:\n", s.num);
for(i=0;i<N;i++)
fprintf(out, "%4.1f\n",s.s[i]);
fprintf(out, "\nave=%7.3f\n",s.ave);
fclose (out );
}
答案是:
void fun(STREC *p)
{
double av=0.0;
int i;
for(i=0;i<N;i++)
av+=p->s[i];
av/=N;
p->ave=av;
}