第一章基础知识
一.填空
1.
每个C程序都必须有且仅有一个________函数。
2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载
和执行。
3.软件是程序,以及______、使用和维护所需要的所有文档。
4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。
5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类
。
6.C语言是由________组成的。
7.C语言的函数可分为主函数main、标准库函数和_________。
8.一个函数是由两部分组成的,即:________和函数体。
9.编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。
10.
14.C程序的执行均是由执行_________开始。
15.
函数体即为包含在{}内的部分。它分为
组成的执行部分。
16.
C语言程序中一条简单语句是以________字符作为结束符的。
17.
C语言是结构化、________的程序设计语言。
18.
由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。
19.
用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。
20.
第一个系统体现结构化程序设计思想的教学工具语言是_______语言。
解答:
1.main()
2.编译
5.高级语言
6.函数
7.自定义函数
8.函数首部
9.翻译
10.应用软件
11.二进制代码
12.助记符
13.#
14.main函数
15.声明部分
16.;(或分号)
17.模块化
18.翻译
19.执行速度
二
三
四
五
六
第二章常量、变量和表达式
一.填空
1.以16位计算机为例,若定义longinta;则变量a占
2.以16位计算机为例,若定义doublea;则变量a占
3.以16位计算机为例,若定义longdouble;则变量a
4.在______位机,int型占4个字节。
5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______、空类型。
6.在C语言中,基本数据类型有:______。
7.整型常量046转换为十进制数等于______。
8.整型常量054转换为十进制数等于______。
9.整型常量0x125转换为十进制数等于______。
10.整型常量0x7C转换为十进制数等于______。
11.整型常量39转换为八进制等于______。
12.实数473.468写成规范化指数形式,则应为______。
13.实数0.0453写成规范化指数形式,则应为______。
14.将0x123转换为二进制等于______。
15.字符’A’表示成十六进制等于______。
16.在C语言中,称代表常量的标识符为______。
要用来表示控制及不可见的字符或者一些图形符号
19.语句printf("\106")执行的结果输出是______。
20.语句printf(“b”)执行的结果输出是______。
21.语句printf(“\\b”)执行的结果输出是______。
22.语句printf("\102")执行的结果输出是______。
23.若有charch1;ch1='a'+4;则语句printf("%c",x)的输出结果为______。
24.字符串常量“Hello,everyone!”占据的内存空间为______个字节
25.字符串常量“Hello,Bob!”占据的内存空间为______个字节
26.十进制整型常量由0~9个数据组成,但不能以______开始,没有小数部分
27.十六进制常量由0~9和______组成
28.unsignedlong类型常量通常以______为后缀
29.实型常量通常有小数形式和______两种表达方式
30.C语言中是用编译预处理命令______来包含其他源文件
31.为了表示字符串的结束,系统自动在字符串的最后加一个______,但不被输出
32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______
______开
。
c",ch2,ch3);则输出为______。
41.若有定义inti=5,j,k;执行
出为______。
42.表达式(int)(13.7+25.6)/4%5的值是______。
43.表达式3.6-5/2+1.2+5%3的值是______。
44.表达式54%10/2+4.0*(8/5)的值是______。
45.若定义intx;doubleb=5.45;执行x=b后,则x的值为______。
46.若定义inty;charc='A';执行y=c后,则y的值为______。
47.若定义inta=8;floatb=2.5;则a/(int)(b)的值为______。
48.若a=5,则执行a*=7-3语句后,a的值是______。
49.若inta=1,b=0,c=4,d=2;则表达式(a>b?a:b)&&(c-d)的值为______。
50.已知a=0,表达式a=1?b=1:b=0;执行后,b的值是______。
51.若定义intm=7,n=12;则表达式n%=m-m%5的值是______。
52.若定义inta=8;floatb=4.5;执行a*=a/=a-b后,a的值为______。
53.inta=2;!a++的值为______。
54.inta=0;!a++&++a的值为______。
55.inta=7;floatb=4.5;则printf(“%d”,a*=a/=a-b)的值为______。
56.intk=7;floata=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为______。
57.#defineMax(a,b)a=2,b=6;printf(“%d\n”,M
58.在32位机中,inta=4,b=7;printf(“%0x”,a-b)的值为:______。
59.intx,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为:______。
60.inti=2,j;printf(“%d”,j=i<1)的值为:______
解答:
1.0
2.4
3.10
4.32
5.指针类型
6.int、float、double、char
7.38
8.44
9.293
10.124
11.047
23.e
24.16
25.11
26.0
27.A~F
28.U
29.指数形式
30.#include
31.“\0”
32.变量类型
33.数字
34.7
35.“hello”
36.1
37.4
38.7
39.ch1=C,ch2=A
40.ch2=A,ch3=C
41.i=3,j=5
44.7.000000
45.5
46.65
47.4
48.20
49.1
50.1
51.2
52.4
53.0
54.0
55.4
56.2.500000
57.2
58.fffffffd
二
三
四
五
六
解答:
第三章顺序结构
一.填空
1.C语言的语句可分为5类,它们是:控制语句、
语句。
2.常用于字符输入的函数为:________________。
3.常用于字符输出的函数为:________________。
4.常用于字符串输入的函数为:________________。
5.常用于字符串输出的函数为:________________。
6.格式输入函数的一般形式为:________________。
7.格式输出函数的一般形式为:________________。
8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。
9.有charch,则从键盘给ch赋值的格式输入语句为:________________。
10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。
11.设有定义:longx=-123456L;,请写出能够正确输出变量x值的语句________________
。
12.若有inta,b;,想通过scanf("%d%d",&a,&b);输入语句给a赋于1,给b赋于2,则从键盘输入数据的形式是________________。
13.若有inti,j;scanf("i=%d,j=%d";&i,&j);,要求给i赋10,给j赋20,则应该从键盘
的值为3,请写出正确的输入语句________________。
15.有intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);若想
从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_____ ___________。
16.有inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=
%f\n",a,b,c);
__。
17.有intm=0256,n=256;则printf("%o%o\n",m,n);的输出结果是__________________
___。
18.有intx=102,y=012;,则printf(“%2d,%2d\n”,x,y);的输出结果是______________
_______。
19.有定义和语句:inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);
,则
printf("%d%d%3.1f%3.1f\n",a,c,f,x);的输出结果是_____________________。
20.若有定义和语句:intm=0xabc,n=0xabc;m-=n;则printf("%o\n",m);的输出结果是___
执行后输出结果是______________
_____________________
。
“%f%f%f”,&a,&b,&c);给a赋于1
25.若有定义和语句:
d%ld%f%f\n",i,l,f,d);的输出结果是(
26.以下说法中正确的是_____________________。
A)#define和printf都是C语句
B)#define是C语句,而printf不是
C)printf是C语句,但#define不是
D)#define和printf都不是C语句
27.若有intk=17;,则printf("%d,%o,%x\n",k,k,k);的输出结果是_________________
____。
28.以下叙述中正确的是_____________________。
A)输入项可以是一个实型常量,如:scanf("%f",3.5);
B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf("a=%d,b=%d");
C)当输入数据时,必须指明变量地址,例如:scanf("%f",&f);
29.若有定义和语句:intu=010,v=0x10,w=10;则printf("%d,%d,%d\n",u,v,w);输出结果是
_____________________。
30.若有inta=1,b=4,c=2;floatx=10.5,y=4.0,z;z=(a+b)/c+sqrt((double)y)*1.2/c+
x;,则printf("%f\n",z);的输出结果是_____________________。
31.若有inta=2,c=5;,则printf("a=%%d,b=%%d\n",a,c);的输出结果是________________
_____。
33.有inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);若
从键盘输入:102030<回车>。输出结果是_____________________。
34.若有inta,b,c;a=25;b=025;c=0x25;,则printf("%d%d%d\n",a,b,c);的输出结果
是___________。
35.有以下语句段
intn1=10,n2=20;printf(“________________”,n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10n2=20
36.若有语句inti=-19,j=i%4;则printf("%d\n",j);的输出结果是_____________________ 。
37.有inta=0;a+=(a=8);则printf("%d\n",a);的输出结果是_____________________。
38.有inta=1,b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%d\n”,a,b);的输出结果是
______________。
39.有unsignedshorta=65536;intb;,则printf(“%d\n”,b=a);的输出结果是________ ______。
。
1.
10.printf(“%s”,HelloWord!);
或者:printf(“HelloWord!”);
11.printf(“x=%1d\n”,x);
12.12或者1
2
13.i=10,j=20
14.scanf(“%d,%d,%d”,&i,&j,&k);
15.m=123n=456p=789
16.a=98,b=765.000000,c=4321.000000
17.256400
18.102,10
19.1651.56.5
20.0
21.32,1a
22.1234
23.B
24.33
25.666.06.0
26.D
29.8,16,10
30.13.700000
31.a=%d,b=%d
32.220.000000
33.10300
34.252137
35.n1=%d\nn2=%d
36.-3
37.16
38.2,1
39.0
40.B89
二.阅读程序写结果
解答:
三.补充程序
四
五
六
一
1.
2.已知a=1;那么
果是().
3.已知chara='A';那么
,"smaller");的输出结果是().
4.表示“x≥y≥z”的C语言表达式是()。
5.在C语言中,用于实现选择结构的语句有()语句和
。
6.判断两个浮点型变量x和y是否相等一般用:if(<1e-6)…。
7.设有程序段:t=6;a=7;b=8;if(a=b)t=a;,这段程序执行后,t的结果是() 。
8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。
9.表达式98&&8&&31&&(98-'a')的值为()。
10.若inta=3;则表达式(a>2)&&!('D'>69)的值为()。
解答:
1.
2.
3.
4.
5.
8.
9.
10.
二.阅读程序写结果
1.#include
voidmain()
{
intx,y,t;
x=7;y=9;if(x {t=x;x=y;y=t;} printf("%d,%d\n",x,y); } 2. #include voidmain() #include voidmain() { charch1='E'; if(ch1>='A') ch1++; else ch1+=32; printf("ch1=%c\n",ch1); } 4. #include voidmain() { intx,y,t; x=5;y=3; if(x>y) {t=x;x=y;y=t;} printf("%d,%d\n",x,y); intmain() { inta,b,c,m; printf("Enterthreeintegers:"); scanf("%d%d%d",&a,&b,&c); if(a<=b) m=a; else m=b; if(c m=c; printf("m=%d\n",m); return0;} 输入:212223<回车> 6.#include intmain() { floatx,y; scanf("%f",&x); switch((int)x/10){ case0:y=1.0;printf("y=%f\n",y);break; case1:y=2*x+1;printf("y=%f\n",y);break; case2:y=3*x*x+2;printf("y=%f\n",y);break; default: printf("Nodefinition.\n"); } return0;} 输入:15.3<回车> 8.#include intmain() { charch1='A',ch2='B'; switch(ch1) { case'B':printf("Good!\n");break; case'A':printf("Better!\n");break; } case'B':printf("Best!\n");break; } return0; } 9. #include voidmain() { floatscore; score=100; if(score<60)printf("E\n"); else { inti=0,a=2;if(i==0) printf(“**”); else printf(“$$”); printf(“*”); } 11. #include voidmain() { intm=10,n=0,p=4,q=20; if(m) if(n) q=15-m; else q=25+m; elseif(p) q=q+p; printf(“q=%d\n”,q); voidmain() { inta=1,b=0;switch(a) { case1:switch(b) { case0:printf("**0**");break; case1:printf("**1**");break; } case2:printf("**2**");break; } } 13. #include intmain() default:printf("&"); } printf("\n"); return0; } 14.#include intmain() { inta=0,b=1,c=0,d=20;if(a)d=d-10;elseif(!b) if(!c)d=15;elsed=25;printf("d=%d\n",d); return0;} 15.#include intmain() {inta=1;switch(a){ case0:printf("**0**");break; case1:printf("**1**");break; case2:printf("**2**");break; } return0;} {intx,y; scanf("%d",&x); y=x>12?x+10:x-12;printf("%d\n",y); return0;} 输入:12<回车> 17.#include intmain() { floatx,y; charop; doubler; scanf("%c%f%f",&op,&x,&y); switch(op) {case'+':r=x+y;break; case'-':r=x-y;break; } 19.#include voidmain() { inta=20;switch(a%3){ case0:printf("0"); case1:printf("1"); case2:printf("2"); default:printf("3"); } printf("4"); } 20.#include voidmain() { inta=2,b=5,c=8,t; if(a if(b if(a 解答: 1.运行结果: 9,7 2.a=1,b=3 3.ch1=F 4.3,5 5.m=21 6.ch3=D 7.y=31.600000 8.Good! Best! 9.A B C 10.*** 三 1.根据输入字符的ASCII码来判别字符的类别。由 符。在“0”和“9”之间的为数字,在“A”和“Z 间为小写字母,其余则为其它字符。 #include"stdio.h" #include"string.h" intmain() { charc; printf("inputacharacter:"); _____________________________________________ if(c<32)printf("Thisisacontrolcharacter\n"); _____________________________________________ printf("Thisisadigit\n"); elseif_______________________________________ printf("Thisisacapitalletter\n"); elseif(c>='a'&&c<='z') printf("Thisisasmallletter\n"); ____________________________________________ printf("Thisisanothercharacter\n"); #include"stdio.h" intmain() { floata,b; ____________________________________________; printf("inputexpression:a+(-,*,/)b\n"); scanf("%f%c%f",&a,&c,&b); switch(c) { case'+':printf("%f\n",a+b);____________________________________________ case____________________________________________printf("%f\n",a-b);break; case'*':printf("%f\n",a*b);break; case'/':____________________________________________;break; default:printf("inputerror\n"); } 3.min总是记录最小数). _______________________________________ } else {max=b;min=a;} max=c; if(min>c) _____________________________________ printf("max=%d\nmin=%d",max,min); return0;} 4.#include"stdio.h" intmain() { inta; printf("inputintegernumber:"); scanf("%d",&a); _____________________________________________ { case1:printf("Monday\n");break; case4:printf("Thursday\n");_____________________________________________ case5:printf("Friday\n");break; case6:printf("Saturday\n");break; case7:printf("Sunday\n");break; _____________________________________________printf("error\n"); } return0;} 5.判断a>b、a #include"stdio.h" intmain() { inta,b; printf("pleaseinputa,b:"); scanf("%d%d",&a,&b); _____________________________________________printf("A=B\n"); ≠B\n"); 6.y值。 ____; switch(c) { case–1:y=0;break; case0:y=x;break; case1:y=10;break; case2: case3:y=-0.5*x+20;_____________________________________________; default:y=-2; } if(c!=2)printf(“y=%f”,y); _____________________________________________ printf(“error!”); return0;} 7. 找出x,y,z三个数中的最小数,并判断该数是否等于b。 #include"stdio.h" intmain() intu,v; scanf("%d",&b); u=x v=u if_____________________________________________printf(“最小数等于b!\n”); _____________________________________________printf(“最小数不等于b!\n”); return0; } 8.输入两个运算数x,y和一个运算符号op,输出该运算结果的值,例如输入3+5↙得到结果8 . #include"stdio.h" intmain() { floatx,y,r; charop; 9. 符。在“0”和“9”之间的为数字,在“A”和“Z 间为小写字母,其余则为其它字符。 #include"stdio.h" intmain() { charc; printf("inputacharacter:"); c=getchar(); _____________________________________________ printf("Thisisacontrolcharacter\n"); if(c>='0'&&c<='9') printf("Thisisadigit\n"); _____________________________________________ printf("Thisisacapitalletter\n"); _____________________________________________ printf("Thisisasmallletter\n"); _____________________________________________ printf("Thisisanothercharacter\n"); return0;} intmain() { inta=8,b=4,c=12,x; intu,v; scanf(“%d”,&x); u=a v=u if_____________________________________________printf(“最大数等于x!\n”); _____________________________________________printf(“最大数不等于x!\n”); return0; } 解答: 1.c=getchar(); (c>='0'&&c<='9') (c>='A'&&c<='Z') break; default: 5.if(a==b) elseif(a>b) elseif(a else 6.if(x<0) c=x/10; break; else 7.x:y; u:z; (v==b) else 8.break; case'-': r=x*y; case'/': 9.if(c<32) else 10.b:a c:u (v==x) else 四.改错题 解答: 五.编程一 1.求分段函数 的值,输入x值,输出结果。 2.从键盘上输入一个数x,计算并输出下列分段函数y的值。 3. 2 .5 4. 5. 6. 7. 为B,70~79为C,60~69为D,60以下为E。 8.编写一个程序,从键盘输入三个整数给a,b,c 给b,把b中原来的值给c,把c中原来的值给a。 9. 是英文字母,则不变。 10.给定三个整数型x,y,z,输出三个数中的最大值和最小值。 解答: 1.#include"stdio.h" #include"math.h" voidmain() { floatx,y; printf("inputx\n"); scanf("%f",&x); if(x<0)y=1;elseif(x<=5)y=2*x; else y=sqrt(x); printf("x=%5.1fy=%8.3f\n",x,y); #include"math.h" voidmain() { floatx,y; printf("inputx\n"); scanf("%f",&x); if(x>20||x>1&&x<10){ printf("无定义\n"); return; } if(x<0)y=-x; elseif(x<=1)y=sin(x)+x; elseif(x>=10&&x<=20)y=x*x*x; printf("x=%5.1fy=%8.3f\n",x,y); } } 4./*功能:求一元二次方程的解。*/ #include"math.h" #include"stdio.h" main() disc=b*b-4*a*c; if(disc==0) printf("x1=x2=%7.2f\n",-b/(2*a));/*输出两个相等的实根*/ elseif(disc>0){x1=(-b+sqrt(disc))/(2*a);/*求出两个不相等的实根*/ x2=(-b-sqrt(disc))/(2*a); printf("x1=%7.2f,x2=%7.2f\n",x1,x2); } else printf("无实根\n"); } 5.#include"stdio.h" voidmain() {