290 likes | 416 Views
C 语言程序设计 复习 (1). 一、C语言概述. C 程序特点: 所有的C程序都是由一个或多个函数组成的程序模块构成。 程序中,只有一个名为 main( ) 的主函数。 不论 main( ) 函数放在程序的任何位置,程序总是从 main( ) 开始执行。. C程序开发和运行:. 编辑:使用一个文本编辑器编辑C语言源程序,其文件扩展名为“ .c” 。 编译:使用一个C语言编译系统对源程序进行语法检查和翻译,生成同名的“ .obj” 目标文件。 链接:将目标文件和库函数等链接在一起形成一个“ .exe” 可执行文件。
E N D
一、C语言概述 C程序特点: • 所有的C程序都是由一个或多个函数组成的程序模块构成。 • 程序中,只有一个名为main( )的主函数。 • 不论main( )函数放在程序的任何位置,程序总是从main( )开始执行。
C程序开发和运行: • 编辑:使用一个文本编辑器编辑C语言源程序,其文件扩展名为“.c”。 • 编译:使用一个C语言编译系统对源程序进行语法检查和翻译,生成同名的“.obj”目标文件。 • 链接:将目标文件和库函数等链接在一起形成一个“.exe”可执行文件。 • 执行:脱离C语言编译系统,可在操作系统下键入文件名直接运行。
二、C程序基础 1、标识符 由字母、数字和下划线组成; 由字母或下划线开头; 不能与关键字同名,大小写敏感。
2、基本数据类型 整型: 长度(字节) 长度(字节) int 2 unsigned int 2 short 2 unsigned short 2 long 4 unsigned long 4
例: int a,b,c; unsigned long d; a=123; /*十进制*/ b=045; /*八进制*/ c=0x3D8; /*十六进制*/ d=0773L; /*八进制长整型*/
实型: 长度(字节) float 4 double 8 字符型: char 1个字节 常用转义字符: ‘\n’ 换行 ‘\t’ 跳到下一个制表位 ‘\\’ 字符\ ‘\’’ 字符 ‘
\“ 字符 \ddd 1到3位八进制数所代表的字符 \xhh 1到2位十六进制数所代表的字符 字符常量与字符串常量的区别: 例:‘a’ 与 ”a”
3、基本运算符和表达式 逻辑“非” ! 按位取反 ~ 优先级: 高 低 算术运算符:*/ % +- 位运算符:<< >> 关系运算符:< <= > >= == != 位运算符:& ^ | 逻辑运算符:&& ,|| 条件运算符:? : 赋值运算符 = 逗号运算符 ,
自增1,自减1运算符“++”,“--” 运算对象只能是整型、字符型和指针型。 例: int x=5, y ; y=x++; y为5,x为6 y=++x; y为6,x为6
三、输入输出与顺序结构程序设计 1、输入输出语句 printf( ); scanf();putchar();getchar(); 需使用:#include “stdio.h” 或 #include <stdio.h> 2、格式控制字符 printf(“格式控制字符”,变量);
%m() ; m表示宽度,m>0,右对齐 m<0,左对齐m < 实际长度,原样输出;m >=实际长度,左或右填充空格; %mc 输出一个字符;a=‘x’; printf(‘%3c”,a); %md 十进制整型; b=15, printf(“%3d”,b); %mo 八进制整型; printf(“%o”,10); %mx(%mX) 十六进制整型;printf(“%4x,15”,); %mf 小数形式的单双精度数;printf(“%4f”,3.2); %mu 无符号十进制整型;printf(“%u”,-12); %ms 字符串; printf(“%4s”,”asdfgs”); %me 以指数形式表示实数。printf(“%.2e”,12.45);
%m.n( ) m表示同前,n表示精度 %m.nf :取n位小数表示。 printf(“%8.3f\n”,123.45); printf(“%8.1f\n”,123.45); %m.ns :取字符串的前n位。 printf(“%5.4s”, “abcdefg”); %m.ne:小数部分取n位。 printf(“%.2e”,123.45);
3、scanf函数注意事项 • 数据输入规则: scanf(“%d%d%d”,&a,&b,&c); 输入数据以空格、回车键或 tab键分隔。 • 附加格式 %ld,%lo,%lx 用于输入长整型数据; %lf用于输入double型数据。 • 输入数据不能指定精度。 scanf(“%7.2f ”.&a); 不正确。
四、选择结构程序设计 双分支if语句 if(表达式) 语句1; else 语句2; • 单分支if语句 if(表达式) 语句; 多分支if语句 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; …… else if(表达式n) 语句n; else 语句n+1;
if语句的嵌套 if (表达式1) if (表达式2) 语句1; else 语句2; else if(表达式3) 语句3; • 条件表达式 c=(a>b) ? a:b; c=a>b?a:b>2?b:4;
switch语句 switch(表达式) { case 常量表达式1:语句1; case 常量表达式2:语句2; …… case 常量表达式n:语句n; default: 语句n+1; } 注意break的用法。
例题: 1、以下正确的C语言标识符是()。 A.%x B. a+b C.a123 D.test! 答案:C 2、C语言源文件的后缀是______,经过编译后生成文件的后缀是______,经过链接后生成的文件后缀是______。 答案:.C .obj .exe
3、设char ch,以下正确的赋值语句是()。 A. ch=‘123’ B. ch=‘\xff’ C. ch=‘\08’ D. ch=“\” 答案:B 4、若a=1, b=2, c=3, d=4,则条件表达式a<b?a:c<d?c:d的值为()。 A. 1 B. 2 C. 3 D. 4 答案:A
5、设 int m=1, n=2,则++m==n的结果是()。 A . 0 B. 1 C. 2 D.3 答案:B 6、int a=13; 求~a的值。 答案:-14
7、int a1, a2; char c1, c2; scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2); 若要求a1,a2,c1,c2的值分别为10、20、A、B,正确的数据输入是()。 A . 10A 20B<CR> B . 10 A 20 B<CR> C . 10 A20B<CR> D . 10A20 B<CR> 答案:A
8、改错 main() { int a; long b; scanf(“%d”, a); b=a*a*a*a; printf(“%d^4=%d\n”, a, b); } 答:scanf(“%d”,&a); printf(“%d^4=%ld\n”,a,b);
9、main() { int a; char b; a=123;b='b'; printf("%d\n",b>a); } 答:0假98>123
答: B -1 x<0 0 x=0 1 x>0 • y=-1; • if(x!=0) • if(x>0) y=1; • else y=0; 10、能够完成如下函数计算的程序段是()。 y= B.if(x>=0) if(x>0) y=1; else y=0; else y=-1; C. y=0; if(x>=0) if(x>0) y=1; else y=-1; D. y=-1; if(x>0) y=1; else y=0;
11、以下程序的执行结果是_______。 #include <stdio.h> main() { int a=2,b=7,c=5; switch(a>0) { case 1: switch(b<0) { case 1: printf(“@”);break; case 2: printf(“!”);break;} case 0: switch(c==5) {case 0: printf(“*”);break; case 1: printf(“#”);break; default: printf(“$”);break; } default:printf(“&”);} printf(“\n”);} 答:#&
、#include “stdio.h” • main() • { int a,b,c,d,x; • a=c=x=0; • b=1; • d=20; • if(a) d=d-10; • else if(!b) • if(!c) x=15; 答:d=20,x=0 else x=25; printf(“d=%d,x=%d”,d,x); }
13、设a=2,b=3,c,d,e; 执行 c=(a++>=--b); d=(a==++b); e=(a*=2+(b-=4);后, a,b,c,d,e的值分别为多少? 答:a=3,b=-1,c=1,d=1,e=3
14、设 int a=1,b=2,c=3;写出执行 a++||--b||++c后表达式的值和a,b,c的值。 答:表达式的值为1,a=2,b=2,c=3