中南大学C语言实验答案完整版.docx
- 文档编号:8530067
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:25
- 大小:25.47KB
中南大学C语言实验答案完整版.docx
《中南大学C语言实验答案完整版.docx》由会员分享,可在线阅读,更多相关《中南大学C语言实验答案完整版.docx(25页珍藏版)》请在冰豆网上搜索。
中南大学C语言实验答案完整版
实验一熟悉TurboC的编程环境
一:
目的要求
1.熟悉TurboC的编程环境;
2.知道程序编辑、链接、执行的基本步骤;
3.学习如何查错并修改程序;
4.上机前预习编写好程序。
二:
实验内容与步骤
调试以下两个程序
/*ThefirstCProgram*/
#include
voidmain()
{
printf(“Hello,World!
\n”);
}
#include
voidmain()
{
inta,b,sum;
a=123;
b=456;
sum=a+b;
printf(“sumis%d\n”,sum);
}
调试通过后,自己修改程序,使程序出错,并读懂错误提示,进行修改。
实验二数据输入输出格式的程序设计
一.目的要求
1.进一步熟悉调试程序的方法;
2.熟练掌握格式输入与格式输出函数的使用。
3.掌握字符与ASCⅡ值之间的转换方法。
4.上机前预习编写好程序;
二.实验内容与步骤
1.按右图设计屏幕输出
2.光标停在EnterNumber:
之后,等待输入任一字符;
3.输入字符1,则显示:
Ch=1--49
ASCⅡ值
字符
4.再接回车键,则退出运行。
三.利用字符屏幕控制函数conio.h
1.clrscr();
2.gotoxy(x,y)。
行(1~25)
列(1~80)
四、利用接口库函数dos.h的调用
1.类型定义结构类型structdate.d;
2.getdate(&d);
3.printf(“%d/%d/%d”,d.da_year,d.da_mon,d.da_day)。
五、程序提示:
#include
#include
main()
{
charc1;
structdated;
clrscr();
getdate(&d);
···.
···
···
getch();暂停等待输入任意字符(或按键)
}
解答:
#include
#include
#include
main()
{
charc1;
structdated;
clrscr();
getdate(&d);
printf("\t\t%d/%d/%d",d.da_year,d.da_mon,d.da_day);
printf("\n*************\n");
printf("*Menu*\n");
printf("*1.Input*\n");
printf("*2.Output*\n");
printf("*3.End*\n");
printf("*************\n");
printf("EnterNumber=>\n");
printf("Ch=---------->");
gotoxy(20,8);
c1=getch();
gotoxy(20,8);
putchar(c1);
gotoxy(9,9);
putchar(c1);
gotoxy(20,9);
printf("%d",c1);
}
实验三选择结构程序设计
一:
目的要求
1.熟悉用关系运行与逻辑运行符的应用;
2.掌握if语句与switch语句的使用;
3.上机前按实验要求预习编写出完整的程序,才允许上机。
二:
实验内容与步骤
1.在书店买书,以100本为限。
如果买1本不打折扣;买2本打折10%;买3本折扣为15%,买3本以上折扣为20%。
设书本数为x,单价为20.00元。
请使用elseif多分支结构或if嵌套结构设计实现该算法的C程序。
2.从键盘上输入一个百分制成绩score,按下列原则输出其等级:
score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。
请使用switch语句实现上述功能。
(提示:
将成绩整除10,把score转变为处于1~10之间的整数,从而转化成switch语句中的case标号)
三:
选做实验
实验指导书56页第二章选择结构的任意实验
解答:
一、
#include
#include
main()
{
intn;
floatx,y;
clrscr();
printf("PleaseEnterTheNumber:
");
gotoxy(25,1);
scanf("%d",&n);
x=20.00;
y=0;
if(n<0)
printf("Sorry,youputthewrongnumber!
");
elseif(n==0)
printf("Pleasebuyatleast1book!
");
elseif(n==1)
{y=x;
printf("------Youshouldpay:
%.2f",y*n);
}
elseif(n==2)
{y=x*0.9;
printf("------Youshouldpay:
%.2f",y*n);
}
elseif(n==3)
{y=x*0.85;
printf("------Youshouldpay:
%.2f",y*n);
}
elseif(n<=100)
{y=x*0.8;
printf("------Youshouldpay:
%.2f",y*n);
}
elseif(n>100)
printf("Sorry,youcanbuylessthen100books.");
}
二、
#include
#include
main()
{
intt;
floatn;
clrscr();
printf("PleaseEnterTheScore:
");
gotoxy(24,1);
scanf("%f",&n);
t=n/10;
if(n<0)
printf("PleaseWriteTheRightScore!
");
elseif(n>100)
printf("IsHeAGod?
");
else
switch(t)
{
case10:
printf("A+");break;
case9:
printf("A");break;
case8:
printf("B");break;
case7:
printf("C");break;
case6:
printf("D");break;
default:
printf("E");break;
}
}
实验四循环控制
一:
目的要求
1.熟悉用while语句,do-while语句和for语句实现循环的方法;
2.掌握在程序设计中用循环方法实现各种算法;
3.掌握计算程序运行所占机时的计算方法;
4.上机前按实验要求预习编写出完整的程序,才允许上机。
二:
实验内容与步骤
目标:
100匹马驮100担货;
假设:
大马一匹驮3担,中马一匹驮2担,小马两匹驮一担;
组合方法1:
大马、中马、小马每种不能少于一匹;
组合方法2:
对马匹种类无限制,可以缺少一种或缺二种
问题:
1.采用组合方法1,用while求解,输出所有组合法,输出组合的总数?
2.采用2种组合,用do-while求解,输出所有组合法,输出组合的总数?
3.采用2种组合,用三重或二重for循环求解,输出所有组合法,输出组合的总数?
4.除打印结果和多少种组合法外,还要分别打印三种算法所费机时。
提示:
计算一种算法所占机时的程序提示:
#include
#include
#include
main()
{
clock_tstart,end;/*time_tstart,end;*/
inti,big,middle,small,ncount;
clrscr();
start=clock();/*start=time();*/
big=1;middle=1;small=2;
ncount=0;
printf("Thisawhileprogram\n");
while(big<=33)
{
.
}
end=clock();/*end=time();*/
printf("Thenumofmethod1is:
%d\n",ncount);
printf("andthetimeis:
%5.1ftime\n",difftime(end,start));
/*printff(“”Thedifferenceis:
%5.1fsecond\n”,difftime(end,start)/18.2);*/
……}
解答:
一、
#include
#include
#include
main()
{
clock_tstart,end;/*time_tstart,end;*/
inti,big,middle,small,ncount,n;
clrscr();
start=clock();/*start=time();*/
big=1;middle=1;small=2,i=0,n=0;
ncount=0;
printf("Thisawhileprogram\n");
while(big<=33)
{
for(small=2;small<=100;small=small+2)
for(middle=1;middle<=100;middle++)
{
n=big*3+middle*2+small/2;
i=big+middle+small;
if(n==100&&i==100)
{
printf("Big=%d,Middle=%d,Small=%d,n=%d,i=%d\n",big,middle,small,n,i);
ncount++;
}
}
big++;
/*
printf("n=%d",n);
printf("big=%dsmall=%dmiddle=%d",big,small,middle);
printf("\n");*/
}
end=clock();
printf("Thenumofmethod1is:
%d\n",ncount);
printf("andthetimeis:
%5.1ftime\n",difftime(end,start));
}
二、
#include
#include
#include
main()
{
clock_tstart,end;/*time_tstart,end;*/
inti,big,middle,small,ncount,n;
clrscr();
start=clock();/*start=time();*/
big=0;middle=0;small=0,i=0,n=0;
ncount=0;
printf("Thisawhileprogram\n");
do
{
for(small=0;small<=100;small=small+2)
for(middle=0;middle<=100;middle++)
{
n=big*3+middle*2+small/2;
i=big+middle+small;
if(n==100&&i==100)
{
printf("Big=%d,Middle=%d,Small=%d,n=%d,i=%d\n",big,middle,small,n,i);
ncount++;
}
}
big++;
/*
printf("n=%d",n);
printf("big=%dsmall=%dmiddle=%d",big,small,middle);
printf("\n");*/
}
while(big<=34);
end=clock();
printf("Thenumofmethod1is:
%d\n",ncount);
printf("andthetimeis:
%5.1ftime\n",difftime(end,start));
}
三、
#include
#include
#include
main()
{
clock_tstart,end;/*time_tstart,end;*/
inti,big,middle,small,ncount,n;
clrscr();
start=clock();/*start=time();*/
big=0;middle=0;small=0,i=0,n=0;
ncount=0;
printf("Thisawhileprogram\n");
for(big=0;big<=34;big++)
{
for(small=0;small<=100;small=small+2)
for(middle=0;middle<=100;middle++)
{
n=big*3+middle*2+small/2;
i=big+middle+small;
if(n==100&&i==100)
{
printf("Big=%d,Middle=%d,Small=%d,n=%d,i=%d\n",big,middle,small,n,i);
ncount++;
}
}
/*
printf("n=%d",n);
printf("big=%dsmall=%dmiddle=%d",big,small,middle);
printf("\n");*/
}
end=clock();
printf("Thenumofmethod1is:
%d\n",ncount);
printf("andthetimeis:
%5.1ftime\n",difftime(end,start));
}
实验五函数
一、目的要求
1.掌握函数的定义和调用方法;
2.掌握函数实参与行参的对应关系的,以及“值传递”的方式;
3.掌握求最大公约数和最小公倍数的方法;
4.按实验内容要求完成全程程序设计后才允许上机。
二、实验内容与步骤
1.设计一个函数f,求二个数的最大公约数intf(intx,inty);
2.设计一个函数g,求二个数的最小公倍数intg(intx,inty);
3.从键盘输入三个浮点数,求三个数中最大数和最小数的差值。
三、函数的定义要求
在main()中实现下列操作
1.a=inNumber();
2.b=inNumber();
3.c=f(a,b);
4.d=g(a,b);
5.输出a,b,c,d。
解答:
一、
#include
#include
voidmain()
{
inta,b,c,d;
clrscr();
a=inNumber();
b=inNumber();
c=f(a,b);
d=g(a,b);
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
}
intf(intx,inty)
{
inti,t,a;
floatp1,p2;
if(x>=y)
t=y;
else
t=x;
for(i=1;i<=t;i++)
{
p1=x%i;
p2=y%i;
if(p1==0&&p2==0)
{
a=i;
}
}
returna;
}
intg(intx,inty)
{
inti,t,p1,p2,a;
if(x>=y)
t=x;
else
t=y;
for(i=t;i<=(x*y);i++)
{
p1=i%x;
p2=i%y;
if(p1==0&&p2==0)
{
a=i;break;
}
}
returna;
}
intinNumber(intx)
{
inta;
a=0;
while(a==0)
{
scanf("%d",&x);
if(x>0)
a=1;
else
{
printf("Wrong!
\n");
a=0;
}
};
returnx;
}
二、
#include
voidmain()
{
floata[3],x,y;
inti,j;
clrscr();
for(i=0;i<3;i++)
scanf("%f",&a[i]);
for(i=0;i<3;i++)
for(j=0;j<2;j++)
if(a[j]>a[j+1])
{
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
y=a[2]-a[0];
printf("\ny=Max{a[i]}-Min{a[i]}:
\n\t%.3f\n\t(%f)",y,y);
}
实验六数组
二、目的要求
1.掌握数组的定义、赋值和输入输出的方法;
2.掌握清屏函数clrscr()的调用方法;
3.掌握产生随机数函数randomize()的初始化及调用方法;
4.上机前按实验要求预习,完成全部程序设计后才允许上机。
三、实验内容与步骤
已知二维数组a[5][5],完成下列要求
(1)输入数据
a[i][j]=random(100);/*产生100以内随机数*/
(2)显示数组各元素,要求整齐排列;
(3)将第1与第5行对调后,再显示之;
(4)求出每行元素的最大值,并指出其行号和列号。
四、输入随机数的要求
#include
#defineRMAX5
#definecMAX5
#definenMAX100
main()
{./*变量初始化说明*/
.
clrscr();/*调清屏函数清屏*/
randomize();/*在初始化后调用产生随机数函数*/
.
.
a[i][j]=random(nMAX);
.
.
.
}
解答:
#include
#defineRMAX5
#definecMAX5
#definenMAX100
main()
{
inta[5][5],i,j,temp[1][5],t,max,x,y;/*定义变量为整型(我的程序里面有些定义的变量没用,懒得删除了)*/
clrscr();/*清屏*/
randomize();/*在初始化后调用产生随机数函数*/
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=random(nMAX);/*给数组a[i][j]赋随机值*/
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%d\t",a[i][j]);/*输出数组a[i][j]*/
printf("\n");/*在输出完一行后自动换行(不理解的话可以暂时删掉这句话,然后运行程序看结果)*/
}
for(j=0;j<5;j++)/*这个循环是用于换行的*/
{
temp[0][j]=a[0][j];/*将数组a的第一行的每个值都赋予temp(这里的temp是一个1*5的数组)*/
a[0][j]=a[4][j];/*将数组a的第一行的每个值替换成第五行的值*/
a[4][j]=temp[0][j];/*将数组a的第五行的每个值替换成temp的值*/
}
printf("\n");/*输出一个回车*/
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%d\t",a[i][j]);/*将换行后的新数组a输出出来*/
printf("\n");/*在输出完每一行后自动换行*/
}
for(i=0;i<5;i++)
{
max=a[i][0];/*定义一个最大值变量max,令其暂时等于第i行的第一个数*/
for(j=0;j<5;j++)/*让max和该行的所以数比较,如果有某个数大于max,max变为该数的值*/
if(a[i][j]>max)
{
max=a[i][j];
}
for(j=0;j<5;j++)/*令max和第i行的每个数进行比较,输出所有等于max的数及该数的坐标*/
if(max==a[i][j])
printf("\na[%d][%d]=%d",i,j,max);
}
}
实验七指针
一、目的要求
1.掌握指针的定义和使用指针变量;
2.学会使用字符串的指针和指向数组的指针变量;
3.学会使用指向函数的指针变量;
4.按实验内容要求完成全程程序设计后才允许上机。
二、实验内容与步骤
设计一个函数,它有三个形参
(1)被查找的字符串str;
(2)待查找的字符xCh;
(3)在字符串str中xCh出现的位置i=0,1,…
它的返回值是在str中xCh出现的次数(若str中无xCh,则返回值=0)
三、上机要求
1、键入待查的字符xCh;
2、键入被查的字符串str;
3、调用该函数;
4、打印它的返回值和出现的位置;
5、允许重复执行,每次以清屏开始(用循环语句控制重复执行)。
四、提示
xCh在str出现位置应设计为一整型指针,以便记下0~N个位置(整数)。
#include
voidmain()
{
chartemp;
intrun(),j;
int(*prun)();
temp='Y';
while(temp!
='N'||temp!
='n')
{
if(temp=='Y'||temp=='y')
{
prun=run;
j=(*prun)();
if(j==0)
{
printf("CanNotFindThexCh!
j=%d",j);
}
else
{
printf("\nj=%d",j);
}
pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 语言 实验 答案 完整版