二级C语言笔试复习(完善程序部分)_第1页
二级C语言笔试复习(完善程序部分)_第2页
二级C语言笔试复习(完善程序部分)_第3页
二级C语言笔试复习(完善程序部分)_第4页
二级C语言笔试复习(完善程序部分)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、二级二级C语言笔试复习语言笔试复习(完善程序部分完善程序部分) 1. 以下程序中以下程序中judge函数的功能是判断函数的功能是判断x指向的有指向的有n个元素的个元素的 int 型数组中各元素之间的逻辑关系型数组中各元素之间的逻辑关系: 若若n个元素的值均相等则输个元素的值均相等则输 出出“allelements are same”;若;若n个元素的值无序则输出个元素的值无序则输出“no order”; 若若n个元素的值按升序排列则输出个元素的值按升序排列则输出 “ascend”;若;若 n个元素的值个元素的值 按降序排列则输出按降序排列则输出 “descend”。 void main( )

2、int a5= 1, 2, 3, 4, 5 , b5= 5, 4, 3, 2, 1 , c5= 1, 4, 2, 3, 5 , d5= 2, 2, 2, 2, 2 ; judge( a, 5 ); judge( b, 5 ); judge( c, 5 ); judge( d, 5 );#includevoid judge( , int n) int f=0, i=0; while( in-1&xi=xi+1 ) if( i+= ) printf(“n all elements are same”); return; if( xixi+1 ) f=1; for( ; i xi+1 | !

3、f & ) printf( “n no order” ); return; else if( ) printf( n ascend ); return; else if(xixi+1&!f&i=n-2) printf( n descend ); return; int *x n-2 xixi+1&f&i=n-2 xixi+1 a: 1, 2, 3, 4, 5 b: 5, 4, 3, 2, 1c: 1, 4, 2, 3, 5 d: 2, 2, 2, 2, 2 2. 下列程序的功能是判断一个下列程序的功能是判断一个n 阶对称方阵是否双对称矩阵。阶对称方阵是否

4、双对称矩阵。4 阶对称矩阵是指阶对称矩阵是指 aij=aji (1i4, 1j4)。4阶双对称矩阵是阶双对称矩阵是 指一个指一个4阶对称矩阵的第阶对称矩阵的第1列与第列与第4列对换,第列对换,第2列与第列与第3列对换列对换 后仍然是对称矩阵。函数后仍然是对称矩阵。函数issym(int mN,int n)的功能是判断的功能是判断 二维数组二维数组m中存放的一个中存放的一个n阶方阵是否为对称矩阵,如果是则阶方阵是否为对称矩阵,如果是则 函数返回值函数返回值1,否则返回值,否则返回值0。函数。函数 exchange (int aN,int n) 的功能是将二维数组的功能是将二维数组a中存放的一个中

5、存放的一个n阶矩阵作横向翻转阶矩阵作横向翻转, 即:即: 将矩阵的第将矩阵的第1列与第列与第n列对换,第列对换,第2列与第列与第n-1列对换,列对换,直,直 到到n/2列为止。列为止。例如:例如: 对称矩阵对称矩阵 1123103223013211是双对称矩阵是双对称矩阵而对称矩阵而对称矩阵 5321369129811 110不是双对称矩阵。不是双对称矩阵。 #include#define N 10void exchange(int aN,int n) int i, j, t; for( j=0; jn/2; j+ ) for( i=0; in; i+ ) t=aij; =ain-j-1; a

6、in-j-1=t; aijint issym( int mN, int n ) int i, j; for( i=0; in-1; i+ ) for( j=i; jn; j+ ) if( ) return 0; ; /*对称对称 矩阵矩阵 判断判断*/mij!=mjireturn 1void main( ) int aNN; int n=4, i, j, r1, r2; for( i=0; in; i+ ) for( j=0; jn; j+ ) scanf( “%d”, &aij ); for( i=0; in; i+ ) for( j=0; jnext!=NULL ) p1=p; p

7、2=p- -next; while( p2!=NULL ) if ( p2- -x=p- -x ) p1- -next= ; free(p2); p2=p1- -next; else p1=p2; p2=p2- -next; p= ; return head; headp2- -next p- -next4. 程序功能:程序功能:寻找具有下列特性的四位正整数寻找具有下列特性的四位正整数, ,其百位数为其百位数为0, 去掉百位数去掉百位数0可得到一个可得到一个3位正整数位正整数, ,而该三位正整数乘以而该三位正整数乘以9 等于原四位正整数。例如等于原四位正整数。例如, ,60756759, 所以

