国家二级(C语言)机试模拟试卷921
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长小于N。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define M 5
#define N 20
void fun(char (*ss)[N])
{ int i, j, k=0, n, m, len;
for(i=0; i<M; i++)
{ len=strlen(ss[i]);
if(i==0) n=len;
if(len>n) {
/**********found**********/
n=len; ___1___=i;
}
}
for(i=0; i<M; i++)
if (i!=k)
{ m=n;
len=strlen(ss[i]);
/**********found**********/
for(j=___2___; j>=0; j–)
ss[i][m–]=ss[i][j];
for(j=0; j<n-len; j++)
/**********found**********/
___3___=’*’;
}
}
void main( )
{ char ss[M][N]={\\
(1)k (2)len (3)ss[i][j]
解析:赋值语句,for语句循环条件。
(1)循环初值:根据题意确定循环变量的取值范围。
(2)循环条件:确定循环结束的条件,即当不满足条件时,结束循环。
填空1:使用变量k来保存第几个字符串是最长的字符串,所以应填k。
填空2:利用for循环把原字符串右移至最右边存放,字符串的长为len,所以应填len。
填空3:左边用字符*补齐,所以应填ss[i][j]。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数:fun的功能是: 计算整数n的阶乘。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
double fun(int n)
{
double result=1.0;
while(n>1&&n<170)
/*************found**************/
result*=–n;
/*************found**************/
return;
}
void main( )
{int n;
system(\\
(1)result*=n–;
(2)return result;
解析:复合赋值运算;通过return语句完成函数值的返回。
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是:从字符串中删除指定的字符。同字母的大、小写按不同字符处理。
例如,若程序执行时输入字符串为
”turbo c and borland c++”
从键盘上输入字符n,则输出为
”turbo c ad borlad c++”
如果输入的字符在字符串中不存在,则字符串照原样输出。
注意:部分源程序在文件prog1.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
void fun(char s[],int c)
{
}
void main( )
{
static char str[]=\\
void fun(char s[].int c)
{
int i=0;
char *p;
p=s;
while(*p) /*判断是否为结束符*/
{
if(*p!=c) /*判断字符串中字符是否与指定字符相同*/
{
s[i]=*p; /*不同则存放到原先的字符串*/
i++;
}
p++; /*相同则处理下一个字符。*/
} s[i]=’\\\\0’; }
解析:
本文档预览:3600字符,共2828字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载