今天学第三章,我们直接上题:
#include<stdio.h>
int main(void)
{
int x, y, n, i, number; /*x为奇数,y为偶数*/
x = 0;
y = 0;
printf("Enter n:");
scanf("%d", &n);
printf("Enter %d number:", n);
for(i=1;i<=n;i++){
scanf("%d", &number);
if(number%2!=0){
x++;
}else{
y++;
}
}
printf("x:%d\ny:%d", x, y);
return 0;
}
其实只需要知道奇数在C语言中怎么表示就行了:
number%2!=0
number%2!=0 的意思是 number 除以 2 的余数不等于 0 。
当然题目要求的是正整数,如果要让代码变得完美的话,再加一个 if 筛选一下就行了,也就是长这个样子:
#include<stdio.h>
int main(void)
{
int x, y, n, i, number;
x = 0;
y = 0;
printf("Enter n:");
scanf("%d", &n);
printf("Enter %d number:", n);
for(i=1;i<=n;i++){
scanf("%d", &number);
if(number>=0){
if(number%2!=0){
x++;
}else{
y++;
}
}
}
printf("x:%d\ny:%d", x, y);
return 0;
}
这里补充一句,不是每个 if 后面都非得要 else 。
下一题:
一看到这个题,心里就在想,我TM就学过 if - else 循环,这三个区间怎么弄?就算我们不看后面的内容,其实也能做,直接上当时我打的代码:
#include <stdio.h>
int main(void)
{
double x, y;
printf("Enter x:");
scanf("%lf", &x);
if(x<0){
y = 0;
}else{
if(x<=15){
y = 4*x/3;
}else{
y = 2.5*x-10.5;
}
}
printf("y = f(%.2f) = %.2f\n", x, y);
return 0;
}
但是,把书的后面一页看看的话,你就会发现,这个代码可以看起来更顺眼:
#include <stdio.h>
int main(void)
{
double x, y;
printf("Enter x:");
scanf("%lf", &x);
if(x<0){
y = 0;
}else if(x<=15){
y = 4*x/3;
}else{
y = 2.5*x-10.5;
}
printf("y = f(%.2f) =%.2f\n", x, y);
return 0;
}
这个代码的主要框架也是我们今天要重点学习的东西:else - if 多分支结构。
标准格式为:
if(表达式1)
语句1;
else if(表达式2)
语句2;
.....
else if(表达式n-1)
语句n-1;
else
语句n;
但是我喜欢这样:
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}else if(表达式3){
......
}else if(表达式n-1){
语句n-1;
}else{
语句n;
}
我觉得这样看起来更整齐,更顺眼。
然后,记得测试代码的时候记得每一个分支都要测试,避免漏测。
本章的练习题和前面讲的差不多,就不放出来了。今天就到这里吧,主要是不想打了,嘿嘿。