给定程序的功能是调用 fun 函数建立班级通讯录。通讯录中记录每位学生的
编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作
为一个数据块写到名为 myfile5.dat 的二进制文件中。void check();
Int
i;if((fp=fopen("myfile5.dat","wb"))==NULL)
fun(___1___*std){___2___*fp;int
1. 填空
return(0); printf("\nOutput data to file !\n"); for(i=0; ivoid fun (long
( s > 0)
程序 函数 fun 的功能是:将两个两位数的正整数 a,b 合并成一个整数放在 c
中。合并的方式是:将 a 数的十位和个位数依次放在 c 数的千位和十位上,b 数
的十位和个位数依次放在 c 数的百位和个位上。
例如:a=45,b=12 时,调用该函数后,c=1524.
注意:部分源程序存在文件 PROG1.C 中。数据文件 IN.DAT 中的数据不得修改。
请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入
你编写的若干语句。
sl=10;
*t = s%10 * sl + *t;sl = sl*100;}}
*t = s % 10; while
long
2、B: *fw str
long *t
str
M:
P: *c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);
sl = sl*10;
3. 填空 给定程序中,函数 fun 的功能是:将自然数 1~10 以及它们的平方根写
到名为 myfile3txt 的文本文档中,然后再顺序读出显示在屏幕上。
int fun(char
"w"))==NULL)
fprintf(___1___,"%d %f\n",i,sqrt((double)i)); printf("\nSucceed!!\n");___2___;
x; if((fp=fopen(fname,
for(i=1;i<=10;i++)
FILE *fp; int
return
*fname )
i,n;
0;
float
{
int
n, int *a ){
fclose(fp); return
printf("\nThe data in file :\n"); if((fp=fopen(___3___,"r"))==NULL)
return
0; fscanf(fp,"%d%f",&n,&x); while(!feof(fp))
}
fscanf(fp,"%d%f",&n,&x);
i, j, p, t; for ( j = 0; ja[i] )
p = j;
1;}
p=i
M: i 0) {
*t=d* sl+ *t;sl *= 10;} s \= 10;}}
if((ft=fopen(target,
ch=fgetc(fs);
fclose(ft); printf("\n\n");
d = s%10;
return
:\n");
1;}
请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入
你编写的若干语句。
4、B:
ft
(d%2==0)
s /= 10;
“r”
M:
fs
P: *c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);
int data;
struct list{
x){ SLIST *p, *q, *s;
struct list *next;} SLIST;
5. 填空
给定程序中已建立一个带有头结点的单向链表,链表中的各节点按结点数据域中
的数据递增有序链表。函数 fun 的功能是:把形参 x 的值放入一个新结点并插入
到链表中,插入后结点数据域的值仍保持递增有序。
typedef
void fun( SLIST *h, int
s=(SLIST*)malloc(sizeof(SLIST));s->data=___1___;q=h;p=h->next;while(p!=NULL
&& x>p->data) { q=___2___; p=p->next;}s->next=p; q->next=___3___;}
修改
给定程序 MODI1.C 中函数 fun 的功能是:计算正整数 num 的各位上的数字之积。
例如,若输入:252,则输入应该是:20.若输入:202,则输出应该是:0.
long
(k) ;}
请编写一个函数 fun,它的功能是:它的功能是:计算 n 门课程的平均分,计算
结果作为函数值返回。
例如:若有 5 门课程的成绩是:90.5,72,80,61.5,55
fun (long num){long k; do { k*=num%10 ;num\=10 ;} while(num) ;return
则函数的值为:71.80
5、B:
x p s
M: long k=1;
num/=10 ;
float ave=0.0;
int i;
ave=ave/n; return
for(i=0; inext !=
NULL) { s=t;t=t->___1___;}printf(" %d ",___2___);s->next=NULL;free(___3___);}
修改 给定程序 MODI1.C 中函数 fun 的功能是:将字符串中的字符按逆序输出,
单补改变字符串中的内容。例如,若字符串味 abcd,则应输出:dcba
fun (char a){
void fun( SLIST *p) { SLIST *t, *s;
fun(a+1) ; printf("%c" *a) ;
t=p->next;
if ( *a ) {
}}
程序请编写一个函数 fun,他的功能是:比较两个字符串的长度(不得调用 c
语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长
度相同,则返回第一个字符串。例如,输入 beijingshanghai(
为回车键),函数将返回 shanghai
6、B:
next
t->data
t
M: fun (char *a)
P:
int i;
char *p=s, *q=t;
printf("%c", *a) ;
== 0 && *q == 0) return s ;
8. 填空 给定程序中建立一个带有头结点的单向链表,链表中的各节点按数据
域递增有序连接。函数 fun 的功能是:删除链表中数据域值相同的结点,使之只
if(*p) return s ;
for(i=0;*p && *q; i++) {
else return t ;
p++; q++;
}
if(*p
struct list {
int data; struct list *next;} SLIST;
保留一个
typedef
void fun( SLIST *h){ SLIST *p, *q;
while(q!=NULL)
free(___1___);q=p->___2___;}else{ p=q;q=q->___3___;} }}}
修改给定程序 MODI1.C 中函数 fun 的功能是:用选择法对数组中的 n 个元素按
从小到大的顺序进行排序。
void
i++)if(a[i] < a[p]) p = j;t = a[p] ; a[p] = a[j] ; a[j] = t;
fun(int a[], int n){ int i, j, t, p;for (j = 0 ;j < n-1 ;j++) {
p=h->next;if (p!=NULL){
if (p->data==q->data){
p = jfor (i = j;i < n;
p->next=q->next;
q=p->next;
请编写一个函数 fun,它的功能是:求出 1 到 m 之间(含 m)能被 7 或 11
整除的所有整数放在数组 a 中,通过 n 返回这些数的个数。例如,若传 3 送给 m
的之位 50,则程序输出:7
答案:
7、B: q next next M: p = j; p=i; P: int i ; *n=0 ;
11 14
21
22
18
42
33
35
44
49
}}
{
for(i=7 ; i<=m; i++)
if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ;
填空 给定程序中,函数 fun 的 gongn 是:在带有头结点的单向链表中,查找数
据域中值为 ch 的结点。找到后通过函数值返回改结点在链表中所处的顺序号;
若不存在值为 ch 的结点,函数返回 0 值
typedef
*);void outlist(SLIST *);int fun( SLIST *h, char
n=0;
else p=p->next; }
*next;} SLIST;SLIST *creatlist(char
int
return ___2___;
p=h->next; while(p!=___1___) { n++;if (p->data==ch)
ch){ SLIST *p;
struct list{
return 0;}
struct list
data;
int
修改 给定程序 MODI1.C 中函数 fun 的功能是:删除 p 所指字符串中的所有空
int i,t;
c[t]='\0';
P: int i ;
char c[80]; For (i = 0,t = 0; p[i] ; i++) if(!isspace(*(p+i)))
白字符(包括制表符,回车符及换行符)输入字符串是用“#”结束输入。
fun ( char *p){
c[t++]=p[i]; c[t]="\0";strcpy(p,c);}
程序 请编写一个函数 fun,它的功能是:将 ss 所指字符串中所有下标为奇数位
置上的字母转换成大写(若该位置上不是字母,则不转换)
例如:若输入“abc4EFg”,则应输出“aBc4Efg”。
答案:
8、B: NULL n head,ch M: for
i+=2) { if(ss[i] >= 'a' && ss[i] <= 'z') ss[i] -= 32 ;
9. 填空 给定程序中,函数 fun 的功能是:统计出带有头结点的单向链表中的个
数,存放在形参 n 所指的存储单元中。
*p; ___1___=0; p=h->next; while(p)
void fun( SLIST
a[N]={12,87,45,32,91,16,20,48},
{(*n)++;p=p->___2___;}}main(){SLIST*head;int
num;head=creatlist(a);outlist(head);fun(__3__&num);printf("\nnumber=%d\n",num)}
修改 给定程序 MODI1.C 中函数 fun 的功能是:求出 s 所指字符串中最后一次出
现的 t 所指子字符串的地址,通过函数返回值返回,在主函数中输出从此地址开
始的字符串;若未找到,则函数值为 NULL
例如:当字符串中的内容为“abcdefabcdx”t 中的内容为“ab”时,输出的结果
应是:abcdx
当字符串中的内容为“abcdefabcdx”t 中的内容为“abd”时,则程序输出未找到
信息 not be found
for(i = 1 ; i < strlen(*ss) ;
*h, int
SLIST
*n){
else
break;
p++; }
if ( r == p ) { r++;
a ;}
r = t;
if ( *r == '\0' ) a = s;
char * fun (char *s, char *t ){char *p , *r, *a;a = Null;while ( *s ) { p = s;
while ( *r )
s++; } return
程序 函数 fun 的功能是:将 s 所指字符串中除了下标问为偶数,同时 ASCII 值
也为偶数的字符外,其余的全部删除:串中剩余字符所形成的一个新串放在 t 所
指的数组中
例如,若 s 所指的字符串中的内容为“ABCDEFG123456”,其中字符 A 的 ASCII
码味奇数,因此应当删除,其中字符 b 的 ASCII 码值为偶数,但是在数组中的
下标为基数,因此也当删除;
答案 9、B: *n next head M: a = NULL; *r == *p
P: int i, j = 0 ;for(i = 0 ; i < strlen(s) ; i += 2) if(s[i] % 2 == 0) t[j++] = s[i] ; t[j] = 0 ;
填空给定程序中,函数 fun 的功能是:计算出带有头结点的单向链表中各结点数
据域中值之和作为函数的返回值。
int fun( SLIST *h){ SLIST *p;
int
p=p->___2__; }return s;}
修改 给定程序 MODI1.C 中函数 fun 的功能是:将 s 所指字符串中出现的与 t1
所指字符串相同的字串全部替换成 t2 所指字符串,所形成的新串放在 w 所指的
数组中,在此处,要求 t1 和 t2 所指字符串的长度相同。
int fun (char
s );while ( *w ) { p = w;
break; if ( *r == '\0' ) { a = w;
else w++; }}
程序 函数 fun 的功能是;将 s 所指字符串下标为偶数的字符删除,串中剩余字符
形成的新串放在 t 所指的数组中
例如:当 s 所指字符串中的内容为:“ABCDEFGHIJK”
char *t1, char *t2 , char *w) {int i; char *p , *r, *a; strcpy ( w,
p++; } else
r = t2;while ( *r ){*a = *r; a++; r++}w += strlen(t2) ;}
s=0;p=h->next; while(p) {s+= p->___1___;
r = t1;while ( r )
if ( *r == *p )
{ r++;
*s,
在 t 所指数组中的内容应是“BDFHJ”
a;}
r++;
next head M: *r
return (___3___);return
10、B: data
P: int i, j = 0 ; for(i = 1 ; i < strlen(s); i+=2) t[j++] = s[i] ; t[j] = 0 ;
填空 人员记录有编号和出生年月日组成,N 名人员的数据已在主函数中存入结
构体数组 std 中,且编号唯一。函数 fun 的功能是:找出数据中的编号为空串。
___1___ fun(STU *std, char *num){ int
i; STU a={"",9999,99,99};for (i=0; i
*s = a[j] ;
STU
");
*ss,float
i<3;
a){ int
a; printf("\nThe
i,n=0;
for
(i=0;
fun(STU
*std, STU
*k,
int
i < n;
i++
)if !( n%i ){ m = 0;
for(i = 1 ; i < N ; i++)
show(STU tt){int
i;printf("%d %s
:
",tt.num,tt.name);for(i=0;
if(max < a[i].s) { j = i ; max
std[i] n M: 分号去掉 if
(!( n%i ))
n );{ int i, m;m = 1;for ( i = 2;
std={ 1,"Zhanghua",76.5,78.0,82.0 }; float
在形参 k 所指的数组中,由主函数输出,同事有函数值返回满足指定条件的人数
int
i___2___ *=a;}
main( ){
original number and name and scores :\n"); show(std);
printf("\nInput a number :
result of modifying :\n"); show(std);}
修改 给定程序 MODI。C 中函数 fun 的功能是:求 k!(k<13),所求阶乘的值作为
函数值返回,例如若(k=10,则应输出:3628800
long fun ( int
设计 程序定义了 N*N 的二维数组。并在主函数中自动赋值,请编写函数 fun,
函数的功能是:使数组左下三角元素的值乘以 n
例如:若 n 的值为 3,a 数组的值为
13、B: STU score[i] &std M:
for(j = 0 ; j <= i; j++) a[i][j] *= n ;
14.填空 给定程序中,函数 fun 的功能是:将形参所指结构体数组中的三个元素
按 num 成员进行升序排列
void fun(PERSON ___1___){ _2__ temp;if(std[0].num>std[1].num) { temp=std[0];
std[0]=std[1];
temp=std[0];
std[0]=std[2];
{
main(){ PERSON std[ ]={ 5,"Zhanghu",2,"WangLi",6,"LinMin" };int
result
fun(___3___);
i++)printf("%d,%s\n",std[i].num,std[i].name);}
修改 给定程序 MODI1.c 中函数 fun 的功能是:将 m 个字符串连接起来组成一个
新串,放入 pt 所指存储区中
int
{ q = strlen ( str [k] );for (i=0; istd[2].num)
return (k*fun(k-1));else if ( k=0 )return 1L;}
scanf("%f",&a); modify(___3___,a); printf("\nA
k, q, i ;for ( k = 0; k < m; k++ )
temp=std[1];
std[1]=std[2];
if(std[0].num>std[2].num) {
fun ( char
str[][10], int m, char
*pt ){Int
int i, j;
for(i = 0 ; i < N ; i++)
std[2]=temp;
}}
is
:\n");for(i=0;
i<3;
( )
k= =0 P:
k){if k > 0
}
printf("\nThe
i;
int
int i, j;
a[i][j] =0;
};STD max;
for(i = 0 ; i < N ;
for(j = 0 ; j <= i; j++)
Age : %d\n", ___3___,max.age);}
n){ STD max; int i;max= __1_;for(i=1; i
tt[j][i])
16.填空 程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信
息,函数 fun 的功能是输出这位学生的信息
void
int i,j,
for(i = 0 ; i < N ; i++) { min = tt[0][i] ; k = 0 ; for(j = 1 ; j < M ; j++)
tt.num,
tt.name,tt.sex,tt.birthday.year, tt.birthday.month, tt.birthday.day);for(i=0; i<3;i++)
printf("%5.1f", ___2___); printf("\n");}main( )
std[i].age max.name M: int *b t = *b; *b = *a ;
i;printf("\n%d %s %c %d-%d-%d",
a, b ){ int t;t = b; b = a ;
{ min=tt[j][i] ; k = j ; }
show(STU _1__){
pp[i] = tt[k][i] ;
*a = t; P:
a = t;}
int
}
{STU std={1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0};printf("\nA student data:\n");
show(___3___);}
修改 给定程序 MODI1.c 中函数 fun 的功能是:求出数组中最大数和次大数,并
把最大数和 a【0】中的数对调,次最大数和 a【1】中的书对调
int
if(a[k]>a[m]) k=m;t=a[i];a[i]=a[m];a[m]=t;}}
设计 请编写一个函数 unsigned fun ,w 是一个大与 10 的无符号整数,若 w 是 n
fun ( int * a, int n ){ int i, m, t, k ; for(i=0;i<2;i++) {m=0;for(k=i+1;k10000) w %= 10000 ;
else if(w>1000) w %= 1000 ;
例如 w 为 5923 则函数返回 923;
16、B: tt
P:
w %= 100 ; else if(w>10) w %=10 ; return w ;
17.填空 给定程序中,函数 fun 的功能是:对形参 ss 所指字符串数组中的 M 个
字符串按长度由短到长进行排序。Ss 所指字符串数组中共有 M 个字符串,且串
长《N
void fun(char
n[i]=strlen(ss[i]);for(i=0; in[j])
{ strcpy(t,ss[i]); strcpy(ss[i],ss[k]);
strcpy(ss[k],___3___);n[k]=n[i];}}}
j, k, n[M]; char
___2___;if(k!=i)
else if(w>100)
(*ss)[N]){ int
for(i=0;
i给定程序 MODI。C 中函数 fun 的功能是:判断 ch 中字符是否与 str 所指串中的
某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后
#include void fun(char str, char ch ){ while (
if
设计 请编制一个函数 fun,函数功能是吧 s 所指字符串中的内容逆值
17、B:
*str && *str != ch ) str++;
str [ 0 ] = ch;str[1] = '0'; }}
i+1 k=j t M: char *str
( *str == ch
!= 0
){
P: char b[N] ; int i = 0, j ; for(j = strlen(s) - 1 ; j >= 0 ; j--) b[i++] = s[j] ; b[i]=0;
if(len>*n) {___3___;k=i;
}}return(k);}
修改 给定程序 MODI1.c 中函数 fun 的功能是:根据形参 m,计算如下公式的值
k
len
result P:
char *p = s ; int i = 0 ; while(*p)
p++ ; } s[i] = 0 ;
ss[i][j] M: n--
ss[i][m--]=ss[i][j];for(j=0; jn) { n=len; ___1___=i;}}for(i=0; i=0; j--)
___3___='*';}}
修改 给定程序 MODI1.c 中函数 fun 的功能是:计算整数 n 的阶乘
double fun(int n){double result=1.0;while (n>1 && n<170) result*=--n; return ___;}
设计 编写函数 fun,函数的功能是:从 s 所指的字符串中删除给定字符。同一个
字母的大小写按不同字符处理
18、B:
{ if(*p != c) s[i++] = *p ;
19.填空 给定程序中,函数 fun 的功能是:求出形参 ss 所指字符串数组中最长字
符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。Ss 所
指的字符串数组中共有 M 个字符串
void fun(char
if(i==0) n=len; if(len>n)n=len; }for(i=0; i void fun( char *p ){ int k = 0; for( ; *p; p++ )if( k ){ if( p == ' ' )
{ k = 0;* (p-1) = toupper( *( p - 1 ) )}
设计 请编写函数 fun,对长多为 7 个字符的字符串,除首,尾字符外,将其余 5
个字符按 ASCII 降序排列
19、B:
for(j = i + 1 ; j < 6 ; j++) {
+i) ;
}
20.填空 给定程序中,函数 fun 的功能是:求 ss 所指字符串数组中长度最长的字
符串所在的行下标,作为函数值返回,并把其串长放在形参 n 所指变量中。Ss
所指字符串数组中共有 M 个字符串
#define N 20 int fun(char
i++){ len=strlen(ss[i]);if(i==0)
char ch ;
if(*(s + i) < *(s + j)) {
for(i = 1 ; i < 6 ; i++)
*(s + j) = *(s
(*ss) __1__, int *n){int i, k=0, len=0;
i, j, n, len=0;for(i=0; i