国家二级(C语言)机试模拟试卷906
程序填空题
1.函数fun的功能是根据所给的二维数组,将二维数组每一行中的最大值,与该行中的第一个元素进行交换。
例如,如有二维数组:
51 27 44 50 99
74 58 28 62 84
45 75 71 97 76
51 35 72 67 46
91 34 42 73 32
则输出结果是:
99 27 44 50 51
84 58 28 62 74
97 75 7l 45 76
72 35 51 67 46
91 34 42 73 32
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在BLANK1.C中。不得增行或删行,也不得更改程序的结构!
#include
#define N 5
void fun(int a[N][N])
{
int i,j,k,t;
for(i=0;i<N;i++)
{
/*********found*********/
【1】;
for(j=1; j<N; j++)
/*********found*********/
if(a[i][j]>【2】)
k=j;
t=a[i][0];
a[i][0]=a[i][k];
/*********found*********/
【3】=t;
}
}
main( )
{
int i,j;
int a[N][N]={{51,27,44,50,99};
{74,58,28,62,84};
{45,75,71,97,76};
{51,35,72,67,46};
{91,34,42,73,32}};
fun(a);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf(\\
(1)k=0;(2)a[i][k](3)a[i][k]
解析:(1)求数组每一行的最大值,定义变量k,保存为最大值的列下标。将其值设置为0。(2)内循环求每一行的最大值,当前元素值大于最大值时,将此行对应的列下标保存到k变量。本空答案为a[i][k]。(3)程序将求到的最大值与所在行的第一个元素交换。此空为最大值a[i][k]。
程序修改题
2.给定程序MODI1.C。已知用户记录由账号和密码两项信息构成,N名用户的数据已经存入结构体数组n中,函数fun的功能是删除用户记录中账号重复的记录,如有多个重复账号记录,则保留第一个账号的用户记录。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#include
#define N 10
struct user{
char name[20];
char password[20];
};
int fun(struct user users[])
{
int i=0,j,k;
int in=N:
while(i<n)
{
/*********found*********/
j=0;
while(j<n)
{
if(strcmp(users[i].name,users[j].name)==0)
{
k=j;
/*********found*********/
for(; k<n; k++)
/*********found*********/
users[k]=users[k-1];
n–;
}
j++;
}
i++;
}
return n;
}
main( )
{
int i,n=N;
struct user users[N]={{\\
(1)j=i+1;(2)for(;k<n-1;k++)(3)users[k]=users[k+1];
解析:(1)根据题干可知,删除重复的记录,将当前记录与其后的记录进行比较。变量i表示当前比较对象的下标,从下一个元素进行比较,则变量j=i+1;(2)当数组元素的name相同时,for循环的作用是将对应后面的元素移动到前面,此时n的值为常量N,这里k<n-1,则修改为for(;k<n-1;k++)。(3)for循环的作用是将后面的元素前移,即将重复的元素删除,则这里应修改为users[k]=users[k+1];
程序设计题
3.请编写函数fun,fun的功能是按顺序将形参a所指的字符串中每个单词的第一个字母取出,依次存放到形参b所指的字符串中去。
形参a所指的字符串中的单词以一个或多个空格进行分隔,字符串首部和尾部可以有一个或多个空格。
注意:部分源程序在文件PROG1.C中。请勿改动主函数main中的任何内容,仅在函数fun的花括号中填入你所编写的若干语句。
#include
#include
void NONO( );
void fun(char*a,char*b)
{
}
main( )
{
char a[50],b[50] ;
gets(a);
fun(a,b);
puts(b);
NONO( );
}
void NONO( )
{
FILE*fp=fopen(\\
void fun(char*a,char*b)
{
while(*a==’’)a++;
*b=*a;
b++;
a++;
while(*a)
{
if(*a==’’)a++;
if(*(a-1)==’’&&*a!=’’&&*a)
{
*b=*a;
b++;
}
本文档预览:3600字符,共3820字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载