C语言二级题库

所需积分/C币:47 2018-07-18 00:44:11 847KB PDF
收藏 收藏 2
举报

全国计算机二级考试题库,轻松过二级,你值得拥有 如题
不得增行或删行,也不得更改程据,所以应填: filename 行语句是,使用临时结构指针变 序的结构 第二处:读取文件印的最后一条记量h保存p指针的初始位置,最后 给定源程序 录,所以应填:fp 返同不能使用p,是因为p的位置 #include <stdio.h> 第三处:冉把读出的记录,写入已经发生了变化,所以应改为返 #defined 5 文件印指定的位置上,所以应填 回he typedef struct student i 米来*来来来*来 lot ng sno, 中中*和=半*半中半桌*串 米来水来米水;来水来米冰来来来 char name[10 中串半率出****半率出*串半*半率* 请编写函数fun,函数的功能是:统 float score3] 3 STU; 给定程序MODI1C中的函数计一行字符串中单词的个数,作为 void fun(char *filename, STUn reatlink的功能是创建带头结点函数值返回。一行字符丰在主函 &FILE *fp; 的单冋链表,并为各结点数据域数中输入,规定所有单词由小写 fp= toper 赋0到m-1的值。 字母组成,单词之间由若T个空 fseek( 2 1* sizeof(sTu),请改正函数 Creatlink中指定部位格隔开,一行的开始没有空格。 SEEK END) 的错误,使它能得出正确的结果。注意:部分源程序在文件 writer(&n, SIze(STU.1,3_);,注意:不要改动main函数,不得PROG1C中。 fclose(fp) 增行或删行,也不得更改程序的请勿改动主函数man和其它函数 结构! 中的任何内容,仅在函数in的花 maino STU tN- 10001, Machao 给定源程序: 括号中填入你编写的若干语句。 91,92,77},{10002," CaoKai",75, #include <stdio. h> 给定源程序 #include <stdlib. h> #include <stdio.h> {10003,"LiSi",85,70,78}, typedef struct aa #include <string. h> 10004, FangFang",90,82.87}, i int data #define n 80 10005," ZhangSan",95,80,88}}; struct aa inext int fun( char *s) STU 0=10006 ZhaoSi 70. NODE NODE 'Creatlink(int n, int m) nt i, j; FILE*fp {NODE*h=NULL,“p,*s mall fp=fopen("student. dat","wb"); int char line n; int nu=0 fwrite(t, sizeof(STU), N, fp) p=(NODE )malloc(sizeof(NODE)) printf("Enter a string n") fclose(rp) fp-fopen(student.dat","rb") next=NULI num=fun( line ) fread(SS, sizeof(STU), N, Ip); for(1=1;i<=n;i++) printf("The number of word fclose(印p) S(NODE is: %d\n\n", num) printf( "uThe original data: n\n") S)malloc(sizeof(NOdE)) NONOO (=0:jN;j++) printf("uNo: %ld Name:%-8s $->next-p->next 解题思路 Scores: ", S sho p->next=s: p=p->next 本题是统计字符申中的单词数。 (i=0;i<3;it+) printf("%6.2f", 1.利用 while循环语句和指针变 ssL. scoreiD) return p: 量,当字符为空格时,则单词数k printf("n") outlink(NOdE *h) fun(student. dat",n) I NODE"p 2.循环结束返回k。 printf("nThe data after 参考答案 modifing: nin"); printf("nnTHE LIST: n'n HEAd int fun( char *s) fp= fopen("student. dat","rb"); "); frcad(sS, sizeof(STU), N, fp) fclose(fp); i printf("->%d", p->data while( s)i p=>next, if(*s==’)k i printf("nNo: %ld Name:%-8s j 十十 cores:",ssL. sno, ss[i] name) printf("n"; for (i=0; 1<; 1++) printf(%06.2f return k l]. scorei maino printf("n"; 1 NODE head ※※※※※※※※※※※※※※ head-Creatlink (8, 22) ※※※※※※※※※※※ Ilink (head) 第04套 解题思路: 本题是考察如何从文件中读出数 解题思路: 程序通过定义学生结构体变量, 第一处:指向刚分配的结构指针, 存储了学生的学号、姓名和3门课 据,再把结构中的数据写入文件 的成绩。所有学生数据均以二进 所以应改为:p=(NODE s)malloc(sizeof(NODE)) 制方式输出到文件中。函数fun的 第一处:从指定的文件中读出数第二处:在动态分配内存的下 功能是从形参 filename所指的文 件中读入学生数据,并按照学号 fread(s;ieo(STU),5,fp) 1%s\"\n",S) 从小到大排序后,再用二进制方式 fclose(p; 把排序后的学生数据输出到 解题思路 filename所指的文件中,覆盖原来 的文件内容。 “Qrnf"nNo:% d name:%8s第一处:指针p应指向s,所以应改 ores:",ss[i].sno, ss[i] name); 为:p=s;o (i=0; i<3; 1++) printf("%6.2f 请在程序的下划线处填入正确的s3or) 第二处:死循环,当 do while循环 内容并把下划线删除,使程序得 rinf("n"); 执行一次,临时变量p应该指向字 出正确的结果。 符串的下一位置,所以应改为: 注意:源程序存放在考生文件夹} while(p++; 不得增行或删行,也不得更改稈本题是考察把结构中的数据写入本本本 下的 BLANK1C中。 解题思路: 序的结构! 文件。 请编写函数iun,函数的功能是:统 给定源程序 第一处:建立文件的类型,考虑 计各年龄段的人数。N个年龄通过 #includc <stdio. h> 到是把结构中的数据(结构中的 调用随机 #dcfincn 5 数据包含不打印的字符) 函数获得,并放在主函数的age数 typedef struct student i 从文件中读出,所以应填:"rb 组中;要求函数把0至9岁年龄段 long sno 的人数放在d[0 char name[10 刚读出的学号进行相比,如果大,把10至19岁年龄段的人数放在 float score3 3 STU 于,则进行交换,所以应填:>。d1中,把20至29岁年龄段的人数 放在d[2]中 void fun(char filename) f FILE *fp; int i, j; 重新写入文件,所以应填:frte,其余依此类推,把100岁(含100 STU SIN,t ****以上年龄的人数都放在d[10]中。 fp=fopen(filename, 1); 岑半举半容米米举半半客米半举半举半容 结果在主函数中输出 fread( s, sizeof(STU), N, fp) 给定程序 MODIL. C中函数fun的功注意:部分源程序在文件 fclose(fp) 能是:在字符串的最前端加入n个PROG1C中。 fo i<N-l;i++) *号,形成新串,并且覆盖原串。 请勿改动主函数main和其它函数 for gj=i+1; j<N; j++) 注意:字符串的长度最长允许为中的任何内容,仅在函数iu的花 if(s[i]. sno 2 s[]. sno) 79 括号中填入你编写的若干语句。 dt=s[];si]=sl]: s[=t;j fp=fopen(filename, " wb"); 请改正函数fmn中指定部位的错误,给定源程序: 3(S, sizeof(STU), N, fp); / 使它能得出正确的结果。 #include <stdio. h 进制输出* 注意:不要改动main函数,不得 #definen 50 fclose(fp) 增行或删行,也不得更改程序的 #define m l 结构! void fun( int a, int*b maino 给定源程序 i STU iN-10005, Zhang San", #include <stdio.h> double rndo 95,80,88},{10003,LiSi",85,70,# include< cstring. h> static t-29,c-217,m-1024,r=0; 78}, void fun( char s[, int n r(r*t+c)%m; return((doubler/m) {10002," Caokai",75,60,88},{ 10004," FangFang",90,82,87}, char a[ 801, p main {10001;" MaCha",91,92,77}} int i int age[N],i, d[M] s[N]; for(1=0; int i, j; FILE fp; for(i=0; i<n; i++)ai=kt K<N; 1++agel]=(int)(115rndo); fp= fopen (student. dat","wb"; fwrite(t, sizeof(STU), 5, fp) {a[i]=*p; printf("The original data: n"); for (1=0; K<N: 1+ fclose(fp) printf((+1%10=0?"9%4dn":"%4d printf("ninTh original ln"); while(p++) ",age[]); printf("nn") =0:jN;j++) a[i]=0 f printf("nNo: %ld Namc: %0-8s strcpy(s, a fun( age, d); for(i=0; 1<10; i++printf("%04d---9/4 Scores: ti]. sno, tG]. namc) d:%4dn",i*10,1*10+9,d[订) for(i=0; 1<3;i++)printf(%6.2f printf( I\n",d[IOD corell i int n; char s180] NONO(d) printf("n); printf("nEntcr a string: ); gcts(s) printf" g 解题思路: fun("student. dat") printf("nEnter n( number of *) 本题是统计各年龄段的人数 after ");scan("%d",&n); ); fun(s, n) 初始化各年龄段人数为 fp= fopen("student. dat","rb"); printf(" nThe string after insert 2.使用for循环以及求出各年龄的 十位数字作为存放人数的地址,fun(a,b,); A03",66},{A04",87},{"A05",77}, 如果大丁值大于10,则 "A06",90},{"A07",79},{"A08",61} 存入d10中(大于110岁的人) 解题思路 ,{"A09",80},{"A10",71}}; 参考答案 本题是考察先把给定的数据写入STU* pOre void fun int*a, int*b) 到文本文件中,再从该文件读出mnt,m 并转换成相应的整数、浮点数显P printf("***** The Original data *者水水 Int 1,J 示在屏幕上。 for(i=0; i<M; i++bi]=0 第一处:定义文本文件类型变量 outresult(a, stdout) for(=0;i<N;i++){ printf("nGive the number of the 所以应填:FIE*。 a[i]/10 students who have better score: ifg>10)bM-1]++; else b[]++ 第二处:关闭刚写入的文件,所 f("d",&m); 以应填: fclose(fp) while( m>10) 第三处:从文件中读出数据,所{ printf(" An give the number of the double rndo 以应填:fp。 students who have better score: ) static t=29,c=217,m=1024,r=0; scanf(%od", &m; r(rt+c)%m; return((double)r/m) 给定程序 MODIL.O中函数fn的功 pOrder-fun(a, m) ※※※※※※※※※※※※※※能是:对N名学生的学习成绩按 printf("求求米 THE RESULT ※※※※※※※※※※※ 从高到低的顺序找出前m(m≤10) printf("The top: n") 第05套 名学生来,并将这些学生数据存ori=0;i<m;i++) 给定程序中,区数fn的功能是将放在一个动态分配的连续存储区 printf("%s%din" pOrder]num 参数给定的字符串、整数、浮点中,此存储区的首地址作为函数 pOrderi]s) 数写到文本 值返回。 free(pOrder) 文件中,再用字符串方式从此文请改正函数fun中指定部位的错误, 本文件屮逐个读入,并调用库函使它能得出正确的结果。 解题思路 数atoi和atof将 注意:不要改动main函数,不得 第一处:语句最后缺少分号。 宁符串转换成相应的整数、浮点增行或删行,也不得更改程序的第二处;应该使用方括号,而不是 数,然后将其显示在屏幕上 结构! 圆括号。 请在程序的下划线处填入正硝的给定源程序 像此类,使用编译,即可发现 ***水客*米*水*水**水水水客*本水** 内容并把下划线删除,使程序得# include <stdio. h> *者本水;米米*水本冰**本水来 出正确的结果 #include <alloc. h 注意:源程序存放在考生文件夹# include <string. h 请编写函数fn,函数的功能是 删去一维数组中所有相同的数 下的 BLanK1C中。 # definen io 不得增行或删行,也不得更改程 type 仗之只剩一个。数组中的数已按 序的结构! i char num[I0 由小到大的顺序排列,函数返回删 int s 给定源程序: 除后数组中数据的个数 L STU #include <stdio.h> 例如,一维数组中的数据是:222 STU fun(stU al, int m) #include <stdlib. h> 3445666677899101010。 i STU bIN.*t void fun(char *s int a, double f 删除后,数组中的内容应该是:23 t(STU *)calloc(sizeof(stu), m) 45678910 fp for(i=0; i<N; 1++bl=ai 注意:部分源程序在文件 char str「1001,str「1001,str2「1001 for(k=0; k<m; k++) PROG1C中 int al: double fl i for(i-j=0; i<N; 1++) 请勿改动主函数main和其它函数 fp= fopen(filel. txt","w: if(bli]s>b]s)j=1; 中的任何内容,仅在函数in的花 fprintffp, %os %od%fn", S, a, 6); t(k=b() 括号中填入你编写的若干语句。 2 bj].s=0; fp= fopen("filel. txt","r"); 给定源程序 fscanf( 3, os%osos",str, strl, return t #include <stdio h> str2) #define n 80 fclose(fp outresult(sTU al, FILE"pf) int fun(int aL, int n) al= atoi(strl) Int 1 fl=atof(str2) for(i=0: i<N: i++ printf("nThe fprintf(pf, No=%s Mark =%odn maino rcsult nn%s %d %fn", str, al, a[i]. num, a[ i] s) t f); fprintf(pf, nn") aN]{2,2,2,3,4,4,5,6,6,6,6,77,8,9, 9,10,10,10,10},n=20; maino Inane rinf("The original data: n i char a[10]-Hello! int b-12345 STU double c-98.76 aN|={{"A0l",!81},{"AO2",89},{" i++printf(%3d",aiD print("intHe data r+=fun(2,x1,x2); ***水容**半本水*水**水水*水** deleted: \n"); printf("nxl=%f. x2=%of,请编写函数fun,函数的功能是:移 for(i=0; i<n; i++printf(%3d", ai]; xl*xl+x1*x2=%fnn, xl, x2, r) 动字符串中的内容,移动的规则如 printf("nin) 下:把第1到第m个字符,平移到 NONO: 解题思路: 字符串的最后,把第m+1到最后 本题是根据给定的公式来计算函 解题思路 的字符移到字符串的前部。 数的值。 本题是删除已排序过数组中的相 例如,字符串中原有的内容为 同数。 第一处:程序中使用双精度 double ABCDEFGHIJK,n的值为3,则移 类型进行计算,所以函数的返回 1.取出数组中的第1个数存放在值类型也为 double,所以应填 动后,字符串中的内容应该是 临时变量k中,再利用for循环来依 double DEFGHIKABC。 次判断所有的数。 注意:部分源程序在文件 第二处:当i等于1时,则返回坦函 2.如果取出的数和k相比,如果不 PROG1C中。 数的值,所以应填:f1。 相同,则仍存放在原数组中,其第三处:如果不等于1,则返回P 请勿改动主函数main和其它函数 中存放的位置由来控制,接着把函数的值,所以应填:f2。 中的任何内容,仅在函数fun的花 这个数重新存入k。如果相同,则 括号中填入你编写的若T语句。 取下一数 定源程序 参考答案: 给定程序 MODILO中函数fn的功 #include <stdio.h> int fun(int al. int n) #include <string. h> 能是:比较两个字符串,将长的那# define n80 个字符串的首地址作为函数值返dfnl(char*v)本函数的功 nt 1,=l,k=a[o 回 for(i=l; i<n; i+ 能是将字符串中字符循环左移 if(kI=ali)t 请改正函数fm中指定部位的错误,个位置*/ 七++」=a[i」 使它能得出正确的结果 k=a1 注意:不要改动mi函数,不得 int i; char t; 增行或删行,也不得更改程序的tw[O]; a]=0 结构! for(i=0; i<strlen(w)-1; i++) eturn j 给定源程序: [i=w[i+1]; #include <stdio. h w[strlen(w)-1=t ※※※※※※※※※※※※※※ char fun(char*s,char*) ※※※※※※※※※※※ i int sl=0, tI=0; char *ss, *tt; yoid fun( char *w,intm)/*可调用 第06套 SS=S; tt-t; unl函数左移字符* 给定程序中,函数fun的功能是根whil(°s) 据形参i值返回某个函数的值。 {sl++; 当调用正确时,程序输出: X1-5000000 i char a[N="ABCDEFGHIjK x2-3.00000 while tt) int m. X1*x1+x1米x2-40.000000 printf( the original 请在程序的下划线处填入正确的 i tI++ (*t)++; g: n"); puts(a) 内容并把下划线删除,使程序得 printf("ninEnter 出正确的结果。 if(tI>sl)return t ): scanf("%d, &m) 注意:源程序存放在考生文件夹 else return s; fun(a, m) 下的 BLANK1C中。 printf( "nThe string after 不得增行或删行,也不得更改程m moving: n"); puts(a) 序的结构! i char a[80], b[80],p, *; int i; printi("nEnter a string: ) gets(a) NONOO 给定源程序 include <stdio h> printf("nEnter a string again: ") 3 解题思路 double fl(double x) gets(b) printf("nThe i return x*x;) longer木题是考察字符串的操作 double f2(double x, double y) is: nin %os"", fun(a, b)) 1.由于函数fun1是将字符串中字 i return x*y: i 符循环左移一个位置,并通过实 解题思路: 1 fun(int i, double x, double 参w返回循环左移一个位置的字 if 第一处:试题要求返回字符串的 符串。 return 2(x) 首地址,所以应改为:char2.利用循环for语句来操作多少个 fun(char * s, char t) 第二处:取字符串指针s的下 宇符(m)需要循环左移 eturn 3 (, y) 个位置,所以应改为:ss+; 参考答案 第三处:取字符串指针t的下一个 id fun l(char*w)/*本函数的功 maino double x1=5.x2 位置,所以应改为:tt+; 能是将字符串中字符循环左移一 r=fun(1,x1,x2); 半半半半幸*半半幸半*半*学半半**半半幸率 个位置* 第二处:利用循环分別输岀学生请勿改动主函数main和其它函数 int i: char t 的成绩数据,所以应填:core[i]。中的任何内容,仅在函数iun的花 第三处:函数的调用,所以应填:括号中填入你编写的若干语句。 for(i=0; i<strlen(w)-1; i++) 给定漂程序: w[i]w[i+1]; w[strlen(w)-1=t #include <stdio. h> unsigned fun(unsigned w) 给定程序 MODILC中函数fun的 void fur(hr*w,intm)/可调用功能是:求出数组中最大数和次 funl函数左移宇符* 最人数,并把最人数和a[0]中的数 main() 对调、次最大数和al中的数对 i unsigned x int l printf("Enter a unsigned integer for(i=0; i< m; i++)fun1(w) 调。请改正程序中的错误,使它 能得出正确的结果。 number: ") scanf("%u",&x ) printf ("The original data ※※※※※※※※※※※※※※注意:不要改动main函数,不 is: %un,x: ※※※※※※※※※※※ 得增行或删行,也不得更改程序if(x<10) printf(" Data error!"); 第07套 的结构! else printf ("The result: %un 程序通过定义并赋初值的方式, 给定源程序: fun(X 利用结构体变量存储了一名学生# include<sdoh> NONO(; 的信息。函数fun功能是输出这# define n20 位学生的信息。 int fun( int a, int n) 解题思路: 请在程序的下划线处填入正确的 f int i, m, t, k 本题是考察考生怎样获取一个符 内容并把下划线删除,使程序得 for(i=0;i<2;i++){ 合要求的无符号整数。本题是应 出正确的结果 用i条件语句首先判断给出的数 for(k=i+1; k<n; k++) 注意:源程序存放在考生文件夹 是几位薮,再模相应的值,最后 if(a[k]a[m]k-m 下的 BLANK1C中。 t=ali]; ai]=am]; am]= 得出的余数就是结果。 不得增行或删行,也不得更改程} 参考答案 序的结构! unsigned fun ( unsigned w) 给定源程序: main( w>10000)w%=10000 #include <stdio.h> bN]={11,5,12,0,3,6,9,7,10,8}, X, else if(w>1000)w%=1000 typedef struct i int num; n=10 else if(>100)w%=100 for(i=0; K<n; 1++) printf("%od else if(>10)w%0-10, char name[9] bi]); return w struct( int year, month, day printf"n"); ※※※※※※※※※※※※※※ birthday; float score 3 for(i-0;i<n;i计+) printf("%d",※※※※※※※※※※※ iSTU; b[i 第08套 void show(STU 1) rinf("n"); 给定程序通过定义并赋初值的方 int i. 式,利用结构体变量存储了一名 printf("n%od %s oc %od-%/od 解题思路: 学生的学号、姓名和3门课的成 tt. num, tt. name, tt.sex 第一处:外循环每循不一次,把绩。函数fm的功能是将该学生的 tt birthday year,, tt birthday. month,当前位置值给m,所以应改为:各科成绩都乘以一个系数a。请在 tt birthday day) m=1 程序的下划线处填入正确的内容 for(1=0;1<3;i++) 第二处:通过内循环来找出最大 printf(%o5.If, 2: 并把下划线删除,使程序得出正 的一个数的位置k,所以应改为: printf("n"); 确的结果。 if(a[k]>am]m=k; 注意:源程序存放在考生文件夹 岑半容率半米举米卒举半半举半举水 main 下的 BLAN1C中。 STU 不得增行或删行,也不得更改程 std={1,"/ hanghua","M,1961,108 请编写一个函数 unsigned fun 序的结构! 5,78.0.82.0} ( unsigned w),w是一个大于10给定源程序 printf("ina student data: n") 的无符号整数,若w是n(n #include <stdio.h> show( 3 2)位的整数,函数求出w的低n-1 typedef struct 位的数作为函数值返回。 解题思路: 例如:w值为5923,则函数返回 char namcl9 本题是利用结构体变量存储了 923;w值为923则函数返回 loat score[3]; 名学生的信息 第一处:t变量在函数体fun已经使注意:部分源程序存在文件 roid show(STUt) 用,所以应填:t PROG1C中。 i int i; printf("%d %s: ", tt. num, tt. name) for(i=0; 1<3; i++) 解题思路 ※※※※※※※※※※※※※※ printf( %5.If", tt score[i; 第一处:条件判断缺少圆括号。 ※※※※※※※※※※※ printf("n); 第二处:判断相等的符号是=。第09套: 给定程序中,函数fun的功能是将 void modify( 1ss, float a) 半容半容半米半举半举半米岑举半 i int 1; 不带头节点的单向链表结点数据 for(i=0; 1<3; 1++) 程序定义∫N×N的二维数组,并域中的数据从小到大排序。即右 在主函数中自动赋值。请编写函 原链衣结点数据域从头至尾的数 数 fun(int aN,intn,函数的功据为:10、4、2、8、6,排序后 main() 能是:使数组左下三角元素中的 链表结点数据域从头至尾的数据 STU值乘以n。 为:2、4、6、8、10。 std=({1," Zhanghua",76.5780,82.0}例如:若n的值为3,a数组中的请在程序的下划线处填入正确的 值为197|397 内容并把下划线删除,使程序得 a=|238则返回主程序后a数组 printf( "n The original number and 出正确的结果 name and scores: n) 中的值应为|698 注意:源程序存放在考生文件夹 456121518 下的 BLANK1C中。 printf("lnput a number 注意:部分源程序存在文件 不得增行或删行,也不得更改程 scant("of, &a) PROGLC中。 nodify 请勿改动主函数main和其它函数 序的结构! 给定源程序 printI(nA result of中的任何内容,仅在函数fun的花 #include <stdio. h> modifying: n: 括号中填入你编写的若干语句。 #include <stdlib.h> show(std) 给定源程序 #define n 6 #include <stdio. h> typedef struct node i 解题思路: include <stdlib. h> int data 本题是利用结构体存储学生记录# define n5 struct node *next 并由实参s返回。 int fun( int a[NI, int n 3 NODE 第一处:实参s是一个结构型指针{ void fun(NODE h 变量,所以应填:STU i NODE p, *q; int t 第二处:该学生的各科成绩都乘 main( P 以一个系数a,所以应填:sore[i] f int a NIN, n,i, j; while (p)i 第三处:函数的调用,由于函数 printi("*** The array米米n");q=_1; for(i=0; KN; 1++) whilc( 2 定义时使用的指针结构型变量 i for(j=0; j<N; j++) if(p->data>q->data 所以应填:&std f]= rando%10; printf(%/4d p->data; p->data= q->data **米冰*水* a[i][j1);} q→data=t;} 水*水客**客*水水***水水半水客**水 printf("n ) q- q->next 给定程序 MODIL O中函数fun的功} 能是:求k!(k<13),所求阶乘的don=rand0%10;whie(n>3); 值作为函数值返回。例如:若k= printf("n=%4dn"n); 10,则应输出:3628800 fun(a, n ) 请改正程序中的错误,使它能得PmnC** THE RESULT NODE*creatlist(int aD ") 出正确的结果。 NODE为h,p,*q;inti; for(1-0; K <N; 1++) h NULL 注意:不要改动maim函数,不{fr(j=0;jN;j+)for(i=0;iN;计+) 得增行或删行,也不得更改程序 printf("%4d",al[订[]) q=(NODE 的结构! printf("n" )malloc(sizeof(NODE) 给定源程序: q->data=a] 井 include< estdio.h> NONOO; g->next=NULL: long fun( int k) if(h== nUll)h=p=q 解题思路: else( p-next=q: p=g:j ifk >0 本题是利用两重循环给二维数组 return(k*fun(k-1)) 左下三角元素中的值乘以n。 return h 参考答案 else if(k-0) int fun( int al[NI, int n) void outlist(NODE return I NODE P maino for(i=0; i<N; 1++) if (p==NULL) printf("The list is i int k=10 forge=0 NULL! n) printf"%od!=%ld\n", k, fun(k)) J<=ij++) n i printf("nHead") printf("->%d p->data); <80: nn"); gets(s); b中 p=p-next;i printf(" n The string:n");3.最后把数组b的内容依次存放 while(p!=NULL); (s); 到w中 printf(”>Endn"); fun(s); printf(" inIn The cords:inin";参考答案 void fun(int * w, int p int n) puts(s) maino 解题思路: int NODE *head: 0,b[N]; int aN]={0,10,4,2,8,6} 第一处:使用 while循环来判断字 for(i=p+l; i<n; i++blj++ head=-creatlist(a 可; nal list: n 符串指针s是否结束,所以应改为:for(i=0;i<=p;计+)b+]= outlist(head); while(s) fun(head) 第二处:取字符串指针s的下一个for(i=0;i<n;i++)w[i=b[i; after 位置,所以应改为:s++; inverting: n"; ※※※※※※※※※※※※※※ outlist(head) *率**半幸半幸*幸半幸***半** ※※※※※※※※※※※ 请编写函数fun,函数的功能是:第10套: 解题思路: 移动一维数组中的内容:若数组给定程序中,函数fn的功能是: 本题是考察使月链表方法,使用中有n个整数,要求把下标从0到判定形参a所指的N×N(规定N为 两重whil循环语句,对链表的结p(含pp小于等于n-1)的数组元素奇数)的矩阵是否是"幻方",若是, 点数据进行升序排列。 平移到数组的最后。 数返回值为1;不是,函数返 第一处:曰于外循环变量使用p指例如,一绯数组中的原始内容为:回值为0,"幻方"的判定条件是: 针,内循环变量使用q指针,所以1,2,3,4,5,6,7,89,10;p的值为3。移矩阵每行、每列、主对角线及反 q指向必须指向p的next 动 对角线上元素之和都相等。 指针,因此应填写:p. 后,一维数组中的内容应为:例如,以下3×3的矩阵就是一个 第二处:判断内循坏q指针是否结5,6,78,9,10.1,2,3,4 幻方 束,所以应填 注意:部分源程序在文件492 第三处:外循环控制变量p指向白PROG.C中。 357 己的next指针,所以应填:p. 请勿改动主函数ain和其它函数 816 屮的任何内容,仅在函数fn的花 请在程序的下划线处填入正确的 本齐本亦本春本本本本本本本本本本本本本吝本本本 括号中填入你编写的若十语句 内容并把下划线删除,使程序得 给定程序MODC中凶数n的功给定源程序 出正确的结果。 能是:将s所指字符串中的字母转# include< stdio. h> 注意:源程序存放在考牛文件夹 换为按字母 #define n 80 下的 BLANKI. C中 序列的后续字母(但Z转换为A, z void fun(nt*w,intp,intn) 不得增行或删行,也不得更改程 转换为a),其它字符不变 序的结构! 请改正函数fun中指定部位的错误,} 给定源程序: 使它能得出正确的结果。 mainO #include <stdio.h> Int 注意:不要改动main函数,不得 #define n 3 增行或删行,也不得更改程序的 aN-{1,23,4,567.8,101,12.13, int fun(int(~a)N]) 结构! i int i,j,ml, m2, row, colum; i,pn-15; ml=m2=0 给定源程序 printf("The original data: n") for(i=0; I<N; 1+- #include <stdio. h> for(i=0 j=N-i-1; m1+=alli include <ctype. h> i++)printf(%3d, aiD) m2+=a[i[j;} void fun(char“s) printf("niEnte if(m1!=m2)return 0 ); Scanf(%d", &p); for(i=0; i<N; i+-)i while(s=(@) fun(a, p, n) row=colum if(s>=A'&*s<=Z*s>=a printf("\nThe data after for(j=0; j<N; j+- &&*s<=z) moving:Ⅶn ); i row+=a[Ll; colum+=a[jl[; 3 if(*s==Z)*s=A'; 1<n- (row=colum) else if(*s=z)*s=a i++printf("%3d", a[i]: (rowl=ml))return O CISc printf("nn) NONOO return 3 解题思路 本题是老察一维数组的操作。 intx「NN, maino 1.定义一维数组中间变量b,把 n print(" Enter number for array:an") i char s[801 值后面数组中的大容存入b中。 for(i-0; i<N; 1+-) printf("n Enter a string with length 2.再把m前的数组中的内容存入for(-0 scanf("%od", &x]lD 第二处:应是返回公式的值,函※※※※※※※※※※※ printf("Array n") 数中公式的值是存放在临时变量t第11套: for(i=0; 1<N; 1++) 中,所以应填 return t; 给定程序中,函数fun的功能是将 for(i=0 岑半半容*米半举半米半容 举半半水举半 printf(%03d, xi[D; 带头结点的单向链表逆置。即若 半容半容半米半举半举半米岑举半 printf("n); 原链表中从头至尾结点数据域依 请编写一个函数,函数的功能是次为2、4、6、8、10.逆置后,从 if(fun(x)) printf( The Array is 删除字符串中的所有空格 头至尾结点数据域依次为 magic square. n ); 例如,主函数中输入" asd af aa10、8、6、4、2。 else printf(" The Array isn't a magic 267",则输出为" asdafaaz7"。 请在程序的下划线处填入正确的 quare. In") 注意:部分源程序在文件内容并把下划线删除,使程序得 PROG1C中。 出正确的结果。 解题思路: 请勿改动主函数main和其它函数注意:源程序存放在考生文件夹 第一处:行列变量row和 colum的中的任何内容,仅在函数fun的花 值初始化为0。 下的 BLANK1C中。 括号中填入你编写的若干语句。 第处:两个条件只要有一个不给定源程序 不得增行或删行,也不得更改程 序的结构! 满足就返回0,所以应填:‖ #includc <stdio.h> 给定源程序: 第二处:如果矩阵是“幻方”,则返# include< type h> #include <stdio. h int fun(char *str #include <stdlib. h> #define n 5 冰*事**水水事*事*水事** typedef struct node i 能是:根据整型形参m,计算如下/O 给定程序MODC屮fun函数的功mar int data struct node next 公式的值。 har str[8 3 NODE int n ntf(Input a string: ) void fun node h t NODE p, *q, r gets(str) 例如,若主函数中输入5,则应输 puts(str); p=h->1; fun(str) 出-0.283333 printf("*** str: %s\n", str); 请改正函数iun中的错误或在横线 NONOO if (p== 2 )return 处填上适当的内容并把横线删除,} q=p->ne 使它能计算出正确的结果。 解题思路 p->next= NULI while(q) 注意:不要改动main函数,不本题是考察考生怎样利用字符串 r=q->next: q->next=p 得增行或删行,也不得更改程序指针来删除字符串的空格字符。p=q;q= 的结构! 在函数开始处把指针p先指 给定源程序: 向字符丰str以及位置变量i置0,然 h->next=p #include <stdio. h>> 后采用whil循环和字符串指针p3 double fun( int m 来处理的,每循环一次来判断指 NODE*creatlist(int a[D 针p所指的字符是否为空格,如果 i NODE *h, p, a; int i double t=1.0 ANODE Int 1, 不是空格,则把该字符写到S字+) malloc( sizeof(NODE) for(i=2; i<=m; 1++) 符串中,位置由i来控制,如果是 h->next=NULL: t=1.0-1/i 空格,则不处理,继续取下一字for(i=0;i<N;i+-) 符,直至字符串结束为止,最后 q=(NODE 冉把字符串结束符写到 Dmalloc(sizeof(node)) maino 位置为的str上,再通过形参t返q~daa=al] 回 q->next= NULL Int m 参考答案: if (h->next== NULL) h- > next=p printf(" nPlcasc enter I integer int fun(char*str) q numbcrs: n ); else i p->next=gp=g: i scanf("%d",&m) char p=str; printf( ""nnThc result is %lf\n eturn h int1=0. fun( m)); while(p)i void outlISt(NODE h) f(p!=')sr[计++]=*p 解题思路 i NODE p p 第一处:在除法运算中,如果除} p-h->next 数和被除数都是整数,所么所除str[]=0; if (p-NULL) printf( "The list is NULL! n") 结果也是整数,因此应改为 else ※※※※※※※※※※※※※※{ printf(" nhead")

...展开详情
试读 90P C语言二级题库
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
xianjunfang 还不错哈,比较基础
2019-01-10
回复
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
C语言二级题库 47积分/C币 立即下载
1/90
C语言二级题库第1页
C语言二级题库第2页
C语言二级题库第3页
C语言二级题库第4页
C语言二级题库第5页
C语言二级题库第6页
C语言二级题库第7页
C语言二级题库第8页
C语言二级题库第9页
C语言二级题库第10页
C语言二级题库第11页
C语言二级题库第12页
C语言二级题库第13页
C语言二级题库第14页
C语言二级题库第15页
C语言二级题库第16页
C语言二级题库第17页
C语言二级题库第18页

试读结束, 可继续读2页

47积分/C币 立即下载 >