二级C语言笔试复习完善程序部分ppt课件

上传人:M****1 文档编号:567581421 上传时间:2024-07-21 格式:PPT 页数:35 大小:487.50KB
返回 下载 相关 举报
二级C语言笔试复习完善程序部分ppt课件_第1页
第1页 / 共35页
二级C语言笔试复习完善程序部分ppt课件_第2页
第2页 / 共35页
二级C语言笔试复习完善程序部分ppt课件_第3页
第3页 / 共35页
二级C语言笔试复习完善程序部分ppt课件_第4页
第4页 / 共35页
二级C语言笔试复习完善程序部分ppt课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《二级C语言笔试复习完善程序部分ppt课件》由会员分享,可在线阅读,更多相关《二级C语言笔试复习完善程序部分ppt课件(35页珍藏版)》请在金锄头文库上搜索。

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

2、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 | !f & ) printf( “n

3、 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 阶对称矩称矩阵是指是指 aij=aji (1i4, 1j4)。4阶双双对

4、称矩称矩阵是是 指指一一个个4阶对称称矩矩阵的的第第1列列与与第第4列列对换,第第2列列与与第第3列列对换 后后依依然然是是对称称矩矩阵。函函数数issym(int mN,int n)的的功功能能是是判判别 二二维数数组m中中存存放放的的一一个个n阶方方阵能能否否为对称称矩矩阵,假假设是是那么那么 函函数数前前往往值1,否否那那么么前前往往值0。函函数数 exchange (int aN,int n) 的的功功能能是是将将二二维数数组a中中存存放放的的一一个个n阶矩矩阵作作横横向向翻翻转, 即:即: 将将矩矩阵的的第第1列列与与第第n列列对换,第第2列列与与第第n-1列列对换,直直 到到n/2

5、列列为止。止。例如:例如: 对称矩阵对称矩阵 是双对称矩阵是双对称矩阵而对称矩阵而对称矩阵 不是双对称矩阵。不是双对称矩阵。 #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; ain-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; ; /*对对称称 矩阵矩

6、阵 判别判别*/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; jn; j+ ) printf( “%4d, aij ); printf(“n); r1=issym( a, n ); exchange( ); r2=issym( a, n); if( (r1+r2=2 ) ) printf( matrix is double symmetricn )

7、; else printf( matrix is not double symmetricn ); a , n4. 程序功能:程序功能:寻觅具有以下特性的四位正整数具有以下特性的四位正整数,其百位数其百位数为0, 掉百位数掉百位数0可得到一个三位正整数可得到一个三位正整数, 而而该三位正整数乘以三位正整数乘以9 等于原四位正整数。例如等于原四位正整数。例如,60756759, 所以所以6075是具有是具有 上述特性的正整数。上述特性的正整数。#include int fun( int n ) int a4, i, k; k=n; for( i=0; k0; i+ ) ai= ; k/=10 ;

8、 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. 程程序序功功能能:用用牛牛顿顿迭迭代代法法求求方方程程 3x3-3x2+x-1=0 在在2.0附附近近的的一一个个实实根根,精精度度要要求求为为10-5。函函数数F求求f(x)的的值值,函函数数F1求求f(x)的一阶导数值。牛顿迭代公式的一阶导数值。牛顿迭代公式:#incl

9、ude #include float F( float x ) return x*(3*x*(x-1)+1)-1;float F1( float x ) return 9*x*x-6*x+1; float newtoon ( float x ) float f, f1, x0; do ; f=F(x0); f1= F1(x0); 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 );

10、6程序功能:程序功能:选票票统计。二。二维数数组s中保管了投票后中保管了投票后10张有效有效 选票上所填写的候票上所填写的候选人姓名,构造数人姓名,构造数组stat中保管中保管统计结果。果。 程序运程序运转后的后的输出出结果是果是“ liu: 2 wang: 5 zhao: 3 。#include #include typedef struct char name20; /*候选人姓名候选人姓名*/ int count; /*候选人得票数候选人得票数*/ COUNT ;main( ) char s1020= “liu, “wang, “zhao , “zhao , “wang, “liu ,

11、“wang, “zhao, “wang, “wang ; COUNT stat5=0; int i, n; n=count( s, 10, stat ); for( i=0; in; i+ ) printf( %s:%dt , stati.name , stati.count);int count( char x 20, int n, (23) ) 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( stk

12、.name, xi )7设一个一个单向向链表表结点的数据点的数据类型定型定义为: struct node int x; struct node *next; ; fun 函函数数从从h指指向向的的链表表第第二二个个结点点开开场遍遍历一一切切结点点,当当遇遇到到x值为奇奇数数的的结点点时,将将该结点点移移到到h链表表第第一一个个结点点之前,函数前往之前,函数前往链表首表首结点地址。点地址。 print函函数数输出出p指指向向的的链表表中中一一切切结点点的的x值。程程序序运运转后后的的输出出结果是果是“1 3 4 2。#define N 4main( ) struct node aN= 4, 3,

