语言重零开条始习题集624905.doc

上传人:本田雅阁 文档编号:2111508 上传时间:2019-02-15 格式:DOC 页数:63 大小:935.53KB
返回 下载 相关 举报
语言重零开条始习题集624905.doc_第1页
第1页 / 共63页
语言重零开条始习题集624905.doc_第2页
第2页 / 共63页
语言重零开条始习题集624905.doc_第3页
第3页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《语言重零开条始习题集624905.doc》由会员分享,可在线阅读,更多相关《语言重零开条始习题集624905.doc(63页珍藏版)》请在三一文库上搜索。

1、C语言习题集一、概念题1C 语言的特点是什么?C语言由于它的下述特点,被广泛地应用于各个领域的程序设计中,具有很强的通用性。(1)语言简洁:C语言只有32个关键字,提供了很多语法供程序员尽量简化程序。(2)运算符丰富:共提供了34种运算符。运算符多,运算对象的种类也多。(3)数据类型丰富:提供了整型、实型、字符型、枚举型、数组、结构体、共用体、指针、空等9种以上的数据类型。(4)语法限制不太严格。(5)允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。(6)生成目标代码质量高,程序执行效率高:C的目标代码的效率仅比汇编语言低15%。(7)可移植性好,基本不

2、做修改就能用于各种计算机和各种操作系统。2请描述C语言的基本结构。C语言的结构特点,归纳起来有下面几点。(1)C程序是由一个或多个函数构成的,有且仅有一个主函数(main函数)。(2)无论程序中有多少函数,程序的执行总是从main函数开始的,即main函数是整个程序的入口。(3)函数由函数的首部和函数体两部分组成。首部包含函数类型、函数名、函数形式参数名、形式参数定义;函数体部分包括说明部分和语句部分,是由最外层的大括弧括起的部分。(4)C语言书写格式自由,一行内可以写几条语句,一条语句也可以分写在多行。(5)C语言中使用大括号“”“”来表示程序的结构参次范围,左大括号和右大括号应该配对使用。

