C语言程序设计实验报告 实验4 逻辑结构程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
装 订 线
装 订 线
-6-
图 15
图 16
图 17
图 18
图 19
图 20
装 订 线
图 21
图 22
图 23 四、实验心得(体会) :
装 订 线
-7-
装 订 线
图 11 修改后的程序源代码: #include <stdio.h> int main() { int grade; scanf("%d", &grade);
-4-
Βιβλιοθήκη Baidu
图 12
if (grade>100||grade<0) printf("你输入的成绩不正确\n"); else { switch(grade/10) {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"); } } return 0; } 修改后的程序输出结果如下表: 输入数据 数据结果(if 语句) 数据结果(switch 语句) 110 你输入的成绩不正确 你输入的成绩不正确 -20 你输入的成绩不正确 你输入的成绩不正确
装 订 线
图一 图二 图三 4) 程序 2:给出一些百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90 分 以上为’A’,90—89 分为’B’,70—79 分为‘C’ ,60—69 分为‘D’ ,60 分以下 为‘E’ 。 步骤一:事先编辑好源程序,要求分别用 if 语句和 switch 语句来实现。运行程 序,并检查结果是否正确。 ①使用 if 语句源代码: #include <stdio.h> int main() { int grade; scanf("%d", &grade);
实验结果: 测试数据:如下表: 输入数据 100 98 87 75 63 55 20 数据结果(if 语句) A A B C D E E 数据结果(switch 语句) A A B C D E E 图示 图4 图5 图6 图7 图8 图9 图 10
图4
装 订 线
图5
图6
图7
图8
图9
图 10 步骤二:运行一次程序,输入分数为负值(如-70) ,这显然是输入时出错,不应 给出等级,修改程序,使之能正确处理任何数据,当输入数据大于 100 或是小于 0 时,通知用户“输入数据错” ,程序结束。 输入数据 数据结果(if 语句) 数据结果(switch 语句) 图示 110 E E 图 11 -20 E E 图 12
凯里学院
C 语言程序设计
实验报告
××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 指导教师 评阅日期 年 月
日 日
实验四
逻辑运算和判断选择结构控制
装 订 线
一、实验目的: (1)掌握 C 语言中赋值语句的使用方法; (2)掌握不同类型数据的输入输出方法,能正确使用各种格式转换符; (3)学会正确使用逻辑运算符及逻辑表达式; (4)熟练掌握 if 语句与 switch 语句; 二、实验内容: 本实验要求事先编好下面问题的程序,然后上机输入程序并调试运行程序 1) 有一个函数如下:
装 订 线
图示 图 13 图 14
装 订 线
图 13 图 14 5) 程序三:给出一个不多于 5 位的正整数,要求: 1. 求出它是几位数; 2. 分别输出每一位数字; 3. 按逆序输出各位数字,例如原数为 321,应输出 123 步骤一:设计好算法,并编辑源程序。 #include <stdio.h> int main() { long int num; int indiv,ten,hundred,thousand,ten_thousand,place; printf("请输入一个整数(0-9999):"); scanf("%d",&num); if(num>9999) place=5; else if (num>999) place=4; else if (num>99) place=3; else if (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;
x y 2 x 1 3 x 11
x 1 1 x 10 x 10
用 scanf 函数输入 x 的值,求 y 的值。 2) 给出一些百分制成绩,要求输出成绩等级 ’A’,’B’,’C’,’D’,’E’ 。 90 分以上 60—69 分为 60 分以下为 为’A’,80—89 分为’B’,70—79 分为 ‘C’ , ‘D’ , ‘E’ 。 3) 给出一个不多于 5 位的正整数,要求: 1. 求出它是几位数; 2. 分别输出每一位数字; 3. 按逆序输出各位数字,例如原数为 321,应输出 123 三、实验步骤: (1)有一个函数如下:
-5-
ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10; switch(place) { case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d,%d,%d,%d,%d",indiv,ten,hundred,thousand,ten_thousand); break; case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d,%d,%d,%d",indiv,ten,hundred,thousand); break; case 3:printf("%d,%d,%d",hundred,ten,indiv); printf("\n 反序数字为:"); printf("%d,%d,%d",indiv,ten,hundred); break; case 2:printf("%d,%d",ten,indiv); printf("\n 反序数字为:"); printf("%d,%d",indiv,ten); break; case 1:printf("%d",indiv); printf("\n 反序数字为:"); printf("%d",indiv); break; } return 0; } 程序测试如下表: 输入数据 正序结果 逆序结果 图示 7 7 A 图 15 10 A A 图 16 45 B B 图 17 100 C C 图 18 456 D D 图 19 1000 E E 图 20 7894 E E 图 21 10000 E E 图 22 127890 E E 图 23
装 订 线
x y 2 x 1 3 x 11
用 scanf 函数输入 x 的值,求 y 的值。 步骤①:设计好算法,并编辑源程序。 程序的分析:
-1-
x 1 1 x 10 x 10
代码:
装 订 线
#include <stdio.h> int main() { float x, y; scanf("%f", &x); if(x < 1) y=x; else { if(x>10) y=3*x-11; else y=2*x-1; } printf("y=%f\n", y); return 0; } 步骤②:输入 x 的值,x 的值小于 1. 输入数据:0.5 ,输出结果:0.500000 如图一所示 输入 x 的值,x 的值大于等于 1 且小于 10 输入数据:7.0 输出结果:13.000000,如图二所示 输入 x 的值,x 的值大于等于 10 时: 输入数据:12.0, 输出结果:25.000000,如图三所示 程序结果:如下图
-2-
if(grade >= 90) {
printf("%d->%c\n", grade, 'A');
} else {
装 订 线
装 订 线
} ②使用 switch 语句源代码: #include <stdio.h> int main() { int grade; scanf("%d", &grade); switch(grade/10) {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"); } return 0; }
-3-
} return 0;
if(grade >= 80) { printf("%d->%c\n", grade, 'B'); } else { if(grade >= 70) { printf("%d->%c\n", grade, 'C'); } else { if(grade >= 60) printf("%d->%c\n", grade, 'D'); else printf("%d->%c\n", grade, 'E'); } }