回答问题…..1、数据类型决定什么?答案:数据类型决定:1、数据的表示形式2、数据占内存字节数3、数据取值范围4、其上可进行的操作2、整型变量、字符型变量、单精度变量在内存中各占几个字节?答案:整型变量占2个字节;字符型变量占1个字节;单精度变量占4个字节。例如:inta=3;charch=‘A’;2000200120022003变量a3例如:floatx=3.5;2000200120022003变量x3.5变量ch653、标识符允许使用哪些符号?答案:只能由字母、数字、下划线组成且第一个字母必须是字母或下划线。•标示符是用来给变量、函数、符号常量等起名的。例如:sum、y、_add(intx,inty)、x1、PRICE等4、符号常量是怎样定义的?答案:#define符号常量常量是预处理命令,叫宏定义例如:#definePRICE25#definePI3.14159#defineA9.85、字符型常量是怎样定义的?答案:用单引号括起来的单个普通字符或转义字符.例如:‘a’、‘A’、‘\n’、‘\134’6、什么叫转义字符?答案:反斜线后面跟一个字符或一个代码值表示‘\n’、‘\ddd’、‘\xhh’例如:‘\n’表示换行‘\102’表示字符‘B’‘\x43’表示字符‘C’7、字符串常量与字符常量有什么区别?答案:用双引号(“”)括起来的字符序列为字符串常量。例如“a+b”、“y=“、”a”等;存储:每个字符串尾系统自动加一个‘\0’作为字符串结束标志8、整型变量与字符型变量可以通用?答案:可以,因为字符型变量在内存中保存字符的ASCII码(为一个整数)例如:main(){charc1=‘a’;intc2=97;printf(“%d,%d”,c1,c2);结果:97,97printf(“%c,%c”,c1,c2);a,a}9、定义变量时是否可以赋初值?答案:可以例如inta=40,b=4,c;10、变量不定义可以直接使用吗?例如main(){inta=23,b=12;c=a+b;printf(“c=%d”,c);}答案:不能,必须先定义后使用11、不同类型数据之间的转换规则是如何规定的?答案:不同类型数据运算时先自动转换成同一类型doublefloatlongunsignedintchar,short低高§4.1C语句概述C语言的语句是用来向计算机系统发出操作指令的,一个C语句经编译后产生若干条机器指令。C函数一般包含首部和函数体两部分,函数体由声明部分和执行部分(语句部分)组成。其中声明部分不是语句,如inta,b;它不产生操作代码。如图4-1,P69。第四章最简单的C程序设计C语句分为以下5类:1、控制语句(如if语句、while语句、for语句等)2、函数调用语句(如printf(“y=%d”,y);)3、表达式语句a=3是赋值表达式a=3;是赋值语句(表达式后加;构成了语句)一个语句必须在最后出现分号。分号是语句必不可少的一部分。C语言中任何表达式都可以加分号成为语句。i=i+1i++(表达式)i=i+1;i++;(语句)x+y;也是语句,但没有把x+y的和赋给一个变量,所以无实际意义。4、空语句;只有一个分号,什么也不做。5、复合语句,也叫分程序。是用{}扩起来的。{a=a+b;printf(“%d”,a);}(一起执行,最后一行的分号不能省略)§4.2赋值语句•C语言中的赋值号“=”是运算符•C语言中的赋值表达式if((a=b)0)t=a;作用是:先将b的值赋给a,然后判断a是否大于0。如果写成If((a=b;)0)t=a;(错误)条件中不能包含赋值语句a=b;if(a0)t=a;2020/1/2817§4.3数据输入输出的概念及在C语言中的实现1、输入输出的概念从计算机向外部输出设备(如显示器、打印机、磁盘等)输出数据称为“输出”;从输入设备(键盘、磁盘等)向计算机输入数据称为“输入”。2、C语言通过什么方式实现输入输出的?C语言输入输出操作是由函数来实现的。在C语言中标准函数库中提供一批“标准输入输出函数”,例如printf函数(输出函数)scanf函数(输入函数)putchar函数(输出函数)getchar函数等(输入函数)3、在c语言中使用库函数有什么条件?在使用C语言标准(I/O)库函数时,要用文件包含预编译命令:#includestdio.h或#include“stdio.h”有些编译系统,使用printf、scanf函数时可以省略预编译命令。为什么使用库函数时要用#includestdio.h?因为每个库函数都有一些规则,这些规则包含在一个文件中(比如:stdio.h),通过预处理命令把相应的文件装在程序的前面,一起编译,只有这样才能使用后面的库函数。#includestdio.hmain(){…….}qqqqqqqqqqqqqqqqqqqqmain(){…….}stdio.c执行预处理命令后1、putchar函数(字符输出函数)格式:putchar(c)参数:c为字符常量、字符变量、整型常量、整型变量。功能:把字符变量c的值输出到显示器上,只能输出一个字符。§4.4字符数据的输入输出例子:/*ch3_1.c*/#includestdio.h/*必须使用预编译命令*/voidmain(){intc;chara;c=65;a='B';putchar(c);putchar('\n');putchar(a);putchar(c+1);}运行结果:ABB格式:getchar()功能:从键盘读入一字符2、getchar()(字符输入函数)例#includestdio.h(不可少)voidmain(){intc;printf(Enteracharacter:);c=getchar();printf(%c”,c);}运行结果:Enteracharacter:AAgetchar()函数只能接收一个字符。•格式输出函数格式:printf(格式控制,输出表列)功能:按指定格式向显示器输出数据输出表列:要输出的数据(可以没有,多个时以“,”分隔)格式控制:包含两种信息格式说明:%[修饰符]格式字符,用于指定输出格式普通字符或转义序列:原样输出例如:printf(“a=%db=%d\n”,a,b);输出:a=3b=4§4.5格式输入与输出普通字符普通字符转义字符格式字符格式说明1、输出函数通过编写程序深入而自然地掌握d,ix,Xoucse,Efg,G%%格式字符:十六进制无符号整数无符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+002567.789000567.789%说明格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出例inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);输出结果:34a=3,b=4附加格式说明符(修饰符).n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l如%ld,%lo等例m.n运行结果:1234,1234例inta=1234;printf(“%8d,%2d\n”,a,a);例floatf=123.456;printf(“%f,%10f,%10.1f,%.2f,%.2e\n”,f,f,f,f,f);运行结果:a例charch=‘a’;printf(“%3c\n”,ch);运行结果:123.456000,123.456000,123.5,123.46,1.23e+002例staticchara[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);运行结果:Hello,world!Hello,world!HelloHelloHel例%s例inta=1234;floatf=123.456;staticcharc[]=“Hello,world!”;printf(“%8d,%-8d\n”,a,a);printf(“%10.2f,%-10.1f\n”,f,f);printf(“%10.5s,%-10.3s\n”,c,c);例运行结果:1234,1234123.46,123.5Hello,Hel例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);printf(“%0+10.2f\n”,f);例0、+例inta=123;printf(“%o,%#o,%X,%#X\n”,a,a,a,a);例#例longa=65536;printf(“%8ld,%d\n”,a,a);例l00000000000000010000000000000000//00001234//0000123.46//000+1234//000+123.56//173,0173,7B,0X7B---65536,02、数据输入格式输入函数格式:scanf(格式控制,地址表列)功能:按指定格式从键盘读入数据,存入地址表列指定的存储单元中,并按回车键结束。地址表列:变量的地址,或字符串的首地址,常用取地址运算符&;格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);输入:10则a=10例scanf(“%x”,&a);输入:11则a=17附加格式说明符(修饰符)l修饰符功能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入19991015则1999yy,10mm,15dd例scanf(“%3d%*4d%f”,&k,&f);输入12345678765.43则123k,8765.43f例scanf(“%2d%*3d%2d”,&a,&b);输入1234567则12a,67b例scanf(“%3c%2c”,&c1,&c2);输入abcde则‘a’c1,‘d’c2输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);输入123123123输出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);输入12:30:45则12h,30m,45s例scanf(“%d,%d”,&a,&b)输入3,4则3