3、(6)每条语句和说明的后面必须有一个分号。(7)可以用/*/对程序的任何地方做注释。3编写和运行程序的主要步骤有哪些?编写和运行程序主要有以下步骤:(1)分析讨论问题并定义数据;(2)进行算法的设计。算法的设计过程就是对数据处理步骤的描述过程;(3)写出可供计算机运行的程序,并交给计算机编译运行;4请描述用VC编写和运行程序的主要步骤和具体操作。获得C程序的运行结果需要经过下面几个步骤:(1)新建VC工程;(2)编辑源文件;(3)编译源文件;(4)连接、执行程序;(5)查看结果。二、编程题1 模仿例题编写一个简单程序能够输出下面的图形: * *解:#include main ( )printf

4、( *n); printf( *n); printf( *n);2模仿例题编写简单程序,计算a+b+c的值,并输出。解:main ( ) int a, b, c;a=10;b=20;c=30;printf (“a+b+c=%d”, a+b+c);习题二1. 请在下列标识符中,挑选出可用作C语言用户标识符。void define 3_b3 _123 IF For -abc Case begin while 2a Do Sizeof 答: define _123 IF For Case begin Do Sizeof2. C语言中的整型数据(int)和数学上的整数完全一样吗,有什么区别,请举例说明

5、。答:两者不完全相同。C语言中整型数据(int)所能表示的范围受存储空间的限制,而数学上的整数无限制。3. 写出定义两个整型变量x、y,并分别赋初始值为10、1000的语句。答:int x=10;long y=1000;4. 将下列程序中的整型常量10用符号常量的形式表示。#include int main()int data10;int i;float average=0;for (i=0; i10; i+) scanf(%d,&datai);average=average+datai;average=average/10; for (i=0; i10; i+) printf(%d ,dat

6、ai);printf(naverage=%f,average);答:#include #define SIZE 10int main()int dataSIZE;int i;float average=0;for (i=0; i SIZE; i+) scanf(%d,&datai);average=average+datai;average=average/ SIZE; for (i=0; i SIZE; i+) printf(%d ,datai);printf(naverage=%f,average);5. 运行下面两段程序,观察运行结果有什么不同,找出原因。(1) #include int

7、 main() int x,y,temp; x=10,y=1000; printf(x=%d,y=%dn,x,y); temp=x; x=y; y=temp; printf(x=%d,y=%dn,x,y);(2)#include int main() int x,y; x=10,y=1000; printf(x=%d,y=%dn,x,y); x=y; y=x; printf(x=%d,y=%dn,x,y);答:(1)结果:x=10,y=1000 x=1000,y=10(2)结果:x=10,y=1000 x=1000,y=1000原因:(2)没有提供暂存变量。交换时避免变量原值被覆盖。6. 将下

8、列数学式子写成C语言表达式。答:(1)1/2(x/y+(1.5+x)/(4*a)(2)1-2*x*x-4*y*y*y7. 假设用变量x、y、z分别表示三条边长,写出判断能否构成三角形的表达式。答:a + b c & a + c b & b + c a8. 假设用变量x、y、z分别表示三角形的三条边,写出判断三角形是否为等边三角形的表达式。答:x=y&y=z9. 假设x,y为两个整型变量,并已赋值,如何判断x能否被y整除。答:(x%y)=010. 运行下面两段程序,输入相同的数据,观察运行结果有什么不同,找出原因。并使用强制类型转换运算实现第二段程序的功能。(1)#include int mai

9、n() float n; float s; scanf(%f,&n); s=1/n; printf(s=%fn,s);(2)#include int main() int n; float s; scanf(%d,&n); s=1/n; printf(s=%fn,s);答:(1)0.333333(2)0第二种情况为0,是因为操作数的类型为整型,导致除法的操作结果被取整为0。第二种情况修改如下:#include int main() int n; float s; scanf(%d,&n); s=(float)1/n; printf(s=%fn,s);11. 编写程序,输入一个3位整数,依次提取

10、出百位、十位、各位上的信息,并输出。如输入789,则输出7-8-9。答:#include int main(void) int num,a,b,c;scanf(%d,&num);if(num1000)exit(0); a = num%10;b = num%100/10;c = num/100;printf(%d-%d-%d,c,b,a);12. 编写程序,任意输入一个字符,输出它的ASCII码。答:int main(void) char c; c=getchar();printf(%c has ASCII code %d,c,c);13. 编写程序,任意输入一个字符,输出它在ASCII码表中的

11、前一个字符和后一个字符。为方便编程,假设输入的字符不是ASCII码表中的第一个字符和最后答:int main(void) char c; c=getchar();printf(%c %c,c-1,c+1);习题三一 写出下面各表达式的值。设 x = 0 , y = 2 , z = - 2 , a = 3 , b = 4 , c = 5 。1 x + y z & b = = c 2 z | b + c & y + z 3 ! x = 0 ) if ( x 0 ) y = 1 ; else y = 0 ; else y = - 1 ; printf ( x = %d , y = %d n , x

12、, y ) ; 结果为:当输入0时: x=0,y=0;当输入1时:x=1,y=1;当输入-1时:x=-1,y=-1(2)main ( ) /*程序2*/ int x , y ; scanf ( %d , & x ) ; y = -1; if ( x != 0 ) if ( x 0 ) y = 1 ; else y = 0 ; printf ( x = %d , y = %d n , x , y ) ; 结果为: 当输入0时:x=0,y=-1;当输入1时:x=1,y=1;当输入-1时:x=-1,y=02、 #include main( ) int i=0; while (i=15) if (+i

13、%3!=2) continue; else printf(%d ,i); printf(n); 结果为:2 5 8 11 143、 #include main( ) int i,j,k=0; for (j=11; j=30; j+) if (k%10=0) printf(n); for (i=2; i=j-1) printf(%dt,j); k+; 结果为:11 13 17 19 23 29三程序填空题。1以下程序输入三个数,按大小次序输出,请填空。main ( ) float a , b , c , t ; scanf ( %f, %f, %f , & a , & b , & c ) ; i

14、f ( a b ) t=a; a=b;b=t; if ( a c ) t=a; a=c;c=t ; if ( b c ) t=b; b=c;c=t; printf ( %5、2f , %5、2f , %5、2f , a , b , c ) ; 2以下程序判断某年是否闰年,请填空。main ( )int year , leap ; scanf (%d , &year ) ; if ( year % 4 = = 0 ) if ( year % 100 = = 0 ) if ( year % 400 = = 0 ) leap=1; else leap=0; else leap=1; else lea

