课堂练习.docx
- 文档编号:3299946
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:16
- 大小:41.37KB
课堂练习.docx
《课堂练习.docx》由会员分享,可在线阅读,更多相关《课堂练习.docx(16页珍藏版)》请在冰豆网上搜索。
课堂练习
课堂练习
实验1、输入三个整数a,b,c。
求其最大值放在max中。
实验2、输入三个整数a,b,c。
从小到大打印。
提示:
排队。
从矮到高。
Abc
方法:
用交换位置,把矮的调到前面。
第一步:
a与b比较。
If(a>b)
{x=a;a=b;b=x;}
(调了a与b)
第二步:
a与c比较。
If(a>c)
{x=a;a=c;c=x;}
(没变)
第三步:
b与c比较
If(b>c)
{x=b;b=c;c=x;}
(调了b与c)
Main()
{inta,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、编写一个能够进行加减法运
算的程序。
要求:
从键盘任意输入两个实
数,然后输入一个运算符,当运算符
为“+”时对两个数进行加法运算,
为“-”时对两个数进行减法运算,
其它符号时,只显示输入的符号不进
行运算。
Main()
{
Floata,b,d;
Charc;
Scanf(“%f%f%c”,&a,&b,&c);
If(c==’+’){d=a+b;Printf(“%f”,d);}
else
If(c==’-‘)
{d=a-b;
Printf(“%f”,d);}
Else
Printf(“%c”,c);
}
Main()
{
intc;
Scanf(“%d”,&c);
If((c%2)==0)printf(“c是偶数C=%d”,c);
Elseprintf(“c是jishu”);
}
实验4、编一程序实现:
判断用户输入的数是奇数或偶数,并输出相应的信息。
/*programtodetermineifanumberisevenorodd*/
main()
{
inttestnum,remainder;
printf("Enteryournumbertobetested.\n");
scanf("%d",&testnum);
remainder=testnum%2;
if(remainder==0)
printf("Thenumberiseven.\n");
if(remainder!
=0)
printf("Thenumberisodd.\n");
}
运行结果:
Enteryournumbertobetested.
2455
________________________________
再次运行:
Enteryournumbertobetested.
1210
实验5、从键盘输入一个4位的正整数,
要求:
1分别输出每一位数字;
2按逆序输出各位数字,例如原数为4321,应输出1234。
Ma,b,c,d
A=m/1000
B=(m-a*1000)/100
C=(m-a*1000-b*100)/10;
D=(m-a*1000-b*100-c*10)
【提示】:
将一个四位数m拆分成每一位数字的方法是:
a代表千位数字
a=m/1000;
b代表百位数字
b=m%1000/100;
c代表十位数字
c=m%100/10;
d代表个位数字
d=m%10;
例:
m=1234.
a=1234/10001
b=1234%1000/1002
c=1234%100/103
d=1234%104
实验6编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,
若不能,则输出相应的信息,若能则
判断组成的是等边、等腰、直角还是
普通三角形。
【要求】:
(1)输入一组数据3,4,8,
观察程序运行结果;
(2)另外再输入几组数据进行测试:
3,4,5
3,3,3
3,3,5
(3)将编写好的程序以文件名triangle.c保存在你刚才新建好的文件夹里。
【提示】:
①能够以三个数a,b,c为边长构成一个三角形的逻辑表达式是:
(a+b>c)&&(a+c>b)&&(b+c>a)
这也就是说三角形的三条边必须满足条件:
两边之和大于第三边。
3为了让运行程序的人能够一目了然的看懂你编写的程序,建议用printf()函数输出结果时用相应的英文说明,
例如,如果输出的结果为等边三角形,则可用如下语句:
printf("thetrianglebeingmadeupofa,bandcisequilateraltriangle.\n");
相应的中英文对应单词如下所示:
等边三角形equilateraltriangle;等腰三角形isoscelessphericaltriangle;
直角三角形rightangledtriangle
普通三角形ordinarytriangle
今天要讲的新的语句:
Switch(x)
{casen1:
Casen2:
}
问题提出:
从键盘上输入一个整数n。
如果n=1打印字母A
如果n=2打印B
如果n=3打印C
如果n=4打印D
其它打印E
●如果用if…elseif结构来实现,其程序如下
Main()
{intn;
scanf(“%d”,&n);
If(n==1)printf(“A”);
Elseif(n==2)printf(“B”);
Elseif(n==3)printf(“C”);
Elseif(n==4)printf(“D”);
Elseprintf(“E”);
}
如此多的条件嵌套,不仅增加难读性,也增加判断的次数。
C语言提供一种开关语句,称为switch结构,其格式如后:
switch(整量或字符)
{
case序号1:
语句序列1
break;
case序号2:
语句序列2
break;
……
default:
语句序列n+1
}
意思是:
switch(n)括号里的n是多少,对应
case后面的序号k,然后执行‘:
’后的语句。
break表示跳出。
default表示其它情况。
例:
main()
{
intz,n=1;
switch(n)
{case1:
z=10;break;
case2:
z=20;break;
defaut:
z=0;
}
printf(“\nz=%d”,z);
}
如果n=2,执行语句z=20;遇到break,跳出去。
如果n=3,z=0;
如果没有break语句,z=?
例:
main()
{
intz,n=1;
switch(n)
{case1:
z=10;
case2:
z=20;break;
defaut:
z=0;
}
printf(“\nz=%d”,z);
}
注意:
switch(x)x只能是整型变量或字符变量,不能是实型变量。
例:
main()
{
intz;
charch1=’a’;
switch(ch1)
{case‘a’:
z=10;
case‘b’:
z=20;
defaut:
z=0;
}
printf(“\nz=%d”,z);
}
注意:
Case不同的序号,可以有相同的操作或没有操作。
例:
switch(n)
{case1:
z=10;
case2:
z=10;
defaut:
z=0;
}
序号1和2有相同操作。
switch(n)
{case1:
case2:
z=20;
defaut:
z=0;
}
序号1为空操作。
不能有相同的Case序号做不同的操作。
switch(n)
{case1:
z=20
case1:
z=10;
defaut:
z=0;
}
注意:
casek与序号k要有空格
从键盘上输入一个学生成绩。
其等级如下:
90–100分之间A
80–89分之间B
70–79分之间C
60–69分之间D
60分以下E
如果用if…elseif结构来实现,其程序如下
#include“stdio.h”
Main()
{intgrade;
scanf(“%d”,&grade);
if(grade>=90)printf(“A\n”)
elseif(grade>=80)printf(“B\n”)
elseif(grade>=70)printf(“C\n”)
elseif(grade>=60)printf(“D\n”)
elseprintf(“E\n”);
}
#include“stdio.h”
Main()
{intgrade;
scanf(“%d”,&grade);
grade=gread/10;
switch(grade)
{case10:
printf(“A\n”);break;
case9:
printf(“A\n”);break;
Case8:
printf(“B\n”);break;
Case7:
printf(“C\n”);break;
Case6:
printf(“D\n”);break;
Default:
printf(“E\n”);
}
}
实验9、求一元两次方程解:
aX2+b*X+c=0的求
#include“math.h”
main()
{floata,b,c,h,x1,x2;
h=b*b-4*a*c;
x1=(-b+sqrt(h))/(2*a);
x2=(-b-sqrt(h))/(2*a);
printf(“\nx1=%fx2=%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<250km没有折扣
250
500
1000
2000
3000 设p为公里运费,w为货物重量,s为距离,d为折扣,f为总运费。 则: f=p*w*z(1-d). 能否转为swith()计算? 提示: 将各不同条件转为不同整数. Main() {intp,w,s,d,f,a; Scanf(“%p,%w,%s”,&p,&w,&s); a=s/250; Switch(a) {case0: d=0;break; Case1: d=0.02;break; Case2: Case3: d=0.05;break; Case4: Case5: Case6: Case7: d=0.08;break; Case8: Case9: Case10: Case11: d=0.1;break; Default: d=0.15; }f=p*w*s(1-d) 实验7编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形, 若不能,则输出”notriangle”信息,若能则 求其面积. 【提示】: ①能够以三个数a,b,c为边长构成一个三角形的逻辑表达式是: (a+b>c)&&(a+c>b)&&(b+c>a) 三边计算面积公式: 设d=1/2(a+b+c); 面积s=sqrt(d*(d-a)*(d-b)*(d-c)) 实验8、输入年号,判断它是否闰年。 提示: 闰年的条件是: 此年号能被400整除或能被4整除而不被100整除。 否则不是闰年。 是闰年,打印出: 年号isaleapyear的信息。 不是,打印出: 年号isnotaleapyear的信息。 思考题: 1用scanf函数输入年份year和月 份month,计算该月份的天数days,然后用输出函数printf输出days。 实验步骤与要求: (1)将程序中所涉及到的变量定义为整型; (2)输入前要加相应的提示语句,即在程序中scanf()函数前加入提示语句如下: printf(“pleaseinputayearandamonth: \n”); (3)输出结果前要有必要的文字说明,如: printf(“%dyear%dmonthhas%ddays! \n”,year,month,days); 【提示】: 1每年的1,3,5,7,8,10,12 为大月,每月为31天;4,6,9,11月为小月,每月为30天,闰年的2月有29天,平年的2月有28天; ②闰年的条件是: year能被4整除但不能被100整除,或者year能被400整除。 21900年元旦是星期一,问1900年 7月1日是星期几,将编写好的程序以文件名week.c保存在你刚才新建好的文件夹里。 (需要存盘) 【提示】: ①程序中应首先判断1900年是闰年还是平年; ②想要求出1900年7月1日是星期几,应该计算出1900年1月1日到1900年7月1日之间相差了多少天;然后再用相差的天数对7进行模运算,即days%7。 新内容: 循环语句 ●提出问题 提问: 从键盘上输入5个整数并求和,怎么编程? 回答: 在程序中写入5个scanf()语句。 Intsum,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遍。 学生: 对! 好象是这么回事...... 老师: 我们可以引出一个概念“循环”,简单而言: 循环就是不断反复地执行同一段程序。 学生: 这就是我们今天要学的新东西? ●循环在常中生活中经常遇到 上课问题: 从第一周到十五周,每周一的一、二节上《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;}次数加1 s4、打印结果 如何编程?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课堂 练习
![提示](https://static.bdocx.com/images/bang_tan.gif)