实验指导书文档格式.docx
- 文档编号:20870667
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:21
- 大小:38.98KB
实验指导书文档格式.docx
《实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《实验指导书文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
2.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各有多少只?
设a=10,b=20,若要交换这两数,则需要借一中间变量,首先将a中的数值存入变量t中进行保存,然后将b中的数值存入a中,再将t中的数值存入b中。
设有x只鸡,有y只兔,则有:
求出x和y的公式:
设h=16,f=40,写出程序代码
3.从键盘输入一个字符,输出这字符的ASCII码的值。
一个整数,只要它的值在0—255之间,也可以用字符形式输出,在输出前,系统会将该整数转换为相应的ASCII码的字符;
一个字符也可以用一个整数输出,输出的整数即为这字符的ASCII码值。
根据上面的分析,自已写出程序代码。
运行时:
从键盘上输入字符:
a
输出结果为_______,此结果代表着什么含义?
4.已知直角三角形的两直角边长为a,b,求斜边长
的值,保留一位小数。
在这个题中计算
,要用到一个数学函数sqrt(x),这个函数在math.h头文件中。
写出程序代码。
实验3分支结构程序设计
掌握if语句的格式与应用,if语句的嵌套格式与应用,条件运算符的作用,Switch语句的格式与应用,Break、continue语句的格式与应用。
二.实给内容
1.完成下面的程序,在空白处填入a,b,c,取a,b,c中最大者赋给max。
A.if(a>
b&
&
a>
c)
B.
if(a>
b)
max=________
if(a>
c)
else
max=______p;
max=______
if(b>
else
max=______max=______
else
if(b>
max=________
else
max=_________
2.输入a,b,c三个整数,要求将绝对值最大者打印输出。
此题的关键是绝对值如何表示,x的绝对值也以表示成:
abs(x)。
可以用伪代码写出程序的算法。
If
abs(a)>
abs(b)
则x=a否则x=b(这时说明x中存放着a、b中绝对值较大的一个数);
如果if
abs(x)>
abs(c)
则绝对值较大的一个是x,否则绝对值较大的一个是c。
3.输入一个整数,判断该数的奇偶性。
(输出相应的标志even-偶数odd-奇数,请记住这两个单词)
一个数除2若余数为0,则这个数一定是偶数,否则是奇数。
C语言中的求余运算符为“%”,若输入的数为偶数则输出“even”,若输入的数为奇数则输出“odd”。
自已写出程序代码。
4.给定一个正整数,判断它是否能同时被3、5、7整除。
实验4循环结构程序设计一
一.实验目的
掌握循环结构的三种形式:
当型循环结构(while)、直到型循环结构(do_while)、次数型结构(for),以及三种形式的相互转换,掌握break语句、continue语句的格式、功能、作用。
二.实验内容与步骤
读程序,求结果
1.
下面程序段输出结果是(
)
Intx=3;
Do{printf(“%d\n”,x-=2);
}
While(!
(--x));
2.
x和y均为int型变量,执行循环语句后,y值为(
For(y=1;
x=1;
y<
=50;
y++)
{if(x>
=10)break;
if(x%2==1)
{x+=5;
continue;
x-=3;
}
编写下列程序,上机调试、验证。
键盘上输入10个数,求其平均值。
输出1—100之间,其数的平方在150—200之间的第一个数,如找到,退出循环,输出该数的平方。
反之,继续查找。
3.
输入一正整数,按从低到高的顺序依次输出其各位数字的值,例如:
输入8546输出8
5
4
6
【程序分析提示】关键是确定整数的各位数字是什么
4.从键盘上输入若干正整数,求其中最大数和最小数。
输入的数以0为中止标志。
【程序分析提示】
(1)
设第一个读取德数是当前最大数和最小数;
(2)
若当前读取的整数不为0,则继续循环;
(3)
若当前读取的数比最大数大,则记录;
比最小数小,则记录;
(4)
读取下一个整数。
实验5循环结构程序设计二
掌握三种循环结构相互嵌套,多重循环结构的应用。
输出100-999之间的全部素数。
编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。
3.打印下面的图案
******
*
*
******
【程序分析提示】
这是一个用双层循环实现打印图案的问题。
打印几行用外循环实现,每行打印多少个字符,用内循环实现。
具体每行哪个位置打印字符,由内循环体的if语句实现。
4.求出所有各位数字的立方和等于1099的三位整数。
可用三层循环实现。
设最外层循环变量为i(表示百位);
此外层循环变量设为j(表示十位);
最内层循环变量为k(表示个位)。
输出ijk的条件:
所有个位数组的立方和等于1099,即:
i*i*i+j*j*j+k*k*k==1099;
实验6数组程序设计一
掌握一维数组和二位数组的定义、初始化、输入、输出方法
1.填补空出的语句,以使程序完整,然后上机验证。
(1)下面程序的功能是输出数组s中最大元素的下标。
main()
{intk,p;
ints[]={1,-9,7,2,-10,3};
for(p=0,k=p;
p<
6;
p++)
if(s[p]>
s[k])_____________;
printf(“%d\n”,k);
}
【程序分析提示】主要考虑最大元素下标k和循环变量p之间的关系。
(2)下面程序的功能为求主、次对角线元素之和。
{staticinta[][3]={9,7,5,3,1,2,4,6,8};
inti,j,s1=0,s2=0;
for(i=0;
i<
3;
i++)
for(j=0;
j<
j++)
{if(________)s1=s1+a[i][j];
if(________)s2=s2+a[i][j];
printf(“%d\n%d\n”,s1,s2);
【程序分析提示】主要考虑主对角线行、列之间有何关系?
次对角线行、列之间的关系?
3.编写下列程序,上机调试、验证。
(1)求2个3×
3矩阵对应元素之和,并存入矩阵C中,然后输出矩阵C。
设计步骤:
①定义3个3×
3矩阵a,b,c;
②设计用双重循环给矩阵a、b赋值;
③用双重循环求矩阵a、b对应元素之和并赋给矩阵c;
④用双重循环输出矩阵c对应的元素。
(2)输入单精度型一维数组a[10],计算并输出a数组中所有元素的平均值。
①
定义一个单精度型一维数组a[10];
②
用单重循环给一维数组a[10]赋值;
③
用单重循环求一维数组a[10]所有元素之和;
④
在循环外求平均值并输出。
四.思考与练习
设a[3][4][5]是一个三维数组,在内存中紧位于a[1][3][4]之后的数组元素是谁?
紧位于a[0][1][0]之前的数组元素是谁?
设a是一个M*N*L的三维数组,给出a[i][j][k]的地址计算公式。
3.
设有数组定义inta[5][10]。
问一维数组a的每个元素占多少字节?
数组a[2]的每个元素占多少字节?
假设int型数句占2个字节。
4.
设有数组定义inta[3][4][5]。
a,a[0],a[0][0]都是数组的名字。
问它们的第一个元素的地址各是什么?
它们的第一个元素各占多少字节?
实验7数组程序设计二
掌握字符数组的定义、初始化,存放字符串的字符数组的定义、初始化、输入、输出方法,掌握常用字符串处理函数的格式、功能和使用方法;
1.填补空出的语句,以使程序完整,然后上机验证。
下面程序的功能是将一个字符串str的内容颠倒过来。
#include“string.h”
{inti,j,k;
charstr[]={“1234567”};
for(i=0,j=strlen(str)_______;
j;
i++,j--)
{k=str(i);
str[i]=str[j];
str[j]=k;
【程序分析提示】i和j对应字符数组的下标,通过循环实现i由前往后移动,j由后向前移动。
分析字符数组最后元素的下标值和字符串长度之间的关系。
2.编写下列程序,上机调试、验证。
输入一个字符串,将其中所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。
设计步骤
①用gets输入字符串;
②用循环判断字符串中的每个字符是大写还是小写,若是大写要转换成小写,是小写要转换成大写:
大写与小写字母的转换关系是“小写字母=大写字母+32”
③用puts输出该字符串。
参考程序部分清单:
设某班50名学生的三科成绩表如下
课程一
课程二
课程三
… … …
编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。
可先按3个学生3门课成绩设计,通过后再改成50个学生;
先将3个学生3门课的成绩通过scanf函数送入字符数组score;
求出3个学生每门课程的总成绩,放入s一维数组中;
求出每门课程的平均成绩并输出。
读如下程序,找出其中的所有错误。
1)
main()
2)
{inta,x[10];
3)
chars[100];
4)
doubleA,B,a,b;
5)
for(i=0;
10;
i++)scanf(“%c”,x[i]);
6)
scanf(“%d%d”,&
A,&
B);
7)
50;
i++)scanf(“%c”,s[i]);
8)
ifA>
Bthena=b=1elsea=b=2;
9)
printf(“%d,%d\n”,x[0]=A+x[10],B+x[10]);
10)
printf(“s=%s\n”,s);
2.
函数调用“strcat(strcpy(str1,str2),str3)”的功能是什么?
语句“printf(“%d\n”strlen(“ats\no12\1\\”));
”的输出结果是什么?
实验8函数程序设计一
掌握自定义函数的概念、定义格式、调用方法;
掌握函数的形式参数、实际参数和函数的返回值;
掌握函数程序设计的一般方法和应用。
1.阅读下列程序,分析程序完成的功能,然后上机验证结果。
(1)main()
{
voidf();
floatx,y;
scanf(“%f,%f”,&
x,&
y);
f(x,y);
voidf(float
a,float
b)
floatc;
if(a>
b)
c=a+b;
else
c=a-b;
printf(“%f”,c);
【程序分析提示】该程序通过函数f,对形式参数为a,b进行相应运算。
通过该题目验证自定义函数的定义、调用、参数传递、返回值之间的关系。
【思考】如果将该函数定义为代返回值的类型,该程序应该如何改变?
2.编写下列程序(或程序段)。
(1)编写自定义函数,实现求两个实数最小值的功能。
(2)计算10名学生1门课成绩的平均分。
(程序设计要求:
用自定义函数来实现,注意自定义函数的形式及参数之间的传递,用主函数来调用自定义函数实现功能。
)
(3)定义二个整数(x、y)最小公倍数的函数。
(4)利用自定义函数编写程序,实现将一个十进制数转换成二进制数。
(5)利用自定义函数编写程序,求下面的式子:
Y=1+1/2+1/3……+1/n
(n的数值自定)
Y=1×
2×
3+2×
3×
4+……+98×
99×
100
实验9函数程序设计二
掌握函数与数组之间的关系和操作,熟悉数组作为参数传递应该注意的问题;
函数的嵌套、递归调用方法和应用;
局部变量、全局变量的定义和使用;
常用系统函数的使用;
floata[10];
int
i;
scanf(“%d”,&
a[i]);
f(a);
voidf(intb[])
floatsum=0,aver;
sum+=b[i];
aver=sum/10.0;
printf(“%d”,aver);
输入数据为:
23
43
12
46
90
65
44
76
78
86
输出结果为:
【思考】在主函数中的voidf();
作用是什么?
可以改变其形式吗?
(2)main()
intx=5,y=0;
printf(“x=%5d
y=%5d
\n”,x,y);
func();
func()
staticintx=4;
inty=10;
x=x+2;
y=y+x;
printf(“x0=%5d
y0=%5d
【思考】分析该程序的运行结果并给出简单解释。
(3)main()
inti=5;
printf(“%d\n”sub(i));
sub(intn)
inta;
if(n==1)
return1;
a=n+sub(n-1);
return(a);
【思考】写出该程序的运行结果并熟悉递归函数的实现过程。
完成下面的题目,然后上机验证。
(1)输入一个数组,利用自定义函数求数组的平均数(用数组做参数)。
(2)用自定义函数实现将两个字符串连接的程序。
(4)给出一个二维数组,求其主对角线元素之和。
(5)自定义函数countc的功能是统计array数组中大写字母的个数,并返回大写字母的数目。
(6)下列程序的功能是计算函数f(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。
(7)用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。
(8)以下函数p的功能是用递归方法计算xX的n阶勒让德多项式的值。
已有调用语句p(n,x);
请编写p函数。
递归公式如下:
实验10指针结构程序设计一
掌握指针和指针变量,内存单元和地址、变量与地址、数组与地址的关系;
掌握指针变量的定义和初始化,指针变量的引用方式;
掌握取地址运算符与指针运算符;
掌握指向变量的指针变量的使用;
掌握指向数组的指针变量的使用;
1.main()
inta,b,*pa=&
a,*pb=&
b,*p;
scanf(“%d,%d”,pa,pb);
if(*pa>
*pb)
{
p=pa;
pa=pb;
pb=p;
printf(“%d<
=%d\n”,*pa,*pb);
【程序分析提示】该程序用if语句比较pa和pb指向的数,使pa指向小数,pb指向大数,在实现该程序中,使用了指针方式。
2.输入15个整数存入一维数组,再按逆序重新调整该数组中元素的顺序然后再输出。
下面给出部分程序的内容,请同学将程序补充完整,然后上机调试。
部分程序清单如下:
inta[15],*p1,*p2,x;
for(p1=a;
p1<
a+15;
p1++)
scanf(“%d”,p1);
for(p1=a,p2=a+14;
a+7;
p1++,p2--)
x=*p1;
*p1=*p2;
*p2=x;
……
三.编写程序,然后上机调试结果
1.已知p,q指向两个int型变量,写两个复合语句,分别交换p,q的值和p,q所指变量的值,每个复合语句中只可以定义一个变量。
2.已知p,q指向数组的两个元素,写赋值语句,使r指向p和q的中点。
例如,若p,q分别指向a[0]和a[2],则r指向a[1]。
实验11指针结构程序设计二
掌握指向二维数组和字符数组指针变量的使用方法;
掌握指针数组的定义、指针数组元素的引用;
掌握多级指针的定义和应用;
ints[4][4],i,j;
4;
*(*(s+i)+j)=i-j;
printf(“%4d”,*(*(s+j)+i));
printf(“\n”);
2.#include“string.h”
main( )
chara[5][80],*p[5],**q,**max;
inti;
for(i=0;
5;
p[i]=a[i];
gets(p[i]);
max=&
p[0];
q=&
p[1];
for(i=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 指导书