收藏 分销(赏)

2023年全国计算机二级C语言程序设计题.doc

上传人:二*** 文档编号:4513990 上传时间:2024-09-26 格式:DOC 页数:148 大小:388.04KB 下载积分:5 金币
下载 相关 举报
2023年全国计算机二级C语言程序设计题.doc_第1页
第1页 / 共148页
本文档共148页,全文阅读请下载到手机保存,查看更方便
资源描述
目录 题目一“回文”字符串 3 题目二迭代法求给定多项式值 4 题目三迭代法求给定方程根 4 题目四二维数组三角元素操作1 5 题目四二维数组三角元素操作2 6 题目四二维数组三角元素操作3 7 题目五二维数组元素求最值 8 题目六二维数组周边元素1 8 题目六二维数组周边元素2 9 题目七二维数组转一维数组1 10 题目七二维数组转一维数组2 11 题目七二维数组转一维数组3 12 题目七二维数组转一维数组4 13 题目八构造体数组排序1 14 题目八构造体数组排序2 14 题目八构造体数组排序3 15 题目八构造体数组排序4 16 题目九构造体数组求最值1 17 题目九构造体数组求最值2 18 题目九构造体数组求最值3 18 题目九构造体数组求最值4 19 题目十构造体数组筛选 19 题目十一构造体数组字符串比较 20 题目十二矩阵操作1 21 题目十二矩阵操作2 22 题目十三类似素数判断1 23 题目十三类似素数判断2 23 题目十四累加累乘求和1 23 题目十四累加累乘求和2 24 题目十四累加累乘求和3 24 题目十四累加累乘求和4 25 题目十四累加累乘求和5 25 题目十四累加累乘求和6 26 题目十四累加累乘求和7 27 题目十四累加累乘求和8 27 题目十四累加累乘求和9 28 题目十四累加累乘求和10 28 题目十四累加累乘求和11 29 题目十四累加累乘求和12 29 题目十四累加累乘求和13 30 题目十四累加累乘求和14 30 题目十四累加累乘求和15 31 题目十四累加累乘求和16 31 题目十五链表1 32 题目十五链表2 33 题目十六删除整数位某数位 34 题目十七删除字符串中指定字符1 34 题目十七删除字符串中指定字符2 35 题目十七删除字符串中指定字符3 35 题目十七删除字符串中指定字符4 36 题目十七删除字符串中指定字符5 36 题目十七删除字符串中指定字符6 37 题目十七删除字符串中指定字符7 37 题目十七删除字符串中指定字符8 38 题目十七删除字符串中指定字符9 38 题目十七删除字符串中指定字符10 39 题目十七删除字符串中指定字符11 39 题目十七删除字符串中指定字符12 40 题目十七删除字符串中指定字符13 41 题目十七删除字符串中指定字符14 41 题目十七删除字符串中指定字符15 42 题目十七删除字符串中指定字符16 43 题目十七删除字符串中指定字符17 43 题目十七删除字符串中指定字符18 44 题目十八数字字符串转整数1 45 题目十八数字字符串转整数2 45 题目十九素数鉴定1 46 题目十九素数鉴定2 46 题目十九素数鉴定3 47 题目二十记录问题 48 题目二十一小数位操作 48 题目二十二一维数组或字符串排序1 49 题目二十二一维数组或字符串排序2 50 题目二十二一维数组元素筛选1 50 题目二十二一维数组元素筛选2 51 题目二十二一维数组元素筛选3 51 题目二十二一维数组元素筛选4 52 题目二十二一维数组元素筛选5 52 题目二十二一维数组元素筛选6 53 题目二十二一维数组元素筛选7 54 题目二十二一维数组元素筛选8 54 题目二十二一维数组元素筛选9 55 题目二十三一维数组元素筛选 55 题目二十五一维数组最值求解1 56 题目二十五一维数组最值求解2 57 题目二十五一维数组最值求解3 57 题目二十六移动问题1 58 题目二十六移动问题2 58 题目二十七整数合并1 59 题目二十七整数合并2 59 题目二十七整数合并3 60 题目二十七整数合并4 60 题目二十七整数合并5 60 题目二十七整数合并6 61 题目二十七整数合并7 61 题目二十七整数合并8 62 题目二十八字符串长度比较1 62 题目二十八字符串长度比较2 62 题目二十九字符串逆置 63 题目三十字符串计数 64 题目三十一字符串连接1 64 题目三十一字符串连接2 65 题目三十一字符串连接3 66 题目三十二字符串中指定字符查找 66 题目三十三字母大小判断及转换 67 题目一“回文”字符串 3. 请编写函数fun,该函数功能是:判断字符串与否为回文,若是,则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。回文是指顺读和倒读都同样字符串。 例如,字符串LEVEL是回文,而字符串123312就不是回文。 #include <stdio.h> #define N 80 int fun(char *str) { int i,n=0,fg=1; char *p=str; while (*p) /*将指针p置位到字符串末尾,并记录字符数*/ { n++; p++; } for(i=0;i<n/2;i++) /*循环比较字符*/ if(str[i]==str[n-1-i]) ; /*相似,什么都不作*/ else /*不同,直接跳出循环*/ { fg=0; break; } return fg; } main() { char s[N]; FILE *out; char *test[]={"1234321","123421","123321","abcdCBA"}; int i; printf("Enter a string :"); gets(s); printf("\n\n"); puts(s); if(fun(s)) printf("YES\n"); else printf("NO\n"); /************************************/ out=fopen("out.dat","w"); for(i=0;i<4;i++) if(fun(test[i])) fprintf(out,"YES\n"); else fprintf(out,"NO\n"); fclose(out); /************************************/ } 题目二迭代法求给定多项式值 3.编写函数fun,其功能是:依照如下公式求π值(规定精度0.0005,即某项不大于0.0005时停止迭代)。 程序运营后,若输入精度0.0005,则程序应输出为3.14…。 #include <stdio.h> #include <math.h> 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;void NONO (); printf("Input eps:") ; scanf("%lf",&x);printf("\neps = %lf,PI=%lf\n",x,fun(x)); NONO(); } 题目三迭代法求给定方程根 3. 编写函数fun,其功能是:运用下面简朴迭代办法求方程cos(x)-x=0一种实根。 迭代环节如下: (1)取x1初值为0.0; (2)x0=x1,将x1值赋给x0; (3)x1=cos(x0),求出一种新x1; (4)若x0-x1绝对值不大于0.000001,执行步聚(5),否则执行步聚(2); (5)所求x1就是方程cos(x)-x=0一种实根,作为函数值返回。 程序将输出成果Root=0.739086。 #include <math.h> #include <stdio.h> double fun() { double x0,x1; x1=0.0; do { x0=x1; x1=cos(x0); }while(fabs(x0-x1)>=1e-6); return x1; } main() { void NONO ( ); printf("Root =%f\n",fun()); NONO(); } 题目四二维数组三角元素操作1 3. 程序定义了N×N二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数功能是:使数组左下半三角元素中值乘以n。例如,若n值为3,a数组中值为: 则返回主程序后a数组中值应为:   #include <stdio.h> #include <conio.h> #include <stdlib.h> #define N 5 void fun(int a[ ][N],int n) { int i,j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]=a[i][j]*n; } main() { int a[N][N],n,i,j; FILE *out; printf("***** The array *****\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) { a[i][j]=rand()%10; printf("%4d",a[i][j]); } printf("\n"); } n=rand()%4; printf("n=%4d\n",n); fun(a,n); printf("*****THE RESULT*****\n"); for(i=0;i<N;i++) { for (j=0;j<N;j++) printf("%4d",a[i][j]); printf("\n"); } /******************************/ out=fopen("out.dat","w"); for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=i*j+1; fun(a,9); for(i=0;i<N;i++) { for(j=0;j<N;j++) fprintf(out,"%4d",a[i][j]); fprintf(out,"\n"); } fclose(out); /******************************/ } 题目四二维数组三角元素操作2 3. 下列程序定义了N×N二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数功能是:将数组左下半三角元素中值所有置成0。例如a数组中值为: 1 9 7 2 3 8 4 5 6 则返回主程序后a数组中值应为: 0 9 7 0 0 8 0 0 0 #include <conio.h> #include <stdio.h> #include <stdlib.h> #define N 5 void fun (int a[][N]) { int i,j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]=0; /*将数组左下半三角元素中值所有置成0*/ } void main() { FILE *wf; int a[N][N],i,j; int b[N][N]={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"); for(i=0;i<N;i++) /*产生一种随机5*5矩阵*/ { for(j=0;j<N;j++) {a[i][j]=rand()%10; printf("%4d",a[i][j]); } printf("\n"); } fun(a); printf("THE RESULT\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%4d",a[i][j]); printf("\n"); } /******************************/ wf=fopen("out.dat","w"); fun(b); for(i=0;i<N;i++) { for(j=0;j<N;j++) fprintf(wf,"%4d",b[i][j]); fprintf(wf,"\n"); } fclose(wf); /*****************************/ } 题目四二维数组三角元素操作3 3. 下列程序定义了N×N二维数组,并在主函数中自动赋值。请编写函数fun(int a[ ][N],int m),该函数功能是使数组右上半三角元素中值乘以m。 例如,若m值为2,a数组中值为: 则返回主程序后a数组中值应为: #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 5 void fun(int a[][N],int m) { int i,j; for(j=0;j<N;j++) for(i=0;i<=j;i++) a[i][j]=a[i][j]*m; /*右上半三角元素中值乘以m*/ } main() { int a[N][N],m,i,j; FILE *out; printf("*****The array*****\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) {a[i][j]=rand()%20; printf("%4d",a[i][j]); } printf("\n"); } m=rand()%4; printf("m=%4d\n",m); fun(a,m); printf("THE RESULT\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%4d",a[i][j]); printf("\n"); } /******************************/ out=fopen("out.dat","w"); for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=i*j; fun(a,8); for(i=0;i<N;i++) { for(j=0;j<N;j++) fprintf(out,"%4d",a[i][j]); fprintf(out,"\n"); } fclose(out); /******************************/ } 题目五二维数组元素求最值 3. 请编写函数fun,其功能是:找出2×M整型二维数组中最大元素值,并将此值返回调用函数。 #include <stdio.h> #define M 4 int fun (int a[][M]) { int i,j,max=a[0][0]; for(i=0;i<2;i++) for(j=0;j<M;j++) if(max<a[i][j]) max=a[i][j]; return max; } main( ) { int arr[2][M]={5,8,3,45,76,-4,12,82} ;void NONO (); printf("max =%d\n",fun(arr)) ; NONO( ) ; } void NONO () {/* 本函数用于打开文献,输入数据,调用函数,输出数据,关闭文献。 */ FILE *wf ; int arr[][M]={5,8,3,90,76,-4,12,82} ; wf = fopen("out.dat","w") ; fprintf(wf,"max=%d\n",fun(arr)) ; fclose(wf) ; } 题目六二维数组周边元素1 3.下列程序定义了N×N二维数组,并在主函数中赋值。请编写函数fun,函数功能是:求出数组周边元素平均值并作为函数值返回给主函数中s。例如,若a 数组中值为: 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 则返回主程序后s值应为3.375。 #include<stdio.h> #include<conio.h> #include<stdlib.h> #define N 5 double fun (int w[][N]) { int i,j,k=0; double av=0.0; for(i=0;i<N;i++) for(j=0;j<N;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一种为0或N-1,则它一定是周边元素*/ {av=av+w[i][j]; /*将周边元素求和*/ k++; } return av/k; /*求周边元素平均值*/ } void main() { FILE *wf; int a[N][N]={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;i<N;i++) { for (j=0;j<N;j++) {printf("%4d ",a[i][j]);} printf("\n "); } s=fun(a); printf("*****THE RESULT*****\n "); printf("The sum is :%lf\n ",s); /******************************/ wf=fopen("out.dat","w"); fprintf (wf,"%lf",s); fclose(wf); /*****************************/ } 题目六二维数组周边元素2 3. 请编写函数fun,该函数功能是:求出二维数组周边元素之和,作为函数值返回。二维数组中值在主函数中赋予。 例如,若二维数组中值为: 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。 #include<conio.h> #include<stdio.h> #include<stdlib.h> #define M 4 #define N 5 int fun( int a [M][N]) { int i,j,sum=0; for(i=0;i<M;i++) for(j=0;j<N;j++) if(i==0||i==M-1||j==0||j==N-1) /*只要下标中有一种为0或M-1或N-1,则它一定是周边元素*/ sum=sum+a[i][j]; /*将周边元素相加*/ return sum; } void main() { FILE *wf; int aa[M][N]={{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;i<M;i++) {for (j=0;j<N;j++) printf("%6d ",aa[i][j]); printf("\n "); } y=fun(aa); printf("\nThe sun:%d\n ",y); printf("\n "); /******************************/ wf=fopen("out.dat","w"); fprintf (wf,"%d",y); fclose(wf); /*****************************/ } 题目七二维数组转一维数组1 3.请编写函数fun,该函数功能是:将M行N列二维数组中数据,按列顺序依次放到一维数组中。一维数 组中数据个数存储在形参n所指存储单元中。 例如,若二维数组中数据为 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中内容应是: 33 44 55 33 44 55 33 44 55 33 44 55 #include <stdio.h> void fun(int (*s)[10],int *b,int *n,int mm,int nn) { int i,j; for(j=0;j<nn;j++) /*将二维数组中数据按列顺序依次放入一维数组中*/ for(i=0;i<mm;i++) { b[*n]=*(*(s+i)+j); *n=*n+1; /*通过指针返回元素个数*/ } } void main() { int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j; int a[100]={0},n=0 ; FILE *out; printf("The matrix:\n"); for (i=0;i<3;i++) {for (j=0;j<4;j++) printf("%3d",w[i][j]); printf("\n"); } fun(w,a,&n,3,4); /******************************/ out=fopen("out.dat","w"); printf("The A array:\n"); for(i=0;i<n;i++) { printf("%3d",a[i]); fprintf(out,"%d ",a[i]); } printf("\n\n"); fclose(out); /******************************/ } 题目七二维数组转一维数组2 3. 请编写函数fun,该函数功能是:将M行N列二维数组中字符数据,按列顺序依次放到一种字符串中。 例如,若二维数组中数据为 W W W W S S S S H H H H 则字符串中内容应是:WSHWSHWSHWSH。 #include<stdio.h> #define M 3 #define N 4 void fun(char (*s)[N],char *b) { int i,j,k=0; for(i=0;i<N;i++) /*按列顺序依次放到一种字符串中*/ for(j=0;j<M;j++) b[k++]=s[j][i]; b[k]='\0'; } void main() { FILE *wf; char a[100],w[M][N]={{ 'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; int i,j; printf("The matrix:\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%3c",w[i][j]); printf("\n"); } fun(w,a); printf("The A string:\n"); puts(a); printf("\n\n"); /******************************/ wf=fopen("out.dat","w"); fprintf(wf,"%s",a); fclose(wf); /*****************************/ } 题目七二维数组转一维数组3 1. 请编一种函数void fun(int tt[M][N],int pp[N]),tt指向一种M行N列二维数组,求出二维数组每列中最大元素,并依次放入pp所指一维数组中。二维数组中数已在主函数中给出。 #include <conio.h> #include <stdio.h> #include <stdlib.h> #define M 3 #define N 4 void fun(int tt[M][N],int pp[N]) { int i,j,max; for(j=0;j<N;j++) { max=tt[0][j]; /*假设各列中第一种元素最大*/ for(i=0;i<M;i++) if(tt[i][j]>max) /*假如各列中元素比最大值大,则将这个更大元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max; /*将各列最大值依次放入pp数组中*/ } } main( ) { void NONO( ); int t[M][N]={{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;i<M;i++ ){ for( j=0;j<N;j++ ) printf ( "%6d",t[i][j] ); printf("\n"); } fun ( t,p ); printf( "\nThe result is:\n" ); for ( k = 0;k < N;k++ ) printf ( " %4d ",p[ k ] ); printf("\n"); NONO( ); } void NONO( ) {/* 请在此函数内打开文献,输入测试数据,调用 fun 函数, 输出数据,关闭文献。 */ int i,j,k,m,t[M][N],p[N] ; FILE *rf,*wf ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(m = 0 ;m < 10 ;m++) { for( i=0;i<M;i++ ){ for( j=0;j<N;j++ ) fscanf (rf,"%6d",&t[i][j] ); } fun ( t,p ) ; for ( k = 0;k < N;k++ ) fprintf (wf," %4d ",p[ k ] ) ; fprintf(wf,"\n") ; } fclose(rf) ; fclose(wf) ; } 题目七二维数组转一维数组4 3.请编写函数fun,该函数功能是:将M行N列二维数组中数据,按行顺序依次放到一维数组中,一维数组中数据个数存储在形参n所指存储单元中。 例如,若二维数组中数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中内容应当是:33 33 33 33 44 44 44 44 55 55 55 55。 #include <stdio.h> void fun (int (*s)[10],int *b,int *n,int mm,int nn) { int i,j,k=0; for(i=0;i<mm;i++) /*将二维数组s中数据按行顺序依次放到一维数组b中*/ for(j=0;j<nn;j++) b[k++]=s[i][j]; *n=k; /*通过指针返回元素个数*/ }void main() { FILE *wf; int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j; int a[100]={0},n=0 ; printf("The matrix:\n"); for (i=0;i<3;i++) {for (j=0;j<4;j++) printf("%3d",w[i][j]); printf("\n"); } fun(w,a,&n,3,4); printf("The A array:\n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("\n\n"); /******************************/ wf=fopen("out.dat","w"); for(i=0;i<n;i++) fprintf(wf,"%3d",a[i]); fclose(wf); /*****************************/ } 题目八构造体数组排序1 1. 学生记录由学号和成绩构成,N名学生数据已放入主函数中构造体数组s中,请编写函数fun,其功能是:按分数降序排列学生记录,高分在前,低分在后。 #include <stdio.h> #define N 16 typedef struct { char num[10]; int s; } STREC; void fun( STREC a[] ) { int i,j; STREC t; for(i=1;i<N;i++) /*用冒泡法进行排序,进行N-1次比较*/ for(j=0;j<N-1;j++) /*在每一次比较中要进行N-1次两两比较*/ if(a[j].s<a[j+1].s) {t=a[j];a[j]=a[j+1];a[j+1]=t;} /*按分数高低排列学生记录,高分在前*/ } main() { STREC s[N]={{"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},{"GA018",64},{"GA016",72}}; int i;FILE *out ; fun( s ); printf("The data after sorted :\n"); for(i=0;i<N;i++) { if( (i)%4==0 )printf("\n"); printf("%s %4d ",s[i
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服