《全国计算机二级C语言程序设计题-((-100%全中必过)(共85页).doc》由会员分享,可在线阅读,更多相关《全国计算机二级C语言程序设计题-((-100%全中必过)(共85页).doc(85页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上目录题目一“回文”字符串3. 请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串就不是回文。#include #define N 80 int fun(char *str) int i,n=0,fg=1; char *p=str; while (*p) /*将指针p置位到字符串末尾,并统计字符数*/ n+; p+; for(i=0;in/2;i+) /*循环比较字符*/ if(stri=strn-1-i) ; /*相同,什
2、么都不作*/ else /*不同,直接跳出循环*/ fg=0; break; return fg; main() char sN; FILE *out; char *test=,abcdCBA; int i; printf(Enter a string : ); gets(s); printf(nn); puts(s); if(fun(s)printf(YESn); elseprintf(NOn); /*/ out=fopen(out.dat,w); for(i=0;i4;i+) if(fun(testi)fprintf(out,YESn);elsefprintf(out,NOn); fclo
3、se(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=s1*n/(2*n+1); /*求多项式的每一项*/ s=s+s1; /*求和*/ n+; return 2*s;main( ) double x;voi
4、d 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的绝对值小于0.,执行步聚(5),否则执行步聚(2);(5)所求x1就是方程cos(x)x0的一个实根,作为函数值返回。程序将输出结果Root0.。#include
5、 #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),该函数的功能是:使数组左下半三角元素中的值乘以n。例如,若n的值为3,a数组中的值为: 则返回主程序后a数组中的值应为: #include #include #include
6、#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); printf(n); n=rand()%4; printf(n=%4dn,n); fun(a, n); printf(*THE RESULT*n); for(i=0; iN; i
7、+) 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. 下列程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),该函数的功能是:将数组左下半三角元素中的值全部置成0。例如a数组中的值
8、为: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,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)
9、; 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+) for(j=0;jN;j+) fprintf(wf,%4d,bij); fprintf(wf,n); fclose(wf);/*/题目四二维数组
10、三角元素操作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+) aij=aij*m; /*右上半三角元素中的值乘以m*/main() int aNN,m, i, j; FILE *out; printf
11、(*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); for(i=0;iN;i+) for(j=0;jN;j+)aij=i*j; fun(a,8); for(i=0;iN;i+) fo
12、r(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;main( ) int arr2M=5,8,3,45,76,-4,12,82 ;void NONO (); printf(ma
13、x =%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,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如,若a 数组中的值为:01279197452383145
14、68259141则返回主程序后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; /*求周边元素的平均值*/void main() FILE *wf; int aNN=0,1,2,7,9,1,9,7,4,5,2,3,8
15、,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 (wf,%lf,s); fclose(wf);/*/题目六二维数组周边元素23. 请编写函数fun,该函数的功能是:
16、求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为: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,则它一定是周边元素*/ sum=sum+aij; /*将周边元素相加*/ return sum; void main() FILE *
17、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,w); fprintf (wf,%d,y); fclose(wf);/*/题目七二维数组转一维数组13.
18、请编写函数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+) /*将二维数组中的数据按列的顺序依次放入一维数组中*/ for(i=0;imm;i+) b*n=*(*
19、(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); printf(The A array:n); for(i=0; in; i+) printf
20、(%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=0;iN;i+) /*按列的顺序依次放到一个字符串中*/ for(j=0;jM
21、;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); fprintf(wf,%s,a); fclose(wf);/*/题目七二维数组转一维
22、数组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) /*如果各列中的元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/ max=ttij; ppj=
23、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 ); for ( k = 0; k N; k+ ) printf (
24、%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 ); fun ( t, p ) ; for ( k = 0; k N; k+
25、) 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, int *b, int *n, int mm, int nn) int
26、 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); printf(n); fun(w,a,&n,3,4); printf
27、(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; int s; STREC;void fun( STRE
28、C 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,GA014,91,GA011,66,GA017,64,G
29、A018,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,n); fclose(out) ;题目八结构体数组排序2
30、3.学生的记录由学号和成绩组成,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; /*求平均值*/ for(i=0;iN;i+) if(ai.
31、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.s); printf(n); out = fopen(out.dat,w) ; fprintf(out, %dn%7.3fn, n, ave); for(i=0;in-1;i+) for(j=i+1;jhj.s) t=hi ;hi=hj; hj=t; for(i=0;in; i+) fprintf(out,%4.1fn,hi.s); fclose(out);题目八结构体数组排序33. 学生的记录由学号和成绩组成,N名学生的数据
限制150内