
第 1 套 一、填空
给定函数的功能是调用fun 函数建立班
级通讯录。通讯录记录每位学生的编号,
姓名和电话号码。班级的人数和学生的
信息从键盘读入,每个人的信息作为一
个数据块写到名为答案yfile5.dat 的二进
制文件中。
答案:1. STYPE 2. FILE 3. fp
二、修改
先将在字符串s 中的字符按正序存放到
t 串中,然后把s中的字符按逆序连接到
t 串后面。
答案:1. for(i = 0 ; i < sl ; i++) 2.
t[2*sl] =` 0`;
三、程序
将两个两位数的正整数a,答案合并成
一个整数放在c 中。合并的方式是:将
a 数的十位和个位数依次放在c 数的千
位和十位上,答案数的十位和个位数依
次放在c 数的百位和个位上。
*c=(a/10)*1000+(b/10)*100+(a%10)*10
+(b%10);
第 2 套 一、填空
从键盘输入若干行文本(每行不超过80
个字符),写到文件答案yfile4.txt 中,
用-1 作为字符串输入结束的标记。然后
将文件的内容读出显示在屏幕上。文件
的读写分别有自定义函数ReadText和
WriteText 实现。
答案:*fw str str
二、修改
从低位开始取出长整形变量s 中的奇数
位上的数,依次构成一个新数放在t 中,
高位仍放在高位,低位仍放在低位。
答案:long *t sl = sl*10;
三、程序
将两个两位数的正整数a,答案合并成
一个整数放在c 中。合并的方式:将a
数的十位和个位数依次放在c 数的千位
和十位上,答案数的十位和个位数依次
放在c 数的百位和个位上。
*c=(b/10)*1000+(a%10)*100+(b%10)*10
+(a/10);
第 3 套 一、填空
将自然数1~10 以及它们的平方根写到
名为答案yfile3txt 的文本文档中,然后
再顺序读出显示在屏幕上。
答案:(1)fp (2)fclose(fp) (3)fname
二、修改
将n 个无序整数从小到大排序。
答案:for(i=j+1;i<n;i++) p=i;
三、程序
将两个两位数的正整数a,答案合并成
一个整数放在c 中。合并的方式是:将
a 数的十位和个位数依次放在c 数的千
位和十位上,答案数的十位和个位数依
次放在c 数的百位和个位上
*c=(b%10)*1000+(a%10)*100+(b/10)*10
+(a/10);
第 4 套 一、填空
调用函数fun 将指定源文件中的内容复
制到指定的目标文件中,复制成功时函
数返回值为1,失败时返回值为0,在复
制的过程中,把复制的内容输出到终端
屏幕。主函数中源文件名放在变量
sfname 中,目标文件名放在变量tfname
中
答案:“r”fs ft
二、修改
将长整形数中每一位上为偶数的数依次
取出,构成一个新数放在t 中。高位仍
在高位仍在低位。
答案:if(d%2==0) s /= 10;
三、程序
将两个两位数的正整数a,答案合并成
一个整数放在c 中。合并的方式是:将
a 数的十位和个位数依次放在c 数的千
位和十位上,答案数的十位和个位数依
次放在c 数的百位和个位上。
*c=(a%10)*1000+(b/10)*100+(a/10)*10
+(b%10);
第 5 套 一、填空
把形参x 的值放入一个新结点并插入到
链表中,插入后结点数据域的值仍保持
递增有序。
答案:x p s
二、修改
计算正整数num 的各位上的数字之积。
答案:long k=1; num/=10 ;
三、程序
计算n 门课程的平均分,计算结果作为
函数值返回。
答案:int i; float ave=0.0; for(i=0;
i<n; i++) ave=ave+a[i] ; ave=ave/n;
return ave;
第 6 套 一、填空
给定程序中已建立一个带有头结点的单
向链表,在答案ain 函数中将多次调用
fun 函数,没调用一次fun 函数,输出链
表尾部结点中的数据,并释放该节点,
是链表缩短。
答案: next t->data t
二、修改
将字符串中的字符按逆序输出,单补改
变字符串中的内容。
答案:void fun (char *a) printf("%c",
*a) ;
三、程序
比较两个字符串的长度(不得调用c 语
言提供的求字符串长度的函数),函数返
回较长的字符串。若两个字符串长度相
同,则返回第一个字符串。
答案:int i; char *p=s , *q=t; int
n=0,m=0; while(*p)
{n++;p++;} while(*q) {m++;q++;}
if(n>=m) p=s; else p=t; return p;
第 7 套 一、填空
删除链表中数据域值相同的结点,使之
只保留一个
答案: q next next
二、修改
用选择法对数组中的n 个元素按从小到
大的顺序进行排序。
答案: p = j; p=i;
三、程序
求出1 到答案之间(含答案)能被7 或
11 整除的所有整数放在数组a 中,通过
n 返回这些数的个数。
答案: int i ,j=0; *n=0 ; for(i=1 ; i<=m;
i++) if(i%7==0|| i% 11 == 0) { a[j]=i;
j++;} *n=j;
第 8 套 一、填空
在带有头结点的单向链表中,查找数据
域中值为ch 的结点。找到后通过函数值
返回改结点在链表中所处的顺序号;不
存在,函数返回0 值
答案: NULL n head ,ch
二、修改
删除p 所指字符串中的所有空白字符,
输入字符串是用“#”结束输入。
答案: for(i=0,t=0;p[i];i++) c[t]=' ';
三、程序
将ss所指字符串中所有下标为奇数位置
上的字母转换成大写
答案: int i ; for(i=1;i< strlen(ss) ; i+=2)
{if(ss[i] >='a'&&ss[i] <= 'z') ss[i]
- =32 ;}
第 9 套 一、填空
统计出带有头结点的单向链表中的个
数,存放在形参n 所指的存储单元中。
答案: *n next head
二、修改
求出s 所指字符串中最后一次出现的t
所指子字符串的地址,通过函数返回值
返回,在主函数中输出从此地址开始的
字符串;若未找到,则函数值为NULL
答案: a = NULL; if(* r ==*p)
三、程序
将s 所指字符串中除了下标问为偶数,
同时ASCII 值也为偶数的字符外,其余
的全部删除:串中剩余字符所形成的一
个新串放在t 所指的数组中
答案: int i, j = 0 ; for(i = 0 ; i <
strlen(s) ; i += 2) if(s[i] % 2 == 0)
t[j++] = s[i] ; t[j] = ?\ 0? ;
第 10 套 一填空
计算出带有头结点的单向链表中各结点
数据域中值之和作为函数的返回值。
答案: data next head
二、修改
将s 所指字符串中出现的与t1 所指字符
串相同的字串全部替换成t2 所指字符
串,所形成的新串放在w 所指的数组中,
在此处,要求t1 和t2 所指字符串的长度
相同。
答案: while(*r) *a=*r ;a++; r++;
三、程序
将s 所指字符串下标为偶数的字符删
除,串中剩余字符形成的新串放在t 所
指的数组中
答案: int i, j = 0 ; for(i = 1 ; i <
strlen(s); i+=2) t[j++] = s[i] ;
t[j] =`\ 0 `;
第 11 套 一填空
找出指定编号人员的数据作为函数值返
回,由主函数输出,若指定编号不存在,
返回数据中的编号为空串
答案: STU std[i].num std[i]
二、修改
从s 所指字符串中,找出与t 所指字符
串相同的字串的个数作为函数返回值
答案: r++; p++ ;if(*r== ?