●分支结构
●二分支:if-else语句
●多分支:else if、嵌套的if-else、switch
else-if 语句是最常用的实现多分支(多路选择)的方法
if (表达式1)
语句1;
else if (表达式2)
语句2;
……
else if (表达式n-1)
语句n-1;
else
语句n;
Ps:这里标注一下我最近刚学的停止字符
#include <stdio.h>
int main(void)
{
char a;
while(scanf("%c",&a)!=EOF)
//while((c=getchar())!=EOF)
{
putchar(a);
}
putchar(‘\n’);
printf(“the end\n”);
}
连续输入字符,直到输入ctrl+z停止
比如说这道简单的题
我们这样讲
这里我只想说一点
多层缩进的书写格式使程序层次分明,亲测有效
强行再插一条
这一点可以用接下来要讲的 switch case语句来解决
而switch case语句呢,则是一种特殊的分支结构
switch (表达式) {
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
…
case 常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
point:
1 switch结构中只能根据表达式的值进行选择入口
ps:case x:仅仅是一个入口.
2:switch结构中不能漏过初始化,要不然会出现警告.
3:主要break的增添
举个简单的栗子🌰
#include <stdio.h>
int main (void)
{ int choice, i; double price;
printf ("[1] Select crisps \n");
printf ("[2] Select popcorn \n");
printf ("[3] Select chocolate \n");
printf ("[4] Select cola \n");
printf ("[0] exit \n");
for( i = 1; i <= 5; i++) {
printf ("Enter choice: ");
scanf ("%d", &choice);
if (choice == 0) break;
switch (choice) {
case 1: price = 3.0; break;
case 2: price = 2.5; break;
case 3: price = 4.0; break;
case 4: price = 3.5; break;
default: price = 0.0; break;
}
printf ("price = %0.1f\n", price);
}
printf ("Thanks \n");
}
👍这就很nice!
当然上述两种表达都是可以用的比如说这道题
用个小小的if else语句
#include<stdio.h>
int main (void)
{
int a, b, c, d, e, f, g;
scanf("%d %d %d", &a, &b, &c);
e=a%4;
f=a%100;
g=a%400;
if((e==0 && f!=0)||(g==0))
{
if(b==1)
{
d=31-c+29+31+30+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==2)
{
d=29-c+31+30+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==3)
{
d=31-c+30+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if (b==4)
{
d=30-c+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==5)
{
d=31-c+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==6)
{
d=30-c+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==7)
{
d=31-c+31+30+31+30+31;
printf("%d", d);
}
else if(b==8)
{
d=31-c+30+31+30+31;
printf("%d", d);
}
else if(b==9)
{
d=30-c+31+30+31;
printf("%d", d);
}
else if(b==10)
{
d=31-c+30+31;
printf("%d", d);
}
else if(b==11)
{
d=30-c+31;
printf("%d", d);
}
else if(b==12)
{
d=31-c;
printf("%d", d);
}
}
else
{
if(b==1)
{
d=31-c+28+31+30+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==2)
{
d=28-c+31+30+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==3)
{
d=31-c+30+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if (b==4)
{
d=30-c+31+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==5)
{
d=31-c+30+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==6)
{
d=30-c+31+31+30+31+30+31;
printf("%d", d);
}
else if(b==7)
{
d=31-c+31+30+31+30+31;
printf("%d", d);
}
else if(b==8)
{
d=31-c+30+31+30+31;
printf("%d", d);
}
else if(b==9)
{
d=30-c+31+30+31;
printf("%d", d);
}
else if(b==10)
{
d=31-c+30+31;
printf("%d", d);
}
else if(b==11)
{
d=30-c+31;
printf("%d", d);
}
else if(b==12)
{
d=31-c;
printf("%d", d);
}
}
return 0;
}
而我们另一种小小的switch case语句
#include<stdio.h>
int main()
{
int a,b,c,x,y;
scanf("%d%d%d",&a,&b,&c);
if((a%4==0&&a%100!=0)||a%400==0){
switch(b){
case 1:x=29+31*6+30*4,y=31-c;break;
case 2:x=31*6+30*4,y=29-c;break;
case 3:x=31*5+30*4,y=31-c;break;
case 4:x=31*5+30*3,y=30-c;break;
case 5:x=31*4+30*3,y=31-c;break;
case 6:x=31*4+30*2,y=30-c;break;
case 7:x=31*3+30*2,y=31-c;break;
case 8:x=31*2+30*2,y=31-c;break;
case 9:x=31*2+30*1,y=30-c;break;
case 10:x=31*1+30,y=31-c;break;
case 11:x=31,y=30-c;break;
case 12:x=0,y=31-c;break;
}
}else{
switch(b){
case 1:x=28+31*6+30*4,y=31-c;break;
case 2:x=31*6+30*4,y=28-c;break;
case 3:x=31*5+30*4,y=31-c;break;
case 4:x=31*5+30*3,y=30-c;break;
case 5:x=31*4+30*3,y=31-c;break;
case 6:x=31*4+30*2,y=30-c;break;
case 7:x=31*3+30*2,y=31-c;break;
case 8:x=31*2+30*2,y=31-c;break;
case 9:x=31*2+30*1,y=30-c;break;
case 10:x=31*1+30,y=31-c;break;
case 11:x=31,y=30-c;break;
case 12:x=0,y=31-c;break;
}
}
printf("%d",x+y);
return 0;
}
不过于我个人还是比较喜欢if else语句的,我jio得它的逻辑性比较强👍