8、所以6075是具有是具有 上述特性的正整数。上述特性的正整数。#include int fun( int n ) int a4, i, k; k=n; for( i=0; k0; i+ ) ai= ; k/=10 ; if( &( a3*100+a1*10+a0)*9=n ) return 1; else return 0; k%10 a2=0main( ) int i, n=0; for( i=1000; i10000; i+ ) if( fun( i ) ) printf ( %4dt , i ); printf ( n );5. 程序功能程序功能: :用牛顿迭代法求方用牛顿迭代法

9、求方程程 3x3-3x2+x-1=0 在在2.0附近的附近的一个实根,精度要求为一个实根,精度要求为10-5。函。函数数F求求f(x)的值的值, ,函数函数F1求求f(x)的的一阶导数值。牛顿迭代公式一阶导数值。牛顿迭代公式: :#include #include float F( float x ) return x*(3*x*(x-1)+1)-1;float F1( float x ) return 9*x*x-6*x+1; )0()0(0 xfxfxx float newtoon ( float x ) float f, f1, x0; do ; f=F(x0); f1= F1(x0);

10、 x= ; while( fabs( x-x0 )1e-5 ); return x;x0=x x0-f/f1main( ) float x0 ; scanf( %f , &x0 ); printf (“The result =%.2fn” , newtoon( x0 );6程序功能:选票统计。二维数组程序功能:选票统计。二维数组s中保存了投票后中保存了投票后10张有效张有效 选票上所填写的候选人姓名,结构数组选票上所填写的候选人姓名,结构数组stat中保存统计结果。中保存统计结果。 程序运行后的输出结果是程序运行后的输出结果是“ “ liu: 2 wang: 5 zhao: 3 ”。#

11、include #include typedef struct char name20; /*候选人姓名候选人姓名*/ int count; /*候选人得票数候选人得票数*/ COUNT ;main( ) char s1020= “liu”, “wang”, “zhao”, “zhao”, “wang”, “liu” , “wang”, “zhao”, “wang”, “wang” ; COUNT stat5=0; int i, n; n=count( s, 10, stat ); for( i=0; in; i+ ) printf( %s:%dt , , stati.c

12、ount);int count( char x 20, int n, ) int i, j, k=0; for( i=0; ; i+ ) for( j=0; j=k ) ; stk.count+ ; k+; return k; COUNT st 或或 COUNT *st in stj.count+ strcpy( , xi )7设设一个单向链表结点的数据类型定义为:一个单向链表结点的数据类型定义为: struct node int x; struct node *next; ; fun 函数从函数从h指向的链表第二个结点开始遍历所有结点,指向的链表第二个结点开始遍历所有结点,当

13、遇到当遇到x值为奇数的结点时,将该结点移到值为奇数的结点时,将该结点移到h链表第一个结点链表第一个结点之前,函数返回链表首结点地址。之前,函数返回链表首结点地址。 print函数输出函数输出p指向的链表中所有结点的指向的链表中所有结点的x值。值。程序运行程序运行后的输出结果是后的输出结果是“1 3 4 2”。#define N 4main( ) struct node aN= 4, 3, 2, 1 , *head=a; int i, num; for( i=0; inext; printf(n); p p- -x struct node *fun (struct node *h ) struc

14、t node *p1, *p2, *p3; p1=h; p2=p1- -next; while( p2 ) if( p2- -x%2 ) p3=p2; p1- -next= ; p2=p1- -next; p3- -next=h; ; else p1=p2; p2=p2- -next; return h; p2- -next 或或 p3- -nexth=p38.8. 某餐厅用苹果、桔子、香蕉、菠萝、梨五种水果制作水果拼某餐厅用苹果、桔子、香蕉、菠萝、梨五种水果制作水果拼 盘,要求每个拼盘中恰有三种不同水果。以下程序的功能就盘,要求每个拼盘中恰有三种不同水果。以下程序的功能就 是计算可以制作出多

