国家二级C语言机试(操作题)模拟试卷294
程序填空题
1.给定程序中,函数fun的功能是:将a所指4×3矩阵中第k行的元素与第0行元素交换。
例如,有下列矩阵:
1 2 3
4 5 6
7 8 9
10 11 12
若k为2,程序执行结果为:
7 8 9
4 5 6
1 2 3
10 11 12
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!
试题程序:
#include<Stdio.h>
#define N 3 ’
#define M 4
/*********found*********/
void fun(int(*a)[N],int 【1】)
{ int i,temp;
/*********found*********/
for(i=0;i<【2】;i++)
{temp=a[0][i];
/*********found*********/
a[0][i]=【3】;
a[k][i]=temp;
}
}
main()
{int x[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}},i,j;
printf(\\
(1)k
(2)N
(3)a[k][i]
解析:填空1:变量k在函数体fun中已经使用,但在函数体中没有定义,肯定是在函数的形参中定义的,所以应填k。
填空2:数组共N列,所以应填N。
填空3:这部分语句实现的功能是变量值的交换,所以应填a[k][i]。
程序修改题
2.下列给定程序中,函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码值为偶数的字符依次放入t所指数组中。例如,字符串中的数据为“AABBCCDDEFFF”,则输出应当是“ABBCDDEFF”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
#define N 80
void fun(char*s,char t[])
{
int i,j=0;
for(i=0;i<(int)strlen(s);i++)
/*********found*********/
if(i%2&&s[i]%2==0)
t[j++]=s[i];
/*********found*********/
t[i]=’\0’;
}
main()
{
char s[N],t[N];
printf(\\
(1)if(i%2‖s[i]%2==0)或if(i%2!=0‖s[i]%2==0)
(2)t[j]=’\0’;或t[j]=0;
解析:(1)根据题意,将字符串s中位于奇数位置的字符或ASCII码值为偶数的字符,依次放入字符串t中,所以if条件中要使用“或”运算。
(2)变量j控制字符串t的下标,所以是t[j]。
程序设计题
3.程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],intn),该函数的功能是:使数组左下半三角元素中的值乘以n。例如,若n的值为3,a数组中的值为:
则返回主程序后a数组中的值应为:
void fun(int a[][N],int n)
{
int i,j;
for(i=0;i<N; i++)
for(j=0;j<=i;j++)
/*矩形的下三角时,积相乘*/
a[i][j]=a[i][j]*n;
}
解析:本题的fun的功能是使数组的左下半三角元素中的值乘以n,因此本题需要使用双重for循环,for循环需要注意的是:
(1)循环初值,根据题意要求控制循环变量的取值范围;
(2)循环条件,确定循环结束的条件,即当不满足条件时,结束循环。
首先从数组中找出要被乘以n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以n。
本文档预览:3600字符,共2706字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载