二级C语言上机习题.doc

上传人:飞****2 文档编号:78707491 上传时间:2023-03-19 格式:DOC 页数:201 大小:1,002KB
返回 下载 相关 举报
二级C语言上机习题.doc_第1页
第1页 / 共201页
二级C语言上机习题.doc_第2页
第2页 / 共201页
点击查看更多>>
资源描述

《二级C语言上机习题.doc》由会员分享,可在线阅读,更多相关《二级C语言上机习题.doc(201页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第1套程序填空题:给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如,当形参n的值为10时,函数返回:9.。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include double fun(int n) int i; double s, t;/*found*/ s=_1_;/*found*/ for(i=1; i=_2_; i+) t=2.0*i;/*found*/ s=s+(2.0*i-1)*(2.0*i+1)/_3_; return s;main() i

2、nt n=-1; while(n0): ); scanf(%d,&n); printf(nThe result is: %fn,fun(n);程序修改题:给定程序MODI1.C中函数fun的功能是:统计substr所指子字符串在str所指字符串中出现的次数。例如:若字符串为aaas lkaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include int fun (char *str,char *substr) int i,j,k,num=0;/*found*/ for(i = 0,stri

3、,i+) for(j=i,k=0;substrk=strj;k+,j+)/*found*/ If(substrk+1=0) num+; break; return num;main() char str80,substr80; printf(Input a string:) ; gets(str); printf(Input a substring:) ; gets(substr); printf(%dn,fun(str,substr);程序设计题:请编写一个函数fun,它的功能是:根据以下公式求的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):程序运行后,如果输入精度0.0

4、005,则程序输出为3.14。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include double fun ( double eps)main( ) double x; printf(Input eps:) ; scanf(%lf,&x); printf(neps = %lf, PI=%lfn, x, fun(x);第2套程序填空题:给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为

5、ch的结点,函数返回0值。#include #include #define N 8typedef struct list int data; struct list *next; SLIST;SLIST *creatlist(char *);void outlist(SLIST *);int fun( SLIST *h, char ch) SLIST *p; int n=0; p=h-next;/*found*/ while(p!=_1_) n+;/*found*/ if (p-data=ch) return _2_; else p=p-next; return 0;main() SLIST

6、 *head; int k; char ch; char aN=m,p,g,a,w,x,r,d; head=creatlist(a); outlist(head); printf(Enter a letter:); scanf(%c,&ch);/*found*/ k=fun(_3_); if (k=0) printf(nNot found!n); else printf(The sequence number is : %dn,k);SLIST *creatlist(char *a) SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST

7、); for(i=0; idata=ai; p-next=q; p=q; p-next=0; return h;void outlist(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(nThe list is NULL!n); else printf(nHead); do printf(-%c,p-data);p=p-next; while(p!=NULL); printf(-Endn); 程序修改题:给定程序MODI1.C中函数fun的功能是:删除P所指字符串中的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用“#”结束输入。#i

8、nclude #include #include fun ( char *p) int i,t; char c80;/*found*/ For (i = 0,t = 0; pi ; i+) if(!isspace(*(p+i) ct+=pi;/*found*/ ct=0; strcpy(p,c);main( ) char c,s80; int i=0; printf(Input a string:); c=getchar(); while(c!=#) si=c;i+;c=getchar(); si=0; fun(s); puts(s); 程序设计题:请编写一个函数fun,它的功能是:将ss所指

9、字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输出aBc4EFg。Prog#include #include void fun ( char *ss )main( ) char tt81 ; printf( nPlease enter an string within 80 characters:n ); gets( tt ); printf( nnAfter changing, the stringn %s, tt ); fun( tt ); printf( nbecomesn %sn, tt);第3套程序填空题给定程序中已建立

10、一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。#include #include #define N 8typedef struct list int data; struct list *next; SLIST;void fun( SLIST *h, int x) SLIST *p, *q, *s; s=(SLIST *)malloc(sizeof(SLIST);/*found*/ s-data=_1_; q=h; p=h-next; while(p!=NULL &

11、 xp-data) /*found*/ q=_2_; p=p-next; s-next=p;/*found*/ q-next=_3_; SLIST *creatlist(int *a) SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST); for(i=0; idata=ai; p-next=q; p=q; p-next=0; return h;void outlist(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(nThe list is NULL!n); else printf(

12、nHead); do printf(-%d,p-data);p=p-next;while(p!=NULL); printf(-Endn); main() SLIST *head; int x, aN=11,12,15,18,19,22,25,29; head=creatlist(a); printf(nThe list before inserting:n); outlist(head); printf(nEnter a number : ); scanf(%d,&x); fun(head,x); printf(nThe list after inserting:n); outlist(hea

13、d); 程序修改题给定程序modi1.c中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。#include long fun (long num)/*found*/ long k; do k*=num%10 ;/*found*/ num=10 ; while(num) ; return (k) ;main( ) long n ; printf(nPlease enter a number:) ; scanf(%ld,&n) ; printf(n%ldn,fun(n) ;程序设计题请编写一个函数fun,它的功能是

14、:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。#include float fun (float *a, int n)main() float score30=90.5, 72, 80, 61.5, 55, aver; aver = fun( score, 5 ); printf( nAverage score is: %5.2fn, aver);第四套程序填空题给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss

15、所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1,s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。#include #include #define N 5#define M 15void fun(char (*ss)M, char *substr) int i,find=0;/*found*/ for(i=0; i _1_ ; i+)/*found*/ if( strstr(ssi, _2_) != NULL ) find=1; puts(ssi); printf(n); /*found*/ if (find=_3_) printf(nDo

16、nt found!n); main() char xNM=BASIC,C langwage, Java, QBASIC, Access,strM; int i; printf(nThe original stringnn); for(i=0;iN;i+) puts(xi); printf(n); printf(nEnter a string for search : ); gets(str); fun(x,str);程序修改题给定程序modi1.c中函数fun的功能是:求三个数的最小公倍数。例如,给主函数中的变量x1、x2、x3分别输入15 11 2,则输出结果应当是:330。#include

17、 /*found*/fun(int x, y, z ) int j,t ,n ,m; j = 1 ; t=j%x; m=j%y ; n=j%z; while(t!=0|m!=0|n!=0) j = j+1; t=j%x; m=j%y; n=j%z; /*found*/ return i; main( ) int x1,x2,x3,j ; printf(Input x1 x2 x3: ); scanf(%d%d%d,&x1,&x2,&x3); printf(x1=%d, x2=%d, x3=%d n,x1,x2,x3); j=fun(x1,x2,x3); printf(The minimal c

18、ommon multiple is : %dn,j);程序设计题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:A*BC*DEF*G。#include void fun( char *a, int n,int h,int e )main() char s81,*t,*f; int m=0, tn=0

19、, fn=0; printf(Enter a string:n);gets(s); t=f=s; while(*t)t+;m+; t-; while(*t=*)t-;tn+; while(*f=*)f+;fn+; fun(s,m,fn,tn ); printf(The string after deleted:n);puts(s);第五套程序填空题程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。#include #include struct student long sno; char n

20、ame10; float score3;void fun(struct student a, int n)/*found*/ _1_ t; int i, j;/*found*/ for (i=0; i_2_; i+) for (j=i+1; j 0) t = ai; ai = aj; aj = t; main() struct student s4=10001,ZhangSan, 95, 80, 88, 10002,LiSi, 85, 70, 78, 10003,CaoKai, 75, 60, 88, 10004,FangFang, 90, 82, 87; int i, j; printf(n

21、nThe original data :nn); for (j=0; j4; j+) printf(nNo: %ld Name:%-8s Scores: ,sj.sno, sj.name); for (i=0; i3; i+) printf(%6.2f , sj.scorei); printf(n); fun(s, 4); printf(nnThe data after sorting :nn); for (j=0; j4; j+) printf(nNo: %ld Name: %-8s Scores:,sj.sno, sj.name); for (i=0; i3; i+) printf(%6.

22、2f , sj.scorei); printf(n); 程序修改题给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如:调用fun函数之前给字符串输入:ABCDeFGH, 调用后字符串中的内容为:eABCDFGH。#include void fun( char *p ) char max,*q; int i=0; max=pi; while( pi!=0 ) if( maxp) *q=*(q-1); q-; p0=max;main() char str80; printf(Enter a stri

23、ng: ); gets(str); printf(nThe original string: ); puts(str); fun(str); printf(nThe string after moving:); puts(str); printf(nn); 程序设计题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在Low中,把69放在he

24、igh中。#include #define N 16typedef struct char num10; int s; STREC;int fun( STREC *a,STREC *b,int l, int h )main() STREC sN=GA005,85,GA003,76,GA002,69,GA004,85, GA001,96, GA007,72, GA008,64, GA006,87, GA015,85, GA013,94, GA012,64, GA014,91, GA011,90, GA017,64, GA018,64, GA016,72; STREC hN,tt; int i,j

25、,n,low,heigh,t; printf(Enter 2 integer number low & heigh : ); scanf(%d%d, &low,&heigh); if ( heighlow ) t=heigh;heigh=low;low=t; n=fun( s,h,low,heigh ); printf(The students data between %d-%d :n,low,heigh); for(i=0;in; i+) printf(%s %4dn,hi.num,hi.s); printf(n); n=fun( s,h,80,98 ); for(i=0;in-1;i+)

26、 for(j=i+1;jhj.s) tt=hi ;hi=hj; hj=tt; for(i=0;in; i+) printf(%4dn,hi.s); 第六套程序填空题给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,形参s所指的字符串为:abcdef35adgh3kjsdf7。输出结果为:4。#include void fun(char *s, int *t) int i, n; n=0;/*found*/ for(i=0; _1_ !=0; i+)/*found*/ if(si=0&si= _2_ ) n+;/*fo

27、und*/ _3_ ; main() char s80=abcdef35adgh3kjsdf7; int t; printf(nThe original string is : %sn,s); fun(s,&t); printf(nThe result is : %dn,t); 程序修改题给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。#include int fun(int *x,int y) int t ;/*found*/ t = x ; x = y ;

28、/*found*/ return(y) ; main() int a = 3, b = 8 ; printf(%d %dn, a, b) ; b = fun(&a, b) ; printf(%d %dn, a, b) ;程序设计题请编写函数fun,它的功能是:求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。#include void fun (int *a, int *n)main( ) int aa1000, n, k ; fun ( aa, &n ) ; for ( k = 0 ; k n ; k+ ) if(k

29、+ 1) % 10 = 0) printf(n) ; else printf(%5d, aak) ;第七套程序填空题给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如,当形参n的值为10时,函数返回:-0.。#include double fun(int n) int i, k; double s, t; s=0;/*found*/ k=_1_; for(i=1; i=n; i+) /*found*/ t=_2_; s=s+k*(2*i-1)*(2*i+1)/(t*t);/*found*/ k=k*_3_; return s;main() int n=-1; while(n

