国家二级(C语言)机试模拟试卷947
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算后结果为:
1 0 0
6 5 0
10 14 9
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 4
/**********found**********/
void fun(int (*t)___1___)
{ int i, j;
for(i=1; i<N; i++)
{ for(j=0; j<i; j++)
{
/**********found**********/
___2___=t[i][j]+t[j][i];
/**********found**********/
___3___=0;
}
}
}
void main( )
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf(\\
(1)[N] (2)t[i][j] (3)t[j][i]
解析:有参函数定义,需要根据题目要求和给定程序确定函数参数。N×N矩阵中如何表示左下角和右上角元素。
填空1:主函数中调用函数的参数为二维数组,所以此处形参应定义为数组指针。
填空2:根据题意可知,对称元素相加的和存放在左下三角元素中,那么应填入的是t[i]j]。
填空3:右上三角元素置0,应填入t[j][i]。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:计算函数F(x.y,z)= (x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,z和y的值不相等。
例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件modi1.c中。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
/************found************/
#define FU(m,n) ((m/n))
float fun(float a,float b,float c)
{ float value;
value=FU(a+b,a-b)+FU(c+b,c-b);
/************found************/
Return(Value);
}
void main( )
{ float x,y,z,sum;
printf(\\
(1)#define FU(m,n)(m)/(n)
(2)return (value);
解析:本题考查: C语言宏定义;函数返回值。
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。
例如,字符串中的内容为: \\
void fun( char *a )
{
char *p=a;
while(*p==’*’) p++; /*指针p指向字符串第一个字母*/
for(;*p!=’\\\\0’;p++;a++)
*a=*p;/*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/
*a=’\\\\0’; /*在字符串最后加上字符串结束标识*/
}
解析:本题考查:要删除字符串中的指定字符,一般采用的方法是保留不用删除的字符;字符串结束标识’\\\\0’。
本文档预览:3600字符,共2415字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载