c语言实验指导修改学生版Word文档格式.docx
- 文档编号:17101272
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:23
- 大小:99.59KB
c语言实验指导修改学生版Word文档格式.docx
《c语言实验指导修改学生版Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言实验指导修改学生版Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
inti;
doubles,t;
while(n<
0)
{printf("
Pleaseinput(n>
0):
"
);
scanf("
%d"
&
n);
}
/**********found**********/
s=【1】;
for(i=1;
i<
=【2】;
i++)
{t=2.0*i;
s=s+(2.0*i-1)*(2.0*i+1)/【3】;
printf("
\nTheresultis:
%f\n"
s);
实验3数组
1、掌握一维数组的定义、赋值和输入输出的方法;
2、掌握字符数组的使用;
3、掌握与数组有关的典型算法。
输出以下的杨辉三角形
1
11
121
1331
14641
15101051
。
。
要求:
输出10行
已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。
如:
原数组元素为:
124679,则输入5后
插入到数组中形成新的序列:
1245679
写出算法思路分析的过程。
折半查找。
在有N个元素的数组(元素由小到大的顺序存放)中,查找x是否存在于该数组,如存在输出x在数组中的下标,如不存在则输出“non-existent!
”
折半查找的基本思想说明:
设查找数据的范围下限为low=0,上限为hig=N-1,求中点mid=(low+hig)/2,用x与中点元素(即mid作为下标的元素)比较,若相等即找到,停止查找;
否则,若x大于中点元素,替换下限low=mid+1,到下半段继续查找;
若x小于中点元素,替换上限hig=mid-1,到上半段继续查找;
具体事例如下图:
情况1)设要查找的数据x=5,则有:
j135791113
lowmidhig
由于mid为下标的值是7,大于x,则修改上限hig
k135791113
Lowmidhig
由于mid为下标的值是3,小于x,则修改下限low
l135791113
hig
Low
mid
由于mid为下标的值是5,等于x,则找到数据,结束查找。
情况2)设要查找的数据x=8,则有:
由于mid为下标的值是7,小于x,则修改下限low
lowmidhig
由于mid为下标的值是11,大于x,则修改上限hig
hig
low
mid
由于mid为下标的值是9,大于x,则修改上限hig
m135791113
hig
由于上限hig小于下限low,则表示没有找到,结束查找。
}
实验4函数
1、掌握函数的定义和调用方法;
2、掌握函数实参与形参的对应关系;
3、理解和掌握数组作为函数参数的用法。
执行以下程序,写出执行结果,并分析。
填写下述del函数内容,功能是删除整型数组中指定的数。
数组中的数为:
4、8、9、7、0、1要删除的数为9;
删除后数组中的值为:
4、8、7、0、1
实验5指针
1、掌握有关指针的概念,会定义和使用指针变量;
2、掌握指针和函数的关系;
3、掌握指针和数组的关系。
(1)执行下列程序,并分析运行结果
(2)试修改上程序,使得函数fun能够交换主调函数main中a,b的值。
给定程序中,函数fun的功能是:
计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。
例如,有10个正数:
4630324061745154826,平均值为:
30.500000
移动后的输出为:
4632404548306171526
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得对源程序增行或删行,也不得更改程序的结构!
函数fun的功能是:
将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是:
将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。
调用该函数后,c=5241。
注意:
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
实验6结构体
掌握结构体类型变量的定义和使用;
通过该实验把C语言中的几个主要知识(如:
顺序结构、选择结构、循环结构、数组、函数等)得到综合应用。
题目:
建立一个简单的学生成绩管理系统。
具体功能如下:
(1)录入学生信息的功能。
每个学生的数据包括学号、姓名、四门课的成绩。
(2)打印学生信息的功能。
(3)计算学生平均成绩的功能。
《程序设计与算法语言》实验报告
专业
班级
姓名
学号
实验项目
实验一选择结构程序设计
实验目的
1、熟悉if、switch语句形式。
2、掌握程序设计的基本方法。
3、学会简单的选择结构程序设计方法。
实验内容
题目1:
●算法设计分析(用流程图表示算法是怎么实现的。
如有多个函数,那么你是怎么组织这些函数的,为什么要这么划分,各个函数之间的调用关系是什么样的)
●实验测试结果及结果分析(列出几组输入和输出结果,针对这些输入和输出做分析)
结果分析
●算法设计分析
●实验测试结果及结果分析
实验总结
(略)
附录实验程序代码(该部分请加注释)
/*程序定义部分:
*/
/*主函数部分:
调用选择界面函数,再依据用户的选择,调用相应函数,实现相关功能*/
voidmain()
{
FNODE*head;
intn=0;
***********************
另注:
1、源代码部分请附加适当的注释说明;
2、打分的表格请置于实验报告最后一页的底端;
3、请遵照本实验范例的文字大小和段落格式排版;
4、实验报告双面打印;
5、每个实验15分计。
----------------------------------------------------------------------------------------------------------------------
序号
项目
得分
总分
1
实验报告排版(2分)
2
算法思想分析(3分)
3
源代码(7分)
4
实验结果及分析(3分)
实验报告雷同者均视为未做。
抄袭请慎重!
【1-1】
#include<
math.h>
{
floatx,y;
//定义浮点数x,y
printf("
请输入x:
\n"
//屏幕上显示请输入xy
%f"
x);
//输入x
y=sqrt(x*x);
//开平方根
if(x<
30&
&
x>
-29.5)//判断范围x是否同时满足大于等于-29.5和小于等于30
%f%f"
x,y);
//输出
else//不然
x);
【1-2】
chara;
//定义字符
printf("
\n请输入一个字符:
"
//换行+屏幕上输出(XXX)
a=getchar();
//输入一个字符
if(a>
='
0'
a<
9'
)//如果满足括号里的条件
number"
Else//不然
if(a>
A'
Z'
)//如果
printf("
big\n"
Else//不然
if(a>
a'
z'
)//如果
printf("
small\n"
Else//不然
other\n"
system("
pause"
//停留在dos界面
【1-3】
inta,b;
//定义数字
charc;
//定义运算符
请输入数字:
scanf("
a);
//输入数字
请输入运算符:
%c"
c);
//输入运算符
b);
switch(c)
{
case42:
%d*%d=%d"
a,b,a*b);
break;
//42的ASCII是*
case43:
%d+%d=%d"
a,b,a+b);
//43的ASCII是+
case45:
%d-%d=%d"
a,b,a-b);
//45的ASCII是-
case47:
%d/%d=%d"
a,b,a/b);
//47的ASCII是/
}【2-1】
ints,n=100;
/*s是和sum的缩写
n的起始值为100而且是整数*/
输入你要的三位数的和:
\n"
//RT
s);
//输入s
1000)//在n<
1000即小于等于999之前一直寻找以下符合条件的数字
{
inta=n%10;
//a个位
intb=n/10;
//b十位
intc=n/100;
//c百位
n++;
//i的自增
if(a+b+c==s)//如果abc加起来符合你输入的三位数之和
%d"
n);
//输出所有符合条件的100-999的数字
//dos黑框停留
【2-2】
#definef(x)((x+3)*(x+3)-7)//宏定义
floata=-3,b=0,c,eps=1e-5;
//a下界b上界c是中间变量eps=1e-5是区间的极限大小
while((b-a)>
eps)//当上界-下界还大于极小的极限时执行下面
c=(a+b)/2;
//对区间区中值
if(f(c)==0)//如果c是函数的根
break;
//跳出循环
else//否则
if(f(a)*f(c)<
0)b=c;
//是否c是
elsea=c;
//否则c作为新的a也就是缩小下界
实数根=%f\n"
c);
}【2-3】
inti,n=-1;
//定义整型变量in
doubles,t;
//定义双精度浮点小数st
0)//当n小于0时执行下面{}内容
//显示
//输入
s=0;
//【1】s的初始值
i<
=n;
i++)//【2】i从1开始执行次数取决于n
{t=2.0*i;
//分母是奇数(从1开始)的二倍
s=s+(2.0*i-1)*(2.0*i+1)/(t*t);
}//【3】累加求和直到循环部分结束
【3-1】
stdlib.h>
#defineN11//看到N全部换成11
voidmain()
{intn=0,a[N][N],i,j;
//定义n行从0开始的杨辉三角,二维数组a[11][11],i行,j列
请输入杨辉三角的行数:
\n%d行杨辉三角为:
\n\n"
i++)//杨辉三角的两边的数为1
{a[i][1]=a[i][i]=1;
}//控制二位数组的边和对角线,把边和对角线全赋值成1,循环从1开始,a[i][1]为第一个数
for(i=3;
i++)
{for(j=2;
j<
=i-1;
j++)//控制除了边及对角线的内部的数
{a[i][j]=a[i-1][j-1]+a[i-1][j];
}//某一个数=上一排同列的数+上一排左一列的数,除了边和对角线
{for(j=1;
=i;
j++)//j<
=i控制输出下三角,不输出其它的数,
%5d"
a[i][j]);
}//当一行输出完以后换行继续下一行的输出为了数字不堆一起美观
//美观
//防闪退
【3-2】
main()
inta[7]={1,2,4,6,7,9},i,j,x;
//定义一个7位数组
现有排列124679\n\n请输入一个数:
for(i=0;
7;
{if(x<
a[i])break;
}//从a[0]开始,如果找到x在数组中应该在的位置,跳出
for(j=7;
j>
i;
j--)
{a[j]=a[j-1];
}//由倒二a[6]开始往倒一a[7]前移,即a[6]→a[7]a[5]→a[6]...
a[j]=x;
//新的挪出来的空位填入x
\n\n现在的排列是:
{printf("
a[i]);
}//输出重排数组
【3-3】
#defineN7
{inti,a[N]={1,3,5,7,9,11,13},k,x,low,high,mid;
//low,high查找数组元素范围的下标
a数组中的数据如下:
N;
i++)
%4d"
输入要查找的数x:
low=0;
high=6;
//设置[low,high]初始查找范围
while(low<
=high)//当有查找范围,进入循环
{mid=(low+high)/2;
//求mid,查找范围的中间元素下标
if(x==a[mid])//如果中间元素等于被查找数,找到,跳出循环
{k=mid;
break;
}
else
a[mid])//m比中间元素小
high=mid-1;
//m应该在中间元素的左边,修改查找范围
else
low=mid+1;
//m应该在中间元素的右边,修改查找范围
if(low<
=high)printf("
x=%d,数组下标=%d\n"
x,k);
elseprintf("
non-existent!
//low>
high,已经没有查找范围了
【4-1】
sp(intx,inty)//定义一个叫sp的函数(sp前没有,表示缺省int),形参or入口函数为intx,inty
{intt,i;
//
t=x;
//x的值赋给t
x=y;
//y的值赋给x
y=t;
//t的值赋给y(x的值赋给y)实现对xy的值互换
//省略return或无任何表达式无返回值
main()//无返回值
a=7;
b=9;
函数调用前a=%db=%d\n"
a,b);
sp(a,b);
//调用函数
函数调用后a=%db=%d\n"
【4-2】
voiddel(intb[],intn,inty)//b[]是数组,n是数组元素总共有几个,假设y是查找并要删的
{inti,j,cnt=0;
//cnt是次数
n;
if(b[i]==y)//当找到第i个等于y时
{for(j=i;
j++)
b[j]=b[j+1];
//把后面的值赋到i的位置
#defineN6
inta[N]={4,8,9,7,0,1},i,x;
请输入要查找并删除的数据:
del(a,N,x);
N-1;
%d\t"
//\t能够让间距变大
【5-1】
voidfun(int*a,int*b)//实参ab作为形参直接改动
intk;
k=*a;
*a=*b;
*b=k;
//a指向kb指向ak指向b
inta=3,b=6;
int*x,*y;
//定义指针xy
before:
%d%d\t"
x=&
a;
y=&
b;
//x指向a的地址y指向b的地址
//*x指向a的值*y指向b的值
fun(x,y);
//函数对ab直接进行操作
after:
%d%d\n"
*x,*y);
【5-2】
#defineN10
//定义函数部分
doublefun(double*x)
inti,j;
doubles,av,y[N];
i++)//
s=s+x[i];
//叠加
/*******found*******/
av=s/N;
//平均数
for(i=j=0;
if(x[i]>
av)//全体逐个比较
{y[j++]=x[i];
x[i]=-1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 指导 修改 学生