15、p=0; if ( leap ) printf ( %d is , year ) ; else printf ( %d is not , year ); printf ( a leap year n ) ; 3以下程序求a x 2 + b x + c = 0 的方程的解,请填空。):a = 0 , 不是次方程):b 2 4 a c = 0 ,有两个相等实根):b 2 4 a c 0 ,有两个不等实根):b 2 4 a c 0) x1 = (-b +sqrt (disc)/ (2*a) ; x2 = (-b- sqrt(disc)/(2*a); printf ( has distinct rea

16、l roots :%8.4fand %8.4fn ,x1,x2) ; else realpart = -b/ (2* a) ; imagpart = sqrt (-disc)/(2*a) ; printf (has complex roots :n) ; printf ( %8.4f + %8.4f i n , realpart , imagpart) ; printf ( %8.4f - %8.4f i n,realpart ,imagpart) ; 4 打印出所有的“水仙花数”;所谓“水仙花数”是指一个3位数,其各位数字立方和为该数本身。例如: 153是一个“水仙花数”,因为:153=13

17、+33+53。main( ) int i ,j , k , n; printf( 水仙花数是:); for (n=100; n1000; n+) i=n/100; j=n/10-i*10; k=n%10 ; if ( n=i*i*i+j*j*j+k*k*k ) printf( %d ,n); 5、 输入一串字符,以?号结束,输出其中小写字母个数和数字个数。#include main( ) char ch; int num1=0,num2=0; ch=getchar( ); while (ch!=?) if ( (ch=a)&(ch=1)&(ch=9)num2+; /* 数字个数加1*/ ch=

18、getchar( ) ; /* 取下一个字符*/ printf(%d,%d,num1,num2); 6、用下面公式求的近似值,直到最后一项的绝对值小于-7为止。在程序空白处填上合适的内容。#define eps 1e-7 #include #include main( ) int s=1; float n,t,pi; for (n=t=1, pi=0 ;fabs(t)=eps; n=n+2,s=s*(-1), t=s/n ) pi=pi+t; pi= 4*pi ; printf(pi=%fn,pi);7、 一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时

19、,共经过多少米?第10次反弹多高?在程序空白处填上合适的内容。main( ) float sn=100.0 ,hn=sn/2; int n; for (n=2; nb)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(n排序结果如下:n);printf(%d %d %d %dn,a,b,c,d);2、写一程序判断所输入整数的奇偶性main( ) int i;printf(n请输入一个整数:n);scanf(%dn,&i)if(i

20、/2= =0)printf(%d 是一个偶数!n,i);elseprintf(%d 是一个奇数!n,i);3编程计算下面函数值,要求分别用if和switch语句实现。main( ) /* 用if elseif else语句实现*/ int x,y;printf(请输入x);scanf( %d,&x);if(x1) y=x/2;printf(x=%d, y=x/2=%d n,x,y);else if (x10) y=2*x-1;printf(x=%d, y=2*x-1=%d n,x,y);elsey=-x+11;printf(x=%d, y= -x+11=%d n,x,y);main( ) /*

21、用switch语句实现*/ int x,y,t;printf(请输入x );scanf(%d,&x);if(x1) t=0;else if(x1& d21& d31& d41)h=0;printf(该点的高度为%d, h);5*、输入年、月,输出该月天数。#include stdio.hmain( ) int year,month,day;printf(请输入年,月:);scanf(%d,%d,&year,&month);switch(month)case 1 :case 3 :case 5 :case 7 :case 8 :case 10 :case 12 : day=31; break;c

22、ase 4 :case 6 :case 9 :case 11 : day=30; break;default : printf(there are not the month);if(month=2) if(year%4=0&year%100!=0)|(year%400=0) day=28; else day=29;printf(%d年,%d月 有%d天,year,month,day);6、输入一位学生的生日并输入当前日期,计算该生的实足年龄。#include stdio.hmain( ) unsigned int birthday,data;int year;printf(请输入学生的生日(

23、到月):n);scanf(%ud,&birthday);printf(请输入当前的日期(到月)n); scanf(%ud,&data);year=data-birthday;year/=100;printf(这个学生的年龄是:%d,year); 7、 编程求fibonacci数列:,的前个数。fibonacci数列定义如下:F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2 (n=3)#include stdio.hmain( ) long int f1,f2; int i; f1=1; f2=1;for(i=1;i=20;i+) printf(%12ld %12ld ,f1,f

24、2); if(i%2= =0) printf(n);f1=f1+f2;f2=f2+f1; 8编程判断m是否素数。若是,打印: is a prime;若不是,打印: is not a prime。#include main( ) int m,i,k;scanf(%d,&m);k=sqrt(m);for(i=2;i=k+1) printf(%d is a prime number、n,m);else printf(%d is not a prime number 、n,m);9例:对一段电文进行加密,将电文中的大写字母变为其后的第3个字母。最后的三个字母X,Y,Z变为A,B,C。#include

