第 1 套 一、填空
给定函数的功能是调用 fun 函数
建立班级通讯录。通讯录记录每
位学生的编号,姓名和电话号码。
班级的人数和学生的信息从键盘
读入,每个人的信息作为一个数
据块写到名为答案 yfile5.dat 的二
进制文件中。
答案:1. STYPE 2. FILE 3. fp
二、修改
先将在字符串 s 中的字符按正序
存放到 t 串中,然后把 s 中的字符
按逆序连接到 t 串后面。
答案:1. for(i = 0 ; i < sl ; i++)
答案数的十位和个位数依次放在
c 数的百位和个位上
*c=(b%10)*1000+(a%10)*100+(b/
10)*10+(a/10);
第 4 套 一、填空
调用函数 fun 将指定源文件中的
内容复制到指定的目标文件中,
复制成功时函数返回值为 1,失败
时返回值为 0,在复制的过程中,
把复制的内容输出到终端屏幕。
主函数中源文件名放在变量
sfname 中,目标文件名放在变量
tfname 中
答案: “r” fs ft
int n=0,m=0; while(*p)
的返回值。
{n++;p++;} while(*q)
答案: data next head
{m++;q++;} if(n>=m) p=s;
二、修改
else p=t; return p;
将 s 所指字符串中出现的与 t1 所
第 7 套 一、填空
指字符串相同的字串全部替换成
删除链表中数据域值相同的结
t2 所指字符串,所形成的新串放
点,使之只保留一个
在 w 所指的数组中,在此处,要
答案: q next next
求 t1 和 t2 所指字符串的长度相
二、修改
同。
用选择法对数组中的 n 个元素按
答案: while(*r) *a=*r ;a++;
从小到大的顺序进行排序。
r++;
答案: p = j; p=i;
三、程序
三、程序
将 s 所指字符串下标为偶数的字
求出 1 到答案之间(含答案)能
符删除,串中剩余字符形成的新
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 数的千位和十位上,
二、修改
将长整形数中每一位上为偶数的
数依次取出,构成一个新数放在 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;
被 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 套 一 填空
计算出带有头结点的单向链表中
各结点数据域中值之和作为函数
串放在 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==‟