![](https://csdnimg.cn/release/download_crawler_static/38686845/bg1.jpg)
第 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)*10
0+(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)*10
0+(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 所指的数