C语言程序设计-实验报告2
实验目的:
1、 熟悉C语言基本程序结构
2、 掌握顺序、分支结构程序设计思想与代码编写方法
实验内容:
1、在D盘根目录,创建以自己姓名拼音命名的文件夹,并创建exp1命名的子文件夹,本次实验所有代码均保存于该字文件夹;
2、利用VC6编写代码,并运行、保存; 3、习题5.6 4、习题5.7 5、习题5.8 6、习题5.10 7、习题6.6 8、习题6.8 9、习题6.9 10、习题6.10
实验报告正文:
撰写要求:
1) 按实验内容逐个完成
2) 每个实验内容分别列出源代码 3) 每个实验内容分别展示其运行结果 4) 最后,总结本次实验的经验和教训
实验报告正文
3、习题5.6 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。„„ 源代码如下: #include void main() { float grade; int t; printf("输入一百分制分数:\n"); scanf("%f",&grade); t=grade/10; printf("输入成绩等级为:"); switch(t) { case 10: case 9:printf("A\n");break; case 8:printf("B\n");break; case 7:printf("C\n");break; case 6:printf("D\n");break; default:printf("E\n");break; } }
运行结果如下:
4、习题5.7 给一个不多于5位的正整数,要求: 1) 求出它是几位数; 2) 分别输出每一位数字;
3) 按逆序输出各位数字,例如原数321,应输出123。 源代码如下: #include #include void main() { int num[6]; int count=0; int number,s; int i; printf("输入一个不多于5位的正整数:\n"); scanf("%d",&num);
}
while(number) { num[count]=n%10; count++; number=number/10; }
printf("%是一个%d位数。\n",count); printf("从高到低输出每一位数字:\n"); s=count; while(count>=1) { printf("%3d",num[count-1]); count--; }
printf("\n");
printf("逆序输出各位数字:\n"); for(i=0;i
printf("\n");
//将整数的位数保存在s中
运行结果如下:
5、习题5.8 企业发放的奖金根据利润提成。„„ 源代码如下: #include void main() { double I; double prize; double d1,d2,d3,d4,d5; int c; printf("请输入利润金额(以万为单位):\n"); scanf("%lf",&I); d1=10*0.1;
d2=d1+10*0.075;
//if语句编写程序
//利润,以万为单位 //奖金,以万为单位 //各阶段提成奖金数 //将利润范围缩小到0-10有限范围之内
d3=d2+20*0.05; d4=d3+20*0.03; d5=d4+40*0.015; c=I/10; if(c>=10) { prize=d5+(I-100)*0.01; } else if(c>=6) { prize=d4+(I-60)*0.015; } else if(c>=4) { prize=d3+(I-40)*0.03; } else if(c>=2) { prize=d2+(I-20)*0.05; } else if(c>=1) { prize=d1+(I-10)*0.075; } else { prize=I*0.1; } printf("利润为%lf万元,\n应发奖金为%lf万元\n",I,prize); }
运行结果如下:
源代码如下: #include void main() {
double I; double prize; double d1,d2,d3,d4,d5; int c;
//switch语句编写
//利润,以万为单位 //奖金,以万为单位 //各阶段提成奖金数 //将利润范围缩小到0-10有限范围之内
printf("请输入利润金额(以万为单位):\n"); scanf("%lf",&I); d1=10*0.1;
d2=d1+10*0.075; d3=d2+20*0.05; d4=d3+20*0.03; d5=d4+40*0.015; c=I/10; if(c>10) { c=10; }
switch(c) {
case 0:
prize=I*0.1;break; case 1:
prize=d1+(I-10)*0.075;break; case 2: case 3:
prize=d2+(I-20)*0.05;break; case 4: case 5:
prize=d3+(I-40)*0.03;break; case 6: case 7: case 8: case 9:
prize=d4+(I-40)*0.015;break; case 10:
prize=d5+(I-100)*0.01;break; }
printf("利润为%lf万元,\n应发奖金为%lf万元\n",I,prize); }
运行结果如下:
6、习题5.10 有4个圆塔,„„ 源代码如下: #include #include
void main() { double r1,r2,r3,r4; double x,y; int h1=10,h2=0; printf("输入点的坐标(x,y):\n"); scanf("%lf,%lf",&x,&y); r1=pow(x-2,2)+pow(y-2,2); r2=pow(x+2,2)+pow(y-2,2); r3=pow(x+2,2)+pow(y+2,2); r4=pow(x-2,2)+pow(y+2,2); if((r1
运行结果如下:
7、习题6.6 输出所有的水仙花数,…… 源代码如下: #include #include void main() { int i=100; int ones,tens,hundreds; //分别代表一个三位数的个位,十位,百位 printf("输出所有的“水仙花数”:\n"); for(i=100;i
}
printf("%6d",i); } }
printf("\n");
运行结果如下:
8、习题6.8……求出这个数列的前20项和。 源代码如下: #include void main() { double a[20],b[20]; int i; double sum=0; double t; a[0]=2,a[1]=3; b[0]=1,b[1]=2; for(i=2;i
//定义两个数组,分别代表求和通项的分子和分母
//累加和 //代表求和通项
运行结果如下:
9、习题6.9 一个球从100m高度自由落下,…… 源代码如下: #include void main() {
}
double h[20]; h[0]=100.0; int i;
for(i=1;i
double s=0;
for(i=1;i
s=2*s+h[0];
printf("第10次落地时,总共经过的距离(m):\n"); printf("%lfm\n",s);
printf("第10次反弹的高度(m):\n"); printf("%lfm\n",h[10]);
//h[i]代表第i次弹起能达到的高度
运行结果如下:
10、习题6.10 猴子吃桃问题。…… 源代码如下: #include void main() { int a[10]; a[0]=1; int i=0; for(i=0;i
//代表第9天吃完以后剩余的桃子数目
//a[i]代表第(9-i)吃完后剩余的桃子数目
//a[9]代表第一天采摘的桃子数目
运行结果如下:
本次实验的经验和教训
本次实验较上次来说,难度提高了不少,在编写程序的过程中,也出现了更多的问题。
实验过程中,掌握了赋值语句的使用方法,各种类型数据的输入输出方法,能正确使用各种格式转换符、关系运算符及表达式、逻辑运算符及表达式。掌握了if语句,学会使用if-else语句设计双分支和多分支结构程序;掌握了switch语句的特点,学会使用switch语句设计多分支结果程序。在编写包含switch语句的算法时,遇到了很多的问题,在经过多次尝试后,最终找到了解决问题的方案,并用此方法对包含if语句的算法进行了改进。另外,还掌握了如何获取一个整数包含的所有数字的算法。
本次实验用到了数组,用到了递推的思想。利用数组在内存地址上的连续性,可以很方便地引用数据和处理数据。利用数组和递推的方法,用程序设计语言对一些数学问题进行了完美的解决。