第一篇:C语言实验报告
实验一 C程序的运行环境和方法
一、实验目的
1.了解所用的计算机系统。
2.了解在该系统上如何进行编辑、编译、连接和运行一个C程序。3.通过运行简单的C程序了解C程序的特点。
二、实验内容和步骤
1.熟悉所用的系统。了解Windows资源管理器的使用方法:文件的查看、复制、运行等方法,Visual C++所在目录,文本文件的建立方法。2.进入Visual C++,并新建一个C++源程序文件。
3.熟悉Visual C++的集成环境,了解各菜单项有哪些子菜单。4.输入下面的程序(教材中的例1.1),注意区分大小写。
#include
5.关闭工作区,新建一个程序,然后对教材中的例1.2重复4中的操作(即只将程序改为例1.2中的程序,其它操作步骤相同)。其程序为:
#include
6.关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的程序
#include
printf(“input a and b:n”);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“nmax=%dn”,c);} int max(int x,int y){int z;if(x>y)z=x;else z=y;return(z);}(1)运行程序,若程序有错,则修改错误后继续运行程序,当没有错误信息时输入:2,5并按Enter键,查看运行结果。
其运行结果为:
(2)将程序的第三行改为:int a;b;c;然后按F9看结果如何,将其修改为int a,b,c;将子程序max的第3,4行合并为一行,运行程序,看结果是否相同。将程序的第三行改为:int a;b;c;运行结果为:
将子程序max的第3,4行合并为一行,运行程序,其结果相同,结果为:
7.运行一个自己编写的程序,程序的功能是输出两行文字。其程序为:
#include
实验二 数据类型、运算符和表达式
一、实验目的
1.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
2.掌握不同数据类型之间赋值的规律。
3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。
4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二、实验内容和步骤
1.输入并运行下面的程序 #include
(2)加入下面的一个语句作为“}”前的最后一个语句:
printf(“%d,%dn”,c1,c2);其结果为:
(3)将第3行改为:
int c1,c2;然后再运行程序,并观察结果是否相同。相同,其结果为:
(4)将第3行改为int c1,c2;将第4,5行依次改为:
c1=a;c2=b;c1=“a”;c2=“b” c1=300;c2=400;每改为一次后运行程序,观察结果。其程序为:
#include
2.分析教材第3章习题3.5中的程序的运行结果,然后输入该程序并运行,将运行结果与前面分析的结果对比。其程序为:
#include
3.输入并运行下面的程序
#include
printf(“%u,%un”,a,b);printf(“%u,%un”,c,d);c=a=e;d=b=f;printf(“%d,%dn”,a,b);printf(“%u,%un”,c,d);} 请对照程序和运行结果分析: 运行结果为:
(1)将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的表示形式。
(2)将一个大于32767的长整数赋给一个整型变量,会得到什么结果。画出它们在内存中的表示形式。
(3)将一个长整数赋给无符号的变量,会得到什么结果。画出它们在内存中的表示形式。4.输入习题3.10(1)运行程序,注意i,j,m,n的值。(2)将第4,5行改为:
m=i++;n=++j;再运行。(3)将程序改为:
#include
5.按习题3.6的要求编程并上机运行:
要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为’C’,'h', 'i','n', 'a',经过计算,使c1、c2、c3、c4、c5分别变为:'G','l','m',r','e',并输出.程序提示:
main函数算法如下:
定义char型变量 c1,c2,c3,c4,c5;给字符型变量赋值 c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;输出c1,c2,c3,c4,c5 其程序为: #include
实验三 最简单的C程序设计
一、实验目的
1.掌握C语言中使用最多的一种语句――赋值语句的使用方法。2.掌握各种类型数据的输入输出方法,能正确使用各种格式输出符。
二、实验内容和步骤
1.掌握各种格式输出符的使用方法。#include
double f,g;long n,m;unsigned p,q;a=61;b=62;c1='a';c2='b';d=3.56;e=-6.87;f=3156.890121;g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf(“a=%d,b=%dnc1=%c,c2=%cnd=%6.2f,e=%6.2fn”,a,b,c1,c2,d,e);printf(“f=%15.6f,g=%15.12fnm=%ld,n=%ldnp=%u,q=%un”,f,g,m,n,p,q);}(1)运行此程序并分析运行结果。其结果为:
(2)在此基础上,修改程序的第9-14行:
a=61;b=62;c1=a;c2=b;f=3156.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;运行程序,分析运行结果。其结果为:
(3)将9-14行改为以下的scanf语句,即用scanf函数接收从键盘输入的数据:
scanf(“%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u”,&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);运行程序(无错误的情况下)输入数据如下:
61,62,a,b,3.56,-6.87,3156,890121,0.123456789,50000,-60000,32768,40000 其结果为:
2.按习题3.8的要求编写程序并运行:
设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积,圆球表面积、圆球体积、圆柱体体积。用scanf输入数据,输出计算结果,输出时要有文字说明,取小数后2位数字。其程序为:
#include
3.编写程序,用getchar函数输入两个字符给c1,c2,然后分别用putchar函数和printf函数输出这两个字符。其程序为:
#include
c1=getchar();c2=getchar();printf(“用putchar语句输出结果为:”);putchar(c1);putchar(c2);printf(“n”);printf(“用printf语句输出结果为:”);printf(“%c%cn”,c1,c2);} 其运行结果为:
实验四 选择结构程序设计
一、实验目的
1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。3.熟悉if语句和switch语句。4.结合程序掌握一些简单的算法。5.学习调试程序的方法。
二、实验内容
本实验要求编程解决以下问题,然后上机调试运行程序。
x1x1x101.y2x13x11x10
用scanf函数输入x的值,求y的值。
其程序为:
#include
else y=3*x-11;printf(“x=%d,y=%dn”,x,y);} 运行结果为:
2.给出一个百分制的成绩,要求输出成绩等级A,B,C,D,E,90分及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E。要求从键盘输入成绩,然后输出相应等级,分别用if语句和switch语句实现。(1)使用if语句的程序如下: #include
(2)使用switch语句程序如下: #include
printf(“成绩是%-5.1f,相应的等级是%cn”,score,grade);} 其运行结果与使用if语句运行结果一样。
3.编程实现:输入一个不多于5位的正整数,要求:(1)输出它是几位数,(2)分别输出每一位数字,(3)按逆序输出各位数字,如原数为321,则应输出123。应准备以下测试数据
要处理的数为1位正整数; 要处理的数为2位正整数; 要处理的数为3位正整数; 要处理的数为4位正整数; 要处理的数为5位正整数;
除此之外,程序还应当对不合法的输出作必要的处理。例如: 输入负数;
输入的数超过5位; 其程序为:
#include
{ int num,indiv,ten,hundred,thousand,ten_thousand,place;printf(“请输入一个整数(0-99999):n”);scanf(“%d”,&num);if(num>99999)printf(“输入的数超过5位!n”);else if(num<0)printf(“输入的数是一个负数!n”);else { if(num>9999)place=5;else if(num>999)place=4;else if(num>99)place=3;else if(num>9)place=2;else place=1;if(num>99999||num<0)printf(“enter num is error!n”);printf(“位数:%dn”,place);printf(“每位数字为:”);ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);switch(place){case 5:printf(“%d,%d,%d,%d,%d”,ten_thousand,thousand,hundred,ten,indiv);printf(“n反序数字为:”);printf(“%d%d%d%d%d”,indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv);printf(“n反序数字为:”);printf(“%d%d%d%d”,indiv,ten,hundred,thousand);break;case 3:printf(“%d,%d,%d”,hundred,ten,indiv);printf(“n反序数字为:”);printf(“%d%d%d”,indiv,ten,hundred);break;case 2:printf(“%d,%d”,ten,indiv);printf(“n反序数字为:”);11
printf(“%d%d”,indiv,ten);break;case 1:printf(“%d”,indiv);printf(“n反序数字为:”);printf(“%d”,indiv);break;} printf(“n”);return 0;} }
4.编程实现:输入4个整数,要求按由小到大的顺序输出。得到正确结果后,修改程序使之按由大到小的顺序输出。由小到大顺序输出其程序为: #include
if(a>d){t=a;a=d;d=t;} if(b>c){t=b;b=c;c=t;} if(b>d){t=b;b=d;d=t;} if(c>d){t=c;c=d;d=t;} printf(“排序结果为:n”);printf(“%d %d %d %dn”,a,b,c,d);} 其运行结果为:
由大到小顺序输出其程序为: 将上面程序第十九行改为:
printf(“%d %d %d %dn”,d,c,b,a);其运行结果为:
5.已知a=12,b=6,要求输入一个算术运算符(+、-、*、/),对a,b进行算术运算,并输出结果。其程序为:
#include
实验五 循环控制
一、实验目的
熟悉使用while语句,do-while语句和for语句实现循环的方法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
二、实验内容
1.上机完成习题6.1:输入两个正整数m和n,求出它们的最大公约数和最小公倍数。
输入时,使m 修改程序使对任何的整数都能得到正确的结果。其程序为: #include 2.编写程序利用公式:e1其程序为: #include 111求e的近似值,精确到小数后6位 1!2!n! void main(){ int n,i;double e,p,t;printf(“输入n的值:n”);scanf(“&d”,&n);e=1;t=1;p=1;i=1;while(t>=1e-7){e=e+t;i++;p=p*i;t=1.0/p;} printf(“The e is %fn”,e);} 其运行结果为: 3.编程求1到n中能被3或7整除的数之和。分别用for循环语句和while循环语句完成本题。 用for循环,其程序为: #include 用while循环语句,其程序为: #include int i=1,n,sum=0;printf(“请输入一个整数:n”);scanf(“%d”,&n);while(i<=n){ if(i%3==0||i%7==0)sum=sum+i;i++;} printf(“The sum is %dn”,sum);} 4.上机完成习题6.10:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃子。 在得到正确结果后,修改题目,改为每天早上都吃了前一天剩下的一半加二个,请修改程序,并运行,检查运行结果是否正确。其程序为: #include 实验六 数组 一、实验目的 1.掌握一维数组与二维数组的定义、赋值及输入输出方法。2.掌握字符数组和字符串函数的使用。 3.掌握与数组有关的算法(特别是排序算法) 二、实验内容 1.用选择法对10个整数排序。10个整数用scanf函数输入。其程序为: #include 2.有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入。其程序为: #include sign=0; top=0; bott=N-1; if(numbera[N-1]) loca=-1; while((!sign)&&(top<=bott)) { mid=(bott+top)/2; if(number==a[mid]) {loca=mid; printf(“Has found %d,its position is %dn”,number,loca+1); sign=1; } else if(number bott=mid-1; else top=mid+1; } if(!sign||loca==-1) printf(“cannot find %d.n”,number); printf(“continue or not(Y/N)?”); scanf(“%c”,&c); if(c=='N'||c=='n') flag=0;} return 0;} 其运行结果为: 3.将两个串连接起来,不要用strcat函数。其程序为: #include printf(“nThe new string is:n”,s1);return 0;} 其运行结果为: 4.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。至少准备两组测试数据:(1)二维数组有鞍点 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20(2)二维数组没有鞍点 1 2 3 4 11 2 4 6 8 12 3 6 9 10 15 4 8 12 16 7 用scanf函数从键盘输入数组的各元素的值,检查结果是否正确,题目未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。其程序为: #include if(max>a[k][maxj]){flag=0;continue;} if(flag){printf(“a[%d][%d]=%dn”,i,maxj,max);break;} } if(!flag)printf(“It is not exist!n”);return 0;} 其运行结果为: 实验七 函数 一、实验目的 1.掌握定义函数的方法。 2.掌握函数实参及形参的对应关系以及“值传递”方式。3.掌握函数的嵌套调用和递归调用的方法。 4.掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。5.学会对多文件程序的编译和运行。 二、实验内容 1.写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应准备以下测试数据:17,34,2,1,0,分别输入数据,运行程序并检查结果是否正确。其程序为: #include } int prime(int(n)){int flag=1,i;for(i=2;i 2.用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。(1)把两个函数放在同一个程序文件中。 (2)将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。其程序为: #include int alphabetic(char c)22 {if((c>='a'&&c<='z')||(c>='A'&&c<='z'))return(1);else return 0;} int longest(char string[]){int len=0,i,length=0,flag=1,place=0,point;for(i=0;i<=strlen(string);i++)if(alphabetic(string[i]))if(flag){point=i;flag=0;} else len++;else {flag=1;if(len>=length){len=len;place=point;len=0;} } return(place);} 其运行结果为: 3.用递归法将一个整数n转换成字符串。例如输入483.应输出字符串“483”。n的位数不确定,可以是任意的整数。其程序为: #include } convert(number);printf(“n”);return 0;} void convert(int n){int i;if((i=n/10)!=0)convert(i);putchar(n%10+'0');putchar(32);} 其运行结果为: 4.求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一个函数根据求出的最大公约数求最小公倍数。分别用下面的两种方法编程。(1)不用全局变量,在主函数中输入两个数和输出结果。(2)用全部变量的方法,数据的传递通过全部变量的方法。不用全局变量其程序为: #include int hcf(int u,int v){int t,r;if(v>u){t=u;u=v;v=t;} while((r=u%v)!=0){u=v;v=r;} return(v);24 } int lcd(int u,int v,int h){ return(u*v/h);} 其运行结果为: 使用全局变量,其程序为: #include void hcf(int u,int v){int t,r;if(v>u){t=u;u=v;v=t;} while((r=u%v)!=0){u=v;v=r;} Hcf=v;} void lcd(int u,int v){ Lcd=u*v/Hcf;} 其运行结果为: 5.写一个函数,输入一个十六进制数,输出相应的十进制数。其程序为: #include int htoi(char s[]){int i,n;n=0;for(i=0;s[i]!=' ';i++){if(s[i]>='0'&&s[i]<='9')26 n=n*16+s[i]-'0';if(s[i]>='a'&&s[i]<='f')n=n*16+s[i]-'a'+10;if(s[i]>='A'&&s[i]<='F')n=n*16+s[i]-'A'+10;} return(n);} 其运行结果为: 6、编程实现模拟计算机完成加、减、乘、除运算;加减乘除分别通过调用函数实现 其程序为: #include { case'+':c=add(a,b);break;printf(“a+b=%4fn”,c); case'-':c=minus(a,b);break;printf(“a-b=%4fn”,c); case'*':c=chen(a,b);break;printf(“a*b=%4fn”,c); case'/':c=chu(a,b);break;printf(“a/b=%4fn”,c); default :printf(“enter data error!n”); } printf(“所求得的结果为:%4fn”,c); printf(“n”);} float add(float x,float y){float c;c=x+y;return(c);} float minus(float x,float y){float d;d=x-y;return(d);} float chen(float x,float y){float e;e=x*y;return(e);} float chu(float x,float y){float f;f=x/y;return(f);} 其运行结果为: 实验八 指针 一、实验目的 1.通过实验进一步掌握指针的概念,会定义和使用指针变量。2.能正确使用数组的指针和指向数组的指针变量。3.能正确使用字符串的指针和指向字符串的指针变量。4.能正确使用指向函数的指针变量。 5.了解指向指针的指针的概念及其使用方法。 二、实验内容 以下程序要求使用指针处理。 1. 输入三个整数,按由小到大的顺序输出。运行无错后改为:输入三个字符串,按由小到大的顺序输出。 三个整数按由小到大的顺序输出其程序为: #include 三个字符按由小到大的顺序输出其程序为: #include printf(“input three line:n”);gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0)swap(str1,str2);if(strcmp(str1,str3)>0)swap(str1,str3);if(strcmp(str2,str3)>0)swap(str2,str3);printf(“Now, the order is:n”);printf(“%sn%sn%sn”,str1,str2,str3);return 0;} void swap(char *p1,char *p2){char p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);} 其运行结果为: 2.将一个3×3的矩阵转置,用一函数实现。 在一主函数中用scanf函数输入以下矩阵元素: 1 3 5 7 9 11 13 15 17 将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出转置后的矩阵。其程序为: #include printf(“%d %d %dn”,a[i][0],a[i][1],a[i][2]);return 0;} void move(int * pointer){int i,j,t;for(i=0;i<3;i++)for(j=i;j<3;j++){t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;} } 其运行结果为: 3.有n人围成一个圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。其程序为: #include i++;if(i==n)i=0;} while(*p==0)p++;printf(“The last one is NO.%dn”,*p);return 0;} 其运行结果为: 4.用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数的原型为: int strcmp(char *p1,char *p2);设p1指向字符串s1,p2指向字符串s2.要求当两个字符相同时返回0,若两个字符串不相等,则返回返回它们二者第一个不同字符的ASCII码的差值。两个字符串s1,s2由主函数输入,strcmp函数的返回值也由主函数输出。其程序为: #include strcmp(char *p1,char *p2){int i;i=0;while(*(p1+i)==*(p2+i))if(*(p1+i++)==' ')return(0);return(*(p1+i)-*(p2+i));} 其运行结果为: 5.用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数,n和各整数在主函数中输入,最后在主函数中输出。其程序为: #include {temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;} } 其运行结果为: 6.用指针实现二维数组的地址和值的输出。其程序为: #include 《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); } 三、实验步骤与过程 四、程序调试记录 C语言程序设计(B) (2010-2011-2) 实验报告 教学班级: 学号: 姓名: 课程教师: 实验辅导教师: 江西理工大学 自由编辑的程序 一、实验前的源程序: //任意整数的叠加 #include 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名10.cpp:7: parse error before `for' [Error] D:Program FilesC-Free 4temp未命名10.cpp:7: parse error before `)' 构建中止 未命名10: 2 个错误, 0 个警告 实验后的源程序: //任意整数的叠加 #include int i,j,sum=0;printf(“please input a int numbern”);scanf(“%d”,&j);for(i=0;i<=j;i++)sum=sum+i;printf(“此数的叠加=%dn”,sum);} 二、实验前的源程序: /*小写字母转大写字母*/ #include 江西理工大学 } c2='s';c1=c1-32;c2=c2-32;printf(“%c,%cn”,c1,c); 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名11.cpp:9: `c' undeclared(first use this function)[Error] D:Program FilesC-Free 4temp未命名11.cpp:9:(Each undeclared identifier is reported only once [Error] D:Program FilesC-Free 4temp未命名11.cpp:9: for each function it appears in.)构建中止 未命名11: 3 个错误, 0 个警告 实验后的源程序: /*小写字母转大写字母*/ #include 三、实验前的源程序: /*查看某一年是否为闰年*/ #include { if(year%100==0) { if(year%400==0) i=1; else 江西理工大学 i=0; } else i=1; } else i=0;if(i) printf(“%d 是闰年n”,year);else printf(“%d 不是闰年n”,year);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名14.cpp:15: parse error before `else' [Error] D:Program FilesC-Free 4temp未命名14.cpp:25: parse error at end of input 构建中止 未命名14: 2 个错误, 0 个警告 实验后的源程序: /*查看某一年是否为闰年*/ #include { if(year%100==0) { if(year%400==0) i=1; else i=0; } else i=1; } else i=0;if(i) 江西理工大学 printf(“%d 是闰年n”,year);else printf(“%d 不是闰年n”,year);} 数据的输入和输出 四、程序改错题 改错前的源程序;#include #include 改错前的源程序;#include 江西理工大学 #include long x=7654123;x*=10;printf(“x=%7d”,x);} 改错前的源程序: #include #include 五、程序编写题:已知char ch’b’;int i=3 ,j=5;float x=22.354,y=435.6789;根据下面的输出结果编写程序。ch =’b’,ASCII=98 i=3□□□□□□j=5 x=22.35□□□y=435.68 实验前的源程序: #include 江西理工大学{ char ch='b';int i=3,j=5;float x=22.354,y=435.6789;printf(“ch='%c',ASCII=%dn”,ch,ch);printf(“i=%d j=%dn”,i,j);printf(“x=%.2f y=%.2fn”,x,y);} 实验错误报告:无 实验后的源程序: #include j=%dn”,i,j);printf(“x=%.2f y=%.2fn”,x,y);} 六、从键盘输入一行字符,统计其中小写字母、大写字母和其它字符的个数: 实验前的源程序: #include “stdio.h” void main(){ printf(“请任意输入一串字符:n”); char ch,sum1=0,sum2=0,other=0; ch=getchar(); while(c!='n') { if(c>='A'&&c<='Z')sum1++; else if(c>='a'&&c<='z')sum2++; else other++; c=getchar(); } printf(“大写字母的个数:%dn”,sum1);printf(“小写字母的个数:%dn”,sum2); 江西理工大学printf(“其他字符母个数:%dn”,other);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名7.cpp:7: `c' undeclared(first use this function)[Error] D:Program FilesC-Free 4temp未命名7.cpp:7:(Each undeclared identifier is reported only once [Error] D:Program FilesC-Free 4temp未命名7.cpp:7: for each function it appears in.)构建中止 未命名7: 3 个错误, 0 个警告 实验后的源程序: #include “stdio.h” void main(){ printf(“请任意输入一串字符:n”); char ch,sum1=0,sum2=0,other=0; ch=getchar(); while(ch!='n') { if(ch>='A'&&ch<='Z')sum1++; else if(ch>='a'&&ch<='z')sum2++; else other++; ch=getchar(); } printf(“大写字母的个数:%dn”,sum1);printf(“小写字母的个数:%dn”,sum2);printf(“其他字符母个数:%dn”,other);} 七、使用以下公式求∏的近似值,要求精确到最后一项的绝对值小于10e-4 ∏/4=1-1/3+1/5-1/7+…… 实验前的源程序: #include “stdio.h” #include “math.h” main(){ 江西理工大学 } float sum=0;int i,j;for(i=1;;i++){ j=2*i-1;if(1.0/j>0.0001){ sum+=pow(-1,i+1)*(1.o/j);continue;break;} printf(“∏=%fn”,sum*4.0); 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名9.cpp:13: nondigits in number and not hexadecimal [Error] D:Program FilesC-Free 4temp未命名9.cpp:19: parse error at end of input 构建中止 未命名9: 2 个错误, 0 个警告 实验后的源程序: #include “stdio.h” #include “math.h” main(){ float sum=0;int i,j;for(i=1;;i++){ j=2*i-1;if(1.0/j>0.0001){ sum+=pow(-1,i+1)*(1.0/j);continue;} break;} printf(“∏=%fn”,sum*4.0);} 八、用选择法对10个整数排序: 实验前的源程序: 江西理工大学#include scanf(“%d”,a[i]);} printf(“n”);for(i=0;i<10;i++)for(j=0;j<10-j;j++){ if(a[j]>a[j+1]) { k=a[j]; a[j]=a[j+1]; k=a[j+1];} printf(“这10个整数从小到大排列为:”);for(j=0;j<10;j++){ printf(“%d ”,a[j]);} printf(“n”);printf(“这10个整数从大到小排列为:”);for(j=9;j>=0;j--){ printf(“%d ”,a[j]);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名1.cpp:33: parse error at end of input 构建中止 未命名1: 1 个错误, 0 个警告 实验后的源程序: //用选择法对10个整数排序 #include 江西理工大学 int i,j,k;for(i=0;i<10;i++){ scanf(“%d”,a[i]);} printf(“n”);for(i=0;i<10;i++)for(j=0;j<10-j;j++){ if(a[j]>a[j+1]){ k=a[j]; a[j]=a[j+1]; k=a[j+1];} } printf(“这10个整数从小到大排列为:”);for(j=0;j<10;j++){ printf(“%d ”,a[j]);} printf(“n”);printf(“这10个整数从大到小排列为:”);for(j=9;j>=0;j--){ printf(“%d ”,a[j]);} } 九、求一个3*3的整数矩阵对角线元素之积: 实验前的源程序: #include scanf(“%d”,&a[i][j])} for(i=0;i<3;i++) 江西理工大学 { for(j=0;j<3;j++) { printf(“%d ”,a[i][j]); } printf(“n”); } printf(“n”); for(i=0;i<3;i++) { for(j=0;j<3;j++) if(i=j) ji*=a[i][j]; printf(“主对角线的积为:%dn”,ji); } } 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名4.cpp:11: parse error before `}' 构建中止 未命名4: 1 个错误, 0 个警告 实验后的源程序: #include scanf(“%d”,&a[i][j]);} for(i=0;i<3;i++){ for(j=0;j<3;j++) { printf(“%d ”,a[i][j]); } printf(“n”); } 江西理工大学 printf(“n”); for(i=0;i<3;i++) { for(j=0;j<3;j++) if(i=j) ji*=a[i][j]; printf(“主对角线的积为:%dn”,ji); } } 十、将一个数组中的值按你需从新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。 实验前的源程序: #include scanf(“%d”,&a[i]);} for(i=0;i t=a[i]; a[i]=a[j-i-1]; t=a[j-i-1];} printf(“该数组逆序排列为:”); for(i=0;i printf(“%d ”,a[i]);printf(“n”);} 实验错误报告: [Error] D:Program FilesC-Free 4temp未命名3.cpp:25: parse error at end of input 构建中止 未命名3: 1 个错误, 0 个警告 江西理工大学实验后的源程序: #include scanf(“%d”,&a[i]);} for(i=0;i t=a[i]; a[i]=a[j-i-1]; a[j-i-1]=t;} printf(“该数组逆序排列为:”); for(i=0;i printf(“%d ”,a[i]);} printf(“n”);} 江西理工大学 C语言程序设计(B) (2010-2011-2) 实验报告 教学班级: 学号: 姓名: 课程教师:王华金 实验辅导教师:王华金 江西理工大学P123-- 五、1、编写函数,找出5*5数组对角线上元素的最小值,并在主函数中调用它。要求元素的值通过键盘输入。 实验前的源程序: #include for(j=0;j<5;j++) if(i==j) if(p[i][j] return min;} void main(){ int i,j,m,a[5][5];printf(“请输入a[5][5]:n”);for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(“%d”,&a[i][j]);printf(“a[5][5]:n”);for(i=0;i<5;i++){for(j=0;j<5;j++)printf(“%4d”,a[i][j]);printf(“n”);} m=func(a);printf(“主对角线上元素的最小值为:%dn”,m);} 实验错误报告: [Error] C:Users陶鑫DocumentsC-FreeTemp未命名4.cpp:13: error: `main' must return `int' [Warning] C:Users陶鑫DocumentsC-FreeTemp未命名4.cpp:27:2: warning: no newline at end of file 构建中止 未命名4: 1 个错误, 1 个警告 江西理工大学 实验后的源程序: #include for(j=0;j<5;j++) if(i==j) if(p[i][j] return min;} main(){ int i,j,m,a[5][5];printf(“请输入a[5][5]:n”);for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(“%d”,&a[i][j]);printf(“a[5][5]:n”);for(i=0;i<5;i++){for(j=0;j<5;j++)printf(“%4d”,a[i][j]);printf(“n”);} m=func(a);printf(“主对角线上元素的最小值为:%dn”,m);} P123-- 五、3、编写从整形数组中检索给定数值的函数,若找到则输出该数值在数组中的位置。 实验前的源程序: #include “stdio.h” int Find(int array[],int Array size,int num){ int i;for(i=0;i 江西理工大学int main(){ int a[]={1,2,3,4,5};num=4,n=5,index;index=find(a,5,num);if(index)printf(“%d在数组中第%d位置”,num,index);else printf(“数组中没有这个数!”);} 实验错误报告: [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:2: error: expected `,' or `...' before “size” [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:5: error: expected `;' before “size” [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:5: error: `size' was not declared in this scope [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:5: error: expected `)' before ';' token [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:5: error: expected `;' before ')' token [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:13: error: `num' was not declared in this scope [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:13: error: `n' was not declared in this scope [Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:13: error: `index' was not declared in this scope 江西理工大学[Error] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:14: error: `find' was not declared in this scope [Warning] C:Users陶鑫DocumentsC-FreeTemp未命名3.cpp:19:2: warning: no newline at end of file 实验后的源程序: #include “stdio.h” int Find(int Array[], int Array_size, int num){ int i;for(i=0;i P123-- 五、6、输入10名学生5门课的成绩,分别用函数求:(1)每门课的平均分。(2)找出最高的分数所对应的学生和成绩。 实验前的源程序: #include for(i=0;i<10;i++) { printf(“输入第%d个学生五门课的成绩:”,i+1); for(j=0;j<5;j++) scanf(“%f”,&a[i][j]); } } void aver_cour(float a[10][5])//课程的平均分 江西理工大学 { int i,j; float sum; for(i=0;i<5;i++) { sum=0; for(j=0;j<10;j++) sum+=a[j][i]; printf(“第%d门课的平均成绩为:%6.2fn”,i+1,sum/10); } } void highest(float a[10][5])//查找最高分 { int i,j,flag1,flag2;float max=0; for(i=0;i<10;i++) { for(j=0;j<5;j++) {第二篇:《Matlab语言》实验报告
第三篇:c语言实验报告
第四篇:C语言 实验报告
第五篇:C语言实验报告