C语言重零开始习题集.docx
- 文档编号:24738737
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:104
- 大小:131.88KB
C语言重零开始习题集.docx
《C语言重零开始习题集.docx》由会员分享,可在线阅读,更多相关《C语言重零开始习题集.docx(104页珍藏版)》请在冰豆网上搜索。
C语言重零开始习题集
习题一
一、概念题
1.C语言的特点是什么?
C语言由于它的下述特点,被广泛地应用于各个领域的程序设计中,具有很强的通用性。
(1)语言简洁:
C语言只有32个关键字,提供了很多语法供程序员尽量简化程序。
(2)运算符丰富:
共提供了34种运算符。
运算符多,运算对象的种类也多。
(3)数据类型丰富:
提供了整型、实型、字符型、枚举型、数组、结构体、共用体、指针、空等9种以上的数据类型。
(4)语法限制不太严格。
(5)允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
(6)生成目标代码质量高,程序执行效率高:
C的目标代码的效率仅比汇编语言低15%。
(7)可移植性好,基本不做修改就能用于各种计算机和各种操作系统。
2.请描述C语言的基本结构。
C语言的结构特点,归纳起来有下面几点。
(1)C程序是由一个或多个函数构成的,有且仅有一个主函数(main函数)。
(2)无论程序中有多少函数,程序的执行总是从main函数开始的,即main函数是整个程序的入口。
(3)函数由函数的首部和函数体两部分组成。
首部包含函数类型、函数名、函数形式参数名、形式参数定义;函数体部分包括说明部分和语句部分,是由最外层的大括弧括起的部分。
(4)C语言书写格式自由,一行内可以写几条语句,一条语句也可以分写在多行。
(5)C语言中使用大括号“{”“}”来表示程序的结构参次范围,左大括号和右大括号应该配对使用。
(6)每条语句和说明的后面必须有一个分号。
(7)可以用/*…*/对程序的任何地方做注释。
3.编写和运行程序的主要步骤有哪些?
编写和运行程序主要有以下步骤:
(1)分析讨论问题并定义数据;
(2)进行算法的设计。
算法的设计过程就是对数据处理步骤的描述过程;
(3)写出可供计算机运行的程序,并交给计算机编译运行;
4.请描述用VC编写和运行程序的主要步骤和具体操作。
.
获得C程序的运行结果需要经过下面几个步骤:
(1)新建VC工程;
(2)编辑源文件;
(3)编译源文件;
(4)连接、执行程序;
(5)查看结果。
二、编程题
1.模仿例题编写一个简单程序能够输出下面的图形:
*
***
*******
解:
#include
main()
{printf("*\n");
printf("***\n");
printf("********\n");
}
2.模仿例题编写简单程序,计算a+b+c的值,并输出。
解:
main()
{inta,b,c;
a=10;
b=20;
c=30;
printf(“a+b+c=%d”,a+b+c);
}
习题二
1.请在下列标识符中,挑选出可用作C语言用户标识符。
voiddefine3_b3_123IFFor-abcCase
beginwhile2aDoSizeof
答:
define_123IFForCasebeginDoSizeof
2.C语言中的整型数据(int)和数学上的整数完全一样吗,有什么区别,请举例说明。
答:
两者不完全相同。
C语言中整型数据(int)所能表示的范围受存储空间的限制,而数学上的整数无限制。
3.写出定义两个整型变量x、y,并分别赋初始值为10、1000的语句。
答:
intx=10;
longy=1000;
4.将下列程序中的整型常量10用符号常量的形式表示。
#include
intmain()
{
intdata[10];
inti;
floataverage=0;
for(i=0;i<10;i++)
{
scanf("%d",&data[i]);
average=average+data[i];
}
average=average/10;
for(i=0;i<10;i++)
printf("%d",data[i]);
printf("\naverage=%f",average);
}
答:
#include
#defineSIZE10
intmain()
{
intdata[SIZE];
inti;
floataverage=0;
for(i=0;i { scanf("%d",&data[i]); average=average+data[i]; } average=average/SIZE; for(i=0;i printf("%d",data[i]); printf("\naverage=%f",average); } 5.运行下面两段程序,观察运行结果有什么不同,找出原因。 (1)#include intmain() { intx,y,temp; x=10,y=1000; printf("x=%d,y=%d\n",x,y); temp=x; x=y; y=temp; printf("x=%d,y=%d\n",x,y); } (2)#include intmain() { intx,y; x=10,y=1000; printf("x=%d,y=%d\n",x,y); x=y; y=x; printf("x=%d,y=%d\n",x,y); } 答: (1)结果: x=10,y=1000 x=1000,y=10 (2)结果: x=10,y=1000 x=1000,y=1000 原因: (2)没有提供暂存变量。 交换时避免变量原值被覆盖。 6.将下列数学式子写成C语言表达式。 答: (1)1/2(x/y+(1.5+x)/(4*a)) (2)1-2*x*x-4*y*y*y 7.假设用变量x、y、z分别表示三条边长,写出判断能否构成三角形的表达式。 答: a+b>c&&a+c>b&&b+c>a 8.假设用变量x、y、z分别表示三角形的三条边,写出判断三角形是否为等边三角形的表达式。 答: x==y&&y==z 9.假设x,y为两个整型变量,并已赋值,如何判断x能否被y整除。 答: (x%y)==0 10.运行下面两段程序,输入相同的数据,观察运行结果有什么不同,找出原因。 并使用强制类型转换运算实现第二段程序的功能。 (1)#include intmain() { floatn; floats; scanf("%f",&n); s=1/n; printf("s=%f\n",s); } (2)#include intmain() { intn; floats; scanf("%d",&n); s=1/n; printf("s=%f\n",s); } 答: (1)0.333333 (2)0 第二种情况为0,是因为操作数的类型为整型,导致除法的操作结果被取整为0。 第二种情况修改如下: #include intmain() { intn; floats; scanf("%d",&n); s=(float)1/n; printf("s=%f\n",s); } 11.编写程序,输入一个3位整数,依次提取出百位、十位、各位上的信息,并输出。 如输入789,则输出7-8-9。 答: #include intmain(void) { intnum,a,b,c; scanf("%d",&num); if(num<100||num>1000) exit(0); a=num%10; b=num%100/10; c=num/100; printf("%d-%d-%d",c,b,a); } 12.编写程序,任意输入一个字符,输出它的ASCII码。 答: intmain(void) { charc; c=getchar(); printf("%chasASCIIcode%d",c,c); } 13.编写程序,任意输入一个字符,输出它在ASCII码表中的前一个字符和后一个字符。 为方便编程,假设输入的字符不是ASCII码表中的第一个字符和最后 答: intmain(void) { charc; c=getchar(); printf("%c%c",c-1,c+1); } 习题三 一.写出下面各表达式的值。 设x=0,y=2,z=-2,a=3,b=4,c=5。 1.x+y 2.z||b+c&&y+z 3.! x 4.(x=b)&&(y=0)&&1 5.! (y+z)+c–10&&y–b/2 解: 1、02、13、14、05、0 二.阅读程序,写出执行结果。 1、请写出当输入x分别为0、1、-1时下面两个程序的执行结果。 (1)main()/*程序1*/ {intx,y; scanf("%d",&x); if(x>=0) if(x>0)y=1; elsey=0; elsey=-1; printf("x=%d,y=%d\n",x,y); }结果为: 当输入0时: x=0,y=0; 当输入1时: x=1,y=1; 当输入-1时: x=-1,y=-1 (2) main()/*程序2*/ {intx,y; scanf("%d",&x); y=-1; if(x! =0) if(x>0)y=1; elsey=0; printf("x=%d,y=%d\n",x,y); }结果为: 当输入0时: x=0,y=-1; 当输入1时: x=1,y=1; 当输入-1时: x=-1,y=0 2、#include main() {inti=0; while(i<=15) if(++i%3! =2)continue; elseprintf("%d",i); printf("\n"); } 结果为: 2581114 3、#include main() {inti,j,k=0; for(j=11;j<=30;j++) {if(k%10==0) printf("\n"); for(i=2;i if(! (j%i))break; if(i>=j-1) {printf("%d\t",j);k++;} } } 结果为: 111317192329 三.程序填空题。 1.以下程序输入三个数,按大小次序输出,请填空。 main() {floata,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(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() {intyear,leap; scanf("%d",&year); if(year%4==0) {if(year%100==0) {if(year%400==0) leap=1; elseleap=0; } elseleap=1; } elseleap=0; if(leap)printf("%dis",year); elseprintf("%disnot",year); printf("aleapyear\n"); } 3.以下程序求ax2+bx+c=0的方程的解,请填空。 1): a=0,不是2次方程 2): b2–4ac=0,有两个相等实根 3): b2–4ac>0,有两个不等实根 4): b2–4ac<0,有两个共轭复根 #include"math、h" main() {floata,b,c,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("Theequation"); if(a==0)printf("不是一元二次方程"); elsedisc=b*b-4*a*c; if(disc==0) printf("hastwoequalroots: %8.4f\n",-b/(2*a)); elseif(disc>0) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("hasdistinctrealroots: %8.4fand%8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("hascomplexroots: \n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } } 4打印出所有的“水仙花数”;所谓“水仙花数”是指一个3位数,其各位数字立方和为该数本身。 例如: 153是一个“水仙花数”,因为: 153=13+33+53。 main() {inti,j,k,n; printf("水仙花数是: "); for(n=100;n<1000;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 =’? ’) {if((ch>=’a’)&&(ch<=’z’))num1++;/*字母个数加1*/ elseif((ch>=’1’)&&(ch<=’9’))num2++;/*数字个数加1*/ ch=getchar();/*取下一个字符*/ } printf("%d,%d",num1,num2); } 6、用下面公式求π的近似值,直到最后一项的绝对值小于10-7为止。 在程序空白处填上合适的内容。 #defineeps1e-7 #include #include main() {ints=1;floatn,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=%f\n",pi); } 7、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。 求它在第10次落地时,共经过多少米? 第10次反弹多高? 在程序空白处填上合适的内容。 main() {floatsn=100.0,hn=sn/2; intn; for(n=2;n<=10;n++) {sn=sn+2*hn; hn=hn/2; } printf("第10次落地时共经过%f米\n",sn); printf("第10次反弹%f米\n",hn); } 四.编程题 1.输入四个数,按代数值由小到大次序输出这四个数。 main() {intt,a,b,c,d; printf("请输入四个数: "); scanf("%d,%d,%d,%d",&a,&b,&c,&d); printf("\na=%d,b=%d,c=%d,d=%d\n",a,b,c,d); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(a>d) {t=a;a=d;d=t;} if(b>c) {t=b;b=c;c=t;} if(b>d) {t=b;b=d;d=t;} if(c>d) {t=c;c=d;d=t;} printf("\n排序结果如下: \n"); printf("%d%d%d%d\n",a,b,c,d); } 2、写一程序判断所输入整数的奇偶性 main() {inti; printf("\n请输入一个整数: \n"); scanf("%d\n",&i) if(i/2==0) printf("%d是一个偶数! \n",i); else printf("%d是一个奇数! \n",i); } 3.编程计算下面函数值,要求分别用if和switch语句实现。 main()/*用ifelseifelse语句实现*/ {intx,y; printf("请输入x"); scanf("%d",&x); if(x<1) {y=x/2; printf("x=%d,y=x/2=%d\n",x,y); } elseif(x<10) {y=2*x-1; printf("x=%d,y=2*x-1=%d\n",x,y); } else {y=-x+11; printf("x=%d,y=-x+11=%d\n",x,y); } } main()/*用switch语句实现*/ {intx,y,t; printf("请输入x"); scanf("%d",&x); if(x<1)t=0; elseif(x<10)t=1; elset=2; switch(t) {case0: y=x/2;break; case: 1y=2*x-1;break; case2y=-x+11;break; } printf("x=%d,y=%d\n",x,y); } 4、有四个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。 这四个塔的高度为20米,塔以外无建筑物、高度为0。 现输入任一点的坐标,求该点的建筑高度。 main() {inth=10; floatx,y,x0=2,y0=2,d1,d2,d3,d4; printf("请输入一个点(x,y): "); scanf(“%f,%f”,&x,&y); d1=(x-x0)*(x-x0)+(y-y0)*(y-y0); d2=(x-x0)*(x-x0)+(y+y0)*(y+y0); d3=(x+x0)*(x+x0)+(y-y0)*(y-y0); d4=(x+x0)*(x+x0)+(y+y0)*(y+y0); if(d1>1&&d2>1&&d3>1&&d4>1) h=0; printf("该点的高度为%d",h); } 5*、输入年、月,输出该月天数。 #include"stdio.h" main() {intyear,month,day; printf("请输入年,月: "); scanf("%d,%d",&year,&month); switch(month) {case1: case3: case5: case7: case8: case10: case12: day=31;break; case4: case6: case9: case11: day=30;break; default: printf("therearenotthemonth"); } if(month==2) if((year%4==0&&year%100! =0)||(year%400==0)) day=28; elseday=29; printf("%d年,%d月有%d天",year,month,day); } 6、输入一位学生的生日并输入当前日期,计算该生的实足年龄。 #include"stdio.h" main() {unsignedintbirthday,data; intyear; printf("请输入学生的生日(到月): \n"); scanf("%ud",&birthday); printf("请输入当前的日期(到月)\n"); scanf("%ud",&data); year=data-birthday; year/=100; printf("这个学生的年龄是: %d",year); } 7、编程求fibonacci数列: 1,1,2,3,5,8……的前40个数。 fibonacci数列定义如下: F1=1(n=1) F2=1(n=2) Fn=Fn-1+Fn-2(n>=3) #include"stdio.h" main() {longintf1,f2; inti; f1=1; f2=1; for(i=1;i<=20;i++) {printf("%12ld%12ld",f1,f2); if(i%2=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 开始 习题集