国家二级(C语言)机试模拟试卷944
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:找出100~ 999之间(含100和999)所有整数中各位上数字之和为x(x为正整数)的整数,并输出;符合条件的整数个数作为函数值返回。
例如,当x值为5时,100~999之 间各位上数字之和为5的整数有: 104、113、 122、 131、 140、 203、 212、 221、 230、302、311、320、401、 410、 500,共有15个。当x值为27时,各位数字之和为27的整数是: 999,只有1个。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include
int fun(int x)
{ int n, s1, s2, s3, t;
n=0;
t=100;
/**********found**********/
while(t<=__1__){
/**********found**********/
s1=t%10; s2=(__2__)%10; s3=t/100;
/**********found**********/
if(s1+s2+s3==__3__)
{ printf(\\
(1)999 (2)t/10 (3)x
解析:while循环语句; 数值n各个位的表示方法; if语句条件表达式。
填空1:题目要求找出100~999之间符合要求的数,所以while语句的循环条件是t<= 999。
填空2:变量s2存放三位数的十位,取出三位数十位数值的方法为s2= (t/10)%10。
填空3:题目需要判断各位上数字之和是否为x,所以if语句条件表达式是s1+s2+s3==x。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为7654321时,t中的数为642。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/************found************/
void fun (long s, long t)
{ long sl=10;
s /= 10;
*t = s % 10;
/************found************/
while (s < 0)
{ s = s/100;
*t = s%10*sl+*t;
sl = sl * 10;
}
}
void main( )
{ long s, t;
printf(\\
(1)void fun(long s;long *t)
(2)while(s>0)
解析:函数定义,指针型变量作函数参数; while循环语句。
函数的形参类型应与实参类型相同,主函数中函数fun( )的调用方式说明其参数应为指针类型,所以形参应定义为long *t。while循环的功能是,每循环一次就从s中的数上取出一位进行运算,直到取完为止,所以循环条件为s>0。
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:按分数降序排列学生的记录,高分在前,低分在后。
注意:部分源程序在文件prog1.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
void fun(STREC a[])
{
}
void main( )
{ STREC s[N]={{\\
void fun(STREC a[])
{
int i;j;
STREC t
for(i=1;i<N;i++) /*用冒泡法进行排序,进行N-1次比较*/
for(j=0;j<N-1;j++) /*在每一次比较中要进行N-1次两两比较*/
if(a[j].s<a[j+1].s)
{t=a[j];a[j]=a[i+1];a[j+1]=t;} /*按分数的高低排列学生的记录,高分在前*/
}
解析:排序算法;结构体类型。
对N个数进行排序的算法很多,其中最简单的排序算法是冒泡算法。利用双层for循环嵌套和一个if判断语句来实现,外层循环用来控制需比较的轮数,内层循环用来控制两两比较。
本文档预览:3600字符,共2848字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载