1、课堂练习课堂练习 实验1、输入三个整数a,b,c。求其最大值放在max中。实验2、 输入三个整数a,b,c。从小到大打印。提示:排队。从矮到高。 A b c 方法:用交换位置,把矮的调到前面。第一步:a与b比较。If(ab)x=a;a=b;b=x;(调了a与b)第二步:a与c比较。If(ac) x=a;a=c;c=x;(没变)第三步:b与c比较If(bc) x=b;b=c;c=x;(调了b与c)Main() int a,b,c,x; Scanf(“%d%d%d”,&a,&b,&c); If(ab) x=a;a=b;b=x;If(ac) x=a;a=c;c=x;If(bc) x=b;b=c;c=
2、x;Printf(“na=%d,b=%d,c=%d”,a,b,c);实验3、编写一个能够进行加减法运算的程序。要求:从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”时对两个数进行加法运算,为“-”时对两个数进行减法运算,其它符号时,只显示输入的符号不进行运算。Main() Float a,b,d;Char c;Scanf(“%f%f%c”,&a,&b,&c );If(c=+) d=a+b; Printf (“%f”,d);elseIf (c=-) d=a-b;Printf (“%f”,d);Else Printf (“%c”,c);Main()int c;Scanf(“%d”,&c
3、 );If(c%2)=0) printf(“c是偶数 C=%d”,c);Else printf(“c是jishu”); 实验4、编一程序实现:判断用户输入的数是奇数或偶数,并输出相应的信息。/* program to determine if a number is even or odd */ main() int testnum, remainder; printf(Enter your number to be tested.n); scanf(%d, &testnum); remainder=testnum%2; if (remainder=0) printf(The number i
4、s even.n); if (remainder!=0) printf(The number is odd.n);运行结果: Enter your number to be tested. 2455_ 再次运行:Enter your number to be tested. 1210实验5、从键盘输入一个4位的正整数,要求:1 分别输出每一位数字;2 按逆序输出各位数字,例如原数为4321,应输出1234。M a,b,c,dA=m/1000B=(m-a*1000)/100C=(m-a*1000-b*100)/10;D=(m-a*1000-b*100-c*10)【提示】:将一个四位数m拆分成每一
5、位数字的方法是:a 代表千位数字 a=m/1000; b 代表百位数字b=m%1000/100; c 代表十位数字 c=m%100/10;d 代表个位数字 d=m%10; 例:m=1234. a=1234/1000 1 b=1234%1000/100 2 c=1234%100/10 3 d=1234%10 4实验6 编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能,则输出相应的信息,若能则判断组成的是等边、等腰、直角还是普通三角形。【要求】:(1)输入一组数据3,4,8,观察程序运行结果;(2) 另外再输入几组数据进行测试: 3,4,53,3,33,3,5(3)将编写好
6、的程序以文件名triangle.c保存在你刚才新建好的文件夹里。【提示】: 能够以三个数a,b,c为边长构成一个三角形的逻辑表达式是: (a+bc) & (a+cb) & (b+ca) 这也就是说三角形的三条边必须满足条件:两边之和大于第三边。3 为了让运行程序的人能够一目了然的看懂你编写的程序,建议用printf()函数输出结果时用相应的英文说明,例如,如果输出的结果为等边三角形,则可用如下语句:printf(the triangle being made up of a, b and c is equilateral triangle.n); 相应的中英文对应单词如下所示: 等边三角形 e
7、quilateral triangle; 等腰三角形 isosceles spherical triangle; 直角三角形 right angled triangle普通三角形 ordinary triangle今天要讲的新的语句:Switch(x) case n1: Case n2: 问题提出:从键盘上输入一个整数n。如果 n=1 打印字母 A 如果 n=2 打印 B如果 n=3 打印 C如果 n=4 打印 D其它 打印 E 如果用ifelse if 结构来实现,其程序如下Main() int n; scanf(“%d”,&n);If(n=1) printf(“A”); Else if(n
8、=2) printf(“B”); Else if(n=3) printf(“C”); Else if(n=4) printf(“D”); Else printf(“E”); 如此多的条件嵌套,不仅增加难读性,也增加判断的次数。C 语言提供一种开关语句,称为switch结构,其格式如后: switch (整量或字符) case 序号1: 语句序列1 break; case 序号2: 语句序列2 break; default: 语句序列n+1 意思是:switch (n) 括号里的n是多少,对应case 后面的序号k,然后执行:后的语句。break 表示跳出。 default 表示其它情况。例:m
9、ain() int z,n=1; switch(n) case 1: z=10; break; case 2: z=20;break; defaut : z=0; printf(“n z=%d”,z);如果n=2,执行语句 z=20;遇到break,跳出去。 如果 n=3, z=0;如果没有break语句,z=?例:main() int z,n=1; switch(n) case 1: z=10;case 2: z=20;break;defaut : z=0; printf(“n z=%d”,z);注意:switch(x) x只能是整型变量或字符变量,不能是实型变量。例:main() int
10、z;char ch1=a; switch(ch1) case a: z=10;case b: z=20;defaut : z=0; printf(“n z=%d”,z);注意:Case 不同的序号,可以有相同的操作或没有操作。例:switch(n) case 1: z=10;case 2: z=10;defaut : z=0; 序号1和2有相同操作。switch(n) case 1: case 2: z=20;defaut : z=0; 序号1为空操作。不能有相同的Case 序号做不同的操作。switch(n) case 1: z=20case 1: z=10;defaut : z=0; 注意
11、:case k 与序号k要有空格从键盘上输入一个学生成绩。其等级如下: 90 100 分之间 A 80 89 分之间 B 70 79 分之间 C 60 69 分之间 D 60 分以下 E 如果用ifelse if 结构来实现,其程序如下 #include “stdio.h”Main() int grade; scanf(“%d”,&grade); if (grade=90) printf(“An”) else if(grade=80) printf(“Bn”) else if(grade=70) printf(“Cn”) else if(grade=60) printf(“Dn”) else
12、printf(“En”); #include “stdio.h”Main() int grade; scanf(“%d”,&grade); grade=gread/10;switch(grade) case 10 : printf(“An”);break; case 9 : printf(“An”);break; Case 8 : printf(“Bn”);break; Case 7: printf(“Cn”);break;Case 6: printf(“Dn”);break; Default: printf(“En”); 实验9、求一元两次方程解:aX2+b*X+c=0 的求#include
13、 “math.h”main()float a,b,c,h,x1,x2; h=b*b-4*a*c; x1=(-b+sqrt(h)/(2*a);x2=(-b-sqrt(h)/(2*a);printf(“n x1=%f x2=%f”,x1,x2);现在要求讨论各种情况解。(1) a=0(2) b*b-4*a*c=0(3) b*b-4*a*c0(4) b*b-4*a*c0思考题1:一、从键盘输入一个不多于4位的正整数,要求:求出它是几位数;【说明】:应准备以下测试数据:(1) 要处理的数为1位正整数;(2) 要处理的数为2位正整数;(3) 要处理的数为3位正整数;(4) 要处理的数为4位正整数;提示:
14、设m为1-4位整数.如果 m/1000!=0 则为4位数,以下类推.二、运输公司对用户计算运费,路程(S)越远运费越低。标准如下: S250km 没有折扣250s500 2%折扣 500s1000 5%1000s2000 8%2000s3000 10%3000c) & (a+cb) & (b+ca)三边计算面积公式:设d=1/2(a+b+c);面积s=sqrt(d*(d-a)*(d-b)*(d-c)实验8、输入年号,判断它是否闰年。提示 :闰年的条件是:此年号能被400整除或能被4整除而不被100整除。否则不是闰年。是闰年,打印出:年号is a leap year 的信息。不是,打印出:年号i
15、s not a leap year 的信息。思考题:1 用scanf函数输入年份year和月份month,计算该月份的天数days,然后用输出函数printf输出days。实验步骤与要求:(1) 将程序中所涉及到的变量定义为整型;(2) 输入前要加相应的提示语句,即在程序中scanf()函数前加入提示语句如下:printf(“please input a year and a month:n”);(3) 输出结果前要有必要的文字说明,如:printf(“%d year %d month has %d days!n”, year, month, days); 【提示】:1 每年的1,3,5,7,
16、8,10,12为大月,每月为31天;4,6,9,11月为小月,每月为30天,闰年的2月有29天,平年的2月有28天; 闰年的条件是:year能被4整除但不能被100整除,或者year能被400整除。2 1900年元旦是星期一,问1900年7月1日是星期几,将编写好的程序以文件名week.c保存在你刚才新建好的文件夹里。(需要存盘)【提示】: 程序中应首先判断1900年是闰年还是平年; 想要求出1900年7月1日是星期几,应该计算出1900年1月1日到1900年7月1日之间相差了多少天;然后再用相差的天数对7进行模运算,即days%7。新内容:循环语句 提出问题提问:从键盘上输入5个整数并求和,
17、怎么编程?回答:在程序中写入5个scanf( )语句。Int sum,a1,a2,a3,a4,a5;Scanf(%d”,&a1);Sum=a1;Scanf(%d”,&a2);Sum=sum+a2;Scanf(%d”,&a3);Sum=a3;Scanf(%d”,&a4);Sum=sum+a4;Scanf(%d”,&a5);Sum=sum+a5;提问:从键盘上输入100个整数并求和,怎么编程?回答:这个,嗯? 不会让我写100个.老师:让我们换一个角度来看待这些问题, 以上问题的实质是:将scanf函数重复执行100遍。学生:对!好象是 这么回事.老师:我们可以引出一个概念“循环”,简单而言:循环
18、就是不断反复地执行同一段程序。学生:这就是我们今天要学的新东西? 循环在常中生活中经常遇到上课问题:从第一周到十五周,每周 一的一、二节上C语言课。这就是一个循环 。即每逢周一,就上C语言。算法如何写:s1、从第一周开始s2、每周一(1、2)上C语言s3、下一周s4 如果少于16周,转s2.或者:s1、从第一周开始s2 如果少于16周,做1、每周一(1、2)上C语言2、下一周对于第一个问题:从键盘上输入100个整数并求和,其处法是? 分析:1、要有一个存放同学成绩的变量scod。2、有一个成绩累加的变量sum.3、要有一个循 环计数,用一个变量K来表示。S1、设m为要输入的整数,sum为累加数,k为输入计数,也是循环次数。S2、开始,累加数sum=0,计数k=1.S3、当k=500时做: scanf(“%d”,&m); Sum=sum+m; 累加; K=k+1; 次数加1s4、打印结果如何编程?
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1