30、0): ); scanf(%d,&n); printf(nThe result is: %fn,fun(n);程序修改题给定程序MODI1.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。#include int fun ( int m ) int k = 2; while ( k = m & (m%k)/*found*/ k+/*found*/ if (m = k ) return 1; else return 0;main( ) int n; printf( nPlease enter n:

31、); scanf( %d, &n ); if (fun(n) printf( YESn ); else printf( NO!n );程序设计题请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。#include #include void fun(int a, int n, int *max, int *d )main() int i, x20, max,index, n = 10; for (i=0;i

32、n;i+) xi=rand()%50; printf(%4d, xi); printf(n); fun(x,n,&max,&index); printf(Max =%5d, Index =%4dn,max, index );第八套程序填空题函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a0、a1、a2、中,把奇数从数组中删除,偶数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后a所指数组中数据为:4、2、6、8,返回值为4。#include #define N 9int fun(int a, int n) int i,j;

33、 j = 0; for (i=0; in; i+)/*found*/ if (_1_= 0) /*found*/ _2_ = ai; j+; /*found*/ return _3_;main() int bN=9,1,4,2,3,6,5,8,7, i, n; printf(nThe original data:n); for (i=0; iN; i+) printf(%4d, bi); printf(n); n = fun(b, N); printf(nThe number of even:%dn, n); printf(nThe even :n); for (i=0; in; i+) pr

