课堂练习.docx

上传人:b****5 文档编号:3299946 上传时间:2022-11-21 格式:DOCX 页数:16 大小:41.37KB
下载 相关 举报
课堂练习.docx_第1页
第1页 / 共16页
课堂练习.docx_第2页
第2页 / 共16页
课堂练习.docx_第3页
第3页 / 共16页
课堂练习.docx_第4页
第4页 / 共16页
课堂练习.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

课堂练习.docx

《课堂练习.docx》由会员分享,可在线阅读,更多相关《课堂练习.docx(16页珍藏版)》请在冰豆网上搜索。

课堂练习.docx

课堂练习

课堂练习

实验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、打印结果

如何编程?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1