03 学习指导-单元3 选择结构程序设计

更新时间:2023-09-19 15:39:01 阅读量: 小学教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单元3 选择结构程序设计

一、知识要点

通过本章的学习是学生掌握关系、逻辑运算符和表达式以及选择结构程序设计。具体内容如下:

1.关系运算符和关系表达式 (1)关系运算符及其优先次序 C语言提供6种关系运算符: ①< (小于) ②<= (小于或等于) ③> (大于) ④>= (大于或等于) ⑤= = (等于) ⑥!= (不等于) 关于优先次序:

前4种关系运算符的优先级别相同,后两种也相同。前4种高于后两种;关系运算符的优先级低于算术运算符;关系运算符的优先级高于赋值运算符。

(2)关系表达式

由关系运算符连接而成的表达式(可以是算术表达式、关系表达式和其他表达式)称为关系表达式。

2.逻辑运算符和逻辑表达式 (1)逻辑运算符及其优先次序 C语言提供了三种逻辑运算符: && 逻辑与 || 逻辑或 ! 逻辑非 关于优先次序:

!(逻辑非)>算术运算符>关系运算符>&&>||>赋值运算符 (2)逻辑表达式

逻辑表达式由逻辑运算符和运算对象组成,其中参与逻辑运算的对象可以是一个具体的值,还可以是C语言中任意合法的表达式,逻辑表达式的运算结果为1(真)或者为0(假)。

优先级相同(低) 优先级相同(高) 3.if语句

(1)if(表达式)语句 (2)if(表达式)语句1 else 语句2 (3)if(表达式1)语句1

else if(表达式2) 语句2

else if(表达式3) 语句3 ??

else if(表达式m)语句m else 语句m+1 注意:

①“语句”,“语句1”,??,“语句m”这些子句在语法上要求是一条语句,但需要执行多条语句时,需要用花括号{}把它们括起来组成复合语句。

②else不能独立成为一条语句,它仅是if语句的一部分,不能单独出现的程序中,且必须与if进行匹配共同组成if…else语句。

4.条件运算符?:和条件表达式 条件运算符是两个符号的组合: ? :

条件表达式的一般形式为:表达式1 ? 表达式2 :表达式3

条件表达式运算过程及表达式的值:先计算表达式1,若表达式1的值非0,则计算表达式2,不再计算表达式3,此时表达式2的值为整个条件表达式的值;若表达式1的值为0,不再计算表达式2,而计算表达式3,此时表达式3的值为整个条件表达式的值。

利用条件运算可以表达具有二分支的实际问题。 5.switch语句 switch(表达式)

{

case 常量表达式1:<语句组1> case 常量表达式2:<语句组2>

… … … … …

case 常量表达式n:<语句组n> }

说明:

①switch是关键字,switch后面用花括号括起来的部分是switch语句体; ②switch后面括号内的“表达式”,可以是C语言中整型或字符型表达式,但是表达式两边的括号不能省;

③case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后面的表达式类型相匹配,且各case语句标号的值不能相同;

④default也是关键字,起标号的作用,代表除了以上所有case标号之外的那些标号,default语句可以出现在任何标号的位置上,也可以没有。

⑤case语句标号后的语句1、语句2等可以是一条语句,可以是若干条语句,也可以省略;

⑥break语句的作用:跳出switch…case语句。 二、知识拓展

1.switch..case中default的书写位置

default关键字也仅仅起到了标号的作用,与case作用一致,可以出现在switch…case语句的任何地方,不一定要在最后。但是,如果出现在case中间(某些case之前),当default后的语句组执行完毕后不需要执行其后面的case中的语句组时,需要在default语句组之后加上break。

【示例】

