头歌C语言实验 辅助练习3:基本选择结构

第1关:判定奇偶性

问题描述
判定一个正整数n的奇偶性。

输入
一个正整数n。

输出
如果n是奇数,输出odd。
如果n是偶数,输出even。

输入示例
5

输出示例
odd

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
if(n%2==0){
printf("even");
}else printf("odd");
return 0;
}

第2关:正负判定

问题描述
判定一个整数n的正负性。

输入
一个整数n。

输出
如果n为正数,输出positive。
如果n为0,输出zero。
如果n为负数,输出negative。

输入示例
1

输出示例
positive

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
if(n>0)
printf("positive");
else if(n==0)
printf("zero");
else
printf("negative");
return 0;
}

第3关:分段函数求值

设有如下所示的分段函数:

请编写程序,根据输入的实数x,计算并输出分段函数y的值。

输入
一个浮点数x,输入数据保证0≤x<20。

输出
根据x计算出的y的值,结果保留3位小数。

输入示例
1

输出示例
1.500

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
int main(){
double x,y=0;
scanf("%lf",&x);
if(x>=0&&x<5){
y=-x+5.0/2;
}else if(x>=5&&x<10){
y=2-3.0/2*pow(x-3,2);
}else if(x>=10&&x<20){
y=x/2-3.0/2;
}
printf("%.3lf",y);
return 0;
}

第4关:平年和闰年

问题描述
平年和闰年一年的总天数是不同的。
百度上介绍,判定公历闰年应遵循的一般规律为:四年一闰,百年不闰,四百年再闰。
一般来说,只要一年的公历年份能够满足下面两个条件当中的任意一个即可判断为闰年:

能被4整除并且不能被100整除的是闰年;
能被400整除也是闰年。
现在请你判断某年是否是闰年并回答这一年总共有多少天。
输入
一个正整数,表示公历年份。

输出
输出只有一行。首先输出Y或N表示这一年是否是闰年,然后输出这一年的总天数,中间用一个空格分开。

输入示例
2100

输出示例
N 365

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main(){
int year;
scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)
printf("Y 366");
else
printf("N 365");
return 0;
}

第5关:3、5和7 I

问题描述
给定一个正整数n,统计n能被3、5和7中的几个数分别整除。

输入
一个正整数n。

输出
一个非负整数,表示在3、5和7中能分别整除n的数的个数。

输入示例
63

输出示例
2

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
int main(){
int n,i=0;
scanf("%d",&n);
if(n%3==0)
i++;
if(n%5==0)
i++;
if(n%7==0)
i++;
printf("%d",i);
return 0;
}

第6关:求解一元二次方程 II

问题描述
假设有形如:ax2+bx+c=0的一元二次方程,其中a,b,c是任意实数且满足a≠0,请编写一段程序,根据用户输入的a,b,c的值,计算并输出一元二次方程的根。

输入
三个用空格分开的实数,分别表示一元二次方程中的三个系数。
输入数据保证满足条件a≠0。

输出
输出只有一行,即方程的根。
若方程有两个相同的实根,则输出:x1=x2=…;
若方程有两个不相同的实根,则输出:x1=…;x2=…,其中x1>x2;
若方程没有实根,则输出:x1=实部+虚部i;x2=实部-虚部i,其中,实部为0时不能省略,并且必须保证x1的虚部为非负数。
所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。

输入示例
1.0 2.0 8.0

输出示例
x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<stdio.h>
#include<math.h>
#include<complex.h>
int main(){
float a,b,c,x1,x2,delta,Z=0;
float complex xi1,xi2;
scanf("%f %f %f",&a,&b,&c);
delta=b*b-4*a*c;
if(delta==0){
x1=-b/(2*a);
printf("x1=x2=%.5f",x1);
}
else if(delta>0){
x1=-b/(2*a)+fabs(sqrt(delta)/(2*a));
x2=-b/(2*a)-fabs(sqrt(delta)/(2*a));
printf("x1=%.5f;x2=%.5f",x1,x2);
}else{
xi1=-b/(2*a)+fabs(sqrt(-delta)/(2*a))*I;
xi2=-b/(2*a)-fabs(sqrt(-delta)/(2*a))*I;
if(!b){
printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi",Z,cimag(xi1),Z,-cimag(xi2));
}else
printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi",creal(xi1),cimag(xi1),creal(xi2),-cimag(xi2));
}
return 0;
}