数据类型、运算符及表达式(C语言实验报告)
仲恺农业工程学院实验报告纸
信息学院(院、系) 专业 班 C语言程序设计 课
学号 姓名 实验日期 教师评定
实验名称:数据类型、运算符和表达式
实验目的:
掌握C语言数据类型,熟悉基本类型变量的定义、赋值和运算。
熟悉C程序的编辑、编译、链接和运行过程。
实验内容与总结:
运行下面程序,分析实验结果。
#include
void main()
{
float x=2.5,y=4.7;
int a=7,b;
float result;
result=x+a%3*(int)(x+y)%2/4; /*赋值语句1*/
printf("result1=%f\n",result);
a=2;b=3;x=3.5;y=2.5;
result=(float)(a+b)/2+(int)x%(int)y; /*赋值语句2*/
printf("result2=%f\n",result);
}
分析:
(1)、result=x+a%3*(int)(x+y)%2/4;语句求值过程分析如下:
a%3=1;(int)(x+y)=7;result=x+a%3*(int)(x+y)%2/4=2.5+1*7%2/4=2.5+1/4=2.500000
因为float result,所以输出结果有六位小数。
(2)、result=(float)(a+b)/2+(int)x%(int)y; 语句求值过程分析如下:
(float)(a+b)/2=(2+3)/2=2.500000;(int)x%(int)y=3%2=1,所以result=3.500000.
(3)、该实验中表达式求值所用到的知识点包括:
①单精度浮点型变量float,有效数学为6~7位;
②基本整型int;
③程序内printf函数中的“%f”是输出浮点数时指定的格式符,作用是指定该实数以小数形式输出;
④取商符号“/”, 取余符号“%”;
⑤转义字符\n,作用是换行,将当前位置移到下一行开头。
译码:教材P67-3.7
程序:
#include
void main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("Password is %c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
(1)、程序编制要点:
①指定字符变量,初值分别’C’,’h’,’i’,’n’,’a’;
②经过运算,使C变为G,h变为l,i变为m,n变为r,a变为e;
③输出结果:China 译成 Glmre。
(2)该题目涉及的知识点和难点:
①字符变量char的使用;
②复合的赋值运算符“+=”, c+=4是表示c=c+4,
③程序内printf函数中的“%c”是输出字符时指定的格式符,作用是指定该实数以字符形式输出;
④“;”的使用。
输入一个三位整数,然后构成其反向三位数,并将其输出。
程序:
#include
void main()
{
int a,b,c,x,y;
printf("请输入一个三位整数 x=");
scanf("%d",&x);
a=x/100;
b=(x-a*100)/10;
c=x-a*100-b*10;
y=c*100+b*10+a;
printf(“%d\n",y);
}
(1)、程序编制要点:
①输入一个三位数x,取出它的个位数a,十位数b,百位数c;
②将反向三位数y等于个位数*100+十位数*10+百位数,则y=c*100+b*10+a
③x变成了y。
(2)、该题目涉及的知识点和难点:
①基本整型int,scanf函数的使用;
②一个三位数的个位数、十位数、百位数的取值方法。
程序代码和运行情况描述:
前两个程序我都写的都没问题,但有时忘记了“;”的输入,导致程序出错,根据编程工作区的最下面小窗口的出错提示改正后,程序就可行了。
第三个输入三位数的实验我编写的程序出现了问题。开始的时候,我把个位数、十位数、百位数的取值方法理解错了,编写出来的结果程序没有错,但就是运行不了。经过老师和同学的帮忙,我改正了错误的地方,再调试时,程序就可以运行了。
第 1 页 共 2 页