c语言实验报告册答案Word格式文档下载.docx
- 文档编号:18344257
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:29
- 大小:44.03KB
c语言实验报告册答案Word格式文档下载.docx
《c语言实验报告册答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言实验报告册答案Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
inta=9;
a+=a-=a+a;
*包含复合的赋值运算符的赋值表达式*
a);
该程序的输出结果是-18。
赋值表达式a+=a-=a+a的求解步骤?
第一步:
a=a-(a+a)=-9第二步a=a+a=18
(4)main()
intk=-1;
%d,%u\n"
k,k);
该程序的输出结果是-1。
-1在内存中的存储形式?
取反加一(32个)
(5)main()
unsignedx1;
intb=-1;
x1=b;
*有符号数据传送给无符号变量*
%u"
x1);
该程序的输出结果是。
不同类型的整型数据相互赋值时,规则是什么?
(有符号赋值给无符号)
(6)main()
inta=3,b=4,c=5;
(!
(a<
b))&
&
(c=c+1));
%d"
c);
该程序的输出结果是0(换行)5。
若将第一个printf语句中&
变为||,结果将如何?
1(换行)6
(7)main()
{inta=1,b=2,c=3;
if(c=a);
elseprintf("
b);
该程序的输出结果是1。
2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)
(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应关系如下表:
百分制
90-100
80-89
70-79
60-69
<
60
等级制
优
良
中
差
劣
具体要求如下:
1)用switch语句实现该功能;
2)用键盘输入百分制成绩,输入前要有提示信息,对于不合理的数据应输出错误信息;
3)输出结果应包含百分制成绩和成绩等级;
4)分别输入成绩-10,30,60,68,75,83,95,102,查看记录运行结果。
见下页
测试数据:
100,50,-20
输出结果:
优,劣,成绩输入错误
(2)银行整存整取存款不同期限的月息利率分别为:
输入存款的本金和年限,求到期时能从银行得到的利息与本金的合计。
(利息的计算公式为:
利息=本金×
月息利率×
12×
存款年限。
4,10004,-10
133.12本金金额不能为负!
(3)调试下面程序,使之具有如下功能:
输入a、b、c三个整数,求最小值。
main()
inta,b,c;
scanf("
%d%d%d"
a,b,c);
if((a>
b)&
(a>
c))
if(b<
c)
printf("
min=%d\n"
b);
else
c);
if((a<
a);
程序中包含有一些错误,按下述步骤进行调试。
1)设置断点。
2)通过单步执行,观测变量,发现程序中的错误。
程序调试记录
1、程序出现的错误及改正
第四行,abc前都加&
,在%d%d%d中两个%d之间加空格;
{}括住六到九行;
把第十行if改成elseif;
2、程序的改进
1.每个<
或>
后加一个=;
2.在程序末尾添加如下指令
elseif((a<
=b)&
=c)||(a>
=c))
{
if(b<
=c)
printf("
else
}
实验2循环结构及其应用
1、熟练掌握while,do—while,for语句实现循环的方法,包括如何正确地设定循环条件,如何控制循环的次数。
2、掌握break语句与continue语句的使用方法。
3、熟悉循环的嵌套以及从循环体内退出循环的处理。
4、理解什么是循环程序结构。
为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意循环语句的一般使用方法,以及复合运算符的使用。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,以面向过程的、模块化设计方法完成程序设计。
【例题解析】
编写一个程序,输出半径为1到10的圆的面积,若面积在40到90之间则予以输出,否则,不予输出。
1)解题分析:
解决问题的关键算法为求圆的面积并按要求输出。
循环求圆的面积area,若area<
40,则用continue语句提前结束本次循环并开始新一轮循环,若area>
90,则用break语句跳出循环。
2)算法流程图如图2-1:
3)综合分析
需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break和continue语句。
图2-1输出半径为1到10且面积在40到90之间的圆面积的流程图
4)程序代码
#include<
stdio.(void){
floatarea=0.0,pi=3.14;
intr;
for(r=1;
r<
11;
r++){
area=pi*r*r;
if(area<
40)
continue;
if(area>
90)
break;
area=%5.2f\n"
area);
1、阅读程序题。
#include<
stdio.(){
intx=-1;
do{
x=x*x;
}while(!
x);
%x=\n"
x);
该程序的输出结果是1=。
intnum=0;
while(num<
=2){
num++;
num);
该程序的输出结果是1(换行)2(换行)3。
stdio.(){
inta,b;
for(a=1,b=1;
a<
=100;
a++){
if(b>
=20)break;
if(b%3==1){b+=3;
continue;
b-=5;
printf(“%d\n”,a);
该程序的输出结果是8。
inty=2,a=1;
while(y--!
=-1)
do{
a*=y;
a++;
}while(y--);
printf(“%d,%d\n”,a,y);
该程序的输出结果是1,-2。
(1)输入整数n,求n!
(1<
n<
20)。
(2)打印出所有“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字的立方之和正好等于该数本身。
例如:
153是一个“水仙花数”,因为153=13+53+33
【提示】根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数a=a的百位的立方+a的十位的立方+a的个位的立方)这个公式,满足这个条件的三位数就是“水仙花数”。
(3)一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
【提示】在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
3、程序选做题
(1)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃掉了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的总数一半零一个。
到第10天早上想再吃时,见只剩一个桃子了。
求第一天共摘了多少桃子。
【提示】使用逆向推导的方式,设后一天的桃子为N个,则其前面一天的桃子为(N+1)*2个,以此类推。
(2)“百钱买百鸡”问题:
公鸡每只5元,母鸡每只3元,小鸡每3只1元;
用100元买100只鸡,问公鸡,母鸡,小鸡各买多少只?
【提示】设公鸡x只,母鸡y只,小鸡z只;
则有1<
=x<
=18,1<
=y<
=31,1<
=z<
=98,且同时满足5x+3y+z3=100,x+y+z=100,z%3=0这三个条件。
通过数学运算可改变条件,从而可用不同的方法来解决此问题,请尝试不同的循环次数解决该问题。
五、程序调试记录
要求:
写出题号,并编写顺序号。
如四
(1)出现的错误
(1)·
·
(2)·
实验3模块化设计与应用
完成本实验需要4学时。
(1)掌握函数实参和形参的对应关系以及“值传递”的方式;
(2)理解函数调用的过程以及函数的返回值;
(3)弄清楚带参函数和带参的宏之间的异同。
(1)深刻理解模块化程序设计的思想及如何进行模块划分;
(2)掌握定义函数的方法以及函数原型的声明;
(3)灵活运用函数调用(有参函数和无参函数、有返回值的函数和无返回值的函数)。
为了达到最佳的实验效果,下面提出几点指导意见或要求以供参考:
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果。
上机时输入计算机,验证自己推导的结果是否正确。
若不正确,应分析原因。
2、编程题注意事项:
(1)一个模块(或函数)应有一个入口点和一个退出点。
(2)一般每个模块(或函数)只执行一个任务。
不要将无关的任务放于同一模块中,只将完成同一任务的语句组合在一起。
(3)先画流程图,后写程序代码;
(4)变量和函数标示符尽量“见名知义”;
(5)程序中应有适当注释。
3、应记录调试程序时出现的错误,以便经验的积累。
(1)下面程序的输出结果是5,8。
#include<
stdio.k+m;
voidmain()
{
ints;
s=f
(2);
%d,%d\n"
s,f(s));
(2)下面程序的输出结果是777。
stdio.(a+b+c);
voidmain()
inta=2,i;
for(i=0;
i<
3;
i++)
f(a));
(3)下面程序的输出结果是3(空格)5。
stdio.()
intx=3,y=5,*p=&
x,*q=&
y;
swap(p,q);
*p,*q);
(4)下面程序的输出结果是12。
inta=1,b=2,c=3;
M(a+b,b+c,c+a));
(5)下面程序的输出结果是19。
stdio.(p);
2、编程序并上机调试运行。
(1)请设计一个函数fun(),它的功能是:
判断pm是否是素数。
若pm是素数,返回1;
若不是素数,返回0。
pm的值由主函数从键盘读入。
函数fun():
主函数main():
测试数据及输出结果:
330
371
(2)请设计一个函数fun(),它的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12。
调用该函数后,c=4152。
921输入数字错误!
21232123
(3)请设计两个函数MaxCommonFactor()和MinCommonMultiple(),它们的功能是:
前者用于求两个正整数的最大公约数,后者用于求两个正整数的最小公倍数。
函数MaxCommonFactor():
函数MinCommonMultiple():
函数main():
242(换行)4
351(换行)15
-15数字输入错误!
要求记录以下内容:
实验4相同数据类型集合
(1)掌握一维和二维数组的定义、赋值和输入输出
(2)学会使用一维数组、二维数组
(3)学会使用多维数组、字符数组
(4)学会使用字符串处理函数
(1)如何运用数组进行程序设计
(2)了解字符串处理函数
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意数组下标的使用方法。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,注意数组下标不要越界(为了加深认识,自己可以尝试一下下标越界的情况)。
3、调试程序要有耐心,反复的调试过程,虽然表面看起来费时费力,但是你一定会受益非浅。
(1)main()
{charch[7]={"
65ab21"
};
inti,s=0;
for(i=0;
ch[i]>
='
0'
ch[i]<
9'
;
i+=2)
s=10*s+ch[i]-'
s);
}
该程序的输出结果是6。
(2)#defineMAX5
main()
{inta[MAX],i;
for(i=0;
i<
5;
a[i]=i;
\n*****a*****\n"
);
{
a[%d]="
i);
a[i]);
该程序的输出结果是。
(3)#include"
inti,j,temp;
inta[N+1];
intcount=0;
input%ddata:
\n"
N);
for(i=1;
=N;
&
a[i]);
********sortcourse********\n"
for(i=1;
count++;
for(j=1;
j<
=N-i;
j++)
if(a[j]>
a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
%3d:
"
count);
j++)
%d"
a[j]);
\n"
theresultis:
for(i=1;
该程序的输出结果是冒泡排序显示过程,并最终把输入的十个数字由小到大无空格排列。
(4)#include"
intf[N],i;
f[0]=1;
f[1]=1;
for(i=2;
N;
i++)
f[i]=f[i-1]+f[i-2];
\nFibonacci\n"
if(i%4==0)printf("
\n\n"
f[%-2d]=%-5d"
i,f[i]);
该程序的运行结果为。
(5)#include"
inti,j,temp;
inta[3][3]={{},{},{}};
---matrixa---\n"
{
for(j=0;
%3d"
a[i][j]);
for(j=0;
i;
{temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
---matrixachanged---\n"
j++)printf("
(6)#include"
{chars[40];
inti;
inputstring:
(s[i]=getchar())!
\n'
i++);
s[i]='
\0'
\noutputstring:
s[i]!
{if(s[i]>
a'
s[i]<
z'
s[i]=s[i]-32;
elseif(s[i]>
A'
Z'
s[i]=s[i]+32;
%c"
s[i]);
}该程序的运行结果为将输入大写字母转变为小写,小写字母转变为大写。
(1)编写一个3*4矩阵,找出每行中最大元素并与第一列元素交换。
(a)使用二维数组存放该3*4矩阵;
(b)定义并初始化该二维数组;
(c)输出原矩阵和变换后的矩阵进行比较;
(d)有必要的提示信息。
(2)编程实现如下功能:
将字符数组str1中的全部字符拷贝到字符数组str2中,具体要求如下:
(a)不能使用字符串拷贝函数strcpy();
(b)必须将str1中的字符串结束标志‘\0’一起拷贝,但其后的字符不拷贝;
(c)str1的长度不超过80,str2的长度必须足够大;
。
(3)设某班共有10名学生,为了平定某门课程的奖学金,按照规定超过全班平均成绩10%者发给一等奖,超过全班平均成绩5%者发给二等奖。
编写程序,输出学生学号、成绩和奖学金等级。
主函数中调用代码:
无
(1)调试下面程序。
#defineN10
{inti,num,data[]={56,70};
*num存放被查找的整数,数组data存放有序数列*
intlow=0,"
scanf("
num);
*输入要查找的整数*
thesortednumbersare:
%d"
data[i]);
*输出有序数列*
while(low<
=%disnotindata[]"
*若low大于high,则查找失败*
1.用{}把十四十五行括起来
2.第十行i=1改成i=0;
1.把七八九三行与十十一两行换一下位置,方便用户操作;
实验5深入模块化设计与应用
(1)学会使用函数嵌套调用的使用方法
(2)学会使用一维数组做为函数参数
(3)递归调用的设计与使用
(4)学会使用指针做为函数的参数
(1)如何运用指针进行程序设计
(2)如何以一维数组、二维数组做为函数参数进行程序设计
(3)冒泡排序、选择排序的灵活应用
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察函数嵌套调用、一维数组做为函数参数、指针做为函数的参数、递归调用的使用方法。
要注意变量设置、函数参数及返回值在数据传递或共享
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 答案