15、少种这样的水果拼盘是计算可以制作出多少种这样的水果拼盘, ,并列出组合方式。并列出组合方式。#include typedef enumapple, orange, banana, pineapple, pear Fruit;main( ) fruits =apple, orange, banana, pineapple, pear; Fruit x, y, z, p; int k=0, i; for( x= ; x=pear; x+ ) for( y=x+1; y=pear; y+ ) for( z=y+1; z=pear; z+ ) printf( n%d %s %s %s , +k, fr

16、uitsx, fruitsy, fruitsz ); char * apple 753217165432121514321213121216 9以下程序通过给出的公式计算以下程序通过给出的公式计算 的近似值,计算过程在所的近似值,计算过程在所 加项的值小于加项的值小于10-10时终止。时终止。#include main( ) double sum=0.5, t, t1, t2, t3; int odd=1, even=2; t=t1=t2=1.0; t3=0.5; while ( t1e-10 ) t1= ; odd+=2; even+=2; t2=1.0/odd; t3= ; t=t1*t2

17、*t3; sum+=t; printf (nPI=%.8lf, ); t1*odd/even sum*6 t3*0.5*0.5 753217165432121514321213121216 10. 以下程序中函数以下程序中函数 long fun(char *str) 的功能是:的功能是: 自左至右自左至右 取出非空字符串取出非空字符串 str 中的所有数字字符,中的所有数字字符, 将这些数字字符将这些数字字符 组成一个不超过组成一个不超过8位的十进制整数并输出。位的十进制整数并输出。 例如例如, ,字符串字符串str为为“efg32gh76.jbejing08t5y4u2”,程序输,程序输出:

18、出: 32760854。#include long fun( char *str ) int i=0; long k=0; char *p=str; while( *p!=0& ) if( *p=0&*p=9 ) k= +*p-0; +i; ; return k; void main( ) char x =efg32gh76.jbejing08t5y4u2; printf( %ldn, fun(x) );i8 k*10 P+ 11. 设某单向链表结点的数据结构定义为设某单向链表结点的数据结构定义为: : typedef struct node char ch; struct n

19、ode *next; linklist; 以下程序首先建立一个单向链表以下程序首先建立一个单向链表head(如图(如图1所示),该链所示),该链表每个结点中保存表每个结点中保存x数组的一个元素值数组的一个元素值;输出输出head链表中每个结点链表中每个结点的值的值;再将再将head链表变换为倒序链表(如图链表变换为倒序链表(如图2所示),输出倒序后所示),输出倒序后head链表中每个结点的值。链表中每个结点的值。图图1图图2headD C BAheadA B CD head链表倒序算法提示:链表倒序算法提示:(1)使使hp指向指向head链表,置链表,置head为为0(head链表为空链表)。

20、链表为空链表)。(2)从从hp指向的链表第一个结点开始,依指向的链表第一个结点开始,依次从次从hp链表中删除每个结点,将所删除的结点再依次插入到链表中删除每个结点,将所删除的结点再依次插入到head链表第一个结点之前,直到链表第一个结点之前,直到hp链表为空时结束。链表为空时结束。#include typedef struct node char ch; struct node *next; linklist; void print( linklist *phead ) while(phead) printf( %c , phead- -ch ); phead=phead-next; prin

