实验三简单的C程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行该程序,必须按如下方式在键盘上输入数据 a=3,b=7↙ 8.5,71.82↙ aA↙ 请同学们写出输出结果
【例2】输入三角形三边长,求三角形面积。
#include“math.h” main() { float a,b,c,s,area; scanf(“%f,%f,%f”,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“area=%f”,area); }
输入测试数据,调试程序。测试数据要覆盖所有路径,
注意临界值,例如此题中得100分,60分,0分以及小 于0和大于100的数据。
方法二:用switch语句
分析: switch语句是用于处理多分支的语句。注意,case后 的表达式必须是一个常量表达式,所以在以用switch 语句之前,必须把0~100之间的成绩分别化成相关的常 量。所有A(除100以外),B,C,D类的成绩的共同 特点是十位数相同,此外都是E类。则由此可得把 score除十取整,化为相应的常数。
70至80分(包括70):C
60至70分(包括60):D
60分以下:E
方法一:(用if嵌套`)
分析: 由题意知如果某学生成绩在90分以上,等级为A;否 则,如果成绩大于80分,等级为B;否则,如果成绩 大于70分,等级为C;否则,如果成绩大于60分为D; 否则,如果成绩小于60分,等级为E;但当我们输入 成绩时也可能输错,出现小于0或大于100,这时也要 做处理,输出出错信息。因此,再用if嵌套前,应先 判断输入的成绩是否在0~100之间。
实验六 一维数组
【目的与要求】
1.掌握一维数组的定义、赋值和输入输出的方法;
2.掌握字符数组的使用;
3.掌握与数组有关的算法(例如排序算法)。
【例1】在键盘上输入N个整数,试编制程序使该数组
中的数按照从大到小的次序排列。
【例2】青年歌手参加歌曲大奖赛,有10个评委对她的
进行打分,试编程求这位选手的平均得分(去掉一个 最高分和一个最低分)。
【例3】已知圆半径,圆柱高,求圆周长,圆柱体积。
main() { float r,h,l,v,pi; pi=3.1415926; scanf(“%f,%f”,&r,&h); l=2*pi*r; v=pi*r*r*h; printf(“圆周长为:%6.2f\n”,l); printf(“%圆柱体积为:6.2f”,v); }
【目的与要求】
1.理解C语言程序的顺序结构
2.掌握常用的C语言语句,熟练应用赋值、输入、输 出语句。
【一般实例】
【例1】按格式要求输入/输出数据 #include"stdio.h“ main() { int a,b; float x,y; char c1,c2; scanf(“a=%d,b=%d”,&a,&b); scanf(“%f,%e”,&x,&y); scanf(“&c&c”,&c1,&c2); printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2); }
【例4】判断m是否是素数。
【作业】
1.输入两个正整数m和n,求其最大公约数和最小公倍数。 2.求Sn=a+aa+aaa+…+aa…a 之值,其中a是一个数字。例 如:2+22+222+2222+22222(此时n=5), n由键盘输入。 3.求和1!+2!+3!+4!+…20! 4. 打印100-999之间所有的“水仙花数”。“水仙花数”是一 个三位数,其各位数立方和等于该数本身。 5. 一个数如果恰好等于它的因子之和,这个数就称为完 数。求1000之内的所有完数。 6. 有一数列:2/1,3/2,5/3,8/5,…求出这个数列的前 20项之和。 8. 打印下列图案 * *** ***** *** *
【作业】
1.c语言如何表示“真”与“假”?系统如何判断一个量的“真”与“假”? 2.写出下面各逻辑表达式的值。设a=3,b=4,c=5 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 3.有3个整数a、b、c,由键盘输入,输出其中最大的数。 4.给一个不多于5位的正整数,要求: a.求出它是几位数; b.分别打出每一位数字; c.按逆序打出各位数字,例如原数为321,应输出123。 5.输入4个整数,要求按由小到大的顺序输出。
【例4】输入一个摄氏温度,要求输出华氏温度。公式
为f=5/9*c+32. main() { float c,f; scanf(“%f”,&c); f=5.0/9*c+32; printf(“%5.2f\n”,c); }
【作业】
1.已知圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆 球表面积,圆球体积,圆柱体积。
若输入下列数据,分析程序的执行顺序并写出运行结果 (1)a=1,b=2,c=3 (2)a=2,b=1,c=3 (3)a=3,b=2,c=1 (4)a=3,b=1,c=2 (5)a=3,b=3,c=2 (6)a=2,b=1,c=2
【例2】输入某学生的成绩,经处理后给出学生的等级,等
wk.baidu.com
级分类如下:
90分以上(包括90):A 80至90分(包括80):B
【目的与要求】
熟练掌握while、do—while和for三种循环语句的应用。
【例1】求5!
【例2】求和s=1!+2!+3!
【例3】求和s=1!+3!+5! 【例4】求和s= 3+33+333
【例5】有一数列:2/1,3/2,5/3,8/5,…求出这个数
列的前10项之和。 【例6】打印500以内的“水仙花数”。“水仙花数”是一 个三位数,其各位数立方和等于该数本身。 【例7】一个数如果恰好等于它的因子之和,这个数就 称为完数。求100之内的所有完数。
【例3】输入一串字符,计算其中空格的个数。
2.输入一个华氏温度,要求输出摄氏温度。公式为 c=5/9*(f-32).
【目的与要求】
1.了解C语句表示逻辑量的方法(以0代表“假”以1代 表“真”); 2.学会正确使用逻辑运算符和逻辑表达式; 3.熟练掌握if语句和switch语句。
【例1】已知三个数a,b,c,找出最大值放于max中。
【典型示例】
【例1】计算两个数的最大公约数; 分析:首先,随 机输入两个数m,n(默认m>n);其次,算法:使k为 m除以n的余数,如果m能被n整除,则k值为0,n为 这两个数的最大公约数,否则,使k代替n,n代替m, 重复以上过程,直到k值为0。
【例3】打印下列图案
* *** ***** *******
#include"stdio.h" main() { int score; char grade; printf("\npleaseinputastudentscore:"); scanf("%f",&score); if(score>100||score<0) printf("\ninputerror!"); else {if(score>=90) grade='A'; else {if(score>=80) grade='B'; else {if(score>=70) grade='C'; else {if(score>=60) grade='D'; else grade='E'; } } } printf("\nthestudentgrade:%c",grade); } }
#include"stdio.h"
main() { inta,b,c,max;/*定义四个整型变量*/ scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); if(a>=b) max=a;/*a>=b*/ else max=b;/*a<b*/ if(c>max) max=c;/*c是最大值*/ printf("max=%d",max); }
#include"stdio.h"
main() { int g,s; char ch; printf("\ninputastudentgrade:"); scanf("%d",&g); s=g/10; if(s<0||s>10) printf("\ninputerror!"); else {switch(s) {case 10: case 9:ch='A';break; case 8:ch='B';break; case 7:ch='C';break; case 6:ch='D';break; default:ch='E'; } printf("\nthestudentscort:%c",ch); } }
分析:由已知可得在变量定义时定义四个变量a,b,c
和max,a,b,c是任意输入的三个数,max是用来存 放结果最大值的。第一次比较a和b,把大数存入max 中,因a,b都可能是大值,所以用if语句中if——else 形式。第二次比较max和c,把最大数存入max中,用 if语句的第一种形式if形式。Max即为a,b,c中的最 大值。