国家二级(C语言)机试模拟试卷954
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:根据形参ch中指定的大写英文字母,按顺序打印出3个相邻的字母,指定的字母位于中间。若指定的字母为Z,则打印YZA;若指定的字母为A,则打印ZAB。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#pragma warning (disable:4996)
void fun(char ch)
{ char t[3];
int i;
t[1]=ch;
/**********************found***********************/
if (ch==’Z’){ t[2]=’A’; t[0]=____(1)____ ; }
/**********************found***********************/
else if (ch==’A’) {t[2]=’B’; t[0]=____(2)____; }
/**********************found***********************/
else { t[0]=ch-1; t[2]=____(3)____;}
for(i=0;i<3; i++) putchar(t[i]);
putchar(’\\
’);
}
main( )
{ char c;
do
{ printf(\\
(1) ’Y’
(2) ’Z’
(3) ch+1
解析:
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:对于长整数n中的各个位置上的数值,分别统计出为0和为1的个数,并传递回主函数输出。
例如,若n的值为120311,即为0的个数是1;为1的个数是3,则应输出: c0=1,c1=3。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#pragma warning (disable:4996)
void fun(long n,int *c0,int *c1)
{ int k;
/**********************found***********************/
*c0=*c1=1;
do
{
/**********************found***********************/
\\tk= n/10;
\\tif(k==0) (*c0)++;
\\tif(k==1) (*c1)++;
/**********************found***********************/
\\tn=n-10;
}
while (n);
}
main( )
{ long n; int c0,c1;
printf(\\
(1)*c0=*c1 =0;
(2)k = n%10;
(3)n= n/10;
解析:fun( )函数中,参数c0和c1为整型指针类型,指向的存储空间用来存放n中数字0和1的个数,所以首先需要对c0、c1赋初值0;接着do…while( )循环中,通过n对10求余,求余结果k就是当前n的个位数字,判断k是0或1,统计对应的个数,再通过n除以10,将统计后的个位数字消除,处理消除个位数字后的n,直到n取值为0。
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。请编写函数fun( ),其功能是:统计出x所指数组中偶数的个数,通过函数值返回主函数;并计算出偶数的平均值放到形参ave所指的存储单元中。
例如,当数组内容为:,2,5,9.8,23,4,7,21时, 输出结果应该是: n=3,ave=8 .000000
注意:部分源程序在文件prog1.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#define N 8
int fun(int x[],double *ave)
{
}
main( )
{ int x[N]={ 12,5,9,8,23,4,7,21 }, n;
double ave;
void NONO( );
n=fun(x,&ave);
printf(\\
int fun(int x[],double *ave)
{
int i, count= 0;
double sum= 0.0;
for(i=0;i<N; i++)
{
if(x[i]%2== 0)
{
sum+= x[i];
count+= 1;
}
}
*ave = sum / count;
return count; }
解析:
本文档预览:3600字符,共3034字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载