《全国计算机二级C语言程序设计题-((-100%全中必过).doc》由会员分享,可在线阅读,更多相关《全国计算机二级C语言程序设计题-((-100%全中必过).doc(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流全国计算机二级C语言程序设计题-(-100%全中必过)【精品文档】第 69 页目录题目一“回文”字符串3题目二迭代法求给定多项式的值4题目三迭代法求给定方程的根4题目四二维数组三角元素操作15题目四二维数组三角元素操作26题目四二维数组三角元素操作37题目五二维数组元素求最值8题目六二维数组周边元素18题目六二维数组周边元素29题目七二维数组转一维数组110题目七二维数组转一维数组211题目七二维数组转一维数组312题目七二维数组转一维数组413题目八结构体数组排序114题目八结构体数组排序214题目八结构体数组排序315题目八结构体数组排序416题目九
2、结构体数组求最值117题目九结构体数组求最值218题目九结构体数组求最值318题目九结构体数组求最值419题目十结构体数组筛选19题目十一结构体数组字符串比较20题目十二矩阵操作121题目十二矩阵操作222题目十三类似素数判断123题目十三类似素数判断223题目十四累加累乘求和123题目十四累加累乘求和224题目十四累加累乘求和324题目十四累加累乘求和425题目十四累加累乘求和525题目十四累加累乘求和626题目十四累加累乘求和727题目十四累加累乘求和827题目十四累加累乘求和928题目十四累加累乘求和1028题目十四累加累乘求和1129题目十四累加累乘求和1229题目十四累加累乘求和13
3、30题目十四累加累乘求和1430题目十四累加累乘求和1531题目十四累加累乘求和1631题目十五链表132题目十五链表233题目十六删除整数位某数位34题目十七删除字符串中指定字符134题目十七删除字符串中指定字符235题目十七删除字符串中指定字符335题目十七删除字符串中指定字符436题目十七删除字符串中指定字符536题目十七删除字符串中指定字符637题目十七删除字符串中指定字符737题目十七删除字符串中指定字符838题目十七删除字符串中指定字符938题目十七删除字符串中指定字符1039题目十七删除字符串中指定字符1139题目十七删除字符串中指定字符1240题目十七删除字符串中指定字符134
4、1题目十七删除字符串中指定字符1441题目十七删除字符串中指定字符1542题目十七删除字符串中指定字符1643题目十七删除字符串中指定字符1743题目十七删除字符串中指定字符1844题目十八数字字符串转整数145题目十八数字字符串转整数245题目十九素数判定146题目十九素数判定246题目十九素数判定347题目二十统计问题48题目二十一小数位操作48题目二十二一维数组或字符串排序149题目二十二一维数组或字符串排序250题目二十二一维数组元素的筛选150题目二十二一维数组元素的筛选251题目二十二一维数组元素的筛选351题目二十二一维数组元素的筛选452题目二十二一维数组元素的筛选552题目二
5、十二一维数组元素的筛选653题目二十二一维数组元素的筛选754题目二十二一维数组元素的筛选854题目二十二一维数组元素的筛选955题目二十三一维数组元素筛选55题目二十五一维数组最值求解156题目二十五一维数组最值求解257题目二十五一维数组最值求解357题目二十六移动问题158题目二十六移动问题258题目二十七整数合并159题目二十七整数合并259题目二十七整数合并360题目二十七整数合并460题目二十七整数合并560题目二十七整数合并661题目二十七整数合并761题目二十七整数合并862题目二十八字符串长度比较162题目二十八字符串长度比较262题目二十九字符串的逆置63题目三十字符串计数
6、64题目三十一字符串连接164题目三十一字符串连接265题目三十一字符串连接366题目三十二字符串中指定字符查找66题目三十三字母大小的判断及转换67题目一“回文”字符串3. 请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。#include #define N 80 int fun(char *str) int i,n=0,fg=1; char *p=str; while (*p) /*将指针p置位到字符串末尾,并统计字符
7、数*/ n+; p+; for(i=0;in/2;i+) /*循环比较字符*/ if(stri=strn-1-i) ; /*相同,什么都不作*/ else /*不同,直接跳出循环*/ fg=0; break; return fg;main() char sN; FILE *out; char *test=1234321,123421,123321,abcdCBA; int i; printf(Enter a string : ); gets(s); printf(nn); puts(s); if(fun(s)printf(YESn); elseprintf(NOn); out=fopen(ou
8、t.dat,w); for(i=0;i4;i+) if(fun(testi)fprintf(out,YESn);elsefprintf(out,NOn); fclose(out);题目二迭代法求给定多项式的值3.编写函数fun,其功能是:根据以下公式求的值(要求精度0.0005,即某项小于0.0005时停止迭代)。 程序运行后,若输入精度0.0005,则程序应输出为3.14。#include #include double fun ( double eps) double s=1.0,s1=1.0; int n=1; while(s1=eps) /*当某项大于精度要求时,继续求下一项*/ s1
9、=s1*n/(2*n+1); /*求多项式的每一项*/ s=s+s1; /*求和*/ n+; return 2*s;main( ) double x;void NONO (); printf(Input eps:) ; scanf(%lf,&x); printf(neps = %lf, PI=%lfn, x, fun(x); NONO();题目三迭代法求给定方程的根3. 编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(x)x0的一个实根。迭代步骤如下:(1)取x1初值为0.0;(2)x0x1,将x1的值赋给x0;(3)x1cos(x0),求出一个新的x1;(4)若x0x1的绝对值
10、小于0.000001,执行步聚(5),否则执行步聚(2);(5)所求x1就是方程cos(x)x0的一个实根,作为函数值返回。程序将输出结果Root0.739086。#include #include double fun()double x0,x1;x1=0.0;dox0=x1;x1=cos(x0);while(fabs(x0-x1)=1e-6);return x1;main() void NONO ( ); printf(Root =%fn,fun(); NONO();题目四二维数组三角元素操作13. 程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int aN,int n
11、),该函数的功能是:使数组左下半三角元素中的值乘以n。例如,若n的值为3,a数组中的值为:则返回主程序后a数组中的值应为:#include #include #include #define N 5void fun(int a N, int n) int i,j; for(i=0;iN;i+) for(j=0;j=i;j+) aij=aij*n;main() int aNN,n, i,j; FILE *out; printf(* The array *n); for(i=0; iN; i+) for(j=0; jN; j+) aij=rand()%10; printf(%4d, aij); p
12、rintf(n); n=rand()%4; printf(n=%4dn,n); fun(a, n); printf(*THE RESULT*n); for(i=0; iN; i+) for (j=0; jN; j+) printf(%4d,aij); printf(n); out=fopen(out.dat,w); for(i=0;iN;i+)for(j=0;jN;j+)aij=i*j+1; fun(a,9); for(i=0;iN;i+)for(j=0;jN;j+)fprintf(out,%4d,aij);fprintf(out,n);fclose(out);题目四二维数组三角元素操作23.
13、 下列程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),该函数的功能是:将数组左下半三角元素中的值全部置成0。例如a数组中的值为:1 9 72 3 84 5 6则返回主程序后a数组中的值应为:0 9 70 0 80 0 0#include #include #include #define N 5void fun (int aN) int i,j; for(i=0;iN;i+) for(j=0;j=i;j+) aij=0; /*将数组左下半三角元素中的值全部置成0*/void main() FILE *wf; int aNN,i,j; int bNN=1,9,7
14、,2,4,2,3,8,1,2,4,5,6,7,5,4,0,6,8,0,2,7,1,6,4; system(CLS); printf(*The array*n); for(i=0;iN;i+) /*产生一个随机的5*5矩阵*/ for(j=0;jN;j+) aij=rand()%10; printf(%4d, aij); printf(n); fun(a); printf(THE RESULTn); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n); wf=fopen(out.dat,w); fun(b); for(i=0;iN;i
15、+) for(j=0;jN;j+) fprintf(wf,%4d,bij); fprintf(wf,n); fclose(wf);题目四二维数组三角元素操作33. 下列程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int a N,int m),该函数的功能是使数组右上半三角元素中的值乘以m。例如,若m的值为2,a数组中的值为:则返回主程序后a数组中的值应为:#include #include #include #include #define N 5void fun(int aN, int m) int i,j; for(j=0;jN;j+) for(i=0;i=j;i+)
16、 aij=aij*m; /*右上半三角元素中的值乘以m*/main() int aNN,m, i, j; FILE *out; printf(*The array*n); for(i=0;iN;i+) for(j=0;jN;j+) aij=rand()%20; printf(%4d, aij); printf(n); m=rand()%4; printf(m=%4dn,m); fun(a,m); printf(THE RESULTn); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n); out=fopen(out.dat,w);
17、 for(i=0;iN;i+) for(j=0;jN;j+)aij=i*j; fun(a,8); for(i=0;iN;i+) for(j=0;jN;j+)fprintf(out,%4d,aij);fprintf(out,n); fclose(out);题目五二维数组元素求最值3. 请编写函数fun,其功能是:找出2M整型二维数组中最大元素的值,并将此值返回调用函数。#include #define M 4int fun (int aM)int i,j,max=a00; for(i=0;i2;i+) for(j=0;jM;j+) if(maxaij) max=aij; return max;m
18、ain( ) int arr2M=5,8,3,45,76,-4,12,82 ;void NONO (); printf(max =%dn, fun(arr) ; NONO( ) ;void NONO ()/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ; int arrM=5,8,3,90,76,-4,12,82 ; wf = fopen(out.dat,w) ; fprintf(wf, max=%dn, fun(arr) ; fclose(wf) ;题目六二维数组周边元素13.下列程序定义了NN的二维数组,并在主函数中赋值。请编写函数fun,函数的
19、功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如,若a 数组中的值为:0127919745238314568259141则返回主程序后s的值应为3.375。#include#include#include#define N 5double fun (int wN) int i,j,k=0; double av=0.0; for(i=0;iN;i+) for(j=0;jN;j+) if(i=0|i=N-1|j=0|j=N-1) /*只要下标中有一个为0或N-1,则它一定是周边元素*/ av=av+wij; /*将周边元素求和*/ k+; return av/k; /*求周边元
20、素的平均值*/void main() FILE *wf; int aNN=0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1; int i, j; double s; system(CLS); printf(*The array*n ); for (i=0; iN; i+) for (j=0;jN;j+) printf(%4d ,aij); printf(n ); s=fun(a); printf(*THE RESULT*n ); printf(The sum is : %lfn ,s); wf=fopen(out.dat,w); fprintf
21、 (wf,%lf,s); fclose(wf);题目六二维数组周边元素23. 请编写函数fun,该函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为:13579299946999813570则函数值为61。#include#include#include#define M 4#define N 5 int fun( int a MN) int i,j,sum=0; for(i=0;iM;i+) for(j=0;jN;j+) if(i=0|i=M-1|j=0|j=N-1) /*只要下标中有一个为0或M-1或N-1,则它一定是周边元素*/
22、 sum=sum+aij; /*将周边元素相加*/ return sum;void main() FILE *wf; int aaMN=1,3,5,7,9,2,9,9,9,4,6,9,9,9,8,1,3,5,7,0; int i, j, y; system(CLS); printf (The original data is :n ); for(i=0; iM;i+) for (j=0; jN;j+) printf(%6d ,aaij); printf(n ); y=fun(aa); printf(nThe sun: %dn ,y); printf(n ); wf=fopen(out.dat,
23、w); fprintf (wf,%d,y); fclose(wf);题目七二维数组转一维数组13.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。一维数 组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为33 33 33 3344 44 44 4455 55 55 55则一维数组中的内容应是:33 44 55 33 44 55 33 44 55 33 44 55#include void fun(int (*s)10,int *b,int *n,int mm,int nn) int i,j; for(j=0;jnn;j+) /*
24、将二维数组中的数据按列的顺序依次放入一维数组中*/ for(i=0;imm;i+) b*n=*(*(s+i)+j); *n=*n+1; /*通过指针返回元素个数*/void main() int w1010=33,33,33,33,44,44,44,44,55,55,55,55, i, j; int a100=0,n=0 ; FILE *out; printf(The matrix:n); for (i=0; i3; i+) for (j=0;j4;j+) printf(%3d,wij); printf(n); fun(w,a,&n,3,4); out=fopen(out.dat,w); pr
25、intf(The A array:n); for(i=0; in; i+) printf(%3d,ai); fprintf(out,%d ,ai); printf(nn); fclose(out);题目七二维数组转一维数组23. 请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为W W W WS S S SH H H H则字符串中的内容应是:WSHWSHWSHWSH。#include#define M 3#define N 4void fun(char (*s)N,char *b) int i,j,k=0; for(i
26、=0;iN;i+) /*按列的顺序依次放到一个字符串中*/ for(j=0;jM;j+) bk+=sji; bk=0;void main() FILE *wf; char a100,wMN= W, W, W, W,S, S, S, S,H, H, H, H; int i,j; printf(The matrix:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%3c,wij); printf(n); fun(w,a); printf(The A string:n); puts(a); printf(nn); wf=fopen(out.dat,w); fprin
27、tf(wf,%s,a); fclose(wf);题目七二维数组转一维数组31. 请编一个函数void fun(int ttMN, int ppN), tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。#include #include #include#define M 3#define N 4void fun(int ttMN,int ppN) int i,j,max;for(j=0;jN;j+) max=tt0j; /*假设各列中的第一个元素最大*/ for(i=0;imax) /*如果各列中的元素比最大值大,则将这
28、个更大的元素看作当前该列中最大元素*/ max=ttij; ppj=max; /*将各列的最大值依次放入pp数组中*/main( ) void NONO( );int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56; int p N , i, j, k; printf ( The original data is : n ); for( i=0; iM; i+ ) for( j=0; jN; j+ ) printf ( %6d, tij ); printf(n); fun ( t, p ); printf( nThe result is:n )
29、; for ( k = 0; k N; k+ ) printf ( %4d , p k ); printf(n); NONO( );void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int i, j, k, m, tMN, pN ; FILE *rf, *wf ; rf = fopen(in.dat,r) ; wf = fopen(out.dat,w) ; for(m = 0 ; m 10 ; m+) for( i=0; iM; i+ ) for( j=0; jN; j+ )fscanf (rf, %6d, &tij ); fu
30、n ( t, p ) ; for ( k = 0; k N; k+ ) fprintf (wf, %4d , p k ) ; fprintf(wf, n) ; fclose(rf) ; fclose(wf) ;题目七二维数组转一维数组43.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:333333334444444455555555则一维数组中的内容应该是:333333334444444455555555。#include void fun (int (*s)10, i
31、nt *b, int *n, int mm, int nn) int i,j,k=0; for(i=0;imm;i+) /*将二维数组s中的数据按行的顺序依次放到一维数组b中*/ for(j=0;jnn;j+) bk+=sij; *n=k; /*通过指针返回元素个数*/void main() FILE *wf; int w1010=33,33,33,33,44,44,44,44,55,55,55,55, i, j; int a100=0,n=0 ; printf(The matrix:n); for (i=0; i3; i+) for (j=0;j4;j+) printf(%3d,wij);
32、printf(n); fun(w,a,&n,3,4); printf(The A array:n); for(i=0; in; i+) printf(%3d,ai); printf(nn); wf=fopen(out.dat,w); for(i=0; in; i+) fprintf(wf,%3d,ai); fclose(wf);题目八结构体数组排序11. 学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:按分数降序排列学生的记录,高分在前,低分在后。#include #define N 16typedef struct char num10;
33、 int s; STREC;void fun( STREC a ) int i,j; STREC t; for(i=1;iN;i+) /*用冒泡法进行排序,进行N1次比较*/ for(j=0;jN-1;j+) /*在每一次比较中要进行N1次两两比较*/ if(aj.saj+1.s) t=aj;aj=aj+1;aj+1=t; /*按分数的高低排列学生的记录,高分在前*/main() STREC sN=GA005,85,GA003,76,GA002,69,GA004,85,GA001,91,GA007,72,GA008,64,GA006,87,GA015,85,GA013,91,GA012,64,
34、GA014,91,GA011,66,GA017,64,GA018,64,GA016,72; int i;FILE *out ; fun( s ); printf(The data after sorted :n); for(i=0;iN; i+) if( (i)%4=0 )printf(n); printf(%s %4d ,si.num,si.s); printf(n); out = fopen(out.dat,w) ; for(i=0;iN; i+) if( (i)%4=0 & i) fprintf(out, n); fprintf(out, %4d ,si.s); fprintf(out,
35、n); fclose(out) ;题目八结构体数组排序23.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun ,其功能是:把低于平均分的学生数据放入b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。#include #define N 8typedef struct char num10; double s; STREC;double fun( STREC *a, STREC *b, int *n ) int i,j=0; double av=0.0; for(i=0;iN;i+) av=av+ai.s; av=av/N; /*
36、求平均值*/ for(i=0;iN;i+) if(ai.sav) bj+=ai;/*将低于平均值的学生记录存入结构体b中*/ *n=j; /*指针传回低于平均值的学生人数*/ return av; /*返回平均值*/main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85, GA01,91,GA07,72,GA08,64,GA06,87; STREC hN,t;FILE *out ; int i,j,n; double ave; ave=fun( s,h,&n ); printf(The %d student data which is lower than %7.3f:n,n,ave); for(i=0;in; i+) printf(%s %4.1fn,hi.num,hi.