c程序的设计实验手册范本.docx
《c程序的设计实验手册范本.docx》由会员分享,可在线阅读,更多相关《c程序的设计实验手册范本.docx(54页珍藏版)》请在冰豆网上搜索。
c程序的设计实验手册范本
前言
实验一C程序的运行环境
实验二数据类型、运算符和表达式
1、实验目的
通过本次实验要求学生掌握以下知识:
(1)熟悉数据和运算符的基本概念
(2)掌握数据类型、常量、变量的概念,以及常量、变量的定义方法
(3)熟练地应用常量、变量和运算符构成表达式,对数据进行处理
2、实验步骤
(1)分析下列程序的结果,思考输出结果的原因
#include
voidmain()
{
chara,b,c;
a='a';b='b';c='c';
a=a+1;b=b-1;c=c-32;
printf("%c,%c,%c\n",a,b,c);
inta1,b1,c1;
a1=a-1;b1=b+1;c1=c+32;
printf("%d,%c,%d\n",a1,b1,c1);
}
#include
voidmain()
{
inta,b,p,q;
a=1;b=2;
p=a++;
q=++b;
printf("%d,%d,%d,%d\n",a,b,p,q);
intc,d,e,f;c=d=e=f=2;
c*=2+3;d+=d-=d*=d;
e=(e++,++e,e%=2);
f=(f++)+(++f);
printf("%d,%d,%d,%d\n",c,d,e,f);
}
(2)编写程序实现以下问题
1、求任意两个数的加法、减法、乘法、除法
2、编写一个程序将“Iloveyou”这个字符串进行加密,密码规律自定义。
(可参照恺撒密码的方式)
实验三顺序程序设计
1、实验目的
通过本次实验要求学生掌握以下知识:
(1)能读懂简单的程序,并对顺序程序设计有初步的认识
(2)可以编写简单的顺序程序
(3)通过上机调试,了解顺序程序设计中常见的错误,掌握基本的调试技术(逐步分析程序)。
2、实验步骤
(1)已知摄氏温度与华氏温度的换算公式
C=5/9×(F-32)
编写一个程序求华氏温度为30℉,70℉,100℉。
#include
voidmain()
{
floatf;
floatc;
scanf("%f",&f);
c=(f-32)*5/9;
printf("%f\n",c);
}
(2)已知地球半径为6371.0km,编写一个程序计算地球表面积的近似值,并打印输出地球的半径、π的近似值、地球的表面积。
voidmain()
{
floatr=6371,s;
floatpi=3.14;
s=pi*r*r;
printf("地球的半径是:
%.2f\n",r);
printf("pi的值为:
%.2f\n",pi);
printf("地球的表面积为:
%e\n",s);
}
(3)已知三角形的三条边a,b,c,求三角形面积的公式为:
编写一个程序读入a,b,c的值,计算出面积F,并输出三条边及面积的值。
(开平方根函数为sqrt,在math.h文件中)
#include
#include
voidmain()
{
floata,b,c,s,F;
scanf("%f,%f,%f,",&a,&b,&c);
s=1.0/2*(a+b+c);
F=sqrt(s*(s-a)*(s-b)*(s-c));
print("三角形的面积为:
%f",F);
}
(4)设圆半径r=2,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆柱体积。
编写程序,用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
编写程序实现。
输出结果如右图所示:
#definePI3.14
#include
voidmain()
{
floatr,h,l,s,ss,v;
printf("请输入圆半径:
");
scanf("%f",&r);
printf("请输入圆柱高:
");
scanf("%f",&h);
l=2*PI*r;
s=PI*r*r;
ss=4*s;
v=PI*r*r*h;
printf("圆的面积为:
%.2f\n",s);
printf("圆的周长为:
%.2f\n",l);
printf("圆球的表面积为:
%.2f\n",ss);
printf("圆柱的体积为:
%.2f\n",v);
}
(5)分析下列程序的结果,并看懂程序。
#include
voidmain()
{
charc1;
printf("请输入一个字符:
");
c1=getchar();
if(c1>='a'&&c1<='z')
{
printf("你输入的是小写字母:
");
putchar(c1);
}
elseif(c1>='A'&&c1<='Z')
{
printf("你输入的是大写字母:
");
putchar(c1);
}
elseif(c1>='1'&&c1<='9')
{
printf("你输入的是数字:
");
putchar(c1);
}
else
{
printf("你输入的是其它东东:
");
putchar(c1);
}
}
实验四选择结构程序设计
(一)实验容
1、实验目的
通过本次实验要求学生掌握以下知识:
(1)清楚的掌握if语句、switch语句的各种使用方法,并灵活运用
(2)能读懂if语句、switch语句的流程走向
(3)通过上机调试,了解选择程序设计中常见的错误,掌握基本的调试技术(逐步分析程序)。
2、实验步骤
(1)编程求:
voidmain()
{
intx,y;
scanf("%d",&x);
if(x!
=0)
y=x*x-5;
else
y=3*x+2;
printf("x=%d,y=%d\n",x,y);
}
(2)编写一个按月收入额计个人收入调节税的应用程序。
记税公式如下:
0pay<=1000或离退休
(pay-1000)*0.051000(pay-1500)*0.1+251500(pay-2000)*0.15+752000Tax=(pay-2500)*0.2+1502500(pay-3000)*0.25+2503000(pay-3500)*0.3+3753500(pay-4000)*0.35+5254000(pay-4500)*0.4+700pay>=4500
其中:
pay为纳税人的月收入
#include
voidmain()
{
floattax,pay;
scanf("%f",&pay);
if(pay<=1000)
tax=0;
elseif(pay<=1500)
tax=(pay-1000)*0.05;
elseif(pay<=2000)
tax=(pay-1500)*0.1+25;
elseif(pay<=2500)
tax=(pay-2000)*0.15+75;
elseif(pay<=3000)
tax=(pay-2500)*0.2+150;
elseif(pay<=3500)
tax=(pay-3000)*0.25+250;
elseif(pay<=4000)
tax=(pay-3500)*0.3+375;
elseif(pay<=4500)
tax=(pay-4000)*0.35+525;
else
tax=(pay-4500)*0.4+700;
printf("pay=%.2f,tax=%.2f\n",pay,tax);
}
(3)编写程序实现:
BMI法测身高体重是否合适
体重指数=体重(公斤)除身高(米)的平方kg/m2
正常体重:
体重指数=18-25
超重:
体重指数=25-30
轻度肥胖:
体重指数>30
中度肥胖:
体重指数>35
重度肥胖:
体重指数>40
voidmain()
{
floatweight,height,t;
printf("请输入体重(公斤)");
scanf("%f",&weight);
printf("请输入身高(米)");
scanf("%f",&height);
t=weight/(height*height);
printf("%f\n",t);
if(t<18)
printf("偏瘦");
elseif(t<=25)
printf("正常体重");
elseif(t<=30)
printf("超重");
elseif(t<=35)
printf("轻度肥胖");
elseif(t<=40)
printf("中度肥胖");
else
printf("中度肥胖");
}
(4)任意输入3个数,将之从大到小排序并输出
voidmain()
{
inta,b,c,min,mid,max;
printf("请输入三个整数:
");
scanf("%d%d%d",&a,&b,&c);
min=a;max=a;mid=a;
if(a<=b&&a<=c)
{
min=a;
if(b<=c)
{
mid=b;
max=c;
}
else
{
mid=c;
max=b;
}
}
elseif(c<=a&&c<=b)
{
min=c;
if(a<=b)
{
mid=a;
max=b;
}
else
{
mid=b;
max=a;
}
}
else
{
min=b;
if(a<=c)
{
mid=a;
max=c;
}
else
{
mid=c;
max=a;
}
}
printf("%d%d%d",max,mid,min);
}
(5)给出一个不多于5位数的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;(3)按逆序输出每一位数字,例如:
原数是321,输出为123
(提示:
此题的关键为1、首先判断这个数是否为0~99999之间的数。
2、在利用%求得每位的数字是多少)
voidmain()
{
intnum,indiv,ten,hundred,thousand,ten_thousand,place;
printf("请输入一个整数(0-99999)");
scanf("%d",&num);
if(num>9999)
place=5;
elseif(num>999)
place=4;
elseif(num>99)
place=3;
elseif(num>9)
place=2;
else
place=1;
printf("place=%d\n",place);
printf("每位数字是:
");
ten_thousand=num/10000;
thousand=(num-ten_thousand*10000)/1000;
hundred=(num-ten_thousand*10000-thousand*1000)/100;
ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;
switch(place)
{
case5:
printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case4:
printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand);
break;
case3:
printf("%d,%d,%d\n",indiv,ten,hundred);
break;
case2:
printf("%d,%d\n",indiv,ten);
break;
case1:
printf("%d\n",indiv);
}
}
(6)输入数字1,则鸣叫一声,输入数字2,则鸣叫两声,…,如果是1~5之外的数,则没有叫声。
(提示:
程序中定义了一个宏BEEP,当程序中遇到BEEP,便用printf("\a");替换,方法如下:
)
#defineBEEPprintf("\a");//使用switchcase语句实现
#defineBEEPprintf("\a");
voidmain()
{
inta;
scanf("%d",&a);
switch(a)
{
case1:
BEEP
break;
case2:
BEEP
BEEP
break;
case3:
BEEP
BEEP
BEEP
break;
case4:
BEEP
BEEP
BEEP
BEEP
break;
case5:
BEEP
BEEP
BEEP
BEEP
BEEP
break;
default:
printf("error\n");
}
}
(7)编写整数加减乘除计算器。
(比如:
你依次输入1+2,计算机会自动进行判别,运算出结果。
)//使用switchcase语句实现
参考程序如下,请完善后执行。
voidmain()
{
charc;intnum1,num2,jg;
……
switch(c)
{
case'+':
……jg=num1+num2;break;
case'-':
……jg=num1-num2;break;
case'*':
……
case'\':
……
}
……
}
#include
voidmain()
{
inta,b;charop;
printf("\n输入操作数1,运算符,操作数2:
");
scanf("%d,%c,%d",&a,&op,&b);
switch(op)
{
case'+':
printf("\n%d+%d=%d\n",a,b,a+b);
break;
case'-':
printf("\n%d-%d=%d\n",a,b,a-b);
break;
case'*':
printf("\n%d×%d=%d\n",a,b,a*b);
break;
case'/':
printf("\n%d/%d=%d\n",a,b,a/b);
break;
default:
printf("\n运算符错误!
");
}
}
实验五循环控制程序设计
1、实验目的
通过本次实验要求学生掌握以下知识:
(1)熟悉掌握用while语句、do-while语句和for语句实现循环的方法。
(2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)
(3)进一步学习调试程序。
2、实验步骤
(1)For循环基础专项练习,从下列实例中体会For循环的用法
①.求1-10这十个数的累加
voidmain()
{
inti,sum=0;
for(i=1;i<=10;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
②.求1-10这十个数的累乘
voidmain()
{
inti,multi=1;
for(i=1;i<=10;i++)
multi=multi*i;
printf("multi=%d\n",multi);
}
③.求1-100中偶数之和
voidmain()
{
inti,sum=0;
for(i=1;i<=100;i++)
{
if(i%2!
=0)
continue;
sum=sum+i;
}
printf("sum=%d\n",sum);
}
④.求1-100中奇数之积
voidmain()
{
inti;
doublemulti=1;
for(i=1;i<=100;i++)
{
if(i%2==0)
continue;
multi=multi*i;
}
printf("multi=%e\n",multi);
}
⑤.求1+1/2+1/3+1/4+……1/10
voidmain()
{
floati,sum=0;
for(i=1;i<=10;i++)
{
sum=sum+1/i;
}
printf("sum=%f\n",sum);
}
⑥.求1-1/2+1/3-1/4+……-1/10
voidmain()
{
floati,sum=1,s=1;
for(i=2;i<=10;i++)
{
s=s*(-1);
sum=sum+s/i;
}
printf("sum=%f\n",sum);
}
⑦.利用循环输出”a“-“z”
voidmain()
{
charc='a';
while(c<='z')
{
printf("%c",c);
c++;
}
}
⑧.求1-10这十个数的阶乘之和
voidmain()
{
floati,j,multi=1,sum=0;
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
multi=multi*j;
sum=sum+multi;
multi=1;
}
printf("sum=%e\n",sum);
}
voidmain()
{
floati,j,multi=1,sum=0;
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
multi=multi*j;
sum=sum+multi;
multi=1;
}
printf("sum=%e\n",sum);
}
(2)我国现有人口13亿,按人口年增长率0.8%计算,多少年后我国人口超过26亿。
计算公式26=13(1+0.008)^n
(提示:
可以使用while语句,如果使用FOR语句会有问题么?
)
#include
voidmain()
{
intn=0;
floatpeople=13;
do
{
people=people*1.008;
n++;
}
while(people<=26);
printf("n=%d\n",n);
}
#include
voidmain()
{
intn;
floatpeople=13;
for(n=0;people<=26;n++)
people=people*1.008;
printf("n=%d\n",n);
}
(3)统计你输入的十个两位正整数中偶数与奇数的个数,并求出偶数与奇数各自的总和(提示:
要清楚的知道我们判断一个数是基数或是偶数的方法:
%,再者对于辅助变量的用法要学会:
i++)。
voidmain()
{
inti,num1=0,num2=0,sum1=0,sum2=0,t;
for(i=1;i<=10;i++)
{
scanf("%d",&t);
if(t%2==0)
{
num1++;
sum1=sum1+t;
}
else
{
num2++;
sum2=sum2+t;
}
}
printf("num1=%d,sum1=%d\n",num1,sum1);
printf("num2=%d,sum2=%d\n",num2,sum2);
}
(4)从键盘上输入一个正整数,找出大于或等于该数的第一个素数(提示:
素数就是质数,对于此题目首先要知道如何判断一个数是素数)。
#include
voidmain()
{
inta,k,i,p=0;
printf("请输入一个正整数:
");
scanf("%d",&a);
while(p==0)
{
k=sqrt(a);
for(i=2;i<=k;i++)
if(a%i==0)
break;
if(i>k)
p=1;
elsea++;
}
printf("第一个素数是:
%d\n",a);
}
#include
/*voidmain()//方法考虑使用双层循环,外循环保证运算是在非素数的情况下计算,循环用来计算素数,一旦找到因子肯定不是素数,直接跳出循环
{
intnumber,k,i,p=0;//p为逻辑值,如果是素数p!
=0
printf("请输入一个正整数:
");
scanf("%d",&number);
while(p==0)
{
k=sqrt(number);
for(i=2;i<=k;i++)//重要,求素数的基本算法
if(number%i==0)
break;
if(i>k)
p=1;
elsenumber++;
}
printf("第一个素数是:
%d\n",number);
}*/
//解法2不使用BREAK
voidmain()//方法考虑使用双层循环,外循环保证运算是在非素数的情况下计算,循环用来计算素数,一旦找到因子肯定不是素数,直接跳出循环
{
intnumber,i,j=0,k;
printf("请输入一个正整数:
");
scanf("%d",&number);
k=sqrt(number);
for(i=number;j<=k;i++)
{
k=sqrt(i);
for(j=2;j<=k&&i%j!
=0;j++);//重要,求素数的基本算法
}
printf("第一个素数是:
%d\n",i-1);
}
#include
voidmain()
{
inta,k,i,p;
print