国家二级(C语言)机试模拟试卷941
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:计算一个带头结点的单向链表中各结点的数据域中数值之和,结果作为函数值返回。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
SLIST *creatlist(int *);
void outlist(SLIST *);
int fun(SLIST *h)
{ SLIST *p; int s=0;
p=h->next;
while(p)
{
/**********found**********/
s+= p->___1___;
/**********found**********/
p=p->___2___;
}
return s;
}
void main( )
{ SLIST *head;
int a[N]={12,87,45,32,91,16,20,48};
head=creatlist(a); outlist(head);
/**********found**********/
printf(\\
(1)data (2)next (3)head
解析:本题考查:链表数据结构,结点的表示方法:掌握链表数据结构的基本思想。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:将s所指字符串中出现的与t1所指字符串相同的子串全部替换为t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为”abcdabfab\\
(1)while(*r)
(2)*a=*r;a++;r++;
解析:
程序设计题
3.使VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fun的功能是:将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为\\
void fun(char *s,char t[])
{
int i,j=0,k=strlen(s); /*k为字符串的长度*/
for(i=1;i<k;i=i+2) /*将s所指字符串中下标为奇数的字符存入所指字符串中*/
t[j++]=s[i];
t[j]=’\\\\0’;
}
解析:删除字符串中指定字符,采用保留非指定字符的方法操作。
本题使用了一种i永远是奇数的循环方法,即for(i=1;i<k;i=i+2),因为开始时的值为1,当计2循环时,值永远是奇数。循环结束后在新串的尾部加上结束符’\\\\0’。
本文档预览:3600字符,共1864字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载