1、第一章 基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、 链接 、加载 和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类 。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8.
2、 一个函数是由两部分组成的,即:________和 函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作 ,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动 化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程 序,统称为_________。 11. 机器语言是以__________形式表示的机器
3、基本指令的集合,是计算机系统唯一不需要翻 译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{ }内的部分。它分为________和为完成功能任务由若干个C语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言
4、是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”, 将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. 第一个系统体现结构化程序设计思想的教学工具语言是_______语言。 解答: 1. main() 2. 编译 3. 开发 4. 指令序列 5. 高级语言 6. 函数
5、 7. 自定义函数 8. 函数首部 9. 翻译 10. 应用软件 11. 二进制代码 12. 助记符 13. # 14. main函数 15. 声明部分 16. ;(或分号) 17. 模块化 18. 翻译 19. 执行速度 20. PASCAL 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第二章 常量、变量和表达式 一.填空 1. 以16位计算机为例,若定义long int a; 则变量a占______个字节的内存空间。 2. 以16位计算机为例,若定义double a; 则
6、变量a占______ 个字节的内存空间。 3. 以16位计算机为例,若定义long double; 则变量a占 ______ 个字节的内存空间。 4. 在______ 位机,int型占4个字节。 5. C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______ 、空类型 。 6. 在C语言中,基本数据类型有:______ 。 7. 整型常量046转换为十进制数等于______ 。 8. 整型常量054转换为十进制数等于______ 。 9. 整型常量0x125转换为十进制数等
7、于 ______。 10. 整型常量0x7C转换为十进制数等于 ______。 11. 整型常量39转换为八进制等于 ______。 12. 实数473.468写成规范化指数形式,则应为 ______。 13. 实数0.0453写成规范化指数形式,则应为 ______。 14. 将0x123转换为二进制等于 ______。 15. 字符’A’表示成十六进制等于 ______。 16. 在C语言中,称代表常量的标识符为 ______。 17. C语言中是用编译预处理命令__
8、 来定义符号常量 18. 在C语言中,以反斜杠符(\)开头,后跟字符的字符序列,称之为 ______ ,主 要用来表示控制及不可见的字符或者一些图形符号 19. 语句printf("\106")执行的结果输出是 ______。 20. 语句printf(“b”)执行的结果输出是______。 21. 语句printf(“\\b”)执行的结果输出是 ______。 22. 语句printf("\102")执行的结果输出是 ______。 23. 若有char ch1; ch1='a'+4; 则语句pri
9、ntf("%c",x)的输出结果为 ______。 24. 字符串常量“Hello, everyone!”占据的内存空间为______ 个字节 25. 字符串常量“Hello,Bob!”占据的内存空间为 ______ 个字节 26. 十进制整型常量由0~9个数据组成,但不能以______ 开始,没有小数部分 27. 十六进制常量由0~9和______ 组成 28. unsigned long类型常量通常以______ 为后缀 29. 实型常量通常有小数形式和______ 两种表达方式 30. C语言中是用编译
10、预处理命令______ 来包含其他源文件 31. 为了表示字符串的结束,系统自动在字符串的最后加一个______ ,但不被输出 32. C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______ 和变量值 33. C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______ 开 头。 34. 在16位机中,sizeof(“hello\n”)等于 ______。 35. 在16位机中,printf(“\“hello\””)等于 ______。 36. 字符变量在内存中占用_
11、 个字节的存储空间。 37. 若有定义int x=27, y=6; 则表达式 x/y的值为 ______。 38. 若有定义int x=47, y=8; 则表达式 x%y的值为 ______。 39. 若有定义char ch1='A',ch2,ch3; 执行ch2=ch1++; ch3=++ch1; printf("ch1=%c, ch2=% c",ch1,ch2); 则输出为 ______。 40. 若有定义char ch1='A',ch2,ch3; 执行ch2=ch1++; ch3=++ch1; printf("ch2=%c, ch3=%
12、c",ch2,ch3); 则输出为 ______。 41. 若有定义int i=5, j, k; 执行j=i--; k=--i; printf("i=%d, j=%d\n", i, j); 则输 出为 ______。 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. 若定义int x; double b=5.45; 执行x=b
13、后,则x的值为______。 46. 若定义int y; char c='A'; 执行y=c后,则y的值为 ______。 47. 若定义 int a=8; float b=2.5; 则a/(int)(b)的值为 ______。 48. 若a=5,则执行a*=7-3语句后,a的值是 ______。 49. 若int a=1,b=0,c=4,d=2; 则表达式(a>b ? a:b)&&(c-d)的值为______。 50. 已知a = 0 ,表达式 a = 1?b = 1:b = 0; 执行后,b的值是 ______。
14、 51. 若定义int m=7,n=12; 则表达式n%=m-m%5的值是 ______。 52. 若定义int a=8; float b=4.5;执行a*=a/=a-b后,a的值为 ______。 53. int a=2; !a++的值为 ______。 54. int a=0; !a++&++a的值为 ______。 55. int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为 ______。 56. int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)
15、2/4的值为 ______。 ax(a,b))的值为 ______。 58. 在32位机中,int a=4,b=7; printf(“%0x”,a-b)的值为:______。 59. int x,y,z; x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。 60. int i=2,j; printf(“%d”,j=i<1)的值为:______ 解答: 1. 0 2. 4 3. 10 4. 32 5. 指针类型 6. int
16、float、double、char 7. 38 8. 44 9. 293 10. 124 11. 047 12. 4.734680e+002 13. 4.530000e-002 15. \x41/41H 16. 符号常量 17. #define 18. 转义字符常量 19. F 20. b 21. \b 22. B 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
17、 37. 4 38. 7 39. ch1=C, ch2=A 40. ch2=A, ch3=C 41. i=3, j=5 42. 4 43. 4.800000 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 59. 3,1 60. 0 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第三章 顺
18、序结构 一.填空 1. C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空 语句。 2. 常用于字符输入的函数为:________________ 。 3. 常用于字符输出的函数为:________________。 4. 常用于字符串输入的函数为:________________。 5. 常用于字符串输出的函数为:________________。 6. 格式输入函数的一般形式为:________________ 。 7. 格式输出函数的一般形式为:________________ 。 8. printf和scanf是标准的库函数,
19、它们的函数原型在头文件________________中。 9. 有char ch,则从键盘给ch赋值的格式输入语句为:________________。 10. 如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。 11. 设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________ 。 12. 若有int a,b; ,想通过scanf("%d%d",&a,&b);输入语句给a赋于1,给b赋于2,则从键盘 输入数据的形式是________________。 13. 若有int i,j
20、 scanf("i=%d,j=%d";&i,&j); ,要求给i赋10,给j赋20,则应该从键盘 输入_______。 14. 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k 的值为3,请写出正确的输入语句________________ 。 15. 有int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); 若想 从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_____ ___________。 1
21、6. 有 int a; float b, c; scanf("%2d%3f%4f",&a,&b,&c); printf("\na=%d, b=%f, c= %f\n", a, b, c); __。 17. 有 int m=0256,n=256; 则 printf("%o %o\n",m,n); 的输出结果是__________________ ___ 。 18. 有int x=102,y=012; , 则printf(“%2d,%2d\n”,x,y); 的输出结果是______________ _______ 。 19. 有定义和语句:int a; char c=10; f
22、loat f=100.0; double x; a=f/=c*=(x=6.5); , 则 printf("%d %d %3.1f %3.1f\n",a,c,f,x); 的输出结果是_____________________ 。 20. 若有定义和语句:int m=0xabc,n=0xabc; m-=n; 则printf("%o\n",m);的输出结果是___ __________。 21. 若有int m=32,n=032; ,则printf("%d,%x\n",m,n); 执行后输出结果是______________ _____ 。 22. 若有 int a=1234;
23、则 printf("%2d\n",a); 的输出结果是_____________________ 。 23. 若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于1 0.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________ 。 A) 10 <回车>22<回车>33<回车> B) 10.0,22.0,33.0<回车> C) 10.0<回车> 22.0 33.0<回车> D) 10 22<回车> 33<回车> 24. 若有 int x=3,y=1; 则printf("
24、d %d\n",x++,y+2); 的输出结果是__________________ ___ 。 25. 若有定义和语句:double d; float f; long l; int i; i=f=l=d=20/3; 则 printf("% d %ld %f %f \n", i,l,f,d);的输出结果是(小数点后只写一位) _____________________。 26. 以下说法中正确的是 _____________________。 A) #define和printf都是C语句 B) #define是C语句,而printf不是 C) printf是C语句,但#
25、define不是 D) #define和printf都不是C语句 27. 若有 int k=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. 若有定义和语句:int
26、 u=010,v=0x10,w=10;则printf("%d,%d,%d\n",u,v,w); 输出结果是 _____________________。 30. 若有int a=1,b=4,c=2; float x=10.5, y=4.0, z; z=(a+b)/c+sqrt((double)y)*1.2/c+ x; ,则printf("%f\n",z); 的输出结果是_____________________ 。 31. 若有int a=2,c=5; ,则printf("a=%%d,b=%%d\n",a,c);的输出结果是________________ _____ 。 32.
27、有char c; int n=100; float f=10; double x; x=f*=n/=(c=50); 则printf("%d %f\ n",n,x); 的输出结果是_____________________。 33. 有int i=0,j=0,k=0; scanf("%d%*d%d",&i,&j,&k); printf("%d%d%d\n",i,j,k); 若 从键盘输入:10 20 30<回车>。输出结果是_____________________。 34. 若有int a,b,c; a=25; b=025; c=0x25;,则printf("%d %d %d\
28、n",a,b,c); 的输出结果 是___________。 35. 有以下语句段 int n1=10,n2=20; printf(“________________”,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 36. 若有语句int i=-19,j=i%4; 则printf("%d\n",j);的输出结果是_____________________ 。 37. 有int a=0; a+=(a=8); 则printf("%d\n",a);的输出结果是___
29、 38. 有int a=1, b=2; a=a+b; b=a-b; a=a-b;则printf(“%d,%d\n”, a, b );的输出结果是 ______________。 39. 有unsigned short a=65536; int b;,则printf(“%d\n”,b=a);的输出结果是________ ______。 40. 语句printf("\10289\n");的数据结果为:__________________ 。 解答: 1. 表达式语句 2. getchar( ) 3. putchar( ) 4. gets(
30、) 5. puts( ) 6. scanf(“格式控制字符串”,地址表列); 7. printf(“格式控制字符串”,输出表列); 8. stdio.h 9. scanf (“%c”,&ch); 10. printf (“%s”,HelloWord!); 或者:printf (“HelloWord!”); 11. printf(“x=%1d\n”,x); 12. 1 2 或者 1 2 13. i=10,j=20 14. scanf(“%d,%d,%d”,&i,&j,&k); 15. m=123n=456p=789 16. a=98
31、 b=765.000000, c=4321.000000 17. 256 400 18. 102,10 19. 1 65 1.5 6.5 20. 0 21. 32,1a 22. 1234 23. B 24. 3 3 25. 6 6 6.0 6.0 26. D 27. 17,21,11 28. C 29. 8,16,10 30. 13.700000 31. a=%d,b=%d 32. 2 20.000000 33. 10300 34. 25 21 37 35. n1=%d\nn2=%d 36. -3 37. 16 38. 2,1 39. 0 40
32、 B89 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第四章 选择结构 一.填空 1. 在if, while, case, do, else 等关键字中,用于选择结构的有( ). 2. 已知 a = 1; 那么 if ( a = 2) printf("%d", 2); else printf("%d", 1); 的输出结 果是( ). 3. 已知 char a = 'A'; 那么 if ( a > 65)
33、printf("%s", "bigger"); else printf("%s" , "smaller"); 的输出结果是( ). 4. 表示“x≥ y≥ z”的C语言表达式是 ( )。 5. 在C语言中,用于实现选择结构的语句有( )语句和( ) 语句 。 6. 判断两个浮点型变量x和y是否相等一般用:if( <1e-6 )… 。 7. 设有程序段: t=6;a=7;b=8; if(a=b)
34、 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. 若int a = 3; 则表达式 (a > 2)&& ! ('D'> 69) 的值为( )。
解答:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
二.阅读程序写结果
1. #include 35、io.h>
void main( )
{
int x,y,t;
x=7;y=9; if(x 36、 case 3: a++;b++;
}
printf("\na=%d,b=%d\n",a,b);
}
3.
#include 37、main( )
{
int x,y,t;
x=5;y=3;
if(x>y)
{ t=x;x=y;y=t;}
printf("%d,%d\n" , x,y );
}
5. #include 38、 m=b;
if(c 39、c\n",ch3);
return 0;
}
7. #include 40、 printf("y=%f\n",y);break;
default:
printf("No definition.\n");
}
return 0; }
输入:15.3<回车>
8. #include 41、
case 'B': printf("Good!\n");break;
case 'A': printf("Better!\n");break;
}
case 'B': printf("Best!\n"); break;
}
return 0;
}
9.
#include 42、 if (score<60) printf("E\n");
else
switch( ( int ) score / 10 )
{ case 10:
case 9: printf("A\n");
case 8: printf("B\n");
case 7: printf("C\n"); break;
case 6: printf("D\n"); break;
defa 43、ult: printf("Error\n");
}
}
10. #include 44、 if (n)
q=15-m;
else
q=25+m;
else if (p)
q=q+p;
printf(“q=%d\n”,q);
}
12. #include 45、case 0: printf("**0**"); break;
case 1:printf("**1**");break;
}
case 2: printf("**2**");break;
}
}
13.
#include 46、 case 1: printf("@"); break ;
case 2: printf("!"); break ;
}
case 0: switch (c==5){
case 1: printf("*") ; break ;
default : printf("#") ; break ;
}
default : printf("&");
}
printf("\n");
re 47、turn 0;
}
14. #include 48、");break;
case 1:printf("**1**");break;
case 2:printf("**2**");break;
}
return 0; }
16. #include 49、>
int main()
{
float x, y;
char op;
double r;
scanf("%c%f%f",&op,&x,&y);
switch(op)
{ case '+': r = x + y; break;
case '-': r = x - y; break;
case '*': r = x * y; break;
case '/': r = x / y; break;
}
printf("%.1f", r 50、);
return 0; }
输入:3.5<回车>
18. #include "stdio.h"
void main( )
{
int a=7; if(a>9 || a<10) a=a/3; else
a=a%3; printf("a=%d", a);
}
19. #include






