技能高考c语言复习资料 37页

  • 138.00 KB
  • 2021-05-13 发布

技能高考c语言复习资料

  • 37页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
C语言二级考试资料 编著:黄雨晨 目录 一、C语言基础知识 - 1 -‎ 1.标实符,常量,变量 - 1 -‎ (1)标识符 - 1 -‎ (2)常量: - 1 -‎ (3)整型常量与实型常量 - 1 -‎ 2.变量的定义 - 2 -‎ 3.算术表达式 - 2 -‎ 5.赋值表达式 - 3 -‎ 6.复合赋值表达式 - 3 -‎ 7.++ --运算符 - 4 -‎ 8.逗号表达式 - 5 -‎ 9.课后习题; - 5 -‎ (1)选择题: - 5 -‎ (2)填空题: - 6 -‎ 二、基本输入、输出语句 - 6 -‎ 1.printf函数的一般调用形式 - 6 -‎ 2.printf中常用的格式说明: - 7 -‎ 3.注意事项 - 7 -‎ 4.输出语句例题: - 7 -‎ 5.输入语句: - 8 -‎ 6.练习题与复合语句、空语句: - 8 -‎ (1)选择题 - 8 -‎ (2)编程题 - 9 -‎ 三:c语言的程序结构 - 9 -‎ 1.关系运算与逻辑运算: - 10 -‎ (1)简介: - 10 -‎ (2)几个简单的关系运算符: - 10 -‎ (3)几个简单的逻辑运算符 - 10 -‎ 2.if语句: - 10 -‎ (1)定义: - 10 -‎ (2)分类: - 10 -‎ 3.if的嵌套: - 11 -‎ (1)讲解 - 11 -‎ (3)例题: - 12 -‎ 4.条件表达式 - 13 -‎ 5.switch语句: - 13 -‎ 6.习题 - 13 -‎ (1)选择题 - 13 -‎ (2)填空题 - 14 -‎ (3)编程题 - 15 -‎ 四、循环结构 - 17 -‎ 1.while语句: - 17 -‎ (1)格式: - 17 -‎ (2)注意: - 17 -‎ (3)例题 - 17 -‎ 2.do while() - 18 -‎ (1)格式 - 18 -‎ (2)注意 - 18 -‎ 3.for语句 - 18 -‎ (1)格式: - 18 -‎ (2)注意 - 19 -‎ (3)例题 - 19 -‎ 4.for嵌套 - 20 -‎ (1)实例1 - 20 -‎ (2)实例2 - 20 -‎ (3)实例3 - 21 -‎ (4)注意 - 21 -‎ (5)素数的判定 - 21 -‎ 6.break,continue语句 - 22 -‎ (1)break - 22 -‎ (2)continue - 22 -‎ 7.程序应用及习题 - 23 -‎ (1)选择题 - 23 -‎ (2)填空题 - 26 -‎ (3)编程题 - 27 -‎ 第六章、字符型数据 - 28 -‎ 1.字符型常量 - 28 -‎ (1)格式 - 28 -‎ (2)要求 - 28 -‎ (3)注意: - 29 -‎ 2.字符串常量 - 29 -‎ (1)格式 - 29 -‎ (2)注意: - 29 -‎ 3.字符型变量 - 29 -‎ (1)格式 - 29 -‎ (2)输入与输出 - 29 -‎ (3)程序举例 - 29 -‎ 4.课后习题 - 30 -‎ (1)选择题 - 30 -‎ (2)填空题 - 32 -‎ (3)编程题 - 33 -‎ 一、C语言基础知识 ‎1.标实符,常量,变量 ‎(1)标识符 定义:由字母、数字、下划线组成,并且第一个字母必须为字母或下划线的。这样的组成就是标识符。‎ 注意:在C中大写字母与小写字母被认为是两个不同的字符。‎ 分类:‎ ‎1)关键字:在C中已经定义好了的。不能用作它的。(if double int)。‎ ‎2)预定义标识符:如printf scanf.‎ ‎3)用户标识符:用户根据自己的需要来定义的。‎ ‎(2)常量:‎ 定义:是指在程序的执行过程中,其指不会被改变的量、‎ 分类:‎ ‎1)整型常量:没有小数的常量 ‎3 9 123‎ ‎2)实型常量:有小数点的常量 ‎3.9 3.0 ‎ ‎3)字符常量:由单个字符组成的量 ‎'a' 'b' '5'(内存中占1个存储单元)‎ ‎4)字符串常量:至少有一个字符组成的量 ‎"a" "abc" "fgbrhbg"(内存中以-0结束,占两个存储单元)‎ ‎5)符号常量:符号常量的值到底是多少,这是由在来定义符号常量时来决定的。‎ ‎#define pi 3.14(宏定义)‎ 以下选项中,能用作数据常量的是:‎ A)o115 B)0118 C)1.5e1.5 D)115l 以下选项中不能作为c语言合法常量的是:A A)'cd' B)0.1e+6 C)"a" D)'11'‎ 以下选项中不属于字符常量的是:B A)'C' B)"C" C)'xCC0' D)'72'‎ ‎(3)整型常量与实型常量 整型常量的表示方法 ‎***十进制数:0-9‎ ‎***八进制数:以0开头的数字,由0-7组成。‎ 下列合法的八进制数是:‎ A)0 B)028 C)-077 D)01.0‎ ‎***十六进制数:以OX开头,由0-9和A-F组成。‎ A)oxff B)Oxabc C)Ox11 D)Ox19‎ 实型常量的表示方法:134.2‎ 小数形式:134.2‎ 指数形式:1.342e2‎ ‎***字母e和E之前必须要偷 ‎***字母e和E之后的数字必须是整数 ‎***字母e和E之间不能有空格 ‎2.90E-1 0.425E 3 -444.5 424E-2 0.1e+6 1.23E1.3‎ ‎2.变量的定义 ‎1)定义:在程序的运行过程中其值可以被改变的量,就叫变量。‎ ‎2)原则:变量必须先定义后再使用。(变量定义的过程就是给变量开品存储单元的过程。)‎ ‎3)分类:‎ ‎***整型变量:用关键字int来表示 short int 短整型 long int 长整型 (在内存中占4个单元,如123l)‎ unsigned 无符号 如有-200u这就是错的。(全部是正数)‎ 变量的定义:int a 这是定义了一个整型变量a。‎ ‎*** float 单精度 在内存中占4个字节。‎ ‎*** double 双精度 在内存中占8个字节。‎ ‎3.算术表达式 ‎(1)基本的算术运算符 ‎+、-、*、/、%这些都是双目运算符(有两个操作对象)‎ 注意:‎ ‎ 除%外,其他的运算符的运算对象可以是整型也可以是实型。%操作对象只能是整型。‎ 如:10%3=1 10.7%5 54.64%643.3‎ 说明:‎ ‎1)如果双目运算符两边云算数的类型一致,则所得的结果的类型与运算数的类型一致。如1.0/2.0=0.5 1/2=0‎ ‎2)双目运算符两边运算数的类型不一致,则系统会自动进行类型转换,使两边的类型一致后,再进行运算。‎ ‎1.0/2=0.5‎ ‎3)所有的单精度数据,在运算过程中都以双精度进行计算。(一般定义变量为实型类型的时候,可以直接定义为double型)‎ ‎(2)优先级 ‎( ) + - * / % + -‎ 由高─────低 如:5+1/2=5‎ ‎4.强制类型转换 格式:(类型名)(表达式)‎ ‎***类型名后面的括号内表达式为单个表达式时,可省略括号,当后面的为多个表达式时,括号不可省略。‎ 例如:(int)3.525=3‎ ‎(double)10%3=?‎ 例如:‎ 表达式:(int)((double)9/2)-(9)%2的值是:‎ A)0 B)3 C)4 D)5‎ 设变量已正确定义并赋值,以下正确的表达式是:‎ A)X=Y*5=X+Z B)int(15.8%5)‎ C)x=y+z+5,++y D)x=25%5.0‎ ‎5.赋值表达式 格式:变量名=表达式 注:‎ ‎1.不可以颠倒(左边必须是变量名,右边必须是C语言中合法的表达式)‎ ‎2.功能是先求出右边变大事的值,然后把次赋值给赋值号左边的变量。确切的说是把数据存入以该变量为标识的存储单元中去。a=4 a=b+7‎ ‎3.结合性的优先级仅高于逗号表达式。顺序是自右向左的。如a=2+7/3‎ ‎4."="是一个赋值号,不是一个等号。‎ ‎5.x=y,变量的值也是可以传递和赋值的。它的意思是将变量y中的赋值到x中去。同样N=N+1也成立。‎ ‎6.赋值运算符左侧只能是变量,不能是常量或表达式 a+b=c是违法的。‎ ‎7.赋值号的右边也可以是一个赋值表达式。如a=b=7+1.‎ 补充:表达式和语句的区别:‎ ‎ 表达式后面加一个分好就是语句。‎ ‎6.复合赋值表达式 如:‎ ‎1)a+=3-----a=a+3 ‎ 同理可得 a*=3 /= -=‎ a+=a=a+a a的初值为9‎ a+=a-=18‎ a+=(a=a-18)‎ a+=(a=-9)‎ a+=a ‎-18‎ ‎2)若有定义语句:int x=10;则表达式x-=x+x的值为:‎ A)-20 B)-10 C)0 D)10‎ ‎3)设有定义:int =2;以下表达式中,值不为6的是:‎ A)X*=X+1 X=X*(X+1)‎ B)X++.2*X C)X*=(1+X)‎ D)2*X,X+=2‎ ‎4)若变量均已正确定义并赋值,以下合法的C语言赋值语句是:‎ A)x=y==5;‎ B)X=n%2.5;‎ C)x+n=I D)x=5=4+1;‎ ‎7.++ --运算符 ‎ ++ 自身加1‎ ‎ -- 自身减1‎ 如:‎ i=3 i++ _______I=i+1 i=4‎ ‎***单目运算 ‎***i++ ++i ‎1)#include‎ int main()‎ ‎{‎ int i =3;‎ printf("%dn",i);‎ ‎}‎ 结果为:3‎ ‎2)#include‎ int main()‎ ‎{‎ int i =3;‎ printf("%dn",++i);‎ ‎}‎ 结果为:4‎ ‎***当++在前,先自身加1,然后再干别人干的事 ‎3)#include‎ int main()‎ ‎{‎ int i =3;‎ printf("%dn",i++);‎ ‎}‎ 结果为:3‎ ‎***当++在后,先干别人干的事然后再自身加1‎ ‎4)int a,i=3;‎ a=i++;a=3;‎ a=++1;a=4‎ ‎8.逗号表达式 ‎(1)定义:用逗号将表达式连接起来的式子称为逗号表达式 ‎(2)格式:表达式1,表达式2,表达式3……,表达式N ‎(3)说明:‎ ‎ 1)逗号运算符的结合性为从左到右进行计算,逗号表达式的值是最后一个表达式的值。‎ ‎ 2)在所有运算符中,逗号表达式的优先级最低。‎ 例题:‎ int i =5;‎ int a,b,c;‎ a=(i+8,6,i+7); a=12,i=5‎ b=(i++,++i); a=7,i=7‎ c=(i+7,i++); a=5,i=6 ‎ ‎9.课后习题;‎ ‎(1)选择题:‎ ‎1)以下选项中正确的整型常量是:‎ A.12. B. -20 C.1,000 D.2 5 6‎ ‎2)以下选项中正确的实型常量是:‎ A.0 B.3. 4344 C.0.345*122 D..875‎ ‎3)以下选项中不正确的实型常量是:‎ A.2.50E-1 B.0.78646e 2 C.-55.55 D.566E-2‎ ‎4)以下选项中不正确的用户标识符是:‎ A.ABC.C B.file C)Main D.PRINTF ‎5)以下选项中不正确的用户标识符是:‎ A._123 B.printf C)A $ D.Dim ‎6)C语言中运算对象必须是整型的运算符是:‎ A.% B./ C.! D.* *‎ ‎7)可在C语言中用作用户标识符的一组标识符是:‎ A.void define WORD B.as_b3 _123 IF C.For -abc case D.2c DO SIG ‎8)若变量已正确定义并赋值,复合C语言语法的表达式是:‎ A.a=a+7; B.a=7+b+c,a++ C.int(12.3%3) D.a=a+7=c+b ‎9)以下叙述中正确的是:‎ A.a是实型变量,c允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值。‎ B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。‎ C.执行表达式a=b后,在内存中a和b的存储单元中原有值将被改变,a的值已由原来的值变为改变后的值,b的值有原来的改变为0.‎ D.已有a=3,b=5,当执行了表达式a=b,b=a之后。使a中的值变为5,b中的值变为3.‎ ‎10)以下叙述正确的是:‎ A.在C语言中无论是整数还是实数,只要在允许的范围内都能无误的表示。‎ B.C程序由主函数组成 C.C程序由若干函数组成 D.C程序中只允许包含一个函数 ‎11)VC6.0中int类型变量所占字节数是:‎ A.1 B.2 C.3 D.4‎ ‎12)合法的八进制数是:‎ A.0 B.028 C.-033 D.01.0‎ ‎13)不合法的十六进制数是:‎ A.oxff B.0Xabc C.0x11 D.0x19‎ ‎(2)填空题:‎ ‎1)若K为INT型变量。请写出运算K++后表达式的值()和变量K的值()‎ ‎2)若X为DOUBLE型变量,请写出运算X=3.2,++X后表达式的值()和变量X的值()‎ ‎3)函数体由({)开始,由(})结束。函数体内的前面是(定义说明)部分,后面是(语句)部分。‎ ‎4)C语言中的标识符可以分为(关键字)、(用户标识符)和预定义标识符。‎ ‎5)在C语言中,用关键字()定义基本整型变量,用关键字()定义单精度实型变量。用( )定义双精度实型变量 ‎6)把a1,a2定义成双精度实型变量,并赋初值1的定义语句是()‎ ‎7)C语言程序中定义的变量,代表内存中的一个()‎ ‎8)表达式3.5+1/2的计算结果是()‎ 二、基本输入、输出语句 ‎1.printf函数的一般调用形式 格式:printf(格式控制,输出项1,输出项2,输出项3……);‎ 在printf函数的最后面加上;号就是输出语句。‎ ‎1)给输出项白提供输出格式说明 格式说明符:‎ 作用:就是使数据按格式说明符的要求进行输出。‎ 组成:由%号和紧跟在其后的格式描述符组成。‎ ‎***int————%d ‎***float或double————%f或%e(科学计数法)‎ ‎***char————%c ‎2)提供原样输出的文字或字符 ‎***在“”中除了格式说明符之外的内容要全部原样输出。‎ ‎***各个输出项之间要用逗号隔开。‎ ‎***输出项可以使任意合法的常量,变量或表达式。‎ ‎2.printf中常用的格式说明:‎ 在格式说明符中,每一个格式说明符都必须以%号开头由相应的类型标识字母结束。但在他们之间可以有其他的一个内容:‎ ‎(1)%c:输出一个字符 ‎(2)%d:输出一个十进制的数据 ‎(3)%o:以八进制格式输出 ‎(4)%x:以十六进制输出 ‎(5)%u:无符号十进制输出 ‎(6)%f:以带小数点的数字输出 ‎(7)%e:以指数形式输出 ‎(8)%s:输出一个字符串 ‎(9)%%:输出一个%‎ ‎(10)%4d:输出的数据长度是4个长度,当原来的长度大于4时会自动突破。小于4时会自动填充空格。‎ ‎(11)%x.yf:x代表数制的宽度(包括小数点);y代表小数点后面的小数位数。‎ ‎3.注意事项 ‎1)输出比较自由一些,输出有的各个数之到底是什么,取决于格式说明符之间的内容。‎ ‎2)格式说明符要与输出项一一对应。‎ ‎3)输出语句中还可以有n r t a ‎4)尽量不要在输出语句中改变输出变量的值。‎ ‎***int a=2;‎ printf("%d%d",a++,a);‎ 结果:2,2‎ ‎5)输出的数据中如果存在变量,一定要是定义过的。‎ ‎4.输出语句例题:‎ ‎1)#include‎ main()‎ ‎{‎ int a=1,b=0;‎ printf("%d,",b=a+b);‎ printf("%dn",a=2*b);‎ ‎}‎ 程序运行后的输出结果是:‎ A.0,0 B.1,0 C.3,2 D.1,2‎ ‎2)double y=3.141593;printf("%d%8.6f",x,y);输出结果是:‎ A.123.141593‎ B.12‎ ‎3.141593‎ C.12,3.141593‎ D.12 3.141593‎ ‎3)#include‎ main()‎ ‎{‎ double a=123.456;‎ printf("%6.2f",a);‎ ‎}‎ 输出结果为:‎ ‎5.输入语句:‎ 格式:scanf(格式控制,输入项1.输入项2,……);‎ 例如:想通过键盘输入三个是分别给变量a,b,c。并且他们分别为整型,浮点型,双精度型。‎ 输入语句为scanf("%d%f%lf",&k,&a,&y);‎ 说明:‎ ‎(1)格式说明符与输出语句一样。‎ ‎(2)在格式串中,必须含有与输入项——对应的格式转换说明符。‎ ‎(3)在VC6.0的环境下,要收输入的double型数据的格式说明符一定要用%lf,否则数据不能正确的输入。‎ ‎(4)由于输入时一个字符流,所以当输入的数据少于输入项时,程序会等待用户输入,直到满足要求。当输入得分数据多余输入项时,多余的数据会自动作废。‎ ‎(5)%*d:跳过输入 ‎6.练习题与复合语句、空语句:‎ ‎(1)复合语句:多个语句被{}括起来,当成一条语句来执行。‎ ‎(2)空语句:最后的表示只有一个“;”(用于计数)‎ 练习题:‎ ‎(1)选择题 ‎1)int x;‎ x=11/3;‎ int y = 5;‎ printf("%%d,%%%dn",x,y);‎ 输出结果为:%d,%3‎ ‎2)若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的语句是:‎ A.read(a,b,c); B.scanf("%d%d%d",a,b,c);‎ C.scanf("%D%D%D",&a,&b,&c); D.scanf("%d%d%d",&a,&b,&c);‎ ‎3)若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是:B A.10 B.10.0,22.0,33.0 C.10.0 D.10 22‎ ‎22 22.0,33.0 33‎ ‎33‎ scanf("%f%f%f",&a,&b,&c);‎ ‎(2)编程题 ‎4)编写一个程序,从键盘上输入两个数字,然后让他们互换一下。‎ ‎#include‎ int main()‎ ‎{‎ ‎ int a,b,c;‎ ‎ printf("请输入两个数:n");‎ ‎ scanf("%d %d",&a,&b);‎ ‎ a=b;b=c;c=a;‎ ‎ printf("两数交换后的结果为:%d %d",a,b);‎ ‎}‎ ‎5)编写一个程序,从键盘上输入一个数字,进行四舍五入计算,要求保留两位小数。‎ ‎#include‎ int main()‎ ‎{‎ ‎ double a;‎ ‎ printf("请输入一个要进行四舍五入的数:n");‎ ‎ scanf("%lf",&a);‎ ‎ a=a*100+0.5;‎ ‎ a=(int)(a);‎ ‎ a=a/100;‎ ‎ printf("四舍五入的结果为:%lf",a);‎ ‎}‎ ‎6)编写程序,使从键盘上输入的三个数倒着输出:‎ ‎#include‎ int main()‎ ‎{‎ ‎ int a,b,c,d;‎ ‎ scanf("%d",&a);‎ ‎ if(a>=1000)‎ ‎ {‎ ‎ printf("输入有误,请重新输入:n");‎ ‎ scanf("%d",&a);‎ ‎ }‎ ‎ b=a/100;‎ ‎ c=(a%100)/10;‎ ‎ d=a%10;‎ ‎ a=d*100+c*10+b;‎ ‎ printf("%dn",a);‎ ‎}‎ 三:c语言的程序结构 ‎1.关系运算与逻辑运算:‎ ‎(1)简介:‎ 关系表达式与逻辑表达式的运算结果都会得到一个逻辑值。就是“真”,“假”‎ 在c语言钟0表示“假”,非0(无论是负数还是正数都是真。更多时候用1来代替)表示“真”。‎ ‎(2)几个简单的关系运算符:‎ ‎< <= > >= == !=‎ 注意:‎ ‎1)由两个字符组成的运算符,中间不能有空格。‎ ‎2)它们都是双目运算符,具有自左向右的结合型。‎ ‎3)上面的6个运算符中,前4个的优先级要比后面2个的优先级要高。‎ ‎4)先计算,后判断,然后进行赋值计算。‎ ‎(3)几个简单的逻辑运算符 ‎&& 与 一假则假 ‎|| 或 一真则真 ‎! 非 非假则真,非真则假 例:‎ ‎1)1&&0=1,0&&6=0‎ ‎2)int a=4,b=7;‎ ‎ a&&b=1;‎ ‎3)int x=0,y=7;‎ x++&&y++=? x=? y=?‎ ‎++x&&y++=? x=? y=?‎ ‎2.if语句:‎ ‎(1)定义:‎ 只有两种结果。要么执行这条语句,要么执行那条语句。‎ if(条件表达式)‎ 上述条件成立执行(花括号【符合语句】、离ifz最近的一条句子、空语句)的句子 else 上述条件不成立执行的句子 ‎(2)分类:‎ ‎1)不含有else的语句 if(条件)‎ ‎{‎ 语句 ‎}‎ ‎2)含有else的语句 if(条件)‎ 语句1;‎ else 语句2;‎ 语句3;(语句3不受控制)‎ 例:‎ ‎#include‎ int main()‎ ‎{‎ int a,b,c,t;‎ printf("input 3 numbers:n");‎ scanf("a=%d b=%d c=%d",&a,&b,&c);‎ if(a>b)‎ ‎{t=a;a=b;b=t};‎ if(a>c)‎ ‎{t=c;c=a;a=t};‎ if(b>c)‎ ‎{a=b;b=c;c=t};‎ printf("%d %d %dn",a,b,c);‎ ‎}‎ ‎3.if的嵌套:‎ ‎(1)讲解 ‎#include‎ int main()‎ ‎{‎ int a;‎ scanf("%d",&a);‎ if(a>60)‎ ‎{‎ ‎ if(a>90)‎ ‎ printf("you");‎ ‎ else ‎ printf("liang");‎ ‎}‎ else ‎ printf("cha");‎ ‎}‎ 输入一个学生的成绩,评定他的成绩。每十分一个等级 ‎#include‎ main()‎ ‎{‎ int a;‎ printf("input a number:n");‎ scanf("a=%d",&a);‎ if(a>=90) printf("A");‎ elseif(a>=80) printf("B");‎ elseif(a>=70) printf("C");‎ elseif(a>=60) printf("D")‎ else printf("E");‎ ‎}‎ ‎(3)例题:‎ ‎1)‎ 设有定义:inta=1,b=2,c=3;以下语句中执行效果与其他三个不同德是:‎ A.if(a>b) c=a,a=b,b=c;‎ B.if(a>b) {c=a;a=b;b=c;}‎ C.if(a>b) c=a;a=b;b=c;‎ D.if(a>b) {c=a,a=b,b=c;}‎ ‎2)‎ 有以下程序,程序运行时,输入的值在哪个范围内会有输出结果:‎ ‎#include‎ main()‎ ‎{‎ int x;‎ scanf("%d",&x);‎ if(x<=3) ; else ‎ if(x!=10)‎ printf("%dn",x);‎ ‎}‎ A.不等于10的整数 B.大于3且不等于10的整数 C.大于3或等于10的整数 D.小于3的整数 ‎3)有以下程序,程序的输出结果为:‎ ‎#include‎ main()‎ ‎{‎ int a=1,b=2,c=3,d=0;‎ if(a==1&&b++==2) (b++一次,b=3)‎ if(b!=2||c--!=3) (由于b!=2成立,后面的c--不会执行,因此c的结果不变)‎ printf("%d,%d,%dn",a,b,c);‎ else printf("%d,%d,%dn",a,b,c);‎ else printf("%d,%d,%dn",a,b,c);‎ ‎}‎ A.1,2,3 B.1,3,2 C.1,3,3 D.3,2,1‎ ‎4.条件表达式 ‎1)是c语言中唯一的一个三目运算 ‎2)格式:表达式1?表达式2:表达式3‎ 当表达式1成立(非零时),表达式的值是表达式2的值,否则就是3的值。‎ 如:1)1<2?4:5‎ ‎2)printf("%d",x<0?(-1)*++x:x++);(假定X的值为-3)‎ ‎3)x++>3?(x<3?a,b):b ‎5.switch语句:‎ switch(表达式)‎ ‎{‎ case常量表达式1:语句1;break;‎ case常量表达式2:语句2;break;‎ case常量表达式3:语句3;break;‎ case常量表达式4:语句4;break;‎ case常量表达式5:语句5;break;‎ case常量表达式6:语句6;‎ ‎……‎ default:语句n;‎ ‎}‎ ‎(1)switch后面无分号 ‎(2)通常常量表达式为整型类型 ‎(3)default用于最后系统自动判断的剩余值 ‎(4)break用于返回,退出循环(最后一条语句不用加break,因为执行完后只有最后一个返回值了)‎ ‎(5)case后面有一定要加一个空格,关键字后面不能与其他字符连在一起。‎ ‎6.习题 ‎(1)选择题 ‎1)下列运算符中优先级最高的运算符是:‎ A.! B.% C.-= D.&&‎ ‎2)下列运算符中优先级最低的运算符是:‎ A.|| B.!= C.<= D.+‎ ‎3)设a、b、c都是int型变量,且a=3,b=4,c=5;则以下表达式中,值为0的表达式为:‎ A.a&&b B.a<=b C.a||b+c&&b-c D!((a4||x<-4‎ ‎ A)a=b或a4‎ ‎6)请写出以下程序的输出结果:________‎ main()‎ ‎{‎ int a=100;‎ if(a>100) printf("%dn",a>100);‎ else printf("%dn",a<=100);‎ ‎}‎ ‎7)请写出与以下表达式等价的表达式A)________B)_________‎ ‎ A)!(x>0) A)!0 ‎ ‎8)当a=1,b=2,c=3时,以下C语句执行后,a、b、c中的值分别为______、_______、________‎ ‎ if(a>c)‎ ‎ b=a;a=c;c=‎ ‎3,2,3;‎ ‎3,2,2;‎ ‎9)若变量已正确定义,以下语句段的输出结果为:_________________‎ x=0,y=2,z=3;‎ switch(x)‎ ‎{‎ ‎ case 0:switch(y==2)‎ ‎{‎ ‎ case 1:printf("*");break;‎ ‎ case 2:printf("%");break;‎ ‎}‎ ‎ case 1:switch(z)‎ ‎{‎ ‎ case 1:printf("$");‎ ‎ case 2:printf("*");break;‎ ‎ default printf("#");‎ ‎}‎ ‎}‎ ‎***switch(x)=0,执行循环体内的case 0;‎ ‎***y==2,为比较表达式,若条件成立,则执行为真,即“1”;‎ ‎***break常用于循环语句中,条出的为离它最近的一层循环;‎ ‎(3)编程题 ‎1)请将以下的语句改成switch语句。‎ if(a<30)m=1;‎ else if(a<40)m=2;‎ else if(a<50)m=3;‎ else if(a<60)m=4;‎ else m=5;‎ 转化为:‎ switch(a/10)‎ ‎{‎ case 3:m=1;break;‎ case 4:m=2;break;‎ case 5:m=3;break;‎ case 6:m=4;break;‎ default:m=5;‎ ‎}‎ ‎2)编写程序,输入一位学生的生日(年:y0、月m0、日d0);并输入当前的日期(年:y1、月:m1、日:d1) ‎ ‎;输出该生的实足年龄。‎ ‎#include‎ int main()‎ ‎{‎ int a,b,c,x,y,z,n;‎ printf("请输入你的生日:n");‎ scanf("%d %d %d",&a,&b,&c);‎ if(a>2015||b>12||c>31)‎ ‎{‎ printf("输入有误,请重新输入:n");‎ scanf("%d %d %d",&a,&b,&c);‎ ‎}‎ printf("请输入现在的时间:n");‎ scanf("%d %d %d",&x,&y,&z);‎ if(a>2015||b>12||c>31)‎ ‎{‎ printf("输入有误,请重新输入:n");‎ scanf("%d %d %d",&x,&y,&z);‎ ‎}‎ if(x>a)‎ ‎{‎ ‎ if(y>b)‎ ‎ {‎ ‎ n=x-a+1;‎ ‎ }‎ ‎ else ‎ n=x-a;‎ ‎}‎ printf("您现在有%d岁n",n);‎ ‎}‎ ‎3)编写程序,输入三个数,打印出最大值 ‎#include‎ int main()‎ ‎{‎ int a,b,c,t;t=a;‎ if(a>b)‎ ‎{‎ if(b>c) t=a;‎ else t=c ‎}‎ else t=b;‎ printf("%dn",t);‎ ‎}‎ 四、循环结构 ‎1.while语句:‎ ‎(1)格式:‎ while(表达式)‎ 循环体 ‎(2)注意:‎ ‎1)while是一个关键字 ‎2)括号及括号内的表达式不能丢 ‎3)while控制的是与其相邻的一条语句(以“;”结束),如果有多条语句,则要用{}括起来(复合语句)。‎ ‎4)while语句多用于控制重复某一操作来实现某种计算。‎ ‎(3)例题 例:从1加到100求和 ‎#include‎ int main()‎ ‎{‎ int sum=0,i=1;‎ while(i<=100)‎ sum+=i++;‎ printf("%dn",sum);‎ ‎}‎ 例:从1开始加到哪个数时他们的和超过1000‎ ‎#include‎ int main()‎ ‎{‎ int i=1,sum=0,j=1;‎ while(sum<=1000)‎ sum+=i++;‎ printf("%dn",--i);‎ ‎}‎ ‎***程序中的"--i"是因为当sum的值大于1000时,i累计多加了一次,因此在输出结果时要自身先减1;‎ 例:有以下程序,运行后输出结果为:D ‎#include‎ int main()‎ ‎{‎ int n=2,k=0;‎ while(k++&&n++>2);‎ printf("%d %dn",k,n);‎ ‎}‎ A.0 2 B.1 3 C.5 7 D.1 2‎ ‎1)k++&&n++>2后,由于首先执行k++>2,结果为假,但自身加1,执行完后k=1;n++不会执行,因此n无变化,n=2。‎ ‎2)while语句后面有一个分号,这里表示while控制的是一条空语句,继续向下执行,输出的结果:1 2‎ ‎2.do while()‎ ‎(1)格式 ‎ do ‎ 循环体 while(表达式)‎ ‎(2)注意 ‎1)先执行循环,后判断条件。‎ ‎2)循环体至少执行1次。‎ ‎3)while后面的分号必须要有。‎ ‎3.for语句 ‎(1)格式:‎ for(表达式1;表达式2;表达式3)‎ ‎ 循环体 for(k=1;k<10;k++)‎ printf("*");‎ ‎||‎ ‎||‎ int k=1;‎ while(k<10)‎ ‎{‎ printf("*");‎ k++;‎ ‎}‎ ‎(2)注意 ‎1)表达式1是对变量的初始 ‎2)表达式2为条件表达式,逻辑表达式 ‎3)循环内包含的控制变量 ‎4)表达式的间隔为分号且不能省略,不是逗号 ‎5)一个表达式可以为任何有效的C语言表达式,以“,”为分隔,最后一个为“;”结束 ‎6)表达式可以为空语句(;),但不能少分号 ‎(3)例题 ‎1)从1+……+100求和。‎ ‎#include‎ int main()‎ ‎{‎ int i=1;sum=0;‎ for(;i<=100;i++)‎ ‎{‎ sum+=i;‎ ‎}‎ ‎}‎ ‎2)从1+……+100中偶数的和。‎ ‎#include‎ int main()‎ ‎{‎ int i=2;sum=0;‎ for(;i<=100;i+=2)‎ ‎{‎ sum+=i;‎ ‎}‎ ‎}‎ ‎3)以下程序的输出结果为 ‎#include‎ int main()‎ ‎{‎ int c=0,k;‎ for(k=1;k<3;k++)‎ switch(k)‎ ‎{‎ default:c+=k;‎ case 2:c++;break;‎ case 4:c+=2;break;‎ ‎}‎ printf("%dn",c);‎ ‎}‎ A.3 B.5 C.7 D.9‎ 分析:default:c+=k;这里没有break跳出循环,继续执行case 2:c++后,变为2;执行第二次循环k=2;c变为3;‎ ‎4)以下程序的输出结果为__0 1 123___‎ ‎#include‎ int main()‎ ‎{‎ int f,f1,f2,i;‎ f1=0;f2=1;‎ printf("%d %d".f1,f2);‎ for(i=3;i<=5;i++)‎ ‎{‎ f=f1+f2;printf("%d",f);‎ f1=f2;f2=f;‎ ‎}‎ ‎}‎ 分析:f用来求f1+f2的和,共求3次,f1=f2用来把f1的值归1;f2=f用来把求得的值赋给下一次循环计算时的变量。‎ ‎4.for嵌套 ‎(1)实例1‎ 要求:在屏幕上输出如下结果:‎ ‎11,12,13,14,15,16,17,8,19‎ ‎22,………………………………………‎ ‎…………………………………………99‎ ‎#include‎ int main()‎ ‎{‎ int i,j;‎ for(i=1;i<10;i++)‎ ‎{‎ ‎ for(j=1;j<10;j++)‎ ‎ {‎ ‎ printf("%d%d ",i,j);‎ ‎ }‎ ‎ printf("n");‎ ‎}‎ ‎}‎ ‎(2)实例2‎ 要求:在屏幕上输出如下结果:‎ ‎1*1=1 1*2=2 1*3=3 ……1*9=9‎ ‎……‎ ‎……‎ ‎9*1=9 9*2=18 9*3=27……9*9=81‎ ‎#include‎ int main()‎ ‎{‎ ‎ int i,j;‎ ‎ for(i=1;i<=9;i++)‎ ‎ {‎ ‎ for(j=1;j<=9;j++)‎ ‎ {‎ ‎ printf("%d*%d=%2d ",i,j,i*j);‎ ‎ }‎ ‎ printf("n");‎ ‎ }‎ ‎}‎ ‎(3)实例3‎ 要求:在屏幕上输出倒三角 ‎*******‎ ‎ *****‎ ‎ ***‎ ‎ *‎ ‎#include‎ int main()‎ ‎{‎ ‎ int i,j,k;‎ for(i=0;i<=4;i++)‎ ‎{‎ ‎ for(k=1;k<=i;k++)‎ ‎ prinf(" ");‎ ‎ for(j=0;j<7-i*2;j++)‎ ‎ printf("*");‎ ‎ printf("n");‎ ‎}‎ ‎}‎ ‎(4)注意 ‎1)for嵌套先执行内循环,执行完一遍后再执行外循环。‎ ‎2)花括号控制最近的一个for循环体 ‎(5)素数的判定 编写程序,找出2-100以内的所有素数 素数:只能被1和它本身整除的数 ‎#include‎ int main()‎ ‎{‎ int i,k,tag;‎ for(i=3;i<=100;i+=2)‎ ‎{‎ ‎ tag=0;‎ ‎ for(k=2;k5000)‎ break;‎ ‎}‎ printf("s=%d,i=%d",s,i);‎ ‎}‎ ‎(2)continue 跳过循环体continue所在位置下面的语句,返回程序开始的地方,继续执行下一层循环体 main()‎ ‎{‎ int k=1,s=0;‎ for(;k<=5;k++)‎ ‎{‎ s+=k if(s>5)‎ ‎{‎ printf("s=%dn",s);‎ continue;‎ ‎}‎ printf("%dn",s);‎ ‎}‎ ‎}‎ 输出结果为:‎ ‎1 ‎ ‎3‎ S=6‎ s=10‎ s=15‎ ‎7.程序应用及习题 ‎(1)选择题 ‎1)以下程序中的变量已正确定义,输出结果为:‎ for(i=0;i<4;i++)‎ ‎ for(k=1;k<3;k++) ; printf("*");‎ A.********‎ B.****‎ C.**‎ D.*‎ ‎***外层循环与内层循环控制的都是输出空语句,程序最后才执行输出一个*‎ ‎2)以下程序输出结果为:‎ A.9 B.1 C.11 D.10‎ int k,j,s;‎ for(k=2;k<6;k++,k++)‎ ‎{‎ s=1;‎ for(j=k;j<6;j++) s+=j;‎ ‎}‎ printf("%dn",s);‎ ‎5 7 9 11‎ ‎***外循环中有两次k++,相当于k+=2;那么当k小于6时,,程序循环两次 ‎***每次执行内层循环之后,s的值都变为1;直接看最后一次的外循环 ‎3)以下程序输出结果为:‎ A.12 B.15 C.20 D.25‎ int i,j,m=0;‎ for(i=1;i<=15;i+=4)‎ ‎ for(j=3;j<=19;j+=4)m++;‎ printf("%dn",m);‎ ‎***外层:i=1,5,9,13‎ ‎***内层:j=3,7,11,15,19‎ ‎4)以下程序输出结果为:B A.10 B.9 C.10 D.9‎ ‎ 9 8 9 8‎ ‎ 8 7 8 7‎ ‎ 7 6 ‎ int n=10;‎ while(n>7)‎ ‎{‎ n--;‎ printf("%dn",n);‎ ‎}‎ ‎5)以下程序段的输出结果为:‎ A.1 B.3 0 C.1 -2 D.死循环 int x=3;‎ do ‎{printf("%3d",x-=2);}‎ while(!(--x));‎ ‎***执行第一次循环之后x为1,--x为0;!0则为真,继续执行循环体 ‎6)以下程序段的输出结果为:‎ A.15 B.14 C.不确定 D.0‎ main()‎ ‎{‎ int i,sum;‎ for(i=1;i<6;i++) sum+=sum;‎ printf("%dn",sum);‎ ‎}‎ ‎***sum无确定的值 ‎7)以下程序段的输出结果为:‎ A.741 B.852 C.963 D.875421‎ main()‎ ‎{‎ int y=10;‎ for(;y>0;y--)‎ if(y%3==0)‎ ‎{printf("%d",--y);continue}‎ ‎}‎ ‎***程序输出的是1-10之间3的倍数自减1的结果 ‎8)若x是int型变量,以下程序段输出结果为:‎ A.**3 B.##3 C.##3 D.**3##4‎ ‎ ##4 **4 **4##5 **5‎ ‎ **5 ##5‎ for(x=3;x<6;x++)‎ printf((x%2)?("**%d"):("##%dn"),x);‎ ‎***1,0,1:真,假,真 ‎9)以下程序段的输出结果为:‎ A.*#*#*#$ B.#*#*#*$‎ C.*#*#$ D.#*#*$‎ main()‎ ‎{‎ int i;‎ for(i=1;i<=5;i++)‎ ‎{‎ if(i%2)printf("*");‎ else continue;‎ printf("#");‎ ‎}‎ printf("$n");‎ ‎}‎ ‎***循环体:i=1,2,3,4,5;‎ ‎***奇数时输出*#,偶数什么也不是输出。‎ ‎10)以下叙述正确的是:‎ A.do while语句构成的的循环不能用其他语句构成的循环代替 B.do while语句构成的循环只能用break语句退出 C.用do while语句构成循环时,只有在while后的表达式为非零时结束循环 D.用do while语句构成循环时,只有在为了后的表达式为零时结束循环 ‎11)以下程序输出结果为:‎ A.39 81 B.42 84 C.26 68 D.28 70‎ main()‎ ‎{‎ int x,i;‎ for(i=1;i<=100;i++)‎ ‎{‎ x=i;‎ if(++x%2==0)‎ ‎ if(++x%3==0)‎ ‎ if(++x%7==0)‎ ‎ printf("%d",x);‎ ‎}‎ printf("n");‎ ‎}‎ ‎***应满足x%7==0,(x-1)%3==0,(x-2)%2==0‎ ‎(2)填空题 ‎1)当执行以下程序段后,i的值是_5_、j的值是__4__、k的值是__6__ ‎ ‎。‎ int a,b,c,d,i,j,k;‎ a=10;b=c=d=5;i=j=k=0;‎ for(;a>b;++b)i++;‎ while(a>++c)j++;‎ do k++;while(a>d++);‎ ‎2)以下程序段的输出结果为:_______‎ int k,n,m;‎ n=10;m=1;k=1;‎ while(k<=n) m*=2;‎ printf("%dn",m);‎ ‎3)以下程序段的输出结果为:___-1____‎ main()‎ ‎{int x=2;‎ while(x--);‎ printf("%dn",x);‎ ‎}‎ ‎***while控制的是空语句,当x=1时条件不成立,输出0--的值,即-1‎ ‎4)以下程序段的输出结果为:_______‎ int i=0,sum=1;‎ do{sum+=i++;}while(i<5);‎ printf("%dn",sum);‎ ‎***2 4 7 11‎ ‎5)以下程序段:‎ s=1.0;‎ for(k=1;k<=n;k++)s=s+1.0/(k*(k+1));‎ printf("%dn",s);‎ 请填空,使下面的程序段的功能完全与之等同。‎ s=1.0;‎ ‎___d=1.0___;‎ k=0;‎ do ‎{s=s+d;‎ ‎____k++____;‎ d=1.0/(k*(k+1));‎ ‎}‎ while(___k<=n____);‎ printf("%fn",s);‎ ‎6)以下程序的功能是:从键盘上输入若干学生的成绩,统计出输出最 ‎ 高成绩和最低成绩,当输出负数时结束输入。‎ main()‎ ‎{‎ float x,amax,amin;‎ scanf("%f",&x);‎ while(___x>=0____)‎ ‎{‎ if(x>amax) amax=x;‎ if(___x‎ main()‎ ‎{‎ int i,j,sum=0;‎ for(i=3;i<=101;i+=4)‎ sum+=i;‎ for(i=3;i<=101;i+=4)‎ sum-=i;‎ printf("%dn",sum);‎ ‎}‎ ‎2)编写程序,输入从公元1000年至2000年所有闰年的年号。每输出三个年号换一行。判断公元年是否为闰年的条件是:‎ ‎***公元年数能被4整除,而不能被100整数,则是闰年 ‎***公元年数能被400整除也是闰年。‎ ‎#include‎ main()‎ ‎{‎ int i,k=0;‎ for(i=1000;i<=2000;i++)‎ ‎{‎ if(i%4==0&&i%100!=0||i%400==0)‎ ‎{printf("%dt",i);‎ k++;}‎ if(k%3==0)‎ printf("n");‎ ‎}‎ ‎}‎ ‎3)从输入的若干个大于零的正整数中选出最大值,用-1结束输入 ‎#include‎ int main()‎ ‎{‎ int k=1,max=0;‎ printf("ent -1 to endn");‎ do{‎ printf("ent x1: ");‎ scanf("%d",&k);‎ ‎}‎ while(k<0&&k!=-1);‎ max=k;‎ while(k!=-1)‎ ‎{‎ printf("ent x2: ");‎ scanf("%d",&k);‎ if(k>0&&k>max)‎ max=k;‎ ‎}‎ if(k!=-1)‎ ‎{‎ printf("%dn",max);‎ ‎}‎ ‎}‎ 第六章、字符型数据 ‎1.字符型常量 ‎(1)格式 ‎'a'、'c'‎ ‎(2)要求 ‎1)单引号中的大写字母和小写字母代表不同的常量。‎ ‎2)单引号中的空格也是一个字符常量,但不能是两个连续的单引号 ‎3)字符常量只能用单引号括起来,不能用双引号 ‎4)注意字符 ‎n:代表回车 '代表一个单引号 \代表一个 "代表一个双引号 ‎(3)注意:‎ ‎1)转义字符常量,如'131'只代表一个字符 ‎2)反斜线后的8进制数可以不用0开头。131就是一个八进制数 ‎3)反斜线后的16进制数只能以x开头,不能以X开头 ‎2.字符串常量 ‎(1)格式 由双引号括起来的一串字符 ‎(2)注意:‎ ‎1)“A”和'A'是不一样的 ‎2)一个字符串常量在内存中最少占1个字节,而一个字符常量最少占0个字节(相对而言)‎ ‎3)ACSLL码中:‎ A = 65 a = 97‎ ‎'a' - 'A' = 32‎ ‎3.字符型变量 ‎(1)格式 char 变量名= '字符常量'‎ ‎(2)输入与输出 printf和scanf函数输出和输入字符 对于字符型数据的格式说明符是%c char c='a';‎ printf("%c",c);‎ char a,b,c,d;‎ scanf("%c%c%c",&a,&b,&c);‎ ‎(3)程序举例 ‎1)写出26个大写字母和他们的ASCLL代码要求每行输出两组数据。‎ ‎#include‎ main()‎ ‎{‎ int i;‎ char a;‎ printf("这是26个大写字母和他们的ASCLL代码n");‎ for(i=0;i<26;i++)‎ ‎{‎ a=i+65;‎ if(i%2==0)‎ printf("n");‎ printf("%ct%dt",a,a);‎ ‎}‎ ‎}‎ 在上面的程序中有对于字符的输入与输出,在C语言中也有另外的输入输出的语句。‎ 输入:变量名=getchar();‎ 输出:putchar(变量名);‎ 输入输出只对字符数据有效。‎ ‎2)编写一个程序,使用户输入的小写字母转化为大写字母,而输入的其他字符不变;‎ ‎#include‎ main()‎ ‎{‎ char a;‎ printf("请输入一个字符串n");‎ while((a=getchar())!='n')‎ ‎{‎ if(a>='a'&&a<='z')‎ a=a-32;‎ putchar(a);‎ ‎}‎ ‎}‎ ‎3)有以下程序,已知字母A的ASCLL码为65,程序运行后的输出结果是 ‎#include‎ mainn()‎ ‎{‎ char c1,c2;‎ c1='A'+'8'-'4';‎ c2='A'+'8'-'5';‎ printf("%c,%dn",c1,c2);‎ ‎}‎ A.E,68 B.D,69 C.E,D D.输出无定值 ‎4.课后习题 ‎(1)选择题 ‎1).C语言中的简单类型有()‎ A.整型,实型,逻辑型 B.整型,实型,字符型 C.整型,字符型,逻辑型 D.整型,实型,逻辑型,字符型 ‎2)C语言中,字符型(char)数据在微机内存中的存储形式是(D)‎ A.反码 B.补码 C.EBCDIC码 D.ASCLL码 ‎3)没有语句char a = '72',则变量A()‎ A.包含一个字符 B.包含两个字符 C.包含三个字符 D.说明不合法 ‎***‎ 转义字符只占一个字符 ‎4)C语言中不合法的字符常量是()‎ A.'XFF' B.'65' C.'&' D.'28'‎ ‎***字符常量只能是由单引号括起来的字符 ‎***八进制数不可能包含数字8或以上的数字 ‎5)C语言中不合法的字符串常量是()‎ A."121" B.'y=' C."nn"D."ABCDX6d"‎ ‎6)判断char型变量C是否为大写字母的最简单且正确的表达式()‎ A.'A'<=C='Z' B.(C>='A')&(C<='Z')‎ C.('A'<=C)AND('Z'>=C) D.(C>='A')&&(C<='Z')‎ ‎7)以下程序输出结果为()‎ main()‎ ‎{‎ char c1='a',c2='y';‎ printf("%d,%dn",c1,c2);‎ ‎}‎ A.因输出格式不合法,无正确输出 B.65,90‎ C.A,Y D.65,89‎ ‎8)以下程序输出结果为()‎ main()‎ ‎{‎ char x='a';‎ x=(x>='A'&&x<='Z')?(x+32):x;‎ printf("%cn",x);‎ ‎}‎ A.A B.a C.Z D.z ‎9)以下程序输出结果为()‎ main()‎ ‎{‎ char ch1,ch2;‎ ch1='A'+'5'-'3';‎ ch2='a'+'5'-'3';‎ printf("%d,%cn",ch1,ch2);‎ ‎}‎ A.67,C B.B,C C.C,D D.不确定的值 ‎***首先看输出值的类型,为%d,%c,可以看出一个是数字,一个是字母 ‎10)对以下程序,从第一列开始输入数据:2473,代表enter,程序的输出结果为()‎ A.668977 B.668966 C.66778777 D.6688766‎ ‎#include‎ main()‎ ‎{‎ char c;‎ while((c=getchar())!='n')‎ ‎{‎ switch(c-'2')‎ ‎{‎ ‎ case 0:‎ ‎ case 1:putchar(c+4);‎ ‎ case 2:putchar(c+4);break;‎ ‎ case 3:putchar(c+3);‎ ‎ default:putchar(c+2);break;‎ ‎}‎ ‎}printf("n");‎ ‎}‎ ‎***case 0后面没有break,继续执行case 1;‎ ‎***字符型变量也可以减数字;‎ ‎11)若变量已正确说明,要求下列语句给C1赋予字符%给C2赋予字符#,给a赋予2.0,给b赋予4.0,则正确的输入形式是(C)‎ A.2.0% 4.0# B.2.0%4.0#‎ C.2% 4# D.2% 4‎ scanf("%f%c%f%c",&a,&c1,&b,&c2);‎ ‎***第二次输入实型数据的时候要与第一次字符型数据间有明显的间隔,不然系统难以分辨。‎ ‎(2)填空题 ‎1)C语言中,字符占内存()个字节。‎ ‎2)调用C语言对字符处理的库函数时,在#include命令中应包含的文件是(ctype.h)。‎ ‎3)若输入字符A,在以下while语句执行后ch的值是()‎ while(ch=getchar()=='A');‎ ‎4)若要通过以下语句给a,b,c,d分别输入字符A,B,C,D,给w,x,y,z,分别输入10,20,30,40,正确的输入形式是(_10A 20B 30C 40D_),请用代表enter键。‎ scanf("%d%c%d%c%d%c%d%c",&w,&a,&x,&b,&y,&c,&z,&d);‎ ‎5)若有以下说明和输入语句,要求给c1,c2输入字符A,B,给a1,a2输入7.29和101.298,从键盘正确的输入数据的形式是(7.29 101.298 AB)‎ char c1,c2;float a1,a2;‎ scanf("%f%f",&a1,&a2);scanf("%c%c",&c1,&c2);‎ ‎6)若有以下说明和输入语句,要求给c1,c2输入字符A,B,给a1,a2输入7.29和101.298,从键盘正确的输入数据的形式是( A7.29B 101.298)‎ char c1,c2;float a1,a2;‎ scanf("%f%c%f%c",&c1,&a1,&c2,&a2);‎ ‎7)若有以下说明和输入语句,要求给c1,c2,c3输入字符A,B,C,从键盘上正确输入数据的形式。‎ char c1,c2,c3;‎ scanf("%4c",&c1);scanf("%4c",&c2);scanf("%4c",&c3);‎ A三个空格B三个空格C ‎***%4d只占4个字符 ‎(3)编程题 ‎1)请编写一个程序,输入一行数字字符(以enter结束),每个数字字符的前后都有空格,把这一行中的数字转换成一个整数。‎ ‎#inlude‎ main()‎ ‎{‎ int a=0;char x;‎ while(x=(getchar())!=0)‎ ‎{‎ if(x>='0'&&x<='9')‎ a=a*10+x-'0';‎ ‎}printf("%dn",a);‎ ‎}‎ ‎***'0'为字符型 数据基本的ascll码值。‎ ‎2)请编写程序统计输入的行数,输入用!结束,但!所在的行不计入行数。‎ ‎#inlude‎ main()‎ ‎{‎ int a;‎ char x;‎ getchar(x);‎ while(x=(getchar())!='!')‎ ‎{‎ if(x=='n')‎ a++;‎ ‎}printf("%d",a);‎ ‎}‎ ‎***x=(getchar())!='!'的时候程序不会显示出!来,所以不用担心!会占一行。‎ ‎3)请编写输出如下图案的程序,图案的行数由输入的值确定。‎ ‎ A ‎ BBB ‎ CCCCC ‎ DDDDDDD EEEEEEEEE ‎#include‎ main()‎ ‎{‎ int a,i,j,k,n;char x;‎ printf("请输入一个数来确定行数:n");‎ scanf("%d",&a);‎ for(i=1;i=i;j--)‎ printf(" ");‎ for(k=1;k<=n;k++)‎ printf("%c",x);‎ ‎}‎ ‎}‎