logo资料库

全国计算机等级考试二级c语言考试试题.doc

第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
资料共46页,剩余部分请下载后查看
给定程序的功能是调用 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
分享到:
收藏