《16铜陵学院c语言学习知识实验报告.doc》由会员分享,可在线阅读,更多相关《16铜陵学院c语言学习知识实验报告.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计 实验报告20162017学年第二学期班 级 2016级学 号姓 名指导教师黄永青 实验一 Visual C+ 6.0编程环境与C语言程序的调试过程一、实验学时2 学时。二、实验目的1了解在Visual C+ 6.0环境下如何编辑、编译、连接和运行一个C程序;2通过运行简单的C程序,初步了解C源程序的特点。三、预习内容教材C语言程序设计第1章。四、实验内容1请调试、运行下面的程序一。#include int main( )printf(Hello,World!n);return 0;给出以上程序的运行结果(或其截图): 2请调试、运行下面的程序二。#include int mai
2、n( ) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%1d*%1d=%2d ,j,i,j*i);printf(n);return 0;给出以上程序运行结果的截图:3请改正下面程序三中的语法错误,然后调试、运行该程序,观察分析运行结果。#include int main( )int a,b,sum;a=3b=4;sun=a+b;printf(%d+%d=%dn,a,b,sum);return 0;(1) 改正后的程序#include int main( )int a,b,sum; a=3; b=4; sum=a+b;printf(%d+%d=
3、%dn,a,b,sum);return 0;(2) 以上程序的运行结果(或其截图):五、思考题 1调试C语言程序的步骤有哪些?答:1.编辑2.编译3.连接4.运行 2程序的基本结构有哪三种? 答:顺序结构,选择结构,循环结构指导教师 成绩 年 月 日实验二 数据类型、运算符和表达式一、实验学时2 学时。二、实验目的1掌握整型、实型与字符型这三种基本类型的概念;2掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握+、-运算符、赋值运算符及其表达式的使用方法。三、预习内容教材C语言程序设计第2章。四、实验内容 1下面的程序一有语法错误,请调试、运行该程序。#incl
4、ude int main( )int 2cd=3;float yzl=3.14;char for=A;printf(%dn%fn%cn,2cd,yzl,for);return 0;程序一为什么出错? 答: 1. yzl=3.14不能用float类型,改为double2. 变量命名不能以数字为首位2cd=3;改为cd=3;3.for为循环结构不能作为变量名,改为f=A2观察分析下面程序二的运行结果:#include int main( )int a=3,b=4,c=8;float x,y=4.0,z;x=a+b/c;z=a+y/c;printf(x=%fnz=%fn,x,z);return 0;
5、以上程序的运行结果(或其截图):3观察分析下面程序三的运行结果:#include int main( )int a,b,c,d,i,j,m,n;a=b=c=d=3;i=a+;j=+b;m=c-;n=-d;printf(a=%d,b=%d,c=%d,d=%dni=%d,j=%d,m=%d,n=%dn,a,b,c,d,i,j,m,n);return 0;以上程序的运行结果(或其截图):4观察分析下面程序四的运行结果:#include int main( )int a=4;a+=a-=a*a+a;printf(a=%dn,a);return 0;以上程序的运行结果(或其截图):五、思考题1给变量命名
6、应该注意哪些?答:1.变量名可由字母数字,下划线组成,但首位只能是字母,下划线不能为数字。 2.变量名区分大小写 3.变量名不能与系统标识符同名4.变量名的长度是有限的,视编译而定5.变量命名时尽量简单易记,见名之意2程序二的运行结果中,x和z的值为什么不同?答:x为int类型,x的值为整型小数点部分都为0;即x=3.000000 z为float类型,z的值为浮点型数据,即z=3.5000003程序三的运行结果中,i和j的值为什么不同?m和n的值为什么不同?答:i为a直接赋予i=3j是先b+1=4再将4赋给jm为c直接赋予 n是先d-1=3再将3赋给n4请分析程序四中表达式a+=a-=a*a+
7、a的运算顺序。答:1.a*a=162.16+a=203.a-=16=-164.a+=(-16)=-32 成绩 指导教师 年 月 日实验三 顺序结构程序设计一、实验学时2 学时。二、实验目的1掌握整型、实型与字符型数据输入函数scanf( )的使用;2掌握整型、实型与字符型数据输出函数printf( )的使用;3掌握顺序程序的设计方法。三、预习内容教材C语言程序设计第3章。四、实验内容1下面程序一的功能是:从键盘输入两个整数,输出它们的和。请在横线上填写一条合适的语句,调试、运行该程序。#include int main( ) int a,b,sum; scanf(%d%d,&a,&b); su
8、m=a+b;printf(%d+%d=%dn,a,b,sum);return 0;给出以上程序的运行结果(或其截图):2观察分析下面程序二的运行结果。#include int main( ) int a,b,sum;printf(请输入第一个整数:);scanf(%d,&a);printf(请输入第二个整数:);scanf(%d,&b);sum=a+b;printf(%d+%d=%dn,a,b,sum);return 0;给出以上程序的运行结果(或其截图):3下面程序三的功能是:输出三个变量a,b,c的值。请在横线上填写一条合适的语句,使该程序的运行结果为:a=35,b=43.66,c=A#i
9、nclude int main( ) int a=35;double b=43.6578;char c=A; printf(a=%d,b=%6.2f,c=%cn,a,b,c); return 0;给出以上程序的运行结果(或其截图):4 设圆柱底面圆半径r=1.5m,高h=3m,编写程序,求底面圆的周长和面积、圆柱的表面积和体积。要求用函数scanf( )输入r和h,输出时有文字说明,取小数点后两位。1 给出以上问题的求解算法(用N-S图描述) 给出问题的源代码#include#define PI 3.14159void main()double r,h,c,s,S,V;scanf(%lf,%l
10、f,&r,&h);c=2*PI*r;s=PI*r*r;S=2*PI*r*r+2*PI*r*h;V=PI*r*r*h;printf(底面圆的周长:c=%6.2f,圆的面积:s=%6.2f,圆柱的表面积:S=%6.2f,圆柱的体积:V=%6.2fn,c,s,S,V); 该程序的运行结果(或其截图)五、思考题 程序一和程序二中输入数据的方式有什么区别?您认为哪种方式较好,为什么? 答:程序一中a,b同时定义;程序二中在输出时可以明确区分a,b,并在编程过程中将其分别定义;我认为程序二更好;因为相较于程序一,程序二编程过程不易出错,且便于输出。成绩 指导教师 年 月 日实验四 选择结构程序设计一、实验
11、学时2 学时。二、实验目的1正确使用关系运算符和关系表达式;2正确使用逻辑运算符和逻辑表达式;3熟练使用if语句实现选择结构程序设计;4熟练使用switch语句实现多分支选择结构程序设计。三、预习内容教材C语言程序设计教程第4章。四、实验内容1下面程序一的功能是:输入学生成绩,若90分成绩100分,输出“Excellent!”;若60分成绩89分,输出“Pass!”;若成绩60分,输出“Fail!”;若成绩100分,输出“Input Error!”。请在横线上填写合适的语句,调试、运行该程序。#include int main( ) int score;printf(请输入分数(0-100):
12、);scanf(%d, &score );if(score100|score=90&score=100 ) printf(Excellent!n);else if (60=score&score=89 ) printf(Pass!n);else printf(Fail!n); return 0;程序一运行结果(执行程序4次,分别输入4个不同的成绩,对应4种不同的情况):输入数据205627799运行结果Fail!Input Error!Pass!Excellent!2已知下面的分段函数:请编写程序二,求出并显示y的值,x的值在程序运行时输入。代码如下:#include void main( )
13、 float x,y; scanf(%f,&x); if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; printf(%7.2fn,y);程序二运行结果(执行程序3次,分别输入3个不同的x值,对应3种不同的y值):输入数据2010运行结果3.000.0011.003设计一个简单的计算器程序三。程序运行时输入两个实数和一个四则运算符:+、-、*、/(例如,输入:45.6,2.4/),输出计算结果(保留两位小数)。代码如下:#includevoid main()float a,b;char ch;scanf(%f,%f%c,&a,&b,&ch);if(
14、ch=+)printf(%.2f+%.2f=%.2fn,a,b,a+b);else if(ch=-)printf(%.2f-%.2f=%.2fn,a,b,a-b);else if(ch=*)printf(%.2f*%.2f=%.2fn,a,b,a*b);else if(ch=/)printf(%.2f/%.2f=%.2fn,a,b,a/b);程序三运行结果(执行程序4次,分别输入4组不同的数据,对应+、-、*、/四种不同的运算):输入数据1,2+3,1-2,2*3,1/运行结果3243成绩 指导教师 年 月 日实验五 循环结构程序设计一、实验学时2 学时。二、实验目的1熟悉循环结构语句whil
15、e、dowhile及for的执行流程;2熟练掌握用while、dowhile及for语句编写循环结构程序。三、预习内容教材C语言程序设计第5章。四、实验内容1下面程序一的功能是:求和式12-22+32-42+-142+152的值。请在横线上填写合适的语句,调试、运行该程序。#include stdio.hvoid main( ) int sum=0,n=1,sign=1; do sum=sum+sign*n*n; n+=1; sign=sign*(-1); while (n=15); printf(12-22+32-42+-142+152=%dn, sum );程序一运行结果(或其截图):2编
16、写程序二。输入一个5位正整数,输出该整数的倒序。例如:若输入是12345,则输出为54321。代码如下:#includevoid main()int n;scanf(%d,&n);while(n)printf(%d,n%10);n/=10;程序二运行结果(或其截图):3 编写程序三。求数列,的前20项和。代码如下:#includeint main()float a=1,b=1,c=3,sum=0;int i;for(i=1;i=20;i+)sum+=a/(b*c);a+=1;b+=2;c+=2;printf(%3fn,sum);return 0;程序三运行结果(或其截图):成绩 指导教师 年
17、月 日实验六 嵌套结构程序设计一、实验学时2 学时。二、实验目的1掌握一个结构里面嵌套一个结构的程序执行过程及设计方法;2掌握break语句在多选一结构程序中的使用方法;3掌握break及continue语句在循环结构程序中的使用方法。三、预习内容教材C语言程序设计第3-5章。四、实验内容1编写程序一,在屏幕上显示九九乘法表:代码如下:#includevoid main()int i,j;printf(九九乘法口诀表:n);for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-4d,j,i,i*j);printf(n);2编写程序二,在屏幕上显示图形:代码如
18、下:#includevoid main()int i,j,k;for(i=1;i=4;i+)for(j=1;j=11-i;j+)printf( );for(k=1;k=2*i-1;k+)printf(*);printf(n);for(i=1;i=4;i+)for(j=1;j=i+7;j+)printf( );for(k=1;k=7-2*i;k+)printf(*);printf(n);3编写程序三,输出100以内的所有素数。所谓素数,是指仅能被1和该数本身整除的大于1的整数。代码如下:#includevoid main()int i,j;for(i=2;i=100;i+)for(j=2;j=(
19、i/2);j+)if(i%j=0)break;if(i%j!=0)printf(%dn,i);程序三运行结果(或其截图):成绩 指导教师 年 月 日实验七 数组一、实验学时2 学时。二、实验目的1掌握一维数组的定义、赋值、输入输出及其应用;2掌握二维数组的定义、赋值、输入输出及其应用;3掌握字符数组的定义、赋值、输入输出及其应用。三、预习内容教材C语言程序设计第6章。四、实验内容1编写程序一。在一个已按从小到大排好序的数列中插入一个数,要求插入该数后的数列仍按小到大排列。例如:原数列是1,3,5,7,9,11,13,15,17,插入数8后变成1,3,5,7,8,9,11,13,15,17。代码
20、如下:#include #define N 10void main()int i, data, aN = 1, 3, 5, 7, 9, 11, 13, 15, 17 ; printf(原数组a中的数据是:n);for(i = 0; i data & i=0 ; i-) ai+1 = ai; ai+1 = data; printf(插入%d后,数组a中的数据是:n, data);for(i = 0; i N; i+)printf ( %3d, ai );printf (n); 程序的运行结果(或其截图): 2编写程序二。输出3行4列矩阵中的最大元素值及其行标和列标。要求:矩阵中的每个元素值由键盘
21、输入。代码如下:#includevoid main()int i,j;int row,col,max,a34=7,9,12,5,39,54,21,6,17,26,64,1;printf(原二维数组a:n);for(i=0;i3;i+)for(j=0;j4;j+)printf(%4d,aij);printf(n);row=col=0;max=a00;for(i=0;i3;i+)for(j=0;jmax)max=aij;row=i;col=j;printf(二维数组中最大数值是:%d,位于第%d行,第%d列。n,max,row+1,col+1);程序的运行结果(或其截图):3编写程序三。将一个字符
22、串中的所有英文字母按从小到大排列,重新组成一个字符串。例如:原字符串是:How do you do?,重新排列后的字符串为:?Hddoooouwy。代码如下:#include#includeint main()char s100,t;int i,j,sum;printf(Input:n);gets(s);sum=strlen(s);for(i=0;isum-1;i+)for(j=0;jsum-1;j+)if(sj+1=sj)t=sj;sj=sj+1;sj+1=t;printf(Output:n);puts(s);return 0;程序的运行结果(或其截图):成绩 指导教师 年 月 日实验八 函
23、数一、实验学时2 学时。二、实验目的1熟悉函数的定义方法;2掌握函数的调用方式及主调函数与被调函数间的数据传递方法;3掌握递归算法,会用函数来实现递归算法。三、预习内容教材C语言程序设计第7章。四、实验内容1下面程序一的功能是求三个整数中的最大值。请在横线上填写合适的语句,调试、运行该程序。#include int max(int a,int b,int c)int m;m=a;if(bm)m=b;if(cm)m=c;return(m) ;void main( )int x,y,z,maxi;scanf(%d,%d,%d,&x,&y,&z);maxi= max(x,y,z) ;printf(M
24、ax of %d,%d and %d is %d.n,x,y,z,maxi);程序的运行结果(或其截图):2编写程序二。在主函数中输入两个正整数,调用函数求它们的最小公倍数,结果在主函数中输出。代码如下:#includeint min(int m,int n)int s;s=m;while(s%n!=0)s+=m;return(s);void main()int m,n;printf(请输入两个正整数n);scanf(%d,%d,&m,&n);min(m,n);printf(这两个正整数的最小公倍数为:%dn,min(m,n);程序的运行结果(或其截图):3 编写程序三。用递归方法求解猴子吃桃
25、问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘了多少个桃子。代码如下:#includestdio.hint f(int a)int y;if(a=10)y=1;elsey=f(a+1)*2+2;return y;void main()int n,y;printf(请输入天数:);scanf(%d,&n);y=f(n);printf(第一天小猴共摘了%d个桃子。,y);程序的运行结果(或其截图):成绩 指导教师 年 月 日实验九 变量
26、的作用域与存储方式一、实验学时2 学时。二、实验目的1掌握数组名作函数参数时形参与实参的定义方法;2会使用数组名作函数参数在主调函数与被调函数间传递多个数据;3掌握变量的作用域(局部变量与全局变量);4掌握变量的存储方式(动态存储与静态存储)。三、预习内容教材C语言程序设计第7章。四、实验内容1运行下面的程序一,并分析结果。#include int x=8,y=3;int max(int a,int b)int c;if(ab)c=a;elsec=b;return c;void main( )int x=4,maxi;maxi=max(x,y);printf(%dn,maxi);程序的运行结果
27、(或其截图):2运行下面的程序二,并分析结果。#include int f(int a)static int b=0;b=b+a;return b;void main( )int y1,y2;y1=f(1);y2=f(1);printf(y1=%d,y2=%dn,y1,y2);程序的运行结果(或其截图):3 编写程序三。在主函数中输入10个整数,调用函数sort将它们从小到大排序,排序结果在主函数中输出。代码如下:#include#define M 10void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=0;jaj+1)t=aj;aj=a
28、j+1;aj+1=t;void main()int dataM;int i;for (i=0;iM;i+)scanf(%d,&datai);sort(data,M);for(i=0;iM;i+)printf(%d,datai);printf(n);程序的运行结果(或其截图):成绩 指导教师 年 月 日实验十 编译预处理一、实验学时2 学时。二、实验目的1理解宏的概念,掌握宏的定义;2掌握带参数的宏定义、条件编译的使用;3了解文件包含的概念,掌握其应用方法。三、预习内容教材C语言程序设计第8章。四、实验内容1编写程序一。由键盘输入三个整数,用带参数的宏找出三个整数中的最大者。代码如下:#incl
29、ude#define max(x,y,z) x(yz?y:z)?x:(yz?y:z)void main()int o,p,q;printf(请输入三个整数:n);scanf(%d,%d,%d,&o,&p,&q);printf(%d%d%d,这三个数中最大的是:%d,o,p,q,max(o,p,q);printf(n);程序的运行结果(或其截图):2编写程序二。定义一个带参数的宏,使得两个参数的值互换,在主函数main( )中输入两个整数作为宏的参数,输出交换后的两个值。代码如下:#include#define swap(a,b) int t;t=a;a=b;b=t;void main()int
30、 a,b;printf(请输入两个整数:n);scanf(%d%d,&a,&b);printf(交换前数字为:a=%d,b=%dn,a,b);swap(a,b)printf(交换后数字为:a=%d,b=%dn,a,b);程序的运行结果(或其截图):3编写程序三。由键盘输入三个实数,用带参数的宏设计输出这三个实数的格式: 第一行输出第一个实数; 第二行输出前两个实数; 第三行输出这三个实数。代码如下:#include stdio.h#define N1 printf(%fn,a)#define N2 printf(%f %fn,a,b)#define N3 printf(%f %f %fn,a,
31、b,c)void main()float a,b,c;printf(请输入三个实数:);scanf(%f%f%f,&a,&b,&c);N1;N2;N3;printf(n);程序的运行结果(或其截图):成绩 指导教师 年 月 日实验十一 指针一、实验学时2 学时。二、实验目的1掌握指针和间接访问的概念,会定义和使用指针变量;2能利用指针变量作函数参数得到多个要改变的值;3能正确定义指向数组的指针变量,并能用其对数组进行访问;4能正确定义指向字符串的指针变量,并能用其对字符串进行访问。三、预习内容教材C语言程序设计第9章。四、实验内容1在主函数中输入2个整数,调用swap函数将它们的值交换,结果在
32、主函数中输出。代码如下:#includevoid swap(int *p1,int *p2)int t;t=*p1;*p1=*p2;*p2=t;void main()int m,n;printf(输入两个整数:);scanf(%d%d,&m,&n);swap(&m,&n);printf(%d %dn,m,n);程序的运行结果(或其截图): 2在主函数中输入10个整数,调用函数sum求它们的和,结果在主函数中输出(要求:实参用数组名,形参用指针变量)。代码如下:#includestdio.hint sum(int *p)int i,sum=0;for(i=0;i10;i+)sum+=*(p+i)
33、;return(sum);void main()int b10,s,j;printf(请输入10个整数:);for(j=0;j10;j+)scanf(%d,&bj);s=sum(b);printf(以上10个数的和为:%dn,s);程序的运行结果(或其截图):3. 在主函数中输入一个字符串,调用converse函数将该字符串逆序(例如,若原序是:abcdefgh,则逆序后是:hgfedcba),结果在主函数中输出。(要求:实参用字符数组名,形参用指针变量)。代码如下:#include#includevoid converse(char *s)int i,j;char c;j=strlen(s);for(i=0;ij/2;i+)c=si;si=sj-i-1;sj-i-1=c;void main()char s100;printf(请输入字符串:);gets(s);converse(s);printf(该字符串倒序后为:%sn,s);程序的运行结果(或其截图):成绩 指导教师 年 月 日