国家二级C语言机试(操作题)模拟试卷291
程序填空题
1.给定程序中,函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组a中,其中:a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数。
例如,若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1,
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
#inclucte<stdio.h>
void fun(int m,int a[10])
{ int i;
for(i=0;i<10;i++)
/*********found*********/
【1】=0;
while(m>0)
{
/*********found*********/
i=【2】;
a[i]++;
/*********found*********/
m=【3】;
}
}
main()
{ int m,a[10],i ;
printf(\\
(1)a[i]
(2)m%10
(3)m/10
解析:数组a各元素初始化为0,用求余和整除相结合的方法得到数字的每一位数字,并用它做为数组a的下标,相应元素加1。
填空1:数组a的10个元素赋值为0。
填空2:m%10可得到数m的最后一位数字。
填空3:m/10可使数字截短,即去掉最后一位。
程序修改题
2.下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763、所得平均值为195.838745,在平均值以上的实数个数应为5。
请改正程序中的错误,使其能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
int fun(float x[],int n)
/*********found*********/
int j,c=0;float xa=0.0;
for(j=0;j<n;j++)
xa+=x[j]/n;
printf(\\
(1){int j,c=0;float xa=0.0;
(2)if(x[j]>=xa)
解析:(1)本题着重考查考生对C语言基本语法以及比较运算符的掌握情况。
(2)本题中的第一个错误:在C语言中,{}应成对出现,所以程序中的语句”int j,c=0;float xa=0.0;\\
程序设计题
3.函数fun的功能是:将a、b中的两个正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量e的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。调用该函数后,c=5241。
注意:部分源程序在文件PROG1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
void fun(int a,int b,long*c)
{
}
main()
{int a,b;long c;void NONO();
printf(\\
void fun(int a,int b,long*c)
{
*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);
}
解析:本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。取a十位数字的方法a/10,取a个位数字的方法a%10。同理可取出整数b的个位数和十位数。
本文档预览:3600字符,共2260字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载