2015年计算机二级C语言上机操作题及答案(17)
发布时间:2011/7/4 11:02:54 来源:城市学习网 编辑:ziteng
第17套
填空题
给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组中:成绩为60到69的人数存到b[0]中,成绩为70到79的人数存到b[1],成绩为80到89的人数存到 b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到b[5]中
例如,当a数组中的数据是:93、85、77、68、59、43、94、75、98。调用该函数后,b数组中存放的数据应是1、2、1、3、0、2。
注意:部分源程序给出如下
请勿改动主函数main和其他函数中的任何内容,仅在横线上填如所编写的若干表达式或语句。
试题程序:
#include
void fun(int a[], int b[], int n)
{
int i;
for (i=0; i<6; i++)
b[i] = 0;
for (i=0; i<___1___; i++)
if (a[i]<60)
b[5]++;
___2___
b[(a[i]-60)/10]++;
}
main()
{
int i, a[100] = {93, 85, 77, 68, 59, 43, 94, 75, 98}, b[6];
fun(___3___, 9);
printf("the result is: ");
for (i=0; i<6; i++)
printf("%d ", b[i]);
printf("\n");
}
第1处填空:n
第2处填空:else
第3处填空:a,b [NextPage] 改错题
下列给定程序中,函数FUN的功能是:计算并输出K以内最大的10个能被13或17整除的自然数之和。K的值由主函数传入,若K的值为500,则函数值为4622。
请改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确结果。
注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
试题程序:#include
#include
int fun(int k)
{
int m = 0, mc = 0;
while ((k>=2) && (mc<10))
{
/********found********/
if ((k=0) || (k=0))
{
m = m+k;
mc++;
}
k--;
}
return m;
/********found********/
___ì???___
main()
{
printf("%d\n", fun(500));
}
第1处:if((k=0)||(k=0))应改为if((k==0)||(k==0))
第2处:应填} [NextPage] 编程题
请编写一个函数fun(char *s)该函数的功能是把字符串中的内容逆置。
例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba.
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#define N 81
void fun ( char *s)
{
}
main()
{
char a[N];
FILE *out;
printf ( "Enter a string : ");
gets ( a );
printf ( "The original string is: " );
puts( a );
fun ( a );
printf("\n");
printf ( "The string after modified : ");
puts ( a );
strcpy(a, "Hello World!");
fun(a);
out = fopen("out.dat", "w");
fprintf(out, "%s" , a);
fclose(out);
}
答案是:
void fun (char *s)
{
char ch;
int i,m,n;
i=0;
m=n=strlen(s)-1;
while(i<(n+1)/2)
{
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;
}
}