最后一个printf语句的运行结果是_______________。
(四)程序填空: #include \void main( )
{ _________ a=7;
float x=2.5,y=4.7,z;
z= x + a % 3 * (int) (x + y) % 2 / 4;
printf(\
程序中空格处应填_______________。
8
实验二 数据类型、运算符和表达式
一、实验目的
(1)了解C 语言数据类型的意义,掌握基本数据类型变量的特点和定义方法。 (2)学会使用C 的算术运算符,以及包含这些运算符的算术表达式。 (3)掌握自加(++)和自减(--)运算符的使用。
(4)进一步熟悉C 程序的编辑、编译、连接和运行的过程。
二、实验要点
基本数据类型包括整型、字符型、实型。
三、实验要求
(1)上机前先阅读和编写以下要调试的程序。 (2)上机输入和调试程序并存在磁盘上。 (3)检查实验结果是否正确。
四、实验内容
(以下内容在实验报告中的实验预习报告内容中完成) 1. 调试程序,分析输出结果
(1)输入并运行以下程序。 main()
{ float a,b;
a=123456.789e5; b=a+20;
printf(\}
将第二行改为: double a,b;
重新运行该程序,分析运行结果。
说明:由于实型变量的值是用有限的存储单元存储的,因此其有效数字的位数是有限的。float型变量最多只能保证7 位有效数字,后面的数字是无意义的,不能准确表示该数。
(2)输入并运行以下程序。 main()
{ char c1,c2; c1=97;c2=98;
printf(\printf(\}
① 将第二行改为:int c1,c2;再运行。
9
② 再将第三行改为:c1=300;c2=400;再运行,分析运行结果。
说明:字符型数据可作为整型数据处理,整型数据也可以作为字符型数据处理,但应注意字符数据只占一个字节,它只能存放0-255 范围的整数。
2.完成以下填空,并把程序调通,写出运行结果。 下面的程序计算由键盘输入的任意两个整数的平均值: main()
{ int x,y ;
;
scanf(“%d,%d”,&x,&y); ;
printf(\}
3. 指出以下程序的错误并改正,上机把程序调通 main(); { int a;
a=5;
printf(“a=%d, a) }
4. 编写程序并上机运行
要将“China”译成密码,译码规律是:用原来字母后面的第3 个字母代替原来的字母。例如,字母“A”后面第4 个字母是“E”,用“E”代替“A”。因此,“China”应译为“Fklqd”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5 五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5 分别变为‘F’、‘k’、‘l’、‘q’、‘d’、,并输出。输入程序,并运行该程序。分析是否符合要求。
五、思考与总结
(1)总结各种整型变量的取值范围。
(2)总结各种实型变量的有效数字位数和取值范围。 (3)总结算术运算符和自加、自减运算符的优先级与结合性。
10
实验三 选择结构程序设计
一、实验学时
2学时
二、实验目的
(一)掌握C语言关系表达式和逻辑表达式的运算和使用;
(二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计。
三、预习要求
(一)关系运算符和关系表达式、逻辑运算符和逻辑表达式;
(二)if语句的三种形式(单分支、双分支、多分支),以及if语句的嵌套; (三)switch语句的形式。
四、实验内容
(一)分析下面程序,掌握关系及逻辑表达式的运算规则。 /* c3-1.c 关系及逻辑表达式运算规则 */ #include \void main( )
{ int a=3,b=5,c=8;
if(a++<3 && c--!=0) b=b+1;
printf(\}
注意该程序中的条件判断表达式a++<3 && c--!=0是一个逻辑表达式,关系表达式a++<3的值为假,因此后一部分c--!=0就不再计算。试比较下列各部分运行结果。
#include \void main( )
{ int a=3,b=5,c=8;
if(a++<3 && c--!=0) b=b+1;
printf(\
int a=3,b=5,c=8;
if(c--!=0 && a++<3) b=b+1;
printf(\
int a=3,b=5,c=8;
if(a++<3 || c--!=0) b=b+1;
printf(\
int a=3,b=5,c=8;
if(c--!=0 || a++<3) b=b+1;
printf(\ }
11
(二)输入下面两段程序并运行,掌握case语句中break语句的作用。 1./* c3-2.c */ /* c3-3.c */
/* 不含break的switch */ /* 含break的switch */ #include \ #include \void main( ) void main( ) { int a,m=0,n=0,k=0; { int a,m=0,n=0,k=0; scanf(\ scanf(\ switch(a) switch(a) { case 1: m++; { case 1: m++; break; case 2: case 2: case 3: n++; case 3: n++; break; case 4: case 4: case 5: k++; case 5: k++; } }
printf(\ printf(\} } 分别从键盘上输入1、3、5,写出程序运行的结果。
(三)完善程序,从键盘上输入x的值,按下式计算y的值。
?x x<1?y??2x?1 1?x<10
?3x?11 x?10?编程提示:注意逻辑表达式的正确表达方法,数学中的1≤x<10应使用C语言的逻辑表
达式(x>=1 && x<10)来表示。
下面是用多分支选择结构实现本题的程序结构: /* c3-4.c if 语句实现的多分支结构 */ #include \ void main( ) { 定义变量; 输入x;
if ( _______________ ) //按y=x为变量y赋值;
else if( _______________ ) //按y=2x-1为变量y赋值; else
_______________ //按y=3x-11为变量y赋值; printf(\ }
注意:在赋值语句中2x应该写成2*x。
(四)编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。
编程提示: 1.先定义一个整型变量存放百分制成绩、定义一个字符型变量存放相应的等级成绩; 2.输入百分制成绩;
3.将百分制成绩按10分,分档作为switch语句中括号内的表达式; 4.按
case 10: case 9:
12