21、tf(n); main( ) linklist *head; char x=ABCD; head=create(x); print(head); head=revlist(head); print(head);linklist *create( char x ) int i; linklist *pt, *pr, *p=NULL; for( i=0; xi!=0; i+ ) pt=(linklist*)malloc(sizeof(linklist); pt- -ch=xi; pt- -next=NULL; if( p=NULL ) ; pr=pt; else pr- -next=pt; ; r

22、eturn p;p=ptpr=pr- -nextlinklist *revlist(linklist *head) linklist *hp, *p=NULL; hp=head; head= ; while(hp) p=hp; hp=hp- -next; p- -next=head; ; return head; NULLhead=p 12. 以下程序的功能是:求以下程序的功能是:求a数组中前数组中前4个元素之和及后个元素之和及后6个元素个元素 之之和。试完善程序以达到要求的功能。和。试完善程序以达到要求的功能。 int fsum( int *array, int n ) int i, s;

23、s=0; for( i=0; ; i+ ) s+=arrayi; return s; void main(void) int a15=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ; int sumh, sumt; sumh=fsum( a, 4 ); sumt= ; printf( “%d %dn”, sumh, sumt ); in fsum( &a9, 6 ) 或或 fsum( a+9, 6 ) 13. 以下程序对二维数组以下程序对二维数组a 中存储的中存储的N N 矩阵做如下操作:先矩阵做如下操作:先 将每一行中值最大的元素

24、与该行位于主对角线处的元素交将每一行中值最大的元素与该行位于主对角线处的元素交 换值,然后对主对角线上的所有元素排序使其自左上角到换值,然后对主对角线上的所有元素排序使其自左上角到 右下角升序排列右下角升序排列, ,最后输出排序后主对角线上各元素的值。最后输出排序后主对角线上各元素的值。 试完善程序以达到要求的功能。试完善程序以达到要求的功能。 #include #define N 5 void fun(int xN, int n ); void main( ) int aNN=10, 25, 24, 13, 23, 11, 22, 12, 21, 14, 20, 15, 19, 16, 18

25、, 17, 9, 4, 5, 3 , 2, 1, 6, 7, 8, i ; fun( a, N ); for( i=0; iN; i+ ) printf( %3d, aii ); printf(n); void fun( int x N, int n ) int i, j, t, arr, col; for( i=0; in; i+ ) arr=xi0; col=0; for( j=0; j=arr ) arr=xij; ; t=xii; ; xicol=t; for( i=0; in-1; i+ ) for( j=i+1; jxjj xii=xicol 14. 以下程序中函数以下程序中函数r

26、eplace 的功能是:将字符串的功能是:将字符串 s 中所有属于中所有属于 字符串字符串s1中的字符都用中的字符都用s2中的对应位置的字符替换。假如中的对应位置的字符替换。假如s 为为“ABCBA”,s1为为“AC”,s2 为为 “ac”,则调用,则调用replace函数函数 后,字符串后,字符串s的内容将变换为的内容将变换为“aBcBa”。试完善程序以达。试完善程序以达到到 要求的功能。要求的功能。 #include #define MAX 20void replace( char *s, char *s1, char *s2 ) char *p; for( ; *s; s+ ) p=s1

27、; while( *p & ) p+; if( *p ) *s= ; void main( ) char sMAX=ABCBA, s1MAX=AC, s2MAX= ac; ; printf( The string of s is: ); printf( %sn, s );*p!=*s *(s2+p-s1) replace( s, s1, s2 ) 15. 以下程序的功能是:函数以下程序的功能是:函数 struct node * insert( struct node *head, struct node *p)将将p指向的结点作为首结点插入指向的结点作为首结点插入head 指向的链表中

28、。指向的链表中。main函数接收从键盘输入的一行字符,每函数接收从键盘输入的一行字符,每 接收一个字符后接收一个字符后,申请一个新结点保存该字符申请一个新结点保存该字符,并调用并调用insert 函数将新结点插入链表中。最后从表头开始依次输出该链函数将新结点插入链表中。最后从表头开始依次输出该链 表各结点成员表各结点成员c的值。试完善程序以达到要求的功能。的值。试完善程序以达到要求的功能。 #include #include struct node char c; struct node *next; ; struct node * insert(struct node *head, stru

29、ct node *p) if( head=NULL ) head=p; else ; head=p; return head; p- -next=head void main( ) struct node *insert( struct node *head, struct node *p ); char ch; struct node *head, *p; head=NULL; while( (ch=getchar( ) != n ) p=(struct node *)malloc( sizeof(struct node) ); =ch; p- -next=NULL; ; p=head; w

30、hile( p!=NULL ) printf(%c, p-c); ; p- -c head=insert( head, p ) p=p-next 16. 以下程序输出以下程序输出1001000范围内的回文素数。回文素数是指既范围内的回文素数。回文素数是指既 是回文数同时也是素数的整数。是回文数同时也是素数的整数。 例如,例如,131 既是回文数又是既是回文数又是 素数,因此素数,因此131是回文素数。是回文素数。 #include #include void main( ) int j, k=0; for(j=100; j=999; j+) if( ) printf( %dt, j ); if(+k%5=0) printf(n); prime_pal(j)int prime_pal(int n) int i, k= , m; for (i=2;i0) m=m*10+k%10; k= ; if(m=n) return 1; return 0;sqrt(n) n%i=0 k/1017. 以下程序中函数以下程序中函数 void strol(char xx) 的功能是:将的功能是:将xx指向的指向的 字符数组内的字符串中所有单词倒排(即:第一个单词与最字符数组内的字符串中所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论