第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+(b);
第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)*100+(b)*10 +(a/10);
第3套 一、填空
将自然数1~10以及它们的平方根写到名为答案yfile3txt的文本文档中,然后再顺序读出显示在屏幕上。
答案: (1)fp (2)fclose(fp)
(3)fname
二、修改
将n个无序整数从小到大排序。 答案: for(i=j+1;i 将两个两位数的正整数a,答案合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,答案数的十位和个位数依次放在c数的百位和个位上 *c=(b)*1000+(a)*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)*1000+(b/10)*100+(a/10)*10+(b); 第5套 一、填空 把形参x的值放入一个新结点并插入到链表中,插入后结点数据域的值仍保持递增有序。 答案: x p s 二、修改 计算正整数num的各位上的数字之积。 答案:long k=1; num/=10 ; 三、程序 计算n门课程的平均分,计算结果作为函数值返回。 答案:int i; float ave=0.0; for(i=0; i 第6套 一、填空 给定程序中已建立一个带有头结点的单向链表,在答案ain函数中将多次调用fun函数,没调用一次fun函数,输出链表尾部结点中的数据,并释放该节点,是链表缩短。 答案: next t->data t 二、修改 将字符串中的字符按逆序输出,单补改变字符串中的内容。 答 案 :void fun (char *a) printf(\ 三、程序 比较两个字符串的长度(不得调用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++) 计算出带有头结点的单向链表中各结点数据域中值之和作为函数的返回值。 答案: data next head 二、修改 将s所指字符串中出现的与t1所指字符串相同的字串全部替换成t2所指字符串,c[t]='\\0'; 三、程序 将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套 一 填空 所形成的新串放在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==’\\0’ ) 三、程序 将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中 答案: int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ; 第12套.一、填空 找出指定出生年份的人员,将数据放在 形参k所指的数组,由主函数输出,有函数值返回满足指定条件的人数 答案: std[i].year std[i] n 二、修改 读入一个整数k(2《k《1000),打印她的所有因子 答案: *std PERSON std 二、修改 将m个字符串连接起来组成一个新串,放入pt所指存储区中 答 案 : int k,q,i; pt[i]=str[k][i]; 三、程序 答案: 分号去掉or Isprime (int n) if (!( n%i )) 三、设计 找出成绩最高的学生记录,通过形参指针传回主函数 答案: int i, max = a[0].s, j = 0; for(i = 1 ; i < N ; i++) if(max < a[i].s) { j = i ; max = a[i].s ; } *s = a[j] ; 第13套. 一、填空 给定程序。。。将该学生的各科成绩都乘以一个系数a 答案: STU score[i] &std 二、修改 求k!(k<13),所求阶乘的值作为函数值返回, 答案: if ( k>0) else if(k= =0) 三、程序 使数组左下三角元素的值乘以n 答案: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] *= n ; 第14套 一、.填空 将形参所指结构体数组中的三个元素按num成员进行升序排列 使数组左下三角元素中的值全部值0 答案: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] =0; 第15套 一、.填空 将形参std所指结构体数组中年龄最大 者的数据作为函数值返回,并在主函数中输 出 答案: *std std[i].age max.name 二、修改 实现两个整数的交换 答案:void fun( int *a,int*b) t t= *b; *b= *a ; *a = t; 三、程序 请编写一个函数、、tt指向一个M行N列的二维数组,求二维数组每列中最小元 素,并以此放入pp所指一维数组中。二维数组中的数已在主函数中赋予 答案: int i,j, min, k ; for(i = 0 ; i 第16套 一、.填空 程序通过定义。。输出这位学生的信息 答案: tt tt.score[i] std 二、修改 求出数组中最大数和次大数,并把最大数和a【0】中的数对调,次最大数和a【1】中的书对调 答案: m=i; if(a[k]>a[m] )m=k; 三、程序 请编写一个程序。。w是一个大与10的无符号整数,若w是n为的整数,函数求出w的低n-1位的数作为函数值返回 答案: unsigned t,s=0, s1=1,p=0; t=w; while(t>10) {if(t/10) p=t; s=s+p*s1; s1=s1*10; t=t/10;} return s; 第17套 一、.填空 对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。ss所指字符串数组中共有M个字符串,且串长《N 答案: i+1 k=j t 二、修改 判断ch中字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后 答案: void fun(char *str,char ch) if(*str != ch) str[1]=’\\0’; 三、设计 请编写一个函数把s所指字符串中的内容逆值 答案: char b[N] ; int i = 0, j ; memset(b,0,N); for(j = strlen(s) - 1 ; j >= 0 ; j--) b[i++] = s[j] ; strcpy(s,b); 第18套 一、填空 求出形参ss所指的字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长,字符串数组中共有M个字符串 答案: k len ss[i][j] 二、修改 计算整数n的阶乘 答案: result*=n--; return result; 三、程序 从s所指的字符串中删除给定字符。同一个字母的大小写按不同字符处理 答案: char*p=s; int i = 0; while(*p) {if(*p!= c) s[i++] = *p ; p++;} s[i] =’\\ 0 ‘; 第19套 一、.填空 求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。Ss所指的字符串数组中共有M个字符串 答案: ss[i] n+j 1 二、修改 将p所指字符串中每个单词的最后一个 字母改成大写 答 案 :if(*p== ’ ’ ) *(p-1)=toupper(*(p-1)); 三、程序 请编写函数fun对长多为7个字符的字符串,除首,尾字符外,将其余5个字符按ASCII降序排列