课堂练习实验1、输入三个整数a,b,c。
求其最大值放在max中。
实验2、输入三个整数a,b,c。
从小到大打印。
提示:排队。
从矮到高。
A c b方法:用交换位置,把矮的调到前面。
第一步:a与bIf(a>b){x=a;a=b;b=x;}(调了a与b)第二步:a与cIf(a>c){ x=a;a=c;c=x;}(没变)第三步:b与c比较If(b>c){ x=b;b=c;c=x;}(调了b与c)Main(){ int a,b,c,x;Scanf(‚%d%d%d‛,&a,&b,&c);If(a>b){ x=a;a=b;b=x;}If(a>c){ x=a;a=c;c=x;}If(b>c){ x=b;b=c;c=x;}Printf(‚\na=%d,b=%d,c=%d‛,a,b,c);}实验3、编写一个能够进行加减法运算的程序。
要求:从键盘任意输入两个实数,然后输入一个运算符,当运算符为‚+‛时对两个数进行加法运算,为‚-‛时对两个数进行减法运算,其它符号时,只显示输入的符号不进行运算。
实验4、编一程序实现:判断用户输入的数是奇数或偶数,并输出相应的信息。
/* program to determine if anumber is even or odd */ main(){int testnum, remainder;printf("Enter your number to betested.\n");scanf("%d", &testnum);remainder=testnum%2;if (remainder==0)printf("The number iseven.\n");if (remainder!=0)printf("The number isodd.\n");}运行结果:Enter your number to be tested. 2455________________________________再次运行:Enter your number to be tested. 1210实验5、从键盘输入一个4位的正整数,要求:①分别输出每一位数字;②按逆序输出各位数字,例如原数为4321,应输出1234。
【提示】:将一个四位数m拆分成每一位数字的方法是:a 代表千位数字a=m/1000;b 代表百位数字b=m%1000/100;c 代表十位数字c=m%100/10;d 代表个位数字d=m%10;例:m=1234.a=1234/1000 1b=1234%1000/100 2c=1234%100/10 3d=1234%10 4实验6 编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能,则输出相应的信息,若能则判断组成的是等边、等腰、直角还是普通三角形。
【要求】:(1)输入一组数据3,4,8,观察程序运行结果;(2)另外再输入几组数据进行测试:3,4,53,3,33,3,5(3)将编写好的程序以文件名triangle.c保存在你刚才新建好的文件夹里。
【提示】:①能够以三个数a,b,c为边长构成一个三角形的逻辑表达式是:(a+b>c) && (a+c>b) && (b+c>a)这也就是说三角形的三条边必须满足条件:两边之和大于第三边。
③为了让运行程序的人能够一目了然的看懂你编写的程序,建议用printf()函数输出结果时用相应的英文说明,例如,如果输出的结果为等边三角形,则可用如下语句:printf("the triangle being made up of a, b andc is equilateral triangle.\n");相应的中英文对应单词如下所示:等边三角形 equilateral 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 如果用if…else if 结构来实现,其程序如下Main(){ int n;scanf(‚%d‛,&n);If(n==1) printf(‚A‛);Else if(n==2) printf(‚B‛); Else if(n==3) printf(‚C‛); Else if(n==4) printf(‚D‛);Elseprintf(‚E‛);}如此多的条件嵌套,不仅增加难读性,也增加判断的次数。
C 语言提供一种开关语句,称为switch结构,其格式如后:switch (整量或字符){case 序号1:语句序列1break;case 序号2:语句序列2break;……default:语句序列n+1}意思是:switch (n) 括号里的n是多少,对应case 后面的序号k,然后执行‘:’后的语句。
break 表示跳出。
default 表示其它情况。
例:main(){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;}printf(‚\n z=%d‛,z);}注意:switch(x) x只能是整型变量或字符变量,不能是实型变量。
例:main(){int z;char ch1=’a’;switch(ch1){ case ‘a’: z=10;case ‘b’: z=20;}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;}注意:case k 与序号k要有空格从键盘上输入一个学生成绩。
其等级如下:90 – 100 分之间 A80 – 89 分之间 B70 – 79 分之间 C60 – 69 分之间 D60 分以下 E如果用if…else if 结构来实现,其程序如下#include ‚stdio.h‛Main(){ int grade;scanf(‚%d‛,&grade);if (grade>=90) printf(‚A\n‛)else if(grade>=80) printf(‚B\n‛)else if(grade>=70) printf(‚C\n‛)else if(grade>=60) printf(‚D\n‛)else printf(‚E\n‛);}#include ‚stdio.h‛Main(){ int grade;scanf(‚%d‛,&grade);grade=gread/10;switch(grade){ case 10 : printf(‚A\n‛);break;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‛); }}实验9、求一元两次方程解:a X2+b*X+c=0的求#i n c l u d e‚m a t h.h‛m a i n(){f l o a ta=1,b=4,c=3,h,x1,x2;h=b*b-4*a*c;x1=(-b+s q r t(h))/(2*a);x2=(-b-s q r t(h))/(2*a);p r i n t f(‚\n x1=%f x2=%f‛,x1,x2);}现在要求讨论各种情况解。
(1)a=0(2)b*b-4*a*c=0(3)b*b-4*a*c>0(4)b*b-4*a*c<0思考题1:一、从键盘输入一个不多于4位的正整数,要求:求出它是几位数;【说明】:应准备以下测试数据:(1)要处理的数为1位正整数;(2)要处理的数为2位正整数;(3)要处理的数为3位正整数;(4)要处理的数为4位正整数;提示:设m为1-4位整数.如果 m/1000!=0 则为4位数,以下类推.二、运输公司对用户计算运费,路程(S)越远运费越低。
标准如下:S<250k m没有折扣250<s<5002%折扣500<s<1000 5%1000<s<2000 8%2000<s<3000 10%3000<s 15%设 p为公里运费,w为货物重量,s 为距离,d为折扣,f为总运费。
则:f=p*w*z(1-d).能否转为s w i t h()计算?提示:将各不同条件转为不同整数.。