国家二级(C语言)机试模拟试卷931
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)
例如,形参s所指字符串为\\
(1)1 (2)s[k]或*(s+k) (3)c
解析:本题考查:指针型变量; if…else语句; 赋值语句。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,fun函数的功能是:求表达式
s=aa… aa-…-aaa-aa-a (此处aa… aa表示n个a,a和n的值在1至9之间)
例如,a=3,n=6, 则以上表达式为:
s=33333-33333-3333-333-33-3
其值是296298。
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
long fun (int a, int n)
{ int j ;
/**************found**************/
long s = 0, t = 1 ;
for (j = 0 ; j < n ; j++)
t = t * 10+a ;
s = t ;
for (j = 1 ; j < n ; j++) {
/**************found**************/
t = t % 10 ;
s = s-t ;
}
return(s) ;
}
void main( )
{ int a, n ;
printf(\\
(1)long s=0.t=0;
(2)t=t/10;
解析:变量赋初值操作;求余运算和除法运算的区别。
(1)t用来存放每次循环后的多位数,第一次循环时,t应当是个位数,所以的初始值应为0。
(2)根据题意,这里不需要求余数,而是要去掉个位数,重新组合一个数,因此应用除法运算。去掉数值n的个位的方法是采用除法运算,如果需要取出个位数才使用求余运算,不要混淆。
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数void fun(char *tt,int pp[]),统计在tt所指的字符串中’a’到’z’26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
注意:部分源程序在文件prog1.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
void fun(char *tt, int pp[])
{
}
void main( )
{ char aa[1000] ;
int bb[26], k ;
void NONO ( );
printf(\\
void fun(char *tint pp[])
{
int i;
pp[i]=0: /*初始化pp数组各元素为0*/
for(:*tt!=’\\\\0’;tt++)
if(tt>=’a’&&*tt<=’z’)
pp[*tt-’a’]++; }
解析:
本文档预览:3600字符,共2254字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载