国家二级C语言机试(操作题)模拟试卷370
程序填空题
1.给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
SLIST *creatlist (char *) ;
void outlist (SLIST *) ;
int fun(SLIST *h,char ch)
{SLIST *p; int n=0;
p=h—>next ;
while (p ! = ____1____)
if (p—>data==ch) return____2____;
else p=p—>next;
}
return 0;
}
main ()
{SLIST *head; int k; char ch;
head=creatlist (a) ;
outlist (head) ;
printf (\\
(1)0或NULL
(2)n
(3) head,ch
解析:函数fun的功能是查找数据域中值为ch的结点。
第一空:这里是补充循环结束条件,链表是单向有限的,最后一个结点的指针域指向NULL,因此可以用这个来作为循环结束条件,在p指向的结点的指针域不是NULL时表明还有下一个结点,因此第一空处应该是“while(p !=NULL)”。
第二空:在循环当中n用来记录顺序号,如果“if (p—>data==ch)”成立,则已经找到数据域中值为ch的结点,返回顺序号,即“retumn:”。
第三空:fun函数的调用形式是:fun( SLIST*h,char ch),第一个参数是头结点地址,第二个参数是需要寻找的ch值,因此第三空处应该是“k=fun(head,ch); ”。
程序修改题
2.给定程序MODI1.C中函数fun的功能是:删除p所指
字符串中的所有空白字符(包括制表符、回车符及换行符)。
输入字符串时用“#”结束输入。
请改正程序中的错误,使它能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
#include
fun (char *p)
{ int i,t; char c[80];
/*********found**********/
p[il;
/*********found**********/
strcpy (pr c) ;
}
main ()
{ char .c,s [80] ;
int i=0;
printf (\\
(1) for (i=0,t=0;p[i];i++)
(2) c[t]=’\\\\0’;
解析:函数的功能是删除字符串s中的所有空白字符。
(1)第一个标识下“For (i=0,t=0;p[i];i++)”语句是for循环语句,而For不是C语言的关键字,所示“For (i=0,t=0; p[i];i++)”应改为“for (i=0,t____0;p[i];i++)”。
(2)第二个标识下的“c[t]=\\
程序设计题
3.请编写一个函数fun,它的功能是:将SS所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入”abc4EFg”,则应输出”aBc4EFg”。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
void fun (char *ss)
{
}
main()
{char tt[ 81] ;
void NONO ();
printf(\\
1 int i;
2 for (i=1; i<strlen (ss); 1+=2)(
3 if(ss[i]>=’a’&&ss[i]<=’z’)ss [1] —=32;
4 }
解析:(1)首先取得字符串中下标为奇数的字符。
(2)判断奇数位置的字符是否为小写字母。
(3)若(2)中的判断结果是小写字母,则对其进行转换。
本文档预览:3600字符,共2688字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载