国家二级(C语言)机试模拟试卷920
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长小于N。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define M 5
#define N 20
void fun(char (*ss)[N])
{ int i, j, k, n[M]; char t[N];
for(i=0; i<M; i++) n[i]=strlen(ss[i]);
for(i=0; i<M-1; i++)
{ k=i;
/**********found**********/
for(j=___1___; j<M; j++)
/**********found**********/
if(n[k]>n[j]) ___2___;
if(k!=i)
{ strcpy(t,ss[i]);
strcpy(ss[i],ss[k]);
/**********found**********/
strcpy(ss[k],___3___);
n[k]=n[i];
}
}
}
void main( )
{ char ss[M][N]={\\
(1)i+1 (2)k=j (3)t
解析:本题考查:选择排序; for循环条件;字符串复制函数strcpy。strcpy(字符数组1,字符数组2)表示把数组2所指字符串的内容复制到字符数组1所指的存储空间中。函数返回字符数组1的值,即字符串的首地址。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
/**********found**********/
void fun(char str, char ch)
{ while ( *str && *str != ch) str++;
/**********found**********/
if ( *str == ch )
{ str [ 0 ] = ch;
/**********found**********/
str[1] = ’0’;
}
}
void main( )
{ char s[81], c ;
printf(\\
(1)void fun
(char *str.char ch)
(2)if(*str !=ch)
(3)str[1]= 0;
解析:变量赋值;while循环语句;函数形参定义。
(1)第1个形参应该是字符串类型,所以应改为void fun(char *str char ch)。
(2)应该是判断不相等,所以应改为if(*str!=ch)。
(3)赋值字符串结束符错误,所以应改为str[1]=0;。
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,例如,字符串中原有的字符串为\\
void fun(char*s)
{
int i=0;
int m=strlen(s)-1;
char ch;
while(i<m)
{
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m–;
}
}
解析: while循环语句;字符串的操作;变量交换。
将字符串中的内容逆置,实际上就是将第一个字符和最后一个字符交换,再将第二个字符与倒数第二个字符交换,依此类推,直到中间的字符为止。因此,正序遍历到的字符下标i<倒序遍历的字符下标j,接着借助中间变量ch进行交换。
本文档预览:3600字符,共2612字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载