国家二级C语言机试(操作题)模拟试卷618
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。程序的功能是调用fun函数建立班级通信录。通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define N5
typedef struct
{int num;
char name[10];
char tel[10];
)STYPE;
void check();
/*********found*********/
int fun(【1】*std)
{
/*********found*********/
【2】*fp;int i;
if((fp=fopen(\\
(1)STYPE
(2)FILE
(3)fp
解析:填空1:根据主函数中的调用函数可知,函数的形参应为结构体类型,因此填入STYPE。
填空2:fp是指向文件类型的指针变量,因此填入FILE。
填空3:函数fwrite调用的一般形式为“fwrite(buffer,size,count,fp);”。
buffer:是一个指针变量,在fread函数中它存放输入数据的首地址,在fwrite函数中,它存放输出数据的首地址。
size:表示数据块的字节数。
count:表示要读写的数据块数。
fp:表示文件指针。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。
(1)while(fabs(t)>=num)
(2)t=s/n;
解析:(1)函数fun中while语句的作用是,当新的一项大于给定参数时,循环累计计算s的值。题目要求最后一项的绝对值小于给定参数,因此循环条件应当是while(fabs(t)>=num)。
(2)变量t用来存放最后一项的值,因为每一项均为1或-1除以一个数,所以此处应使用除法运算符“/”。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是:将S所指字符串中除了下标为奇数同时ASCII码值也为奇数的字符之外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串的内容为“ABCDEFG12345”,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指数组中的内容应为“135”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[])
{
}
main()
{
char s[100],t[100];
printf(\\
void fun(char*s,char t[])
{
int i,j=0,n;
n=strlen(s);
for(i=0;i<n;i++)
if((i%2)&&(s[i]%2))
{
t[j++]=s[i];/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/
}
t[j]=’\0’;/*最后加上结束标识符*/
}
解析:本题要求除了下标为奇数同时ASCII码值也为奇数的字符,其余的所有字符都删除,即要留下下标为奇数同时ASCII码值也为奇数的字符。所以if的条件语句应为:if(i%21=0&&s[i]%2!=0)。
本文档预览:3600字符,共2446字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载