国家二级C语言机试(操作题)模拟试卷663
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为“def35adh3kjsdf7”,执行后结果为“def3*5*adh3*kjsdt7*”。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(char*s)
{
int i,j,n;
for(i=0;s[i]!=’\0’;i++)
/*********found*********/
if(s[i]>=’0’【1】s[i]<=’9’)
{
n=0;
/*********found*********/
while(s[i+1+n]!=【2】)
n++;
for(j=i+n+1;j>i;j–)
/*********found*********/
S[j+1]=【3】;
S[j+1]=’*’;
i=i+1;
}
}
main()
{
char s[60]=\\
(1)&&
(2)0或’\0’
(3)s[j]或*(s+j)
解析:填空1:if语句中的条件是判断是否为数字字符,数字字符的条件是大于等于“0”,同时小于等于“9”,因此需要使用逻辑与“&&”来连接。
填空2:while语句判断是否到达字符串的结尾,因此填入0(字符串结束标识’\0’)。
填空3:for语句使数字后的字符全都向后移一个单位,因此要使s[j+1]=s[j];。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。假如:若
(1)b[i]=a[i][0];
(2)for(j=1;j<N;j++)
(3)if(b[i]>a[i][j])
解析:数组b存放每行的最小值,针对二维数组使用二层循环,在第一层循环的开始将每行的第1个数赋给数组b相应的元素,在第二层循环中,数组b中的元素依次与本行中的每个元素进行比较,找到一行中的最小值存入数组b。
(1)b[i]存放二级数组a每一行中第1个元素值,表示为a[i][0]。
(2)每行元素的第1个值要和这一行中的每个元素进行比较,条件j<N可使a[i][j]取到最后元素,而条件j<N-1使a[i][j]最终取得倒数第2个元素。
(3)因为是找最小值,所以当b[i]大于其后的数值时说明它不是最小,要把比较中较大的值赋给它。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。
例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,
仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
void fun(int m,int*k,int xx[])
{
}
void main()
{
int m,n,zz[100];
system(\\
void fun(int m,int*k,int xx[])
{
int i,j,n=0;
for(i=4;i<m;i++)
/*找出大于1小于整数m的非素数*/
{for(j=2;j<i;j++)
if(i%j==0)break;
if(j<i)xx[n++]=i;
}
*k=n;/*返回非素数的个数*/
}
解析:题目要求将1~m之间的非素数存入数组中,应使用循环判断结构。循环语句用来遍历1~m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存入数组中。本题是考查一个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。
判定一个数是否为素数,即判断该数是否除了能被1和它本身整除外,不能被任何数整除。
代码实现如下:
for(j=2;j<i;j++)
if(i%j==0)/*如果余数为0,证明i不是素数*/
此语句需要熟记,很多判断素数的题目可通过此法解决。
本文档预览:3600字符,共2707字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载