第一篇:c语言实验二实验报告
一、实验目的1、2、3、4、掌握关系表达式和逻辑表达式的使用。掌握选择结构程序设计的一般方法。熟练使用if语句进行程序设计。
掌握使用switch语句实现多分支选择结构。
二、实验内容 有一分段函数如下:
编写程序,输入(x实数)的值,输出以如下格式:x=??.??,y=??.??(即小数部分保留2位)程序代码:
#include “stdio.h” int main(){ float x,y;scanf(“%f”,&x);if(x<1)
y=x*x;if(x>=1&&x<10)
y=5*x-1;
if(x>=10)
y=2*x+4;printf(“x=%.2f,y=%.2fn”,x,y);return 0;}
2、从键盘输入三个实数,输出最大数和最小数。样例输入:1.23 3.45 5.67 样例输出:5.67 1.23 程序代码:
#include “stdio.h” int main(){ float a,b,c,max,min;scanf(“%f%f%f”,&a,&b,&c);if(a>b){max=a;min=b;} else {max=b;min=a;} if(a>c)
if(b>c){min=c;}
else {min=b;}
else {max=c;} printf(“%.2f %.2fn”,max,min);return 0;}
3、读入3个非零的double数后,判别这三个值是否可以表示一个三角形的三条边。样例输入1:1.23 1.23 1.23 样例输出1:yes.样例输入2:5.23 3.45-12.34 样例输出2:no.程序代码: #include “stdio.h” int main(){ double a,b,c;scanf(“%lf%lf%lf”,&a,&b,&c);if(a>0&&b>0&&c>0)
if(a+b>c&&b+c>a&&a+c>b)
printf(“yes.n”);
else printf(“no.n”);
else printf(“no.n”);
return 0;}
4、读入3个非零整数后,判别这三个值是否可以表示一个直角三角形的三条边。样例输入1:3 4 5 样例输出1:yes.样例输入2:5 6 1 样例输出2:no.程序代码:
#include “stdio.h” int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a>0&&b>0&&c>0)
if(a+b>c&&b+c>a&&a+c>b)
if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)
printf(“yes.n”);
else printf(“no.n”);
else printf(“no.n”);
else printf(“no.n”);
return 0;}
5、编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1 运算符op操作数2
计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/)。
样例输入1:21.23+12.56 样例输出1:21.23+12.56=33.79 样例输入2:1*2
样例输出2:1.00*2.00=2.00 在做除法运算时,若操作数2为0,则输出:除数为0
程序代码:
#include “stdio.h” int main(){ float x,y;char ch;scanf(“%f%c%f”,&x,&ch,&y);switch(ch){ case '+':printf(“%.2f+%.2f=%.2fn”,x,y,x+y);break;case '-':printf(“%.2f-%.2f=%.2fn”,x,y,x-y);break;case '*':printf(“%.2f*%.2f=%.2fn”,x,y,x*y);break;
case '/':if(y==0)
{printf(“除数为0n”);}
else printf(“%.2f/%.2f=%.2fn”,x,y,x/y);break;} return 0;}
6、描述
某产品生产成本c=c1+m*c2,其中c1为固定成本,c2为单位产品可变成本,m为生产数量。当m<10000时,c1=20000元,c2=10元;当m≥10000时,c1=40000元,c2=5元; 编写一个程序,其功能为:根据输入的生产数量,输出总生产成本及单位生产成本。输入 生产数量
输出
生产数量 总生产成本 单位可变成本 样例输入 6000 样例输出 6000 80000 10
程序代码:
#include “stdio.h” int main(){ int m,c1,c2,c;scanf(“%d”,&m);if(m<10000){c1=20000;c2=10;} else {c1=40000;c2=5;} c=c1+c2*m;printf(“%d %d %dn”,m,c,c2);return 0;}
7、描述
根据键盘输入的一个字符所属类别,判别它属于:大写字母(输出:1)、小写字母(输出:2)、数字字符(输出:3)、其它字符(输出:4)。
输入
一个字符 输出
字符类别号
样例输入
A 样例输出 程序代码
#include “stdio.h” int main(){ char ch;scanf(“%c”,&ch);if(65<=ch&&ch<=90)
printf(“1n”);
else if(97<=ch&&ch<=122)
printf(“2n”);else if(47<=ch&&ch<=58)
printf(“3n”);else
printf(“4n”);return 0;}
8、描述
实现如下分段函数:
输入
是一个实型数据。输出
以如下格式输出:x=0.250,y=5.250(即输出一律保留3位小数)样例输入 0.250 样例输出 x=0.250,y=5.250 程序代码
#include “stdio.h” int main(){ float x,y;scanf(“%f”,&x);if(x<3){y=x+5;} else if(x==3){y=2*x;} else if(x<10){y=6*x-4;} else {y=3*x-11;} printf(“x=%.3f,y=%.3fn”,x,y);return 0;}
三、实验体会
通过选择结构这一章的学习,我了解了关系表的事和逻辑表达式的使用以及选择结构程序设计的一般方法。知道了if语句的使用和switch语句多分支选择结构。经过这一章的学习,我对c语言程序设计有了更大的兴趣,希望能带给我以后更大的学习乐趣。
第二篇:实验1-C语言实验报告
C语言程序设计(A)
(2011-2012-1)
实验报告1
教学班级: 机械094 学号: 01 姓名:谭亮恩 课程教师:
曹瑛
实验辅导教师:
曹瑛
江西理工大学
P6-4:/*P6-4
表示第6页 第四题*/
int main(){ float r,s;r=15.5;s=2*3.14*r;
printf(“r=%4.2f,s=%f”, r, s);return 0;}
结果是:r=15.5
s=97.34
P32-3-1: /*P32-3-1
表示第6页 第四题 第一小题*/ #include
表示第6页 第四题 第二小题*/ #include
结果是: *ABCDEF*
江西理工大学
第三篇:C语言实验报告_二_
C语言实验报告
(二)课程名称 _____ C语言程序设计_____ 实验项目 ___顺序结构程序设计___ 实验仪器 ______计算机___________
系 别_____信息与通信工程学院_______ 专 业______物联网_________ 班级/学号___ __
学生姓名 _______________ 实验日期 ____2014年11月13日___ 成 绩 _______________________
指导教师
______ _____
一、实验目的1、2、3、4、掌握C语言中,选择结构
掌握C语言中,分段函数的输入与输出 掌握if,else条件语句的用法 掌握数学函数的使用
二、实验内容
1.有一分段函数如下:
编写程序,输入x(实数)的值,输出以如下格式:x=??.??,y=??.??(即小数部分保留2位)·程序代码:
#include “stdio.h” int main(){ float x,y;scanf(“%f”,&x);if(x<1)y=x*x;else if(x<10)y=5*x-1;else y=2*x+4;printf(“x=%.2f,y=%.2fn”,x,y);return 0;}
2.从键盘输入三个实数,输出最大数和最小数。样例输入:1.23 3.45 5.67 样例输出:5.67 1.23 ·程序代码:
#include“stdio.h” int main(){ double num1,num2,num3,min,max,t;scanf(“%lf%lf%lf”,&num1,&num2,&num3);min=num1;if(min>num2)min=num2;else min=num1;if(min>num3)
min=num3;max=num1;if(max 3.读入3个非零的double数后,判别这三个值是否可以表示一个三角形的三条边。 样例输入1:1.23 1.23 1.23 样例输出1:yes.样例输入2:5.23 3.45-12.34 样例输出2:no.·程序代码: #include“stdio.h” int main(){ double a,b,c;scanf(“%lf%lf%lf”,&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b)printf(“yes.n”);else printf(“no.n”);return 0;} 4.读入3个非零整数后,判别这三个值是否可以表示一个直角三角形的三条边。样例输入1:3 4 5 样例输出1:yes.样例输入2:5 6 1 样例输出2:no.·程序代码: #include“stdio.h” #include“math.h” int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b){ if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)printf(“yes.n”);else printf(“no.n”);} else printf(“no.n”);return 0;} 5.编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符op操作数2 计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/)。 样例输入1:21.23+12.56 样例输出1:21.23+12.56=33.79 样例输入2:1*2 样例输出2:1.00*2.00=2.00 在做除法运算时,若操作数2为0,则输出:除数为0 ·程序代码: #include“stdio.h” int main(){ double a,b;char ch;scanf(“%lf%c%lf”,&a,&ch,&b);if(ch=='/'&&b==0)printf(“除数为0n”);else switch(ch){ case'+':printf(“%.2f+%.2f=%.2fn”,a,b,a+b);break;case'-':printf(“%.2f-%.2f=%.2fn”,a,b,a-b);break;case'*':printf(“%.2f*%.2f=%.2fn”,a,b,a*b);break;case'/':printf(“%.2f/%.2f=%.2fn”,a,b,a/b);break;} return 0;} 6.某产品生产成本c=c1+m*c2,其中c1为固定成本,c2为单位产品可变成本,m为生产数量。当m<10000时,c1=20000元,c2=10元;当m≥10000时,c1=40000元,c2=5元; 编写一个程序,其功能为:根据输入的生产数量,输出总生产成本及单位生产成本。输入 生产数量 输出 生产数量 总生产成本 单位可变成本 样例输入 6000 样例输出 6000 80000 10 ·程序代码: #include“stdio.h” int main(){ int c,m,c2;scanf(“%d”,&m);if(m<10000){c2=10;c=20000+c2*m;} else { c2=5;c=40000+c2*m;} } printf(“%d %d %dn”,m,c,c2);return 0; 7.根据键盘输入的一个字符所属类别,判别它属于:大写字母(输出:1)、小写字母(输出:2)、数字字符(输出:3)、其它字符(输出:4)。 输入 一个字符 输出 字符类别号 样例输入 A 样例输出 1 ·程序代码: #include“stdio.h” int main(){ char ch;scanf(“%c”, &ch);if(ch >= 'A' && ch <= 'Z')printf(“1n”);else if(ch >= 'a' && ch <= 'z')printf(“2n”);else if(ch >= '0' && ch <= '9')printf(“3n”);else printf(“4n”);return 0;} 8.输入 是一个实型数据。 输出 以如下格式输出:x=0.250,y=5.250(即输出一律保留3位小数) 样例输入 0.250 样例输出 x=0.250,y=5.250 ·程序代码: #include“stdio.h” int main(){ char ch;scanf(“%c”, &ch);if(ch >= 'A' && ch <= 'Z')printf(“1n”);else if(ch >= 'a' && ch <= 'z')printf(“2n”);else if(ch >= '0' && ch <= '9')printf(“3n”);else printf(“4n”);return 0;} 实验报告 课程名称:微机原理与接口技术 指导老师:李素敏 学生姓名: 学号: 专业: 自动化 日期:2014-04-10 地点:理工楼603 实验二 1.实验目的和要求 ① 掌握keil软件和STC-ISP 软件的使用方法 ② 熟悉发光管的工作原理 ③ 通过编程体验发光管的延时闪烁及移位等功能 2.主要仪器设备 PC机 单片机学习开发套件(型号:89C52RC) 3.实验内容 ①实验内容1:第一个发光管以间隔200ms闪烁 源程序: #include //宏定义 main(){ while(1){ P1=0xfe;delay(200);P1=0xff;delay(200);} } void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 { uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--); 一台一件 } 实验结果说明:要使发光管闪烁,只需设置合适的时间延时即可。 ②实验内容2 : 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 源程序: #include #include //宏定义 unsigned char a,b,k,j; //定义五个字符变量 sbit beep=P2^3;// 定义蜂鸣器的接口 void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 { uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--);} void main(){ k=0xfe;//先给k一个初值11111110等待移位 while(1){ delay500ms(); beep=0;//打开蜂鸣器 delay500ms();//让它响500ms beep=1;//关闭蜂鸣器 j=_crol_(k,1);//把k循环左移一位 k=j;//把移完的值再送给k P1=j;//同时把值送到P1口点亮发光二极管 } //再次循环 } 实验结果说明:在此程序中用到了_crol_(k,l)函数,此函数的功能在于循环移位,在每次发光管闪烁相应时间后左移一位,把移完的值再送到P口,点亮对应的发光管。这样循环往复,达到发光管流动的效果。 ③实验内容3 :用8个发光管演示出8位二进制数累加过程,即用8个二极管表示8个二进制位(亮为1,灭为0),依次以二进制形式显示0,1,2,……255。 源程序: #include #include //宏定义 #define uchar unsigned char //宏定义 void delay(uint z)//延时函数,z的取值为这个函数的延时ms数,{ uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--);} void main() //主函数 { } uchar a;while(1) //大循环 { } a++;P1=~a;delay(200); 实验结果说明:在此定义一个无符号字符变量a,a的值进行累加,但是由于表示的二进制数要求亮为1,灭为0,与发光管的0亮1灭正好相反,所以将a的计数取反并设置相应延时,重复此过程就得到了在发光管上显示八位二进制数的累加过程。 ④实验内容4 :间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。 源程序: #include #include void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 { uint x,y;for(x=z;x>0;x--) for(y=110;y>0;y--);} void main()//主函数 { uchar a,i,j;while(1)//大循环 } { } a=0xfe;//赋初值 for(j=0;j<8;j++){ for(i=0;i<8-j;i++)//左移 } { P1=a;//点亮小灯 delay(300);//延时300毫秒 a=_crol_(a,1);//将a变量循环左移一位 } a=_crol_(a,j);//补齐,方便下面的左移一位 P1=0xff;//全部关闭 a=a<<1;//左移一位让多一个灯点亮 4.心得体会:此次实验中练习较多的就是闪烁和移位,在编程过程中,设置闪烁的时间必须达到人眼正常观察的要求,这就需要计算合适的闪烁时间,不停的尝试,最终选择适宜观察的时间间隔。发光管的循环移位时调用_crol_(k,l)函数 可以大大简化编程的行数。所以熟悉单片机的函数库,可以方便我们编程。所以在以后的实验中还得继续学习这个函数库,从而更轻松的完成实验内容。 实验4 逻辑结构程序设计 1、实验目的、要求 (1)C语言表示逻辑量的方法。 (2)学会正确使用逻辑运算符和逻辑表达式。 (3)熟悉掌握if语句和switch语句。 (4)掌握简单的算法及程序调试。 2、实验内容: (1)输入程序并运行,观察运行结果并分析。 #include int main() {int a=1,b=3,c=5,d=4,x; if(a If(c Else „„„„„„„„„„„„„„„„„„„„„„„„2 If(a If(b Else x=3;„„„„„„„„„„„„„„„„„„„„„„„„4 Else x=6;„„„„„„„„„„„„„„„„„„„„„„„„2 Else x=7;„„„„„„„„„„„„„„„„„„„„„„„„1 printf(“x=%dn”,x); Return(0);} 实验前分析:因已知:A,B,C,D分别为1,3,5,4,故可知只有A (2)、编写程序: Y=X(X<1);Y=2X-1(1= 程序编写如下: #include Int main() {int x,y; Scanf(“%d”,x); If(x<1)y=x; If(x>=1&&x,10)y=2*x-1; If(x>=10)y=3*x-11; Printf(“%d”,y); Return(0);} 进行检验,发现程序有错误,无法运行。 将程序改为: #include Int main() {int x,y; Scanf(“%d”,x); If(x<1)y=x; Else if(x>=1&&x<10)y=2*x-1; Else if(x>=10)y=3*x-11; Printf(“%d”,y); Return(0);} 实验分析: 1、在if语句中,要注意IF和ELSE的配合使用,不能单独使用IF。 2、此程序中还应注意if语句的嵌套和各层之间的逻辑关系。 3、再输入该程序时,涉及到乘法运算的表示,应注意计算机语言与书面语言的区别,在C语言中,*表示乘法运算。 在程序中加入clrscr()运算符,清空遗留数据: #include Int main() {int x,y; Scanf(“%d”,x); Clrscr(); If(x<1)y=x; Else if(x>=1&&x<10)y=2*x-1; Else if(x>=10)y=3*x-11; Printf(“%d”,y); Return(0);} 运行该程序,得到预期结果,但输入数据被清除;将clrscr()移动到scanf之前。再次运行,得到了预期的输入和输出数据,故可知,clrscr()函数的作用是清楚该语句之前的所有的输出的数据和输入的数据。以后用此语句时要注意输入位置。 (3)补足程序并运行。 输入两个数,将较小者输出,应用条件运算符。 #include Int main() {int a, b,min; Printf(“n please input two numbersn”); Scanf(“%d%d”,&a,&b); Min=min(a,b); Printf(“min=%d”,min); Return(0;)} 运行该程序,显示程序错误,无法输出结果。 将程序改为: #include Int main() {int a, b,min; Printf(“n please input two numbersn”); Scanf(“%d%d”,&a,&b); Min=(a>b?b:a); Printf(“min=%d”,min); 再次运行程序,屏幕上显示“please input two numbers”,输入两个数字6和9,输出数字为6,再换多组数字,结果与与其相同,可知实验成功。 实验分析:输入比较两数大小的函数时,不能想当然,如认为“min=min(a,b)”就是输出较小数的函数,而应使用三目运算符(A?B:C)来表示。 (5)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E:90分以上为A,80——89分为 B,70——79分为C,60——69分为D,60分以下为E。 1、分别用IF和SWITCH语句来实现。 2、输入成绩为大于100分或小于0分时,显示出错成绩,程序结束。 用IF函数表示: #include Int main() {int a; Printf(“n please input your scoren ”); Scanf(“%d”,&a); If(a>=90&&a<=100)printf(“A”); Else if(a>=80&&a<=89)printf(“B”); Else if(a>=70&&a<=79)printf(“C”); Else if(a>=60&&a<=69)printf(“D”); Else if(a>=0&&a<=59)printf(“E”); Else printf(“data error”); Return(0);} 检查无错误,运行程序,无论输入数值为多少,输出结果均为“data error”。 将程序改为: #include Int main() {int a; Printf(“n please input your scoren ”); Scanf(“%d”,&a); {If(a>=90&&a<=100)printf(“A”); Else if(a>=80&&a<=89)printf(“B”); Else if(a>=70&&a<=79)printf(“C”); Else if(a>=60&&a<=69)printf(“D”); Else if(a>=0&&a<=59)printf(“E”); Else printf(“data error”);} Return(0);} 即在if函数外套一组大括号,使之成为一个语句。再次输入数据,得到正确结果。实验分析: 1、注意if和else的配套使用,不能遗漏。 2、逻辑运算符&&表示“并且”,除此之外,“!”表示“非”,“||”表示“或”,以后使用注 意区分。 3、使用switch语句: #include {int a,b; Printf(“n please input your scoren”); Scanf(“%d”,&a); If(a<=100&&a>=0) {b=a/10; Switch(b) {case 10 printf(“A”);break; Case 9 printf(“A”);break; Case 8 printf(“B”);break; Case 7 printf(“C”);break; Case 6 printf(“E”);break; Case 5 printf(“E”);break; Case 4 printf(“E”);break; Case 3 printf(“E”);break; Case 2 printf(“E”);break; Case 1 printf(“E”);break; Case 0 printf(“E”);break; Default printf(“data error”);}} Else printf(“data error); Return(0);} 运行程序,显示程序有误,经检验,错误为case语句后没有加冒号,加上后,限制结果与预期相同。 实验改进:该程序中,反复输入case语句,效率低下,可将条件相同的情况进行合并,进行简化,变成如下形式: #include Int main() {int a,b; Printf(“n please input your scoren”); Scanf(“%d”,&a); If(a<=100&&a>=0) {b=a/10; Switch(b) {case 10:Case 9 :printf(“A”);break; Case 8 :printf(“B”);break; Case 7 :printf(“C”);break; Case 6 :Case 5 :Case 4 :Case 3 :Case 2 :Case 1 :Case 0:printf(“E”);break;Default printf(“data error”);}} Else printf(“data error); Return(0);} 运行后,得到相同的结果,故简化成功。 实验分析:此实验中,应注意break语句的使用,不能遗漏;case语句应用大括号括住,表示整体的使用;条件允许可以对程序进行适当的简化,提高运算效率;区分IF和SWITCH函数的共性与区别,提高对两者的认识。 实验心得: 1、注意IF语句的使用规则,要与ELSE搭配使用,掌握了多层IF函数的使用方法。 2、掌握了关系运算符与逻辑运算符“与”“或”“非”的使用法方法,“&&”“||”“!”。 3、注意区分数学表达语句与计算机语句的区别,了解计算机语句的特点。 4、必要时可以利用辅助设计语句对程序进行改进,或对程序进行简化,便于加深理解,方 便操作。 5、掌握了IF语句与SWITCH语句用法的特点,及其中的易错点(ELSE的使用和BREAK的使用)。第四篇:单片机实验二实验报告
第五篇:c语言实验报告实验4.doc