国家二级C语言机试(操作题)模拟试卷504
程序填空题
1. 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#define N 5
typedef struct student {
long sno;
char name[10];
float score[3];
} STU;
void fun(char *filename, STU n)
{FILE *fp;
/********* found**********/
fp = fopen(【1】, \\
(1) filename (2)fp (3)fp
解析:第一空:“fp=fopen(【1】,\\
程序修改题
2. 给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{NODE *h=NULL, *p, *s;
int i;
/********** found***********/
p=(NODE)malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=l; i<=n; i++)
{s=(NODE *)malloc(sizeof(NODE));
s->data=rand() %m;
s->next=p-> next;
p->next=s; p=p->next;
}
/********** found***********/
return p;
}
outlink(NODE *h)
{NODE *p;
p=h->next;
printf (\\
(1)p=(NODE*)malloc
(sizeof(NODE));
(2)return h;
解析:(1)“p=(NODE)malloc(sizeof(NODE));”第一标识,maclloc函数的返回类型是void*类型,表示未确定类型的指针,因此,需要指针类型转换,而“(NODE)”不是指针类型,故第一标识下应改成“p=(NODE*)malloc(sizeof(NODE));”。
(2)第二个标识下,最后将单链表返回,应该是返回头指针h指向的链表,而不是其中的一个节点p,所以“return p;”应该改为“return h;”。
程序设计题
3. 请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#define N 80
int fun(char *s)
{
}
main ()
{ char line[N];int num=0;
void NONO ();
printf(\\
int i,n=0;//字符统计初始值设置为0
for(i=0;i<strlen(s);i++)
//小于字符串长度进行字符循环判断
{
if(s[i]>=’a’&&s[i]<=’z’&&s[i+1]
==’’‖s[i+1]==’\0 ’) //单词判断条件
n++; //单词统计计数器加1
}
return n; //返回统计值
解析:(1)首先,求得字符串的长度。
(2)只要小于字符串的长度,就对字符进行循环判断。
(3)根据题干要求,只要字符是小写字母,并且下一个紧靠的字符是空格或者尾符,那么单词统计计数器就加1。
本文档预览:3600字符,共2592字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载