《二级C语言上机题库3.docx》由会员分享,可在线阅读,更多相关《二级C语言上机题库3.docx(119页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 答案:LSTYP2.FILE3.fp 答案:1 .for(i=0;is 1 ;i+)2.t2*s 1 J=0函数fun的功熊是:将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是:哺费的十位和个位数依次放在c数的羊故和A位上,b数的4位 和个位数依次放在c数的百位和个位上。例如,当a =45, b=12时,痼用该函数后,c=4152。注意:部分源程序存在文件PR0G1.C中。数蜂件IN. DAT中的数据不售修改。请勿改到主函薮mai通其它函数中的任何内容,仅在函数fun的花括号中填 入你编写的若干语句。*c=(a/l 0)*1000+(b/10)*100+(a% 10)*1
2、0+(b% 10);2 答案:l.*fw 2.str 3.str 答案:l.void fun(long s,long *t)2.sl=sl*10;函数fun的功就是:将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是:嗝破的十位和个位数依次放在c数的个卷和百位上,b数的1位 和个位数依次放在c数的千位和十位上。例如,当a=45, b=12时,调用该函数后,c=1524o注意:部分源程序存在文作PR0G1.C中。数螫件IN. DAT中的数据不密修改。请勿改勘主函薮mai通其它函数中的任何卤容,仅在函数fun的花括导中填入 你编写的若干语句。*c=(b/10)*1000+(a%10
3、)*100+(b%10)*10+(a/10);3 答案:1 .fp2.fclose(fp)3.fname 答案:l.for(i=j+l ;in;i+) 2.p=i;函数fun的功熊是:将两个两位数的正整数a、b合并形成一个整数放在c中。 合并的方式是:器速的十位和个位数依次放在c数的个故和百位上,b数的4位 和个位数依次放在c数的十位和千馋上。例如当a=45, b=12时,测用该函数后,c=2514o注意:系分源程序存在文律PR0G1.C中。数超:件IN. DAT中的数据不符修改。请勿改良)主函薮其它函数中的任何幡,仅在函数fun的花括导中填入 你编写的若干语句。*c=(b% 10)*1000
4、+(a% 10)*100+(b/10)*10+(a/l 0);4 答案:4T2fs3.ft 答案:l.if(d%2=0) 2.s/=10;函数fun的功熊是:将两个两位数的正整数a、b合并形成一个整数放在c札 合并的方式是:器徽的十位和个位数依次放在c数的十卷和千位上,b数的4位 和个位数依次放在c数的百位和个位上。例如,当a=45, b=12时,调用该函数后,c=5142。注意:部分源程序存在文南R0G1.C中。数雄:南N. DAT中的数据不得修改。请勿改动主函薮其它函数中的任何内容,仅在函数fun的花括导中填入 你编写的若干语句。*c=(a% 10)*1000+(b/10)*100+(a/
5、l 0)*10+(b% 10);5 答案:I.x2.p3.s 答案:l.long k=l;2.num/=10;请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函 数值退回。例如:若有5门课程的成绩是:90.5, 72, 80, 61.5, 55则菌致的版瓦71.80。注意:部分源程序存在文件PROG1. C中。请勿改务主函薮mai丽其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。int i;float ave=0.0;fbr(i=0; idata3.t 答案:l.fun (char *a2.printf(it%c,*a);供返提则数度串ijan募。 函
6、长符besh源函句 个费又回分主语 -符个鬟野干 写字一,将:改若 编求第如数意勿的 请的回例函注请写fu的。的它.-s)z功函.回 是返 匕匕攵的若,(字英 长两得串不符语胴c。在丽S z R3 hE-int i;char *p=s, *q=t;for(i=0;*p & *q; i+) p+;q+;)if(*p = 0 & *q = 0) return s ;if(*p) return s ;else return t;第七套答案:I.q2.next3.next 答案:l.p=j;2.p=i;请编用一个函数fun,它的功熊是:求出甲Jm之i强含m)能被7或11整除的房有 整数放在莪组冲,通过
7、越回这些数的个数。的如,者传送给m的值为50,则程序 输出:7 11 14 21 22 28 33 35 42 44 49注意:部分源程序存在文件PR0G1.C中。请勿改协主函薮mai向其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。inti;*n=0 ;for(i=7 ; i=m; i+)if(i % 7 = 0) II (i % 11 = 0) a(*n)+=i;第九套函数fun的功能是:将s所指 数的字符外,其余的全都删除;串 中。 一热偶弟工回 的一个新串答案:l.*n 2.next3.head 答案:l.a=02.if(*r=*p)例如,若s所指字符串中的内容为
8、:ABCDEFG123456”,其史字符A的ASCIR3 值为奇数,因此应当删除;其中翔B的ASCII码值为偶数,但在数组中的下标为 奇数,因此也应当删除;而手存2的ASCII福值为偶数,所在数组中的下标也为偶 S,因此不应当删需其它盖屁类推。最看t所指的数组中的内容应是:246”。8s:部分源程序荐在文南ROG 1. C审。请勿改易主函薮mai通其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。int i, j = 0 ;for(i = 0;i strlen(s); i += 2)if(si % 2 = 0) tj4-+ = si;tj = o;第十套答案:1 .data
9、2.next3.head 答案:1 .while(*r)2.*a=*r;a+;r+;函数fun的功能是形成肝串瞥黯斯或出 例如s所指字符串中下标为偶数的字符删除,串中剩余字符注意:的内容为:ABCDEFGHIJK”, 1工511日*xt干口、j内容应是:BDFHJ”。 画分源程序存在文侔PR0G1. C中。请勿改动主函数其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。int i, j = 0 ;for(i = 1 ; i strlen(s); i+=2) t|j+ = si;tj = o;函数fun的功熊是:将s所指字符串中ASCH值为偶数的字符删除,串中剩余字 符形点一
10、个新串放在t所指的聂组史。例如,若s所指字符串中网内容为:ABCDEFG12345”,事中字符B的ASCII科值 为偶纵、室特2的ASCH同役为偶数、都应当删除,其它依此类推。最后t所 指周数组中的内容应是:ACEG135”。注意:部分源程序存在文件PR0G1.C中。请勿改到主函薮mai/口其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。答案:#include #include void fun(char *s, char t)(int i, j = 0 ;for(i = 0 ; i strlen(s); i+) if(si % 2) tj+ = si; tj = O;m
11、ain()(char s100, t100;printf(nPlease enter string S:H); scanf(”s,s);fun(s, t);printf(nnThe result is: %snu, t);NONO();NONO()/* %- EyOAOUzdiaIA|)-EaEeEy%Y-pEy-.Ea3dEy%Y-.10OIAI41)i */ chars(lOOJ,tllOO;FILE *rf, *wf;inti;rf = fopen(C:WEXAM24990001in.dat”,T);wf = fopen(,C:WEXAM24990001out.dat,Hwn);for(
12、i = 0 ; i 10 ; i+) fscanf(rf, ,%sn, s);fun(s, t);fprintf(wf, %sn, t);)fclose(rf);fclose(wf);第十二套答案:l.stdi.year 2.stdi3.n 答案:UsPrime(int n) 2.if(!(n%i)中。已知学生的记录由学芍和学习成绩构成,N名学生的数据已存入结构体数组a 请编写函数fun,函破的功熊是:找出成绩最圆的学生记录,通过形参指针 (规定只有一个最高存)。已给出函数的曾部,请完成该函数。部分源程序存在文件PR0G1. C中。其它函数中的任何内容,仅在函数fun的花括号中填入传回王的请勿
13、改动主函去 你编写的若干语句。#include #include #define N 10 typedef struct ss char num10; int s; STU;fun( STU a, STU *s ) (int i, max = a0.s, j = 0;for(i = 1 ; i N ; i+) if(max ai.s) j = i;max = ai.s;)*s = aj;main () STU aN= “A01”,81,“A02”,89,“A03”,66,“A04”,87,“A05”,77, “A06”,90,MA07M,79,MA08,61,“A09”,80,“A10,71
14、,m ; int i;printf(M* The original data *nu);for (i=0; i N; i+ )printf(HNo = %s Mark = %dnn, ai.num,ai.s);fun ( a, &m );printf (H* THE RESULT *nM);printf (The top : %s , %dn,m.num, m.s);NONO();)NONO()/* %- EyOAdU OtaiA|)-.EaEeEy%Y-|j4Ao- EyE6Ey3AY0OA% */ HLE *rf, *wf;STU aN, m ;inti;rf = fopen(C:WEXA
15、M24990001in.dat,T);wf= fopen(C:WEXAM24990001out.dal“Jw”);for(i = 0 ; i 0) 2.else if(k=0)程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数 fun(int a N, int n),函数的功能是:使数呈左下三角元素中的值乘以n。 例如:若n的值为3, a数组中的值为3 9 76 9 812 15 18仅在函数fun的花括号中填入1 9 7a =2 3 8则返回主程序后破组中的值应为4 5 6注意:鄙分源拶序存在文件PR0G1.C中。请勿改副主函薇maiM口其它函数中的任何内容, 你编写的若干语句。#
16、include #include #define N 5int fun (int aN, int n )(int i,j;for(i = 0 ; i N ; i+)for(j = 0;j=i;j+) ai|j *= n ;main () int aNN, n, ij;printf(M* The array *nn);for (i =0; ivN;i+) for(j=0;j=3 );printf(n = %4dn,n);fun ( a, n );printf (* THE RESULT *nM);for (i =0; iN; i+ ) for(j =O;jN;j+ ) printf( ,%4dH
17、, aij); printf(n,);NONO();NONO()/* %- EyOAOU OiAhf-nEaEeEy%Yf-iiJT-OA0- Ey-.Ea3dEy%Y-i10dlA%|)i */FILE *rf, *wf;int i,j, n, a55;rf = fopen(uC:WEXAM24990001in.datn, MrH);wf = fopen(C:WEXAM24990001out.dat“,“w);for(i = 0;i5 ;i+)for(j = 0 ; j 5 ; j+)fscanf(rf, n%d “,&ai|j);fscanf(rf, &n);fun(a, n);for (
18、i = 0; i 5; i+ ) for(j = 0;j 5;j+ ) fprintf(wf, n%4dn, aij);fprintf(wf, nH);fclose(rf);fclose(wf);第十四套答案:l.*std 2.PERSON 3.std Lint k,q,i; 2.pti=strki;程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数 fun( int函数内功能是:使数组左下三角元素中的值全部置成0 。例如:a数组中的值为a =2 3 8 则返回主程序后破组中的值应为0 04 5 60 0 0注意:部分源程序存在文件PR0G1. C中。请勿改另主函薮mainJ其它函数
19、中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。#include #include #define N 5 int fun (int aN) (int i,j;for(i = 0 ; i N ; i+)for(j = 0 ; j = i; j+)aij = O;)main () int aNN, i,j;printf(M* The array *n*);for( i=0; iN; i+ ) for(j=O;jN;j+) aij = rand()%10; printf( M%4dH, aij); printf(MnM);fun (a);printf (叮HE RESULTnM);f
20、or (i =0; iN; i+ ) for(j =O;jN;j+ ) printf( ,%4d, aij); printf(nn);)NONO();NONO()/* %- Ey6A6uaiAf-iEaEcEy%YE-iiJOA0-Ey-.Ea3dEy%Y-10dlA14J)i */HLE *rf, *wf;int i, j, a55;rf = fopen(,C:WEXAM24990001in.datM,rn);wf = fopen(MC:WEXAMW24990001 out.dat,;,wn);for(i = 0 ; i 5 ; i-H-)for(j = 0;j5 ;j+)fscanf(rf
21、, n%d n, &aij);fun(a);for (i = 0; i 5; i+ ) for(j = 0;j5; j+ ) fprintf(wf, M%4dn, aij);fprintf(wf, unn);)fclose(rf);fclose(wf);)第十五套答案:l.*std 2.stdi.age 3.max.name 答案:l.void fun(int *a,int *b)2.t=*b;*b=*a;*a=t;二数住且一,数:改若 编组的意勿的 亶果请写个求己野干数二主源函句函出在分主语维函菱数数序ma-T-3 夕3 ri? Paln烦数 PR函 一匕 其中.,并疑吃牖驾会鞭嚼,仅在函数
22、fun的花括号中填入#include #define M 3#define N 4void fun (int tlMN, int ppN) (int ij, min, k ;for(i = 0;iN; i+) min = tt0i ;k = 0;for(j = 1 ; j ttji)min=ttji;main() int t M N = 22,45, 56,30),19,33,45,38,20,22, 66,40;int p N , i, j, k;printf (The original data is : n);for( i=0; iM; i+ )for( j=0; jN; j+ )pri
23、nt 6d”i皿);fun (t, p );printf(XnThe result is:n);for ( k = 0; k p 4-6A fun Eyf-雹3。的丫T0OiA%E */int i,j, k, m, tMN, pN;FILE *rf, *wf;rf = fopen(,C:WEXAM2499000lin.datM,Hr);wf = fopen(HC:WEXAM24990001out.dat,;,w);for(m = 0 ; m 10 ; m+) for( i=0; iM; i+ )for(j=0;jN;j+)fscanf(rf, 6d“,&tij);)fun (t, p );fo
24、r ( k = 0; kam) m=k;号整 回。写一个函数 unsigned fun ( unsigned w ) , w是一个大于10的无符 者w是n (n2)位的整数,函数求出w的低n-1位的数作为函数值返例如:w值为5923,则函数返回923; w值为923则函数返回23。注意:部分源程序存在文件PR0G1.C中。请勿改副主函薮mai通其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。#include unsigned fun ( unsigned w )if(w 10000) w %= 10000;else if(w1000) w %= 1000 ;else if
25、(w100) w %= 100 ;else if(w10) w %=10 ;return w ;main() unsigned x;printf (Enter a unsigned integer number : ); scanf (u”, &x );printf (The original data is : %un, x );if(xEa36Ey%Y-i0diA%|)j */unsigned x ;inti;FILE *rf, *wf;rf = fopen(,C:WEXAM24990001in.dat,;,r);wf = fopen(,C:WEXAM24990001out.dat,Mwn
26、);fbr(i = 0;i20;i+) fscanf(rf, *%u, &x);fprintf(wf, %un fun(x);)fclose(rf);fclose(wf);第十七套答案:l.i+12.k=j 3.t答案:l.void fun(char *str,char ch) 2.if(*str!=ch)3.strl=O;请编一个函数fun (char *s),函数的功能是把s所指字符串中的内容逆置。 例如:字货串中虞宥的字符里为:abcdefg,对调用该届数后,里史的内容为:gfedcba。注最:部分源程序存在文柞PR0G1.C中。请勿改副主函薮mai痛其它函数中的任何内容,仅在函数fun
27、的花括号中填入 你编写的若干语句。#include #include #define N 81fun ( char *s )char bN;int i = 0, j ;memset(b, 0, N);for(j = strlen(s) - 1 ; j = 0 ; j) bi+ = sj;strcpy(s, b);main() char aN;printf (Enter a string : ); gets ( a );pnntf ( The original string is :); puts( a );fun (a);printf(MnM);printf (nThe string afte
28、r modified :);puts (a);NONO();)NONO()/* eOUEyAUA,4!?-EaEe2aEdEy%Y-p6A funEyf- Ea%EyYf-iOiAjf */int i;char aN;FILE *rf, *wf;rf= fopen(C:WEXAM24990001in.dalYT);wf = fopen(C:WEXAM24990001out.dat,“w“);for(i = 0 ; i p6A fun EaEyYf-IOlOiAjf */FILE *rf, *wf;char s81, ch, w ;int len ;rf = fopen(,C:WEXAM2499
29、0001in.dat,nrn);wf=fopen(,C:WEXAM2499000lout.dat,;,wH);fgets(s, 80, rf);fscanf(rf, n%c &ch);len = strlen(s) - 1 ;w = slen;if(w = n”l w = Ox la) slen = 0 ;fun(s, ch);fprintf(wf, %s, s);fclose(rf);fclose(wf);第十九套答案:Lssi2.n+j 3.1 答案:l.if(*p=)2,*(p-1 )=toupper(*(p-1);廿4请编写函数un一对长度为7个字符的字符串,除首、尾字符外,将其余5个
30、字 符按ASCII码F黔排列。例如,原来的宝符更为CEAedca,排序后输出为CedcEAa。注意:郎源程序程文件PR0G1. C中。请勿改凝主函薮mai丽箕它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。#include #include #include int fun(char *s,int num)(char ch ;int i, j ;for(i = 1 ; i 6 ; i+)for(j = i + 1 ;j6;j+) if(*(s + i)*(s+j) ch = *(s + j);*(s + j) = *(s +i);*(s 4- i) = ch ;main()
31、(char s10;printfCEaEeVxdupAxOu:);gets(s);fun(s,7);printf(Mn%sM,s);NONO();)NONO()(/* eOU T0- EyAU oaIA%t)-iEaEe2aEdEy%Y-.p A fun 一 直舛r Ea3dy%Y-.,0OiA141)j */char s10;FILE *rf, *wf;int i = 0 ;rf = fopen(,C:WEXAM24990001in.dat;,rH);wf=fopen(,C:WEXAM2499000lout.dat,?,wn);while(i 10) fgets(s,10,rf);s7 =
32、0;fun(s,7);fprintf(wf, %sn, s);i+;fclose(rf);fclose(wf);)第二十套答案:l.(N 2.1en 3.*n=len 答案:2.return t;编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现 的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字 符串为:as,则应输出6。注意:邯分源程序在文件PR0G1.C中。请勿改动主函薮其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。#include #include int fun(char *str,cha
33、r *substr)(int ent = 0 ;char *p = str, *q ;while(*p) q = strstr(p, substr);if(q = NULL) break;p = q + strlen(substr); cnt+;)return ent;main()(char str81,substr3;int n;printf(EaEeO4-xO uz:);gets(str);printf(EaEexOxO u,:); gets(substr);puts(str);puts(substr);n=fun(str,substr);printf(,n=%dn,n);NONO();)
34、NONO()(/* CeOU EyAU oi,aIAWJjf-EaEeEdEy%Y-(j -?6A fun 所 Ea3 ofeyYf-.1 0OIA%t)i */char str81,substr3, ch;int n,len, i = 0;FILE *rf, *wf;rf= fopen(C:WEXAM24990001in.dat,T);wf = fopen(,C:WEXAM24990001out.dat,;,wH);while(i 5) fgets(str, 80, rf);fgets(substr, 10, rf);len = strlen(substr) - 1 ;ch = substr
35、len;if(ch = An II ch = Ox la) substrlen = 0 ;n=fun(str,substr);fprintf(wf, %dnu, n);i+ ;)fclose(rf);fclose(wf);答案:l.M 2. 3.k答案:l.if(Ca,=tti)&(tti=z,) 2.tti-=32;请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组 中,菲素敦的个数通过k传回。例如,若输入:17,则应输出:4 6 8 9 10 12 14 15 16。注意:弱分源程存在文件PR0G1.C中。请勿改副主函薮mai痛箕它函数中的任何内容,仅在函数fun的
36、花括号中填入 你编写的若干语句。#include int isP(int m)int j, tag = 0 ;for(j = 2 ; j m & !tag ; j+)if(m % j = 0) tag = 1 ;return tag;void fun( int m, int *k, int xx)(int i, ent = 0 ;for(i = 2 ; i m ; i+) if(isP(i) xxcnt+ = i;*k = ent;)main()(int m, n, zz100;printf( nnPlease enter an integer number between 10 and 10
37、0: );scanf( d”, &n );fun( n, &m, zz );printf( HnnThere are %d non-prime numbers less than %d:M, m, n );for( n = 0; n -EaEe2aEdEy%Y-,p-?6A fun-Ey-Ea3dEy%Y-n*0OiA,4|j */int m, n, zz100J;FILE *rf, *wf;rf = fopen(nC:WEXAM24990001in.datn,V);wf=fopen(HC:WEXAM24990001out.datu;wn);fscanf( rf, d”,&n );fun( n, &m, zz );fprintf(wf, %dn%dn, m, n );for( n = 0; n m; n+ )fprintf(wf, %dnM, zzn);fclose(rf);fclose(wf);第二十二套 答案:l.j+2.si=tli 3.j 答案:l.for(j=i+l;jv6;j+)2.*(pstr+i)=*(pstr+j)
限制150内