13、 2, 1 , *head=a; int i, num; for( i=0; inext; printf(n); p p-x p-x struct node *fun (struct node *h ) struct 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. 某餐厅用苹果、桔子、香蕉、菠萝、梨五种水果制造水

14、果拼某餐厅用苹果、桔子、香蕉、菠萝、梨五种水果制造水果拼9.9. 盘盘,要要求求每每个个拼拼盘盘中中恰恰有有三三种种不不同同水水果果。以以下下程程序序的的功功能能就就10.10. 是是计计算算可可以以制制造造出出多多少少种种这这样样的的水水果果拼拼盘盘, ,并并列列出出组组合合方方式。式。#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

15、( 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, fruitsx, fruitsy, fruitsz ); char * apple9以下程序经过给出的公式计算以下程序经过给出的公式计算 的近似值,计算过程在所的近似值,计算过程在所 加项的值小于加项的值小于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

16、; while ( t1e-10 ) t1= ; odd+=2; even+=2; t2=1.0/odd; t3= ; t=t1*t2*t3; sum+=t; printf (nPI=%.8lf, ); t1*odd/even sum*6 t3*0.5*0.510. 以下程序中函数以下程序中函数 long fun(char *str) 的功能是:的功能是: 自左至右自左至右 取出非空字符串取出非空字符串 str 中的一切数字字符,中的一切数字字符, 将将这些数字字符些数字字符 组成一个不超越成一个不超越8位的十位的十进制整数并制整数并输出。出。 例例如如,字字符符串串str为“efg32gh7

17、6.jbejing08t5y4u2,程程序序输出:出: 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 k*10 P+ P+ 11. 设某单向链表结点的数据构造定义为设某单向链表结点的数据构造定义为: typedef struct

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

19、ad链链表表为为空空链链表表。(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; p

20、rintf(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; ; retu

21、rn 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; s=0; for( i

22、=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 矩阵做如下操作:先矩阵做如下操作:先 将每一行中值最大的元素与该行位于主对角线处的元素交将每

23、一行中值最大的元素与该行位于主对角线处的元素交 换值,然后对主对角线上的一切元素排序使其自左上角到换值,然后对主对角线上的一切元素排序使其自左上角到 右下角升序陈列右下角升序陈列,最后输出排序后主对角线上各元素的值。最后输出排序后主对角线上各元素的值。 试完善程序以到达要求的功能。试完善程序以到达要求的功能。 #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, 17, 9, 4, 5, 3 ,

24、 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. 以下程序中函数以下程序中函数replace 的功能是:将字符串的功

25、能是:将字符串 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; while( *p & ) p+; if( *p ) *s= ;

26、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 指向的链表中。指向的链表中。main函数接纳从键盘输入的一行字符,每函数接纳从键盘输入的一

27、行字符,每 接纳一个字符后接纳一个字符后,恳求一个新结点保管该字符恳求一个新结点保管该字符,并调用并调用insert 函数将新结点插入链表中。最后从表头开场依次输出该链函数将新结点插入链表中。最后从表头开场依次输出该链 表各结点成员表各结点成员c的值。试完善程序以到达要求的功能。的值。试完善程序以到达要求的功能。 #include #include struct node char c; struct node *next; ; struct node * insert(struct node *head, struct node *p) if( head=NULL ) head=p; els

28、e ; 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; while( p!=NULL ) printf(%c, p-c); ; p-c head

29、=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

30、(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指向的指向的 字符数字符数组内的字符串中一切内的字符串中一切单词倒排即:第一个倒排即:第一个单词与最与最 后一个后一个单词交交换,第二个,第二个单词与倒数第二个与倒数第二个单词交交换,其他,其他 单词依次依次类推。推。单词之之间用空格或用空格或标点符号分隔,倒排后点符号分隔,倒排后 的的单词之之

31、间用空格分隔;最后把已用空格分隔;最后把已处置的字符串仍存置的字符串仍存储在在xx 指向的数指向的数组中。例如中。例如,假假设数数组中原字符串中原字符串为 “I am a student, 那么那么输出出应为“student a am I。 #include #include #include void main( ) void strol( char xx ); char s80=I am a student; strol( ); puts(s); Svoid strol( char xx ) int i, j, k, n=0; char t80; j=strlen(xx)-1; t0=0;

32、 while( j0 ) while( isalpha( xxj ) =0 & j=0 ) j-; k= ; while( isalpha( xxj ) & j=0 ) j-; for( i=j+1; i0之后。假设之后。假设h2链表为空链表链表为空链表,那么函数直接前往那么函数直接前往h1 链表首结点的地址。假设链表首结点的地址。假设h1链表中不存在第链表中不存在第n个结点个结点,那么那么将将 h2链表中全部结点添加到链表中全部结点添加到h1链表的末尾,函数前往链表的末尾,函数前往h1链表链表 首结点地址。首结点地址。 链表结点采用如下方式的数据构造:链表结点采用如下方式的数据构造: struct node int data; struct node *next; ; struct node *add( struct node *h1, struct node *h2, int n ) struct node *p1=h1, *q=h2, *p2; int i=0; if( h2= ) return h1; p2=h1; while( p1&inext; ; if( inext=q; else = q; while( q-next ) q=q-next; q-next= ; return h1; NULLi+p2-nextp1

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号