34、intf(%4d, bi); printf(n);程序修改题给定程序modi1.c中函数fun的功能是:按以下递归公式求函数值。例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。#include /*found*/fun(n) int c;/*found*/ if(n=1) c = 10 ; else c= fun(n-1)+2; return(c); main() int n; printf(Enter n : ); scanf(%d,&n); printf(The result : %dnn, fun(n);程序设计题假定输入的字符串中只包含字母和*号。请编写函数fun,它

35、的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,若n的值为4,删除后,字符串中的内容应当是:*A*BC*DEF*G*;若n的值为7,则字符串中的内容仍为:*A*BC*DEF*G*。n的值在主函数中输入。#include void fun( char *a,int n )main() char s81; int n; printf(Enter a string:n);gets(s); printf(Enter n

36、: );scanf(%d,&n); fun( s,n ); printf(The string after deleted:n);puts(s); 第九套程序填空题函数fun的功能是:把形参a所指数组中的最小值放在元素a0中,接着把形参a所指数组中的最大值放在a1元素中;再把a所指数组元素中的次小值放在a2中,把a所指数组元素中的次大值放在a3;其余以此类推。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。注意:规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。# include #define N 9void fun(int a, int n) int i,j, max, min, px, pn, t; for (i=0; in-1; i+=2) /*found*/ max = min = _1_; px = pn = i; for (j=i+1; jn; j+) /*found*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