25、stdio.hmain( ) char ch;printf(请输入你要加密的电文:n);while(ch=getchar()!=n) if(ch=A&chZ&chy)t=x;x=y;y=t;if(xz)t=x;x=z;z=t;if(yz)t=y;y=z;z=t; printf(x=%d,y=%d,z=%d,x,y,z);11*、两个乒乓球对进行比赛,各出3人,甲队为A,B,C 三人,乙队为x,y,z 三人,已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和x比,C说他不和x,z比,请编程序找出3对赛手的名单。main( ) char i,j,k; /*i是A的对手;j是B的对手;k是C的

26、对手*/ for(i=x;i=z;i+)for(j=x;j=z;j+) if(i!=j)for(k=x;k=z;k+) if(i!=k&j!=k) if(i!=x&k!=x&k!=z) printf(A-%ctB-%ctC-%cn,i,j,k);12*、有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13,求这个数列的前20项之和。main( ) int i,t,n=20; float a=2,b=1,s=0;for(i=1;i=n;i+)s=s+a/b;t=a;a=a+b; /*将前一项分子与分母之和作为下一项的分子*/b=t ; /*将前一项的分子作为下一项的分母*

27、/printf(sum=%8、4fn,s);习题四一 阅读程序,写出执行结果。1下面程序的输出结果是: 4 #include f(int a) int b=0; static c=3; a=c+,b+; return ( a );main( ) int a=2, i, k ; for (i=0; i2; i+) k=f (a+); printf(%dn,k);2下面程序的输出结果是: 84 #include int d=1;fun(int p) int d=5; d+=p+; printf(%d,d); main( ) int a=3; fun(a); d+=a+; printf(%dn,d)

28、;3、下述程序的运行结果是:Yes、 No、 Yes、 No、 Yes#include #define TRUE 1#define FALSE 0int fun(int num) int answer; if (num%2) answer=TRUE; else answer=FALSE; return answer;void main( ) int i; for(i=1; i6; i+) if (fun(i) =TRUE) printf(Yes、); else printf(No、); 二程序填空题。1下面程序的功能是:有n个人坐在一起,问第n个人多少岁?他说比第n-1个人大1岁,依次问下去,

29、每个人总说比他前面的人大1岁,最后问到第一个人,他说是6岁。请问第n个人多少岁?在程序空白处填上合适的内容。 int age(int n) int c; if (n=1) c=6 ; else c=age(n-1)+1; return(c);main( ) int n; scanf(%d, &n); printf(第n个人的岁数是:%dn, age(n) );2下面程序完成“根据半径计算圆面积的功能”, 请填空。#define PI 3.14#define S(r) PI*r*r main( ) float a,area;scanf(%f,&a);area=S(a); printf(r=%f,

30、area=%fn,a,area);3、下面的isprime函数“判断m是否素数,若是,函数返回1,否则返回0”。请填空。#include math.h int isprime( int m ) int i,k; k=sqrt(m); for (i=2;i=k+1) return(1); else return(0); 三编程题1 求圆台的表面积s和体积v。已知,圆台的上半径r1=32.5,下半径r2=40、6,圆台的高h=20.5。参考圆台的表面积s和体积v的计算公式:s=(r12+r22)+ (r1+r2)Lv=h(r12+r22+ r1*r2)/3L=sqrt(h2+(r1- r2)2)#

31、include #include #define PI 3.1415#define r1 32.5#define r2 40.6#define h 20.5#define L sqrt(h*h+(r1-r2)*(r1-r2)#define S PI*(r1*r1+r2*r2)+PI*(r1+r2)*L#define V PI*h(r1*r1+r2*r2+r1*r2)/3main( ) printf(%f,%f,S,V); 2 定义一个函数d(n,m),能够完成求整数n的从右数第m个数字的值。例如:d(12345,4)=2。#define N 10#include int dtake(char s,int m) char i; if(strlen(s)m|m=3)#define N 40long int fibo(int n) long f;i f(n= =1|n= =2) return(1);else f=fibo(n-1)+fibo(n-2);return(f);main( )printf(“%ld”,fibo(N);4、 已知f(x,n)=n+(n-1)+(n-2)+1+x 计算 x=5.2, n=10 及 x=12.5 n=20时的f的值。将f定义成函数做(用两种办法:循环方法和递归方法)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1