C课内实验参考模板.docx
- 文档编号:4993714
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:31
- 大小:42.88KB
C课内实验参考模板.docx
《C课内实验参考模板.docx》由会员分享,可在线阅读,更多相关《C课内实验参考模板.docx(31页珍藏版)》请在冰豆网上搜索。
C课内实验参考模板
中国地质大学江城学院
C语言程序设计课内实验报告
学部
姓名
班级学号
指导教师顾保磊
2013年7月10日
目录
实验1:
基本概念.................................................
实验2:
数据类型和表达式.........................................
实验3:
顺序程序设计.............................................
实验4:
选择结构程序设计.........................................
实验5:
循环结构程序设计.........................................
实验6:
数组.....................................................
实验7:
函数与编译预处理.........................................
实验8:
指针.....................................................
实验9:
结构体....................................................
课内实验的收获与体会............................................
C语言课内实验报告1
专业学号姓名指导教师
实验名称编程环境与简单程序的运行成绩
1、实验目的
(1)了解和使用visualC++6.0集成开发环境
(2)能在visualC++6.0集成开发环境编写运行简单的C程序。
(3)掌握C语言源程序的建立、编辑、修改、保存扩编译和运行的基本步骤。
2、实验预备
(1)visualC++6.0集成开发环境界面划分成四个主要区域:
菜单栏和工具栏、工作区窗口、代码编辑窗口和信息提示窗口。
同学们启动visualC++6.0开发环境后加以对照认识。
(2)预习教材的1.5.2在visualC++6.0环境下建立和运行C程序的步骤。
3、实验内容
(1)编写程序1,已知圆的半径,求圆的周长和面积.
(2)编写程序2,输入任意三个数,求这三个数的平均值.
(3)编写程序3,输入矩形的两个边,求矩形的面积
4、实验提示
(1)启动visualC++6.0,在D:
\下建立学号姓名实验1的项目名称,建立学号姓名实验1的文件名并添加到“学号姓名实验1的项目名称,建立学号姓名实验1的文件名并添加到“学号姓名实验1”的项目里。
(2)编辑C语言源程序。
程序1代码:
程序2代码:
程序3代码:
(3)"学号姓名实验1"的文件包含有以上三个C源程序。
当编辑完成程序1后,对其进行、连接和运行,分析其结果是否符合题目要求,符合后则对C语言源程序加上注释。
编辑程序2交对其进行编译连接和运行。
编辑程序3并对其进行编译连接和运行。
5、实验报告
(1)实验过程的基本步骤。
(2)实验过程中使用到的变量的数据类型、使用的相关格式符的含义。
(3)实验结论数据的分析。
(4)实验过程遇到的问题的解决方法。
C语言课内实验报告2
专业学号姓名指导教师
实验名称数据类型、运算符、表达式成绩
1、实验目的
(1)掌握C语言的数据类型、熟悉如何定义基本的数据类型以及对它们赋值的方法。
(2)掌握C语言的有关运算符,以及使用这些运算符的表达式。
(3)进一步熟悉C语言源程序的建立,编辑,修改,保存,编译和运行的基本步骤
2、实验预备
(1)变量定义
(2)运行符的使用及优先级
3、实验内容
(1)分析程序下面程序的运行结果.
#include
intmain()
{intx,y;
x=20;
y=(x=x-5.0/5);
printf("y=%d\n",y);
return0;
}
根据编译、链接和运行回答下面问题:
①编译时,警告错误主要体现在实型数据赋给左边的变量
答:
②5.0和5是双精度和整型数据之分
答:
(2)分析下面程序,写出运行结果
#include
intmain()
{inti,j,m,n;
i=5;
j=15;
m=i++;
n=++j;
printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);
return0;
根据编译、链接和运行回答下面问题:
①编写程序运行的结果
答:
②分析表达式m=i++和n=++j的执行过程及有所区别?
答:
(3)下面的程序是输入一个字符,判断它是否为大写字母,如果是将它转换成小写字母,如果不是不进行转换,最后输出这个字符.
#include
main()
{charch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch;
printf("%c\n",ch);
return0;
}
根据编译、连接和运行,回答下列问题:
①本程序运行的是格式输入输出,若修改为getchar()和putchar(),则程序如何?
答:
②分析表达式ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch的执行过程?
若用户输入B,则输出什么?
若用户输入b,则输出什么?
答:
(4)上机运行程序:
#include
#definePRICE35
intmain()
{intx=10;PRICE=PRICE*x;
printf("%d;%d\n",x,PRICE);
return0;
}
根据编译连接运行回答下列问题:
①编译时是否有错误信息提示,请分析提示信息的含义?
并修改后重新编译,直到没有错误为止
②#definePRICE35的含义?
若x表明购买商品的件数,PRICE表明是该商品的价格,则该程序实现什么功能?
4.实验报告
(1)将上述C程序文件放在一个“学号姓名实验2”的文件名下,并以该文件名的电子档提交老师。
(2)按实验要求报告的格式完成每题后的要求。
C语言课内实验报告3
专业学号姓名指导教师
实验名称顺序结构程序设计成绩
1、实验目的
(1)掌握C语言的数据类型、掌握变量定义,进一步理解变量先定义后使用,先赋值后引用的含义
(2)掌握C语言各种类型变量
(3)掌握不同数据类型之间赋值的规律。
(4)掌握C的有关算术运行符,以及包含这些运算符的表达式的求值规则
(5)熟悉顺序结构,掌握printf()和sacnf()函数
2、实验预备
(1).visualc++6.0集成开发环境界面划分成四个主要区域:
菜单栏和工具栏、工作区窗口、代码编辑窗口和信息提示窗口。
同学们启动visualc++6.0开发环境后加以对照认识。
(2).预习教材的在visualc++6.0环境下建立和运行C程序步骤。
3、实验内容
【程序1】分析下列程序,并上机运行
#include"stdio.h"
intmain()
{longx,y;
inta,b,c,d;
x=5;
y=6;
a=7;
b=8;
c=x+a;
d=y+b;
printf("c=x+a=%d,d=y+b=%d\n",c,d);
return0;
}
根据编译、连接和运行回答下列问题:
①printf("c=x+a=%d,d=y+b=%d\n",c,d);语句中:
c=x+a=是普通字符,原样输出;d=y+b也是普通字符,原样输出;%d是格式说明,按十进制格式输出数据;c,d是两个需要输出的整型变量。
②x,y和a,b,c,d的数据类型是否相同?
它们是怎样进行数据类型转换和运算的?
答:
③将%d改为%ld后再编译、连接、运行,比较两个程序运行的结果是否一致,并说明它们两者间有无区别。
答:
【程序2】分析下列程序,并上机运行。
#include"stdio.h"
intmain()
{inta,b,c;
a=5;b=6;c=7;
printf("abc\tdc\rf\n");
printf("hijk\tL\bM\n");
return0;
}
根据编译、连接和运行,回答下列问题
①\t\r\f\b\n转义字符的作用是什么?
程序运行后输出的结果格式如何?
答:
②整型变量a,b,c均有具体的值,在输出结果中却没有,是何原因?
若输出它们的值,如何修改程序?
答:
【程序3】分析下列程序,并上机运行。
#include"stdio.h"
intmain()
{inti,j,m,n;
i=2;
j=5;
m=++i;
n=j++;
printf("i=%d\tj=%d\tm=%d\tn=%d\n",i,j,m,n);
return0;
}
根据编译、连接、运行回答下列问题:
①程序运行的结果:
答:
②++i和j++语句有何区别?
它们的执行过程如何?
答:
【程序4】分析下列程序,并上机运行
#include"stdio.h"
intmain()
{charc1,c2;
c1='a';c2='b';
c1=c1-32;c2=c2-32;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
return0;
}
根据编译、连接、运行回答下列问题:
①该程序实现了什么功能?
程序输出结果是什么?
答:
②c1-32和c2-32是怎样实现运算的?
%c,%d格式符的含义是什么?
答:
【程序5】用下面scanf函数输入数据,使i=40,j=78,k=56.89,m=2.3,c1='R',c2='T'.请问在键盘上如何输入?
#include"stdio.h"
intmain()
{inti,j;
floatk,m;
charc1,c2;
scanf("i=%d**j=%d",&i,&j);
scanf("%f##%f",&k,&m);
scanf("%c,%c",&c1,&c2);
printf("i=%d,j=%d,k=%f,m=%f,c1=%c,c2=%c\n",i,j,k,m,c1,c2);
return0;
}
根据编译、连接、运行回答下列问题:
①若直接输入407856.892.3RT(各数据以空格间隔),程序运行的结果如何?
分析结果是否符合要求,为什么?
答:
②写出3个输入语句在键盘输入时的数据格式。
答:
C语言课内实验报告4
专业学号姓名指导教师
实验名称选择结构程序设计成绩
1、实验目的
(1)理解C语言表达式逻辑量的方法。
以0代表假,非0代表真。
(2)正确使用逻辑运算符和逻辑表达式。
关系运算符和关系表达式并运用其表达条件。
(3)熟练掌握if语句和switch语句。
2、实验预备
(1)熟悉逻辑运算符和逻辑表达式、关系运算符和关系表达。
(2)熟悉if语句、if-else语句及其嵌套、switch语句和break语句。
3、实验内容
(1)编写程序:
通过键盘输入3个数a,b,c,输出其中最大的数。
算法提示:
首先假设a是最大并存入max变量中,然后用max变量分别与b、c比较,若小,则将b或c的值赋给max,最后max就是3个整数中的最大数。
(2)分别用if-else语句、switch编写程序完成下列函数的输入x,并输出y的值。
(3)下列程序是输入x的值,计算y1和y2的值。
y1=2/x,y2=3/x当x<0时
y1=0,y2=0当x>0时
y1=2x,y2=3x当x>0时
代码设计:
#include"stdio.h"
intmain()
{inta,b,c;
intmax;
printf("\ninputtherrnumber:
");
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max
max=b;
if(max max=c; printf("max=%d\n",max); return0; } 输入程序后,进行编译、链接和运行。 判断程序是否有错,若有是什么错误? 运行结果是否正确? 若不正确,请找出错误原因,修改后重新运行,直到结果正确为止。 错误原因是: (4)求解任意一元二次方程ax2+bx+c=0的根,其中的a,b,c由键盘输入,要求考虑解的各种情况。 算法提示: ①a=0,不是二次方程。 ②b2-4ac=0,有两个相等的实根。 ③b2-4ac>0,有两个不等的实根,求x1,x2. ④b2-4ac<0,有两个共轭的实根 程序代码: (5)输入任意四个整数,要求按由小到大的顺序输出。 算法提示: 采用if语句实现即if(a>b)真由交换使a最小。 C语言课内实验报告5 专业学号姓名指导教师 实验名称循环结构程序设计成绩 1、实验目的 (1)掌握while语句,do-while语句和for语句实现循环的语法,结构及程序的执行过程。 (2)掌握在程序设计过程中用循环结构实现的一般常规算法。 (3)进一步掌握程序的编写、调试及运算的基本方法。 2、实验内容及实验结论 (1)编写程序1: 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 (2)编写程序2,编程输出如下图形。 1 123 12345 1234567 123456789 (3)编写程序3,求sn=a+aa+aaa+aaa…a,其中a是用户通过键盘输入的一个具体值,n代表a的位数。 (4)输入任意数量学生的单科成绩,求出其中最高分、最低分和平均分。 程序1代码 #include"stdio.h" intmain() {intn1=0,n2=0,n3=0,n4=0; charc; printf("请输入一行字符\n"); while((c=getchar())! ='\n') {if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) n1++; elseif(c=='')n2++; elseif(c>='0'&&c<='9')n3++; elsen4++; } printf("英文字母个数为: %d\n空格个数为: %d\n数字个数为: %d\n其它字符个数为: %d\n", n1,n2,n3,n4); return0; } 根据编译、链接、运行程序回答下列问题: ①本题的循环进行条件是什么? 终止条件是什么? 循环体做什么? 答: ②对循环体的语句加上注释。 ③绘制程序的流程图或N-S图? 答: (2)编写程序,输出以下图形。 1 123 12345 1234567 123456789 程序2代码: #include"stdio.h" intmain() {inti,j; for(i=1;i<=5;i++) for(j=1;j<=9;j++) {if((j<=5-i)||(j>=5+i))printf(""); elseprintf("%d",i-(5-j)); if(j==9)printf("\n"); } return0; } 根据编译、链接、运行程序回答下列问题: ①本题是双重循环,用到循环变量i,j,其中,它们谁控制了行? 谁控制了列,是如何控制的? 答: ②程序中的if-else语句在循环体中起什么作用? 答: ③将程序中if(i==9)printf("\n");语句去掉,重新编译、链接、运行程序,观察程序结果并同源程序结果相比较有何不同,若不同请分析原因及说明该语句在程序中的作用。 答: 程序3代码: 方法1: #include"stdio.h" #include"math.h" intmain() {inti,j,a,n,s=0; printf("请输入an: \n"); scanf("%d%d",&a,&n); for(j=1;j<=n;j++) for(i=0;i {s=s+a*pow(10,i); } printf("s=%d\n",s); return0; } 方法2: #include"stdio.h" intmain() {inta,n,i=1; printf("请输入an的值: \n"); scanf("%d%d",&a,&n) ints=a; for(inti=2;i<=n;i++) {a=a*10+a; s+=a; } printf("s=%d\n",s); return0; } 根据编译、链接、运行程序回答下列问题: ①比较方法1和方法2的算法区别。 答: ②方法1中表达式s+=a*pow(10,i)中pow()是什么函数? 调用此函数时去掉#include 答: ③解决本题的核心算法是什么? 答: 程序4代码: #include"stdio.h" intmain() {intn,score,max,min,aver; aver=0; n=0; max=0;min=100; printf("\n请输入sxore=? \n"); while (1) {scanf("%d",&score); if(score<0)break; aver=aver+score; n++; if(score>max)max=score; if(score } aver=aver/n; printf("\nn=%d\n",n); printf("\nmax=%d\n",max); printf("\nmin=%d\n",min); printf("\naver=%d\n",aver); return0; } 根据编译、链接、运行程序程序回答下列问题: ①输入并运行程序。 输入数据如下: 928564785398-1 其中前6个是学科分数,最后输入的一个负数作结束标志。 分析结果是否正确,请找出错误的原因,修改后重新运行,直到结果正确为止。 答: ②程序中if(score<0)break;语句起何作用? 答: ③程序中当循环个数不确定时是如何处理的? 程序中是如何求最高分、最低分的? 这种算法有何特别之处? 答: C语言课内实验报告6 专业学号姓名指导教师 实验名称数组的运用成绩 1、实验目的 (1)掌握数组的定义及其元素的引用方法 (2)掌握字符数组和字符串函数的使用 (3)掌握数组作为数据结构时的程序设计方法 (4)掌握利用数组实现常用算法的基本技巧 2、预习内容 一维数组、二维数组和字符型数组的定义、引用、初始化及输入输出的基本方法。 3、实验内容 (1)用循环移位法将数组num中的最后一个数移到最前面,其余数依次往后移一个位置。 某同学设计程序代码如下: #include intmain() {inti,term,num[10]={0,1,2,3,4,5,6,7,8,9}; term=num[9]; for(i=1;i<=10;i++) num[i]=num[i-1]; num[0]=term; printf("\n"); for(i=0;i<10;i++) printf("%d",num[i]); return0; } ①上机编辑、编译、链接和运行程序,观察程序的运行结果是否符合要求。 ②用动态跟踪法查找错误原因,并观察数组num值的变化情况,分析错误的原因。 答: ③修改程序,直到符合题目要求为止。 (2)用选择法对10个数排序。 10个整数用scanf函数输入。 算法分析: 选择法的基本思想是: 设有10个元素a[1]-a[10],将a[1]与a[2]-a[10]比较,若a[1]比a[2]-a[10]都小,则不进行交换,即无任何操作,若a[2]-a[10]中有一个以上比a[1]小,则将其中最大的一个(假设为a[i]与a[1]交换),此时a[1]中存放了10个数中最小的数。 第二轮将a[2]与a[3]-a[10]比较,将剩下9个数中的最小者a[i]与a[2]对换,此时a[2]中存放的是10个中第2小的数。 依次类推,共进行9轮式比较,a[1]到a[10]就已按由小到大顺序存放。 程序的第一个for语句是完成输入操作,第二个for语句则是将这个数组输出。 第三个for语句则是进行排序。 程序代码: #include intmain() {inti,j,term,num[11]; printf("enterdata: \n"); for(j=1;j<=10;j++) {printf("a[%d]",j); scanf("%d",&a[j]); } printf("\n"); printf("Theoriginalnumbers: \n); for(i=1;i<=10;i++) printf("%d",a[i]); printf("\n"); for(i=1;i<=9;i++) {min=i; for(j=i+1jj<=10;j++) if(a[min]>a[j])min=j; temp=a[i];a[i]=a[min];a[min]=temp; } printf("\nThesortednumbers: \n); for(i=0;i<=10;i++) printf("%d",a[i]);printf("\n"); return0; } ①上机编辑、编译链接和运行程序,体会输入数据时的提示信息及语句格式设计。 ②比较选择法与冒泡法的区别是什么? 请用动态跟踪法观测选择法排序算法的实现过程。 答: (3)以下是方阵转置的程序代码,方阵转置如下图 15913 261014 371115 481216 转置 行转换为列 1234 5678 9101112 13141516 算法分析: 转置是: a[i][j]=a[j][i];主对角线: 行下标i=列下标j;上三角: 行下标i<=列下标j;下三角: 行下标i>=列下标j。 因此要控制好行列下标,防止第1次转换了,而第2次又被转换过来的现象发生。 程序代码: #includ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 参考 模板