C语言程序设计上机实验报告精选5篇修改版.docx
- 文档编号:8905537
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:20.38KB
C语言程序设计上机实验报告精选5篇修改版.docx
《C语言程序设计上机实验报告精选5篇修改版.docx》由会员分享,可在线阅读,更多相关《C语言程序设计上机实验报告精选5篇修改版.docx(14页珍藏版)》请在冰豆网上搜索。
C语言程序设计上机实验报告精选5篇修改版
第一篇:
C语言程序设计上机实验报告
黔南民族师范学院C语言程序设计上机实验报告
系部:
计算机科学系年级:
2013级班级:
姓名:
学号:
实验时间:
实验成绩:
2013年月日
实验三顺序结构程序的设计
一实验名称:
顺序结构程序的设计
二.实验环境:
windowsXP系统,VC++6.0软件
三.实验目的:
四.实验内容:
五.算法描述流程图
六.源程序
七.测试数据及运行结果
八.实验心得
实验成绩评分要求
1、原创性发现抄袭或雷同成绩为0分
2、正确性程序正确60分
3、可读性格式清楚,有注释,变量命名规范20分
4、健壮性对特殊测试数据有考虑有测试10分
5、效率程序运行效率高10分
第二篇:
C程序设计上机实验报告10
C程序设计实验报告
实验名称:
指针与数组学时安排:
2课时实验类别:
上机操作型实验要求:
1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
一、实验目的
1.理解指针、地址和数组间的关系;
2.掌握通过指针操作数组元素的方法;
3.掌握数组名作为参数的编程方式。
二、实验设备介绍
软件需求:
VisualC++6.0或CFree3.5以上版本
硬件需求:
对于硬件方面的要求,建议配置是PentiumIII450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。
三、实验内容
1.定义函数voidsort(inta[],intn)amain函数,并在其中调用sort函数。
示例如下:
Aftersortedthearrayis:
-9-61245
2.输入10个整数存储到数组a,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示“Notfound!
”。
要求定义和调用函数search(intlist[],intn,intx),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。
参数n代表数组list中元素的数量。
3.改正程序error08_1.cpp中的错误。
该程序实现功能,有n个整数,使前面各数顺序循环移动m个位置(m
要求先读该源程序,并理解其中的算法。
然后把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。
注释示例如下:
inti;/*循环控制变量不能定义为double类型*/
提示:
这是一个双重循环问题,内循环进行循环移位,外循环确定后移的位置。
4.有n个人围成一圈,按顺序从1到n编号。
从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。
如此循环,直到留下最后一个人。
问留下来的人的编号。
要求用指针来操作数组。
输入输出示例如下:
第1页共5页
LastNo.is:
4
提示:
可以把编号存在一个数组中,报到3的人赋值为0表示退出。
可以另外定义两个变量,一个用来记录退出的人数,到n-1即结束,另外一个用来报数。
四、程序清单
第一题
#include
voidswap(int*,int*);
voidsort(inta[],intn);
voidmain()
{
inti,n,a[8];
printf("Inputn:
");
scanf("%d",&n);
printf("Inputarrayof%dintegers:
",n);
for(i=0;i
scanf("%d",&a[i]);
sort(a,n);
printf("Aftersortedthearrayis:
");
for(i=0;i
printf("%3d",a[i]);
printf("\n");
}
voidsort(inta[],intn)
{
inti,j,index;
for(i=0;i
{
index=i;
for(j=i+1;j
if(a[j]
index=j;
swap(&a[i],&a[index]);
}
}
voidswap(int*px,int*py)
{
intt;
t=*px;
*px=*py;
*py=t;
}
第二题
#include
intsearch(intlist[],intn,intx);
voidmain()
{
inti,x,result,a[10];
printf("Entera[0]-a[9]:
");
for(i=0;i
scanf("%d",&a[i]);
printf("Enterx:
");
scanf("%d",&x);
result=search(a,10,x);
if(result==-1)
printf("Notfound!
\n");
else
printf("Thepositionis%d\n",result);
return0;
}
intsearch(intlist[],intn,intx)
{
inti,result=-1;
for(i=0;i
if(list[i]==x)
{
result=i;
break;
}
returnresult;
}
第三题
#include
voidmov(int*,int,int);
intmain()
{
intm,n,i,a[80],*p;
printf("Inputn,m:
");
scanf("%d%d",&n,&m);
printf("Inputarrayof5int55egers:
");
for(p=a,i=0;i
scanf("%d",p++);//p本身可取地址
mov(a,n,m);
printf("Aftermovedthearrayis:
");
for(i=0;i
printf("%5d",a[i]);
printf("\n");
return0;
}
voidmov(int*x,intn,intm)
{
inti,j,t;
for(i=0;i
{
t=x[n-1];/*保存最后位置的元素值*/
for(j=n-1;j>0;j--)/*从倒数第二个元素开始,每个元素向后一个位置*/
x[j]=x[j-1];/*调试时设置断点*/
x[0]=t;/*将保存的最后元素值放在最前面*/
}
}
第四题
#include
intmain()
{
inti,j,n,t,count,a[10000];
printf("Inputn:
");
scanf("%d",&n);
for(i=0;i
a[i]=i;
count=0;
i=1;
j=0;
while(count
{
if(i>n)
i=1;
if(a[i]!
=0)
j++;
if(j==3)
{
t=i;
a[i]=0;
j=0;
count++;
}
i++;
}
printf("LastNo.is:
%d\n",t);
return0;
}
五、运行结果
六、实验心得
1、C中数组名即是数组中首元素(下标为0的元素)的地址。
注意:
这不包括形参数组名,因为形参数组名并不占据实际的内存单元。
它只是指向其它数组首地址的指针。
2、数组名(比如a)代表数组首元素的地址,它是一个指针常量,在程序中不能改变它的值。
例如:
a++是非法的。
。
3、实参数实参数组名代表一个固定的地址,或者说是指针常量。
但形参数组并不是一个固定的地址,而是作为指针变量,它的值是可以改变的。
在函数调用开始时,它的值等于实参数组首元素的地址,在函数执行期间,它可以再被赋值。
4、指向数组的指针变量也可以带下标,如:
p[i]与*(p+i)等价。
*(p+i)与*(a+i)等价。
5、当实参是数组名时,传递的是该数组首元素的地址,即是一个指针。
第三篇:
《C语言程序设计》实验报告
指导教师学院专业班级学号姓名实验室
实验题目:
实验要求:
实验内容及步骤:
运行结果
心得体会:
第四篇:
C语言程序设计—函数—实验报告
实验报告
专业
软件工程
班级
X
班
学号_XXXXXXXXXXX_
姓名
实验日期:
201X年X月X日
报告退发(订正、重做)
课程
C程序设计实验
实验名称
函
数
一、实验目的
①熟练掌握C程序中函数的定义;②掌握函数的调用,函数参数的传递;③熟练掌握函数的嵌套调用和递归调用;
二、实验环境(描述实验的软件、硬件环境)
①软件环境:
windowsxp/win7等操作系统,MicrosoftVisualC++6.0编译器;②硬件环境:
PC机一台
三、实验内容、步骤和结果分析
题目一:
编写一个用来判断质数(素数)的函数。
要求:
(1)在main函数中调用该函数对输入的数值进行判断,并输出判断结果;
(2)当输入数值
#include#include/*=======判断质数(素数)的函数=======*/intjudgePrime(intn){
}/*=======判断质数(素数)的函数=======*/intmain(){
printf("\n提示:
输入一个数字来判断是否是质数(素数),当输入数值1;){printf("Pleaseenteranumber:
");for(inti=2;i
}return1;if(n%i==0)return0;elsecontinue;第1页共1页
}
}scanf("%d",&num);if(num
题目二:
使用习题1中所编写的判断质数的函数验证哥德巴赫(Goldbach)的1+1猜想-----任何一个>=6的偶数都可以表示成两个素数之和
要求:
①屏幕提示用户一个>=6的偶数;
②输出这个偶数等于2个素数之和的表达式;③当输入数据
#include#include/*=======判断质数(素数)的函数=======*/intjudgePrime(intn){
for(inti=2;i
if(n%i==0)return0;elsecontinue;第2页共2页
}}return1;//true-->1,false-->0/*=======验证哥德巴赫猜想的函数(调用judgePrime)=======*/intproveGoldbach(intm){
}intmain(){
}
printf("\n提示:
输入一个偶数来验证哥德巴赫猜想,当输入数值=6;){
}inttemp;printf("Pleaseenteranumber:
");scanf("%d",&num);temp=proveGoldbach(num);if(temp==0)//当输入小于6或者不是偶数时结束return0;printf("==================================");if(m
}if(judgePrime(j)==1&&judgePrime(m-j)==1)//判断两数是否都等于质数{}printf("\t%d=%d+%d\n",m,j,m-j);return0;//判断是否大于等于6或者不是偶数for(intj=2;j
题目三:
编写一个求阶乘的函数,接着调用该函数实现组合的求解要求:
①提示用户输入n和m的数值;②输出的结果
#include/*=======阶乘函数=======*/intfac(intn){
}/*=======组合函数=======*/intcombine(intm,intn){}/*=======main函数=======*/voidmain(){
intm,n;intres;printf("\n提示:
这是求组合求和公式的函数,输入两个整数(分别为上标和下标)\n\n");scanf("%d%d",&m,&n);if(m>n)//判断上标大于小标重新输入gotoloop;returnfac(n)/(fac(n-m)*fac(m));intf;if(n
}res=combine(m,n);printf("\tResultis%d\n",res);
题目四:
编写一个求矩阵中最大元素以及最小元素的函数selectMaxAndMin(),在main函数中调用该函数
要求:
最大值和最小值的输出操作,可以放在selectMaxAndMin()函数中
#include#defineROW4//矩阵的行#defineCOLUMN4//矩阵的列
/*=======在矩阵中选择最大最小数的函数=======*/voidselectMaxAndMin(intarry[ROW][COLUMN])//用指针更方便{
inttempMax,tempMin;if(arry[0][0]>arry[0][1])//赋初始值{
}else{
}for(inti=0;i
}
}for(intj=0;j
}if(arry[i][j]>tempMax){}if(arry[i][j]
}intmat[ROW][COLUMN];printf("Pleaseentera%dX%dmatrix:
\n",ROW,COLUMN);for(inti=0;i
}selectMaxAndMin(mat);return0;for(intj=0;j
题目五:
编写一个编码原文的函数,对于给定的内容,按照敌方的规律对其进行编码
要求:
某日,我军某部截获了一份敌方电报,经过仔细分析后发现:
该电文中所有的字母字符都是经过某种运算后得到的,然那些非字母字符则没有经过任何处理。
例如,原文中的字符A对应电文中的字符E,原文中的字符b对应电文中的字符f,原文中的字符W对应电文中的字符A,原文中的字符!
在电文中仍为!
#include#defineSIZE20
//定义大小/*=======密码翻译的函数=======*/chartrans(chara){
}//主函数intmain(void){
printf("请输入原文:
\n\n\n");charstr[SIZE];gets(str);printf("\n\n\n");if((a>='a'&&a='A'&&a
}if(a>='w'||a>='W'){}else{returna;}returna-22;returna+4;第7页共7页
}printf("正在破解……\n\n\n");printf("破译的原文是:
");for(inti=0;i
}printf("\n");str[i]=trans(str[i]);if(str[i]=='\0')//判断是否结束break;printf("%c",str[i]);
题目六:
编写一个函数,求解输入矩阵的转置矩阵并输出
#include#defineROW3//矩阵的行#defineCOLUMN4//矩阵的列/*=======矩阵的输入函数=======*/voidmatInput(intmat[][COLUMN]){
}/*=======原始矩阵的打印函数=======*/for(inti=0;i
for(intj=0;j
}printf("请输入矩阵元素[%d][%d]=:
",i,j);scanf("%d",&mat[i][j]);第8页共8页
voidmatPrint(intmat[][COLUMN]){
}/*=======转置矩阵的打印函数=======*/voidmatTrasPrint(intmat[][COLUMN]){
}/*=======main函数=======*/intmain(void){
}printf("==================================");printf("请输入一个%dX%d的矩阵:
\n",ROW,COLUMN);intmat[ROW][COLUMN];matInput(mat);printf("==================================");printf("原始矩阵为:
\n");matPrint(mat);printf("==================================");printf("原始矩阵的转置矩阵为\n");matTrasPrint(mat);return0;intarr[COLUMN][ROW];for(inti=0;i
}for(intj=0;j
}printf("\n");arr[i][j]=mat[j][i];printf("%3d",arr[i][j]);for(inti=0;i
}for(intj=0;j
题目七:
用户输入的字符串,以相反的顺序打印出来。
要求:
利用递归函数调用形式
#include#defineSIZE20/*=======相反输出字符串的函数=======*/voidreverse(chara[]){
inti=0;if(a[i]!
='\0'){第10页共10页
}intmain(void){
}printf("\t提示:
输入一串字符以相反的顺序打印\n");charstr[SIZE];gets(str);reverse(str);printf("\n");return0;
}elsereturn;reverse(&a[i+1]);//递归调用printf("%c",a[i]);
四、讨论
第五篇:
C语言程序设计II实验报告
第二部分实验内容
一、实验目的
1、掌握一维数组的定义和引用
2、掌握一维数组的初始化方法
3、了解与一维数组有关的应用编程方法
二、实验意义
数组的定义,元素引用特征和数组的编程特色,同时可接触到更多的经典算法,的,有了这些基础后,数组的实验能让
三、实验重点
12
四、实验难点
1.从键盘输入10个整数存放在一维数组里,用冒泡法进行排序输出。
2.从键盘输入10个整数,找出最大的数并输出该数及其下标。
3.用scanf函数给二维数组a[3][4]输入12个数据,并求出12个数据中正数之和,每一行的最小值以及下标值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 上机 实验 报告 精选 修改