四川师范大学c语言实验报告.docx
《四川师范大学c语言实验报告.docx》由会员分享,可在线阅读,更多相关《四川师范大学c语言实验报告.docx(60页珍藏版)》请在冰豆网上搜索。
![四川师范大学c语言实验报告.docx](https://file1.bdocx.com/fileroot1/2022-10/12/97f9e46e-0810-467a-a4ef-167693b0ab51/97f9e46e-0810-467a-a4ef-167693b0ab511.gif)
四川师范大学c语言实验报告
实验一数据类型和表达式实验
(验证性实验2学时)
一、目的要求:
(1)了解C语言中数据类型的意义。
(2)理解常用运算符的意义。
(3)掌握C语言表达式的运行规则。
(4)编写实验报告。
二、实验内容(参考实验指导书):
1、计算由键盘输入的任何两个双精度数据的平均值。
(1)算法描述:
将数据代入公式(a+b)/2,输出结果。
(2)源代码及说明:
#include
main()
{
doublea,b;
scanf("%lf%lf",&a,&b);
printf("%lf",(a+b)/2);
}
(3)测试数据:
26
(4)运行结果:
4.00000
(5)问题及解决方法:
问题:
格式符使用“%f”,输出结果总是0.000000。
解决方法:
格式符改为”%lf”。
2、写一个输入7个数据的程序,把输入的数据代入a+b*(c–d)/e*f–g表达式进行运算。
(1)算法描述:
将数据代入公式a+b*(c–d)/e*f–g,输出结果。
(2)源代码及说明:
#include
main()
{
inta,b,c,d,e,f,g;
scanf("%d%d%d%d%d%d%d",
&a,&b,&c,&d,&e,&f,&g);
printf("%d",a+b*(c-d)/e*f-g);
}
(3)测试数据:
1234567
(4)运行结果:
-6
(5)问题及解决方法:
无
3、编写一个C语言程序,测试下列各表达式:
i,j
i+1,j+1
i++,j++
++i,++j
i+++++j
(1)算法描述:
定义变量并将其分别代入各表达式中,输出结果。
(2)源代码及说明:
#include
main()
{
inti=2,j=3;
printf("%d%d\n",i,j);
printf("%d%d\n",i+1,j+1);
printf("%d%d\n",i++,j++);
i=2,j=3;
printf("%d%d\n",++i,++j);
i=2,j=3;
printf("%d\n",(i++)+(++j));
}
(3)测试数据:
23
(4)运行结果:
23;34;23;34;6
(5)问题及解决方法:
问题:
没有注意变量的使用。
解决方法:
重新定义变量。
4、输入存款金额money,存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。
interest=money(1+rate)year-money
(1)算法描述:
利用函数pow(),将数据代入公式interest=money(1+rate)year-money输出结果。
(2)源代码及说明:
#include
#include
main()
{
doublemoney,rate,interest;
intyear=0;
scanf("%lf%lf",&money,&rate);
scanf("%d",&year);
interest=money*pow(1+rate,year)-money;
printf("%.2lf",interest);
}
(3)测试数据:
1000.12
(4)运行结果:
21.00
(5)问题及解决方法:
问题:
求利率的多次幂
解决方法:
利用math函数库里的pow()函数
5、输入华氏温度,输出对应的摄氏温度。
计算公式如下:
c=5*(f-32)/9
其中,c表示摄氏温度,f表示华氏温度。
(1)算法描述:
将数据代入c=5*(f-32)/9,输出结果。
(2)源代码及说明:
#include
main()
{
doublec,f;
scanf("%lf",&f);
c=5*(f-32)/9;
printf("摄氏温度为:
%lf",c);
}
(3)测试数据:
90.0
(4)运行结果:
32.222222
(5)问题及解决方法:
无
三、实验总结:
1.通过实验我清楚的知道了双精度型数据的格式说明符的使用。
2.学会使用pow()函数。
实验二分支结构程序设计实验
(验证性实验2学时)
一、目的要求:
(1)了解和掌握分支语句的使用,包括if语句的各种形式以及switch语句。
(2)编写实验报告。
二、实验内容(参考实验指导书):
1、编写一个程序完成输入一个整数,输出它的符号。
(1)算法描述:
if(i>0)输出“+”。
if(i<0)输出“-”。
if(i=0)输出“0”。
(2)源代码及说明:
#include
main()
{
inti;
printf("请输入一个整数:
\n");
scanf("%d",&i);
if(i>0)
{
printf("+\n");
}
elseif(i=0)
printf("0\n");
else
printf("-\n");
}
(3)测试数据:
5-6
(4)运行结果:
+-
(5)问题及解决方法:
无
2、请编写居民应交水费,并提供各种测试数据。
居民应交水费y(元)与月用水量x(吨)的函数关系式如下:
0x<0
y=f(x)=4x/30≤x≤15
2.5x–10.5x>15
(1)算法描述:
ifx<0=>f(x)=0;
if0<=x<=15=>f(x)=4x/3
ifx>15=>f(x)=2.5x-10.5
(2)源代码及说明:
#include
main()
{
floatx,y;
scanf("%f",&x);
if(x<0)
{
y=0;
printf("应交水费%f元\n",y);
}
elseif(x>=0&&x<=15)
{
y=4*x/3;
printf("应交水费%f元\n",y);
}
else
{
y=2.5*x-10.5;
printf("应交水费%f元\n",y);
}
}
(3)测试数据:
-1820
(4)运行结果:
0.00000010.66666735.200000
(5)问题及解决方法:
无
3、请根据输入的学生成绩给出成绩等级的判断,判断规则如下:
如果输入的成绩大于等于90,则输出优秀;
如果输入的成绩小于90、大于等于80,则输出良好;
如果输入的成绩小于80、大于等于70,则输出中等;
如果输入的成绩小于70、大于等于60,则输出及格;
其他输出不及格。
(1)算法描述:
ifscore>=90输出优秀
if80<=score<90输出良好
if70<=score<80输出中等
if60<=score<70输出及格
else输出不及格
(2)源代码及说明:
#include
main()
{
intscore;
scanf("%d",&score);
if(score>=0&&score<=100)
{
switch(score/10)
{
case10:
case9:
printf("优秀");
break;
case8:
printf("良好");
break;
case7:
printf("中等\n");
break;
case6:
printf("及格\n");
break;
case5:
case4:
case3:
case2:
case1:
case0:
printf("不及格\n");
break;
default:
printf("你输入的成绩非法\n")
}
}
printf("你输入的成绩非法\n");
}
(3)测试数据:
9886756453105-22
(4)运行结果:
优秀良好中等及格不及格输入不合法输入不合法
(5)问题及解决方法:
问题:
大于100的分数未给出明确结果
解决方法;在代码中加上对高于100分的限制
4、运输公司对用户计算运费。
路程(s)越远,每公里运费越低。
标准如下:
s=250km没有折扣
250km≤s<500km2%折扣
500km≤s<1000km5%折扣
1000km≤s<2000km8%折扣
2000km≤s<3000km10%折扣
3000km≤s15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费的计算公式为:
f=p*w*s*(1–d)
请编程实现:
从键盘输入基本运费p,货物重w,距离s,计算输出用户最终需要支付的运费。
(1)算法描述:
if(s<250)d=0.0
if(s>=250&&s<500)d=0.02
if(s>=500&&s<1000)d=0.05
if(s>=1000&&s<2000)d=0.08
if(s>=2000&&s<3000)d=0.1
elsed=0.15
然后再将数据代入公式money=p*w*s*(1-d),输出money。
(2)源代码及说明:
#include
main()
{
doublep,w,s,money,d;
scanf("%lf%lf%lf",&p,&w,&s);
if(s<250)
{
d=0.0;
}
elseif(s>=250&&s<500)
{
d=0.02;
}
elseif(s>=500&&s<1000)
{
d=0.05;
}
elseif(s>=1000&&s<2000)
{
d=0.08;
}
elseif(s>=2000&&s<3000)
{
d=0.1;
}
else
d=0.15;
money=p*w*s*(1-d);
printf("总运费为:
%.2lf",money);
}
(3)测试数据:
102230
(4)运行结果:
4600.00
(5)问题及解决方法:
无
三、实验总结:
掌握了if和switch分支语句的使用。
实验三循环结构程序设计实验
(验证性综合性实验2学时)
一、目的要求:
(1)使用循环语句完成累乘、图像输出的程序编写。
(2)掌握较复杂结构程序的编写。
(3)掌握程序调试的方法。
(4)编写实验报告。
二、实验内容(参考实验指导书):
1、已知xyz+yzz=532,其中x、y、z都是数字(0~9),编写一个程序求出x、y、z分别代表什么数字。
(1)算法描述:
fori=1到9