int a=3; switch(a) {

case 1:printf(\ default:printf(\case 2:printf(\}

在执行过程中,a的值为3,与case后的常量均不符合,于是执行default语句。输出^^,但是由于没有break,将继续执行printf(\,输出&&。因此执行结果为:

^^ &&

如果只希望输出^^,则要把上述程序段改成

int a=3; switch(a) {

case 1:printf(\ default:printf(\case 2:printf(\}

并且,case 2之后的break可以省略。 2.条件运算符的结合方向

我们知道if…else语句可以与条件表达式相互转换,比如【示例】求两个数的最大值代码:

if(a>b) max=a; else max=b;

可以转换为max=a>b?a:b; 当出现如下数学表达式:

a?b?a?max??ba?b并且b?c?ca?b并且b?c?我们先用if语句来进行表示: if(a>b)

max=a; max=b; max=c; else if(b>c) else

那它是否等价于max=a>b?a:b>c?b:c;呢?

答案否。因为条件运算符?:是右结合,也就是说max=a>b?a:b>c?b:c相当于max=a>b?a:( b>c?b:c),显然于题述不符。

三、常见问题

1.数学关系0

解析:在数学中,关系式0

2.C语言中,表达式a

解析:由上题可知,a

3.表达式中忽略了“=”与“= =”的区别

解析:C语言中,“=”是赋值运算符,“==”是关系运算符。初学者往往把“=”用做关系运算符来判别相等。

先看个示例:下面的程序() #include void fun() { } int main() { }

A.有语法错误不能通过编译; B.输出****

C.可以通过编译,但是不能通过链接,因而不能运行 D.输出#### 本题答案D。

解决本题的关键在于if后面的表达式语句:x=y+z。y+z的值为0,x的值为0,“=”左右两边的值均为0,但是“=”为赋值运算符,即不管x之前的值如何,经过此表达式后,x的值变成0,即if后表达式为假,执行else之后的语句。

如果,if语句改成if(x= =y+z)printf(\

fun(); return 0; int x=0,y=0,z=0; if(x=y+z)

printf(\printf(\else

else printf(\

则if后表达式为真,选择B。 4.if语句中多加了分号“;”

解析:一个“;”代表一个语句。在if(表达式)之后若添加了;代表当表达式为真时,执行空语句。

还是先看个例子,在上题的基础上稍加修改,在if(x=y+z)后加个“;”。即 #include void fun() {

int x=0,y=0,z=0; } int main() { }

A.有语法错误不能通过编译; B.输出****

C.可以通过编译,但是不能通过链接,因而不能运行 D.输出#### 本题答案A。

由于if之后多了个分号,系统认为if语句到此结束;因此,之后的else找不到与它匹配的if。因此,程序不能通过编译,错误的提示为:

illegal else without matching if 如果上述程序段改成 #include void fun() {

int x=0,y=0,z=0; if(x=y+z) ;

printf(\fun(); return 0; if(x=y+z) ;

printf(\printf(\else

}

printf(\

int main() { }

编译、链接全部通过,证明没有错误;但是输出****####。 5.case关键字后的表达式书写错误

解析:case关键字后面的表达式只能是常量表达式,而且只能是整型或字符型常量,不能是其他常量。

【示例】 #include void fun() { } int main() { }

不能通过编译,系统提示错误

error C2450: switch expression of type 'double' is illegal error C2052: 'const double' : illegal type for case expression fun(); return 0; double a=1.2; switch(a) {

case 1.1:printf(\case 1.2:printf(\default:printf(\} fun(); return 0;

即,switch括号后的表达式以及case标号后的表达式错误。

另外,case标号后必须有空格,若没有,系统将不能识别出case关键字。【示例】

#include void fun() { } int main() { }

编译、链接都能通过,但输出^^,与预期不一致。错误原因就是case1,case2中间没有空格。

四、同步训练 (一)单项选择题

1.判断字符型变量c1是否为小写字母的正确表达式为( )。

A.‘a’<=c1<=’z’ C.(‘a’>=c1)||(‘z’<=c1) A.0 A.a%2==0

B.(c1>=’A’)&&(c1<=’z’) D.(c1>=’a’)&&(c1<=’z’) C.1

C.a/2*2-2==0

D.假 D.a%2

fun(); return 0; int a=1; switch(a) {

case1:printf(\case2:printf(\default:printf(\}

2.已知int x=43,y=0; char ch='A';则表达式(x>y&&ch<'B'&&!y)的值是( )。

B.语法错 B.!a%2!=0

3.请从以下表达式中选出a为偶数时值为0的表达式( )。 4.能正确表示a和b同时为正或同时为负的逻辑表达式是( )。

A.(a>=0||b>=0)&&(a<0||b<0) C.(a+b>0)&&(a+b<=0) A.a>=10 or a<=0 C.a>=10&&a<=0

B.(a>=0&&b>=0)&&(a<0&&b<0) D.a*b>0 B.a>=0|a<=0 D.a>=10||a<=0

5.能正确表示逻辑关系:“a>=10或a<=0”的C语言表达式是( )。

6.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式( )。 对。

A.编排位置相同的if C.其之后最近的if A.?: A.! A.4 A.0 i=322;

if(i%2==0) printf(\else printf(\

A.#### C.####**** int i=0,j=0,k=6; if((++i>0)||(++j>0)) k++; printf(\A.0,0,6 float x=2.0,y; if(x<0.0) y=0.0; else if(x<5.0)y=1.0/x; else y=1.0; printf(\

该程序段的输出结果是( )。 A.0.000000 C.0.500000

B.0.250000 D.1.000000

B.1,0,7

C.1,1,7

D.0,1,7

B.****

D.有语法错误,无输出结果

B.&& B.& B.3 B.1

B.其之前最近的未配对的if D.同一行上的if C.+ C.+ C.2 C.非0

D.!= D.!= D.1 D.非1

A.只能用逻辑表达式 C.只能用关系表达式

B.只能用逻辑表达式或关系表达式 D.可用任意表达式

7.为避免嵌套的条件语句if-else的二义性,C语言规定:else与( )配

8.下列运算符中优先级最低的是( )。 9.下列运算符中优先级最高的是( )。

10.设a=1,b=2,c=3,d=4,则表达式a3||8<=(a=10)的结果是( )。

12.若i为整型变量,且有程序段如下,则输出结果是( )。

13.以下程序段的输出结果是( )。

14.有如下程序段

15.若变量都已正确说明,则以下程序段输出为( )。

int a=1,b=2,c,d; if(a==b) c=d=a; else c=b; d=b;

printf(\

A.c=1,d=1 C.c=2,d=1

B.c=1,d=2 D.c=2,d=2

16.设int a=9,b=8,c=7,x=1;则执行语句if(a>7)if(b>8)if(c>9)x=2;else x=3;后x的值的是( )。

A.0 char m='b';

if(m++>'b') printf(\else printf(\A.a

B.b

C.c

D.d

B.2

C.1

D..3

17.以下程序段,运行后的输出结果是( )。

18.有以下程序段

int a=5,b=4,c=3,d=2; if(a>b>c)printf(\

else if((c-1>=d)==1)printf(\else printf(\执行后输出结果是( )。 A.2 C.4

int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; }

printf(\该程序段的输出结果是( )。 A.a=2,b=1

B.a=1,b=1

C.a=1,b=0

D.a=2,b=2

B.3

D.编译有错,无结果

19.有如下程序段:

20.以下程序段的输出结果是( )。

int a=15,b=21,m=0; switch(a%3) {

case 0:m++;break; case 1:m++; }

printf(\A.1

B.2

C.3

D.4

switch(b%2) {

default:m++; case 0:m++;break; }

(二)填空题

1. 已知a=7.5,b=2,c=3.6,表达式,a>b&&c>a||ab的值的是 。 2. 写出判断一个整型数a为奇数的表达式 。

3.有一个整345,取它的个位数的表达为 ① ,取十位数的表达式为 ② ,取百位数的表达式为 ③ 。

4. 能正确表示“当ch为小写字母为真,否则为假”的表达式是 。 5. 若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 。

6. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式 。 7. 设x,y均为int型变量,请写出描述“x,y符号相同”的表达式 。 8.已知a=3,b=-4,c=5,表达式(a&&b)==(a||c)的值是 。 9.若已知a=2,b=3,则表达式!a+b的值为 。

10.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值为 。

c=(a-=(b-5)); c=(a)+(b=3);

11.设a,b,c为整型数,且a=2,b=3,c=4;则执行完语句a*=16+(b++)-(++c);后,a的值为 。

12.若有条件表达式(expression)?a++:b--,则完全等价于表达式(expression)的表达式是 。

13.以下程序段对输入的一个小写字母,将字母循环后移动5个位置后输出。

如‘a’变为‘f’,‘w’变成‘b’。请在空中填入正确内容。

char c;c=__①___; if(c>=’a’&&__②___) _③____;

else if(c>=’v’&&c<=’z’) __④___;

putchar(c);

14.以下程序判断输入的年份是否是闰年。 void leapyear(int year) {

int f;

if( ① ) }

f=1;

if(f)

printf(\else

printf(\ else ② ; 15.以下程序段实现:输入三个整数,按从大到小的顺序进行输出。请在空中填入正确内容。

int x,y,x,c;

scanf(\if(__①____) {c=y;y=z;z=c;} if(___②__) {c=x;x=y;y=c;} if(__③___) {c=z;z=y;y=c;} printf(\④__);

16.以下程序用于判断a.b.c能否构成三角形,若能,输出YES,否则输出NO。当给a.b.c输入三角形三条边长时,确定a.b.c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。

void fun(float a,float b,float c) { }

17.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是

if( )printf(\;/*a.b.c能构成三角形*/ else printf(\;/*a.b.c不能构成三角形*/

一个小写字母,则把它变成大写字母;其它字符不变。请在下划线上填入正确的内容。

#include void fun(char ch) { }

18.根据以下if语句写出与其功能相同的switch语句(x的值在0~100之间,x为整数)。

if语句: if(x<60) m=1; else if(x<70) m=2; else if(x<80) m=3; else if(x<90) m=4; else if(x<100) m=5; switch语句:

switch( ____①______ ) {

_____②_____ m=1;break; case 6:m=2;break; case 7:m=3;break; case 8:m=4;break; ___③_______ m=5; }

19. 表达式p

1.若从键盘输入58,则以下程序段输出的结果是( )。

int a;

scanf(\if(a>50)

printf(\if(a>40)

if(_________①__________) ch=ch+32;

else if(ch>='a' && ch<='z') _________②_________; printf(\

printf(\ if(a>30)

printf(\

2.以下程序段输出的结果是( )。

int a=5,b=4,c=3,d; d=(a>b>c); printf(\3.以下程序段输出的结果是( )。

int x=10,y=20,t=0; if(x==y)

t=x;x=y;y=t; printf(\4.若i=10;则执行下列程序后,变量i的正确结果为( switch(i) {

case 9:i+=1; case 10:i+=1; case 11:i+=1; default:i+=1;

} 5.以下程序段完成的功能是( )。

int shu; printf(\请输入一个整数;\\n\ scanf(\ if(shu<0)

shu=-shu; printf(\6.以下程序段运行后的输出结果是( )。

int a=2,b=1,c=2; if(a) if(b<0) c=0;

else c++;

printf(\7.以下程序段运行后的输出结果是( )。

int a=2,b=1,c=2;

。 )

if(a) { } else c++; printf(\int x;

printf(\请输入一个0-2的整数:\scanf(\switch(x) {

case 0:printf(\输入0。\\n\case 1:printf(\输入1。\\n\case 2:printf(\输入2。\\n\default: printf(\输入错误! \\n\} int x;

printf(\请输入一个0-2的整数:\scanf(\switch(x) {

case 0:printf(\输入0。\\n\case 1:printf(\输入1。\\n\case 2:printf(\输入2。\\n\default: printf(\输入错误! \\n\}

w=1;x=2;y=3;z=4; m=(w

if(b<0)

c=0;

8. 运行以下程序段,并输入1,则输出结果是( )。

9.运行以下程序段,并输入1,则输出结果是( )。

10.假定w,x,y,z,m均为int型变量,有如下程序段:

则该程序运行后,m的值是( )。

11.请阅读以下程序段: char c; c=getchar();

if((c>='A'&&c<'Z'||c>='a'&&c<'z')) printf(\ else if(c>='0'&&c<='9') printf(\ else

printf(\若运行时输入大写字母A,则上面程序的输出结果是(12.以下程序段的结果是( )。 int i=4,x=3,y=2,z=1; printf(\13.以下程序段运行后的输出结果是( )。

int a,b,c,d; a=b=c=1;

d=++a||++b&&++c;

printf(\14.以下程序段运行后的输出结果是( )。

int a,b,c,d; a=b=c=1;

d=++a&&++b||++c;

printf(\15.以下程序段运行后的输出结果是( )。

int a,b,c,d; a=b=c=1;

d=++a&&++b&&++c; printf(\16.以下程序段的运行结果是( )。

int a=2,b=3,c; c=a; if(a>b) c=1; else if(a==b)

c=0; 。 )

printf(\if(2*1==2<2*2==4)

printf(\printf(\else

17.以下程序段的运行结果是( )。

18.阅读下列程序段,写出运行结果( )。

int a=12,b=21,m=0; switch(a%3) {

case 0:m++; }

printf(\

x=80;a=10;b=16;y=9;z=0;

if(a

if(b!=15)

if(!y) x=81; else if(!z) x=79; switch(b%2) {

default :m++; case 0:m++;break; }

19.若所有变量都已正确定义为int型,则执行下列程序段后x的值为( )。

20.有以下程序段

int n=0,m=1,x=2; if(!n)x-=1; if(m)x-=2; if(x)x-=3; printf(\

执行后输出结果是( )。 (四)程序设计题

1.输入一个字符,如果是大写字母,转换为小写,如果不是不转换。最后输出。

2.根据给定的年份计算该年度二月份的天数。

3.输入圆的的半径r和一个整型数k,当k=1时,计算圆的面积;但k=2时,计算圆的周长,当k=3时,既要求求圆的周长也要求出圆的面积。编程实现以上功能。

4.输入4个数,按从小到大的顺序输出。

5.某商场举行购物优惠活动(x代表购物款,y代表折扣): 当x<1600时,y=0; 1600<=x<2400时,y=5%; 2400<=x<3200时,y=10%; 3200<=x<6400时,y=15% x>=6400时,y=20%。

输入一个顾客的购物款后,显示它应付的款数。 五.同步训练参考答案 (一)选择题参考答案

1. D 6. D 11.B 16.C 2. C 7. B 12.A 17.C 3.D 8. A 13.B 18.B 4. D 9.A 14.C 19.A 5. D 10.C 15.D 20.A (二)填空题参考答案

1.0

4.ch>=’a’&&ch<=’z’ 5.x==0 9.3

6.x>5||x<-5 8.1 10.3

12.expression!=0

7.x*y>0 11.28

2.a%2==1

3.①345,②345/10,③345/100 13.①getchar( ) ,② a<=’u’ ,③c=c+5 , ④c=c-21 14.①year%4==0&&year0!=0 || year@0==0 ,②f=0 15.①z>y ,②y>x ,③z>y ,④x, y , z 16.a+b>c&&a+c>b&&b+c>a

17.①ch>='A' && ch<='Z’ ,②ch=ch-32 18.①x/10 ,② default ,③ case 9: case 10: 19.(p

或者① x/10 ,② case 0:case 1:case 2:case 3: case 4:case5: ,③default 20.(1<=a<+8)&&(a!=7)

(三)程序阅读题参考答案

1.585858 3.20,0 7.2

2.0 4.13 8.输入1。 输入2。 输入错误! 10.1 12.1 14.2211 16.2 18.3 20.-4

5.输出从键盘上输入数据的绝对值 6.3

9.输入1。 13.2111 15.2221 17.** 19.79

11.input character is letter

(四)程序设计题参考答案

1.输入一个字符,如果是大写字母,转换为小写,如果不是不转换。最后输出。

参考代码 #include char zhuanhuan(char c); char zhuanhuan(char c) { } int main() { }

2.根据给定的年份计算该年度二月份的天数。

char c; c=getchar();

putchar(zhuanhuan(c)); char ch;

ch= (c>='A'&&c<='Z')?(c+32):c; return ch;

return 0;

参考代码 #include int FebruaryDay(int y); int FebruaryDay(int y) { } int main() {

int year,day;

printf(\请输入年份:\\n\

scanf(\ //输入年份year的值

day=FebruaryDay(year); //以year为参数,调用函数FebruaryDay(),求得 int d2;

if(y%4==0&&y0!=0||y@0==0)//判断是否闰年 else

return d2; //将求得的天数作为函数值返回

d2=29; d2=28;

//该年二月份的天数,并赋值给天数day。

printf(\年的二月有%d天!\\n\输出年份及对应的二月份天数 return 0; }

3.输入圆的的半径r和一个整型数k,当k=1时,计算圆的面积;但k=2时,计算圆的周长,当k=3时,既要求求圆的周长也要求出圆的面积。编程实现以上功能。

参考代码 #include #define PI 3.1415 void fun(double r,int k); void fun(double r,int k) {

double c,s; switch(k) {

}

case 4:days+=90;break; case 5:days+=120;break; case 6:days+=151;break; case 7:days+=181;break; case 8:days+=212;break; case 9:days+=243;break; case 10:days+=273;break; case 11:days+=304;break; case 12:days+=334;break; }

if((year@0==0||year%4==0&&year0!=0)&&month>2)//要判别该年

days+=1;

份year是否是闰年,并且month是否在2月之后,如果是2月应该有29天

return days;

int main() { }

int year,month,day;//年 月 日 int days;//此年的第几天

printf(\请输入相应的年 月 日:\scanf(\days=fun(year,month,day);

printf(\年%d月%d日是该年度的第%d天。\\n\return 0;

}

case 1:s=PI*r*r;printf(\圆面积为:%5.2f\\n\case 2:c=2*PI*r;printf(\圆周长为:%5.2f\\n\case 3:s=PI*r*r;c=2*PI*r;printf(\圆面积为:%5.2f,圆周长}

为:%5.2f\\n\

int main() { }

4.输入4个数,按从小到大的顺序输出。 参考代码 #include

void fun(int a,int b,int c,int d); void fun(int a,int b,int c,int d) {

int t; if(a>b) { } if(a>c) { } if(a>d) {

t=a;a=d;d=t;//a最小 t=a;a=c;c=t; t=a;a=b;b=t; double r; int k;

printf(\请输入圆半径:\scanf(\

printf(\请输入代号1 2 3:\scanf(\fun(r,k); return 0;

}

} if(b>c) { } if(b>d) { } if(c>d) { }

printf(\四个整数从小到大排列为:%d,%d,%d,%d\\n\

t=c;c=d;d=t;//c第三,从而d最大 t=b;b=d;d=t;//b次小 t=b;b=c;c=t;

int main() { }

5.某商场举行购物优惠活动(x代表购物款,y代表折扣):

当x<1600时,y=0; 1600<=x<2400,y=5%; 2400<=x<3200,y=10%; 3200<=x<6400.y=15%, x>=6400.y=20%。 int a,b,c,d;

printf(\请输入四个整数\

scanf(\fun(a,b,c,d); return 0;

输入一个顾客的购物款后,显示它应付的款数。 参考代码 #include double fun(double money); double fun(double money) {

}

int t=(int)(money/800); double off; switch(t) { case 0:

case 1:off=0;break; case 2:off=0.05;break; case 3:off=0.1;break; case 4: case 5: case 6:

case 7:off=0.15;break; default:off=0.2; }

return money*(1-off);

int main() { }

六.课外实践

1.判断输入的正整数是否既是5又是7的整倍数,若是,则输出yes;否则输出no。

2.已知银行整存取存款不同的期限的月息利率分别为: 年息利率

3.5% 期限一年 4.4% 期限二年 5.0% 期限三年 5.5% 期限五年

要求输入存钱的本金和期限,求到期能从银行得到的利息和本金的合计。 3.输入某年某月某日,判断这一天是这一年的第几天?

double money;

printf(\请输入购物金额\scanf(\

printf(\购物金额为%5.2f时,实际付款为% 5.2f。\\n\return 0;

七.课外实践参考答案

1.判断输入的正整数是否既是5又是7的整倍数,若是,则输出yes;否则输出no。

参考代码 #include void fun(int n); void fun(int n) { } int main() { }

2.已知银行整存取存款不同的期限的月息利率分别为:

年息利率

3.5% 期限一年

4.4% 期限二年 5.0% 期限三年 5.5% 期限五年

要求输入存钱的本金和期限,求到期能从银行得到的利息和本金的合计。 参考代码 #include

double bank(double money,int year); double bank(double money,int year) {

int n;

printf(\请输入一个正整数:\scanf(\fun(n); return 0;

if(n%7==0&&n%5==0)

printf(\printf(\else

}

double deposit; double rate; switch(year) {

case 1:rate=3.5;break; case 2:rate=4.4;break; case 4:rate=5.0;break; case 5:rate=5.5;break; }

deposit=money+money*year*rate/100; return deposit;

int main() { }

3.输入某年某月某日,判断这一天是这一年的第几天? 参考代码 #include

int fun(int year,int month,int day); int fun(int year,int month,int day) {

int days=day;//year年中的第几天,返回值 switch(month) {

case 1:days+=0;break; case 2:days+=31;break;

case 3:days+=59;break;//2月份先按照28天计算 int year; double money; double sum;

printf(\请输入存入的钱数和期限(年:1,2,4,5)\scanf(\sum=bank(money,year);

printf(\最终的本金和利息的总计为:%lf\return 0;

}

case 4:days+=90;break; case 5:days+=120;break; case 6:days+=151;break; case 7:days+=181;break; case 8:days+=212;break; case 9:days+=243;break; case 10:days+=273;break; case 11:days+=304;break; case 12:days+=334;break; }

if((year@0==0||year%4==0&&year0!=0)&&month>2)//要判别该年

days+=1;

份year是否是闰年,并且month是否在2月之后,如果是2月应该有29天

return days;

int main() { }

int year,month,day;//年 月 日 int days;//此年的第几天

printf(\请输入相应的年 月 日:\scanf(\days=fun(year,month,day);

printf(\年%d月%d日是该年度的第%d天。\\n\return 0;

本文来源:https://www.bwwdw.com/article/wzph.html

Top