二級C語言上機題庫100套(最新).doc_第1頁
二級C語言上機題庫100套(最新).doc_第2頁
二級C語言上機題庫100套(最新).doc_第3頁
二級C語言上機題庫100套(最新).doc_第4頁
二級C語言上機題庫100套(最新).doc_第5頁
已閱讀5頁,還剩309頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2011年上半年上機題庫國家計算機等級考試二級C語言2011年上半年上機題庫目 錄【填空】3【計算】3【結(jié)構(gòu)體、學(xué)生編號】14【矩陣】21【鏈表】26【其他】33【數(shù)組】38【填空】48【字符串】120【最值、排序】144【改錯】150【字符串】150【整除】170【找大小】171【找0】172【素數(shù)】173【數(shù)組】176【刪除】182【三角】183【奇偶】185【鏈表】190【交換、轉(zhuǎn)換】194【積】197【公約公倍】197【公式】199【改錯】208【編程】274【被除數(shù)、素數(shù)】274【公式求值】277【矩陣、數(shù)組】285【刪除字母】290【學(xué)生成績】299【字符串】305【最值】312【填空】【計算】26.下列給定程序中,函數(shù)fun的功能是:找出100999之間(含100和999)所有整數(shù)中各位上數(shù)字之和為x(x為正整數(shù))的整數(shù),并輸出;符合條件的整數(shù)個數(shù)作為函數(shù)值返回。例如,當(dāng)x值為5時,100999之間各位上數(shù)字之和為5的整數(shù)有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500,共有15個。當(dāng)x值為27時,各位數(shù)字之和為27的整數(shù)是:999,只有1個。#include int fun(int x) int n, s1, s2, s3, t; n=0; t=100;/*found*/ while(t=999)/*found*/ s1=t%10; s2=(t/10)%10; s3=t/100;/*found*/ if(s1+s2+s3=x) printf(%d ,t); n+; t+; return n;main() int x=-1; while(x0): ); scanf(%d,&x); printf(nThe result is: %dn,fun(x);31.下列給定程序中,函數(shù)fun的功能是:計算下式前n項的和,并作為函數(shù)值返回。例如,若主函數(shù)從鍵盤給n輸入50后,則輸出為S=1.960784。#include double fun(int n) int i,j; double sum=0.0,t; for(i=1;i=n;i+) t=0.0;for(j=1;j=i;j+)t+=j;sum+=(double)1/t; return sum;void main() int n; double s; printf(nInput n: ); scanf(%d,&n); s=fun(n); printf(nns=%fnn,s);46.下列給定程序中,函數(shù)fun的功能是:將自然數(shù)110及其平方根寫到名為myfile3.txt的文本文件中,然后再順序讀出顯示在屏幕上。#include #include int fun(char *fname ) FILE *fp; int i,n; float x; if(fp=fopen(fname, w)=NULL) return 0; for(i=1;i=10;i+)/*found*/ fprintf(fp,%d %fn,i,sqrt(double)i); printf(nSucceed!!n);/*found*/ fclose(fp); printf(nThe data in file :n);/*found*/ if(fp=fopen(fname,r)=NULL) return 0; fscanf(fp,%d%f,&n,&x); while(!feof(fp) printf(%d %fn,n,x); fscanf(fp,%d%f,&n,&x); fclose(fp); return 1;main() char fname=myfile3.txt; fun(fname);44.下列給定程序中,函數(shù)fun的功能是:找出100到x(x999)之間各位上的數(shù)字之和為15的所有整數(shù),并在屏幕輸出;將符合條件的整數(shù)的個數(shù)作為函數(shù)值返回。例如,當(dāng)n值為500時,各位數(shù)字之和為15的整數(shù)有:159、168、177、186、195、249、258、267、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有26個。#include int fun(int x) int n, s1, s2, s3, t;/*found*/ n=0; t=100;/*found*/ while(t999|x0) printf(Please input(0x=999): ); scanf(%d,&x); printf(nThe result is: %dn,fun(x);56.給定程序的功能是:求二分之一的圓面積,函數(shù)通過形參得到圓的半徑,函數(shù)返回二分之一的圓面積(注:圓面積公式為:Sr2,在程序中定義的變量名要與公式的變量相同)。例如,輸入圓的半徑值:19.527,輸出為:s598.949991#include double fun( double r) return 3.14159*r*r/2.0;void main()double x;printf(Enter x: );scanf(%lf,&x);printf(s=%lfn,fun(x);57.請補充main函數(shù),該函數(shù)的功能是:計算兩個自然數(shù)n和m(m10000)之間所有數(shù)的和(n和m從鍵盤輸入)。例如,當(dāng)n1,m100時,sum5050;當(dāng)n100,m1000時,sum495550。#include #include #include void main() int n,m; long sum; sum=0; system(CLS); printf(nInput n,mn); scanf(%d,%d,&n,&m); while(n=m) sum+=n;n+; printf(sum=%dn,sum);60.請補充函數(shù)fun,該函數(shù)的功能是:判斷某一個年份是否為閏年。例如,1900年不是閏年,2004是閏年。#include #include #include int fun(int n) int flag=0; if(n%4=0) if (n%100)flag=1; if (n%400=0)flag=1; return flag;void main() int year; system(CLS); printf(Input the year:); scanf(%d,&year); if (fun(year)printf(%d is a leap year. n,year); elseprintf(%d is not a leap year.n,year);61.給定程序的功能是:計算score中m個人的平均成績aver,將低于aver的成績放在below中,并返回人數(shù)。例如,當(dāng)score10,20,30,40,50,60,70,80,90,m9時,函數(shù)返回的人數(shù)應(yīng)該是4,below10,20,30,40#include #include int fun(int score,int m, int below) int i,j=0; float aver =0.0; for(i=0;im;i+)aver+=scorei; aver/=(float)m; for(i=0;im;i+)if(scoreiaver)belowj+=*(score+i); return j; main() int i, n, below9; int score9=10,20,30,40,50,60,70,80,90; n=fun(score, 9, below); printf(nBelow the average score are: ); for(i=0;in;i+) printf(%d ,belowi);62.函數(shù)fun的功能是:統(tǒng)計長整數(shù)n的各位上出現(xiàn)數(shù)字1、2、3的次數(shù),并用外部(全局)變量c1、c2、c3返回主函數(shù)。例如,當(dāng)n123114350時,結(jié)果應(yīng)該為:c13 c21 c32。#include int c1,c2,c3;void fun(long n) c1=c2=c3=0; while(n) switch(n%10)case 1:c1+;break;case 2:c2+;break;case 3: c3+;n/=10;main() long n=123114350L; fun(n); printf(nThe result: n); printf(n=%ld c1=%d c2=%d c3=%dn,n,c1,c2,c3); 63.請補充函數(shù)fun,該函數(shù)的功能是:整除x且是偶數(shù)的數(shù),把這些數(shù)保存在數(shù)組bb中,并按從大到小的順序輸出。例如當(dāng)x20時,依此輸出:201042。#include #include #include void fun(int k,int bb) int i; int j=0; for(i=1;i=0;i-)printf(%d ,bbi);void main() int k=1; int bb100; system(CLS); printf(nPlease input X=); scanf(%d,&k); fun(k,bb);67.請補充main函數(shù),該函數(shù)的功能是:求n!。例如,7!5040。#include #include #include void main() int i,n; long f=1; system(CLS); printf(Input n: ); scanf(%d,&n); for(i=1;i=n;i+)f*=i; printf(%d!=%ldn,n,f);68. 程序的功能是計算s=k0+k1+kn 。#include long fun(int n)int i;long s;s=1;for(i=1;i=n;i+)s=i*s;return s;void main()long s;int k,n;scanf(%d,&n);s=0;for(k=0;k=n;k+)s=s+fun(k);printf(%ldn,s);69.給定程序的功能是:計算并輸出下列級數(shù)的前N項之和SN,直到SN大于q為止,q的值通過形參傳入。例如,若q的值為50.0,則函數(shù)值為50.416687。#include double fun(double q) int n; double s,t; n=2; s=2.0; while(s=q) s=s+(double)(n+1)/n; n+; printf(n=%dn ,n); return (s);void main() printf(%fn ,fun(50);70.請補充main函數(shù),該函數(shù)的功能是:求12!3!N!的和。例如,12!3!5!6!的和為873。#include #include void main() int i, n; long s=0, t=1; system(CLS); printf(nInput n:n); scanf(%d,&n); for(i=1;i=n;i+) t=t*i;s=s+t; printf(1!+2!+3!.+%d!=%ldn,n,s);71.請在函數(shù)fun的橫線上填寫若干表達式,使從鍵盤上輸入一個整數(shù)n,輸出n對應(yīng)的斐波那契數(shù)列。斐波那契數(shù)列是一整數(shù)數(shù)列,該數(shù)列自第三項開始,每數(shù)等于前面兩數(shù)之和,即0,1,1,2,3,5,8,13,21,34,55,#include int fun(int n);void main() int i,n=0; scanf(%d,&n); for(i=0;in;i+)printf(%d ,fun(i);int fun(int n) if(n=0)return 0; elseif(n=1)return 1;elsereturn fun(n-1)+fun(n-2);73.請補充函數(shù)fun,該函數(shù)的功能是:判斷一個數(shù)的個位數(shù)字和百位數(shù)字之和是否等于其十位上的數(shù)字,是則返回yes!,否則返回no!。#include #include #include char *fun(int n)int g,s,b;g=n%10;s=n/10%10;b=n/100%10;if(g+b)=s)return yes!;elsereturn no!;void main()int num=0;system(CLS);printf(*Input data *n);scanf(%d,&num);printf(nnn);printf(* The result *n);printf(nnn%s,fun(num);91.請補充main函數(shù),該函數(shù)的功能是:計算每個學(xué)生成績的平均分,并把結(jié)果保存在數(shù)組bb中。例如,當(dāng)scoreNM83.5,82,86,65,67,80,91.5,84,99,95,90.5,95,86,95,97時,三個學(xué)生的平均分為76.7,89.9,92.7。#include #define N 3#define M 5void main() int i,j; static float scoreNM=83.5,82,86,65,67,80,91.5,84,99,95,90.5,95,86,95,97; float bbN; system(CLS); for(i=0;iN;i+)bbi=0; for(i=0;iN;i+) for(j=0;jM;j+)bbi+=scoreij;bbi/=M; for(i=0;iN;i+)printf(nstudent%dtaverage=%5.1f,i+1,bbi);95.請補充函數(shù)fun,該函數(shù)的功能是:求一維數(shù)組xN的平均值,并對所得結(jié)果進行四舍五入(保留兩位小數(shù))。例如,當(dāng)x1015.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0,結(jié)果為:avg15.030000。#include #include #include double fun(double x10) int i; long t; double avg=0.0; double sum=0.0; for(i=0;i10;i+)sum+=xi; avg=sum/10; avg=avg*1000; t=(avg+5)/10; avg=(double)t/100; return avg;void main() double avg,x10=15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0; int i; system(CLS); printf(nThe original data is :n); for(i=0;i10;i+)printf(%6.1f,xi); printf(nn); avg=fun(x); printf(average=%fnn,avg);100.請補充main函數(shù),該函數(shù)的功能是求方程ax2bxc0的兩個實數(shù)根。方程的系數(shù)a、b、c從鍵盤輸入,如果判別式(discb24ac)小于0,則要求重新輸入a、b、c的值。例如,當(dāng)a1,b2,c1時,方程的兩個根分別是x11.00,x21.00。#include #include #include void main() float a,b,c, disc,x1,x2; system(CLS); do printf(Input a,b,c:);scanf(%f,%f,%f,&a,&b,&c);disc=b*b-4*a*c;if(disc0)printf(disc=%fn Input again!n,disc); while(disc0); printf(*the result*n); x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(nx1=%6.2fnx2=%6.2fn,x1,x2);【結(jié)構(gòu)體、學(xué)生編號】19.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是:將形參a所指結(jié)構(gòu)體變量中的數(shù)據(jù)賦給函數(shù)中的結(jié)構(gòu)體變量b,并修改b中的學(xué)號和姓名,最后輸出修改后的數(shù)據(jù)。例如,a所指變量中的學(xué)號、姓名和三門課的成績依次是:10001、ZhangSan、95、80、88,則修改后輸出b中的數(shù)據(jù)應(yīng)為:10002、LiSi、95、80、88。#include #include struct student long sno; char name10; float score3;void fun(struct student a) struct student b; int i;/*found*/ b = a; b.sno = 10002;/*found*/ strcpy(, LiSi); printf(nThe data after modified :n); printf(nNo: %ld Name: %snScores: ,b.sno, );/*found*/ for (i=0; i3; i+) printf(%6.2f , b.scorei); printf(n);main() struct student s=10001,ZhangSan, 95, 80, 88; int i; printf(nnThe original data :n); printf(nNo: %ld Name: %snScores: ,s.sno, ); for (i=0; i3; i+) printf(%6.2f , s.scorei); printf(n); fun(s);24.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是:將形參a所指結(jié)構(gòu)體變量s中的數(shù)據(jù)進行修改,并把a的地址作為函數(shù)值返回主函數(shù),從主函數(shù)中輸出修改的數(shù)據(jù)。例如,a所指變量s中的學(xué)號、姓名和三門課的成績依次是:10001、ZhangSan、95、80、88,修改后輸出t中的數(shù)據(jù)應(yīng)為:10002、LiSi、96、81、89。#include #include struct student long sno; char name10; float score3;/*found*/struct student * fun(struct student *a) int i; a-sno = 10002; strcpy(a-name, LiSi);/*found*/ for (i=0; iscorei += 1;/*found*/ return a ;main() struct student s=10001,ZhangSan, 95, 80, 88, *t; int i; printf(nnThe original data :n); printf(nNo: %ld Name: %snScores: ,s.sno, ); for (i=0; isno, t-name); for (i=0; iscorei); printf(n);27.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是:對形參b所指結(jié)構(gòu)體變量中的數(shù)據(jù)進行修改,并在主函數(shù)中輸出修改后的數(shù)據(jù)。例如,若b所指變量t中的學(xué)號、姓名和三門課的成績依次是:10002、ZhangQi、93、85、87,修改后輸出t中的數(shù)據(jù)應(yīng)為:10004、LiJie、93、85、87。#include #include struct student long sno; char name10; float score3;void fun( struct student *b)/*found*/ b-sno = 10004;/*found*/ strcpy(b-name, LiJie);main() struct student t=10002,ZhangQi, 93, 85, 87; int i; printf(nnThe original data :n); printf(nNo: %ld Name: %snScores: ,t.sno, ); for (i=0; i3; i+) printf(%6.2f , t.scorei); printf(n);/*found*/ fun(&t); printf(nThe data after modified :n); printf(nNo: %ld Name: %snScores: ,t.sno, ); for (i=0; i3; i+) printf(%6.2f , t.scorei); printf(n);30.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)據(jù)均以二進制方式輸出到student.dat文件中。函數(shù)fun的功能是:從文件中找出指定學(xué)號的學(xué)生數(shù)據(jù),讀入此學(xué)生數(shù)據(jù),對該學(xué)生的分數(shù)進行修改,使每門課的分數(shù)加3分,修改后重寫文件中學(xué)生的數(shù)據(jù),即用該學(xué)生的新數(shù)據(jù)覆蓋原數(shù)據(jù),其它學(xué)生數(shù)據(jù)指定不變;若找不到,則不做任何操作。#include #define N 5typedef struct student long sno; char name10; float score3; STU;void fun(char *filename, long sno) FILE *fp; STU n; int i; fp = fopen(filename,rb+);/*found*/ while (!feof(fp) fread(&n, sizeof(STU), 1, fp);/*found*/ if (n.sno=sno) break; if (!feof(fp) for (i=0; i3; i+) n.scorei += 3;/*found*/ fseek(fp, -(long)sizeof(STU), SEEK_CUR); fwrite(&n, sizeof(STU), 1, fp); fclose(fp);main() STU tN= 10001,MaChao, 91, 92, 77, 10002,CaoKai, 75, 60, 88, 10003,LiSi, 85, 70, 78, 10004,FangFang, 90, 82, 87, 10005,ZhangSan, 95, 80, 88, ssN; int i,j; FILE *fp; fp = fopen(student.dat, wb); fwrite(t, sizeof(STU), N, fp); fclose(fp); printf(nThe original data :n); fp = fopen(student.dat, rb); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0; jN; j+) printf(nNo: %ld Name: %-8s Scores: ,ssj.sno, ); for (i=0; i3; i+) printf(%6.2f , ssj.scorei); printf(n); fun(student.dat, 10003); fp = fopen(student.dat, rb); fread(ss, sizeof(STU), N, fp); fclose(fp); printf(nThe data after modifing :n); for (j=0; jN; j+) printf(nNo: %ld Name: %-8s Scores: ,ssj.sno, ); for (i=0; i3; i+) printf(%6.2f , ssj.scorei); printf(n); 35.程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是:將形參a中的數(shù)據(jù)進行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進行輸出。例如,若傳給形參a的數(shù)據(jù)中學(xué)號、姓名和三門課的成績依次是:10001、ZhangSan、95、80、88,修改后的數(shù)據(jù)應(yīng)為:10002、LISi、96、81、89。#include #include struct student long sno; char name10; float score3;/*found*/struct student fun(struct student a) int i; a.sno = 10002;/*found*/ strcpy(, LiSi);/*found*/ for (i=0; i3; i+) a.scorei+= 1; return a;main() struct student s=10001,ZhangSan, 95, 80, 88, t; int i; printf(nnThe original data :n); printf(nNo: %ld Name: %snScores: ,s.sno, ); for (i=0; i3; i+) printf(%6.2f , s.scorei); printf(n); t = fun(s); printf(nThe data after modified :n); printf(nNo: %ld Name: %snScores: ,t.sno, ); for (i=0; i3; i+) printf(%6.2f , t.scorei); printf(n);54.下列給定程序的功能是調(diào)用fun函數(shù)建立班級通訊錄。通訊錄中記錄每位學(xué)生的編號、姓名和電話號碼。班級人數(shù)和學(xué)生信息從鍵盤讀入,每個人的信息作為一個數(shù)據(jù)塊寫到名為myfile5.dat的二進制文件中。#include #include #define N 5typedef struct int num; char name10; char tel10;STYPE;void check();/*found*/int fun(STYPE *std)/*found*/ FILE *fp; int i; if(fp=fopen(myfile5.dat,wb)=NULL) return(0); printf(nOutput data to file !n); for(i=0; iN; i+)/*found*/ fwrite(&stdi, sizeof(STYPE), 1, fp); fclose(fp); return (1);main() STYPE s10= 1,aaaaa,111111,1,bbbbb,222222,1,ccccc,333333, 1,ddddd,444444,1,eeeee,555555; int k; k=fun(s); if (k=1) printf(Succeed!); check(); else printf(Fail!);void check() FILE *fp; int i; STYPE s10; if(fp=fopen(myfile5.dat,rb)=NULL) printf(Fail !n); exit(0); printf(nRead file and output to screen :n); printf(n num name teln); for(i=0; iN; i+) fread(&si,sizeof(STYPE),1, fp); printf(%6d %s %sn,si.num,,si.tel); fclose(fp);55.程序通過定義學(xué)生結(jié)構(gòu)體數(shù)組,存儲若干名學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是:將存放學(xué)生數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,按姓名的字典序(從小到大)排序。#include #include struct student long sno; char name10; float score3;void fun(struct student a, int n)/*found*/ struct student t; int i, j;/*found*/ for (i=0; in-1; i+) for (j=i+1; j 0) t = ai; ai = aj; aj = t; main() struct student s4=10001,ZhangSan, 95, 80, 88,10002,LiSi, 85, 70, 78, 10003,CaoKai, 75, 60, 88, 10004,FangFang, 90, 82, 87; int i, j; printf(nnThe original data :nn); for (j=0; j4; j+) printf(nNo: %ld Name: %-8s Scores: ,sj.sno, ); for (i=0; i3; i+) printf(%6.2f , sj.scorei); printf(n); fun(s, 4); printf(nnThe data after sorting :nn); for (j=0; j4; j+) printf(nNo: %ld Name: %-8s Scores: ,sj.sno, ); for (i=0; i3; i+) printf(%6.2f , sj.scorei); printf(n); 83.人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號唯一。函數(shù)fun的功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號不存在,返回數(shù)據(jù)中的編號為空串。#include #include #define N 8typedef struct char num10;int year,month,day;STU;STU fun(STU *std,char *num)int i;STU a=,9999,99,99;for(i=0;i=N;i+)if(strcmp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論