第一篇:c语言实验报告实验4.doc
实验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语言程序设计(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* 江西理工大学 一、实验目的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语言程序设计有了更大的兴趣,希望能带给我以后更大的学习乐趣。 《Matlab语言》实验(报告)题库 1、TDOA信号分析类 (1)已给出一段事先采集的信号,该信号为进行TDOA定位使用的基本信号,其格式为GPS+IQ + GPS+IQ …,即每包数据由GPS头文件和IQ信号构成,GPS头文件共58B,其数据格式为 $HT,20130114,084556,N3606.82273,E10343.59311,M1538.7,11,0*,每包IQ数据共8192B,其数据格式为I0,Q0,I1,Q1,I2,Q2…,I2047,Q2047,即I数据2048点、Q数据2048点交叉出现。换言之,每包数据实际内容为:$HT,20130114,084556,N3606.82273,E10343.59311,M1538.7,11,0* I0 Q0 I1 Q1 I2 Q2 … I2047 Q2047,程序前期已实现读取IQ数据文件并进行关键信息读取分解,请根据程序提醒,完成相关功能(数据及程序见“1-实际IQ信号实验”文件夹)。 2、TDOA时差估计仿真类 (2)在TDOA定位技术中,时差估计是一个非常重要的环节。自行仿真2个具有一定时差的信号,用广义互相关法(GCC)计算该2个信号的时差,并与设定时差进行对比分析(需给出详细过程及适当的仿真图)。 (3)在TDOA定位技术中,时差估计是一个非常重要的环节。自行仿真2个具有一定时差的信号,用互模糊函数法计算该2个信号的时差,并与设定时差进行对比分析(需给出详细过程及适当的仿真图)。 (4)在TDOA定位技术中,时差估计是一个非常重要的环节。自行仿真2个具有一定时差的信号,用广义互相关(GCC)结合多项式拟合方法计算该2个信号的时差,并比较广义互相关法估计时差和广义互相关结合多项式拟合方法估计时差的结果,进行分析(需给出详细过程及适当的仿真图)。 (5)在TDOA定位技术中,时差估计是一个非常重要的环节。自行仿真2个具有一定时差的信号,自选方法计算该2个信号的时差,并与设定时差进行对比分析(需给出详细过程及适当的仿真图)。 3、TDOA时差估计实测类 下面三题使用“3-TDOA实测类-数据”。 (6)在TDOA定位技术中,时差估计是一个非常重要的环节。根据提供的TDOA数据,用广义互相关(GCC)计算该2路信号的时差,统计每包数据计算结果,并分析之(需给出详细解决过程及适当的分析图)。 (7)在TDOA定位技术中,时差估计是一个非常重要的环节。根据提供的TDOA数据,用广义互相关(GCC)结合多项式拟合方法计算该2路信号的时差,比较广义互相关法估计时差和广义互相关结合多项式拟合方法估计时差的结果,并分析之(需给出详细解决过程及适当的分析图)。 (8)在TDOA定位技术中,时差估计是一个非常重要的环节。根据提供的TDOA数据,自选方法计算该2路信号的时差,统计每包数据计算结果,并分析之(需给出详细解决过程及适当的分析图)。 4、信号频域分析类 (9)生成一个带有噪声的正弦波信号,信号的频率、幅度,噪声的幅度自行设定。(将带有噪声的正弦信号放入for循环中,利于pause,实现噪声动态变化效果,并在for循环内画出其时域图和幅频图(采样率和采样点数自行设定),观察动态变化情况),最后总结系统采样率和采样点数对仿真信号效果的影响。 (10)自行生成一段时域信号,要求在不同的时间,信号具有不同的频率(即非平稳信号),用短时傅里叶变换对其进行时频分析,并呈现时频分析结果。 (11)自行生成一段时域信号,要求在不同的时间,信号具有不同的频率(即非平稳信号),用小波变换对其进行时频分析,并呈现时频分析结果。 5、信号调制解调类 (12)自行产生正弦信号作为基带信号、载波,试合成AM信号,在AM信号上加高斯白噪声,并将AM信号解调,画出各信号(基带信号、载波、合成的AM信号、解调后的基带信号)时域图及频谱图,并对比总结解调效果。 (13)自行产生正弦信号作为基带信号、载波,试合成FM信号,在FM信号上加高斯白噪声,并将FM信号解调,画出各信号(基带信号、载波、合成的FM信号、解调后的基带信号)时域图及频谱图,并对比总结解调效果。 (14)自行产生一个正弦信号,以此为载波,生成一段2ASK信号,其中数字序列随机生成,画出数字基带序列、正弦信号、2ASK信号的时域图。 (15)自行产生两个不同频率的正弦信号,以此为载波,生成一段2FSK信号,其中数字序列随机生成,画出数字基带序列、两个正弦信号、2FSK信号的时域图。 (16)用Matlab模拟通信系统收发过程,要求:发射站发射FM调制信号,接收站接收该信号,并进行解调,系统参数及传播环境/过程参数自定。 6、信号分离类 (17)自行生成一个含有3个频率(信号频率相近,如200Hz,210Hz,300Hz)的信号,其他参数自定,直接用FFT难以将不同频率信号,尤其频率较近的信号进行分离,试用AR等高阶功率谱方法,将该信号进行分离,并绘制分离前后的频谱图(即信号的FFT图、信号的AR分离图)。 (18)自行生成一个含有不同频率或不同相位的信号,直接用FFT难以将不同频率信号,尤其频率较近或同频率不同相位的信号进行分离,试用MUSIC方法,将该信号进行分离,并绘制分离前后的频谱图(即原信号的FFT图、信号的MUSIC分离图),并总结现象。 (19)自行产生一段含有低频、高频和噪声成分的信号,尝试设计不同的滤波器,将高频信号及噪声滤掉,并绘制滤波前后的信号对比图(含时域、频域图)。 7、深度学习类 (20)设计一个神经网络(可以是任意类型的神经网络),对手写数字进行分类,要求小组内每个成员至少每人手写一个数字,然后识别,并分析识别准确率。 (21)自行找一个预训练好的网络,对日常生活物品进行识别,要求小组内每个成员拍照1~2个物品,通过网络进行识别,并分析识别效果。 学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验一 上机操作初步和简单的C程序设计 一、实验目的1、熟悉C语言运行环境Turbo C++3.02、会简单的程序调试 3、熟悉C语言各种类型数据的输入输出函数的使用方法 4、掌握顺序结构程序设计 二、实验内容 1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7) 2、编写一个C程序,输入a、b、c 3个值,输出其中最大者。(习题1.6) 3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。(习题4.8) 4、运行如下程序,写出运行结果。第一┆范文网www.xiexiebang.com整理该文章,版权归原作者、原出处所有...#include void main() { int a=1,b=2; a=a+b;b=a-b;a=a-b; printf(“%d,%dn”,a,b); } 三、实验步骤与过程 四、程序调试记录第二篇:实验1-C语言实验报告
第三篇:c语言实验二实验报告
第四篇:《Matlab语言》实验报告
第五篇:c语言实验报告