C语言中由一个;隔开的就是一条语句
IF语句
if语句格式
if (/* 表达式 */)
{
/* 语句 */
}
if (/* 表达式 */)
{
/* 语句1 */
}
else
{
/* 语句2 */
}
多分支如下:(扩展就继续加else if语句)
if (/* 表达式1 */)
{
/* 语句1 */
}
else if (/* 表达式2 */)
{
/* 语句2 */
}
else
{
/* 语句4 */
}
if和else引用多个语句需用{ },else与最近的未匹配的if相匹配
例:判断0~100内的奇数并打印
int main()
{
int a = 0;
while (a<=100)
{
if (a%2 == 1) //a连续除以2余1
{
printf("%d ", a);
}
a++;
}
return 0;
}
SWITCH语句
switch语句是一种分支语句,常用于多分支情况
语法:
switch (/* 表达式 */)
{
case /* 常量表达式 */:
/* 代码 */
break;
default:
/* 代码,当结果不匹配的时候输出,default语句可不写 */
break; //case与default没有书写顺序
}
(switch语句中可加入if语句)
例1:输出星期
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("Monday\n"); //case是入口,break是出口
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("Oh\n");
break;
}
return 0;
}
上面例子中每个case子句中需加入break(但只加最后一个case语句的break程序也没出错/混乱)
例2:打印工作日和休息日
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("Working day\n");
break;
case 6:
case 7:
printf("Off day\n");
default:
printf("Oh\n");
break;
}
return 0;
}
例3:
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++; //m变成3
case 2:
n++; //n变成2
case 3:
switch (n) //swicth语句中可继续套用switch语句
{
case 1:
n++;
case 2: //此时n=2,从此入
m++; //m变成4
n++; //n变成3
break; //跳出内层的switch语句
default:
break;
}
case 4:
m++; //m变成5
break; //跳出外层switch语句
default:
break;
}
printf("n=%d, m=%d\n", n, m);
return 0;
}
WHILE语句
语法:
while (/* 条件 */)
{
/* 代码 */
}
例1:打印出1~10
int main()
{
int a = 1;
while (a<=10)
{
printf("%d\n", a);
a++;
}
return 0;
}
while语句中break可使循环终止
int main()
{
int a = 1;
while (a<=10)
{
if (a == 5)
break;
printf("%d\n", a); //只打印1 2 3 4
a++;
}
return 0;
}
而continue可跳过当前循环进行下一步循环
int main()
{
int a = 1;
while (a<=10)
{
if (a == 5)
continue;
printf("%d\n", a); //只打印1 2 3 4并陷入死循环
a++;
}
return 0;
}
例2:
int main()
{
int ch = 0;
while((ch=getchar()) !=EOF) //EOF=End Of File=-1,当输入不是EOF时,就执行while
{
putchar(ch); //输入Ctrl+Z,ch就会接收到EOF
}
return 0;
}
PS:getchar与putchar
int main()
{
int ch = getchar(); //getchar()可接收一个字符赋给ch
putchar(ch); //等于printf("%c\n", ch)
return 0;
}
例1:
int main()
{
int a = 0;
char password[10] = {0};
printf("Please enter password\n");
scanf("%s", password); /* scanf和getchar为输入函数,从输入缓冲区中获取 */
/* 若想代码成功需在此加入 getchar(); 可消除掉\n */
printf("Please confirm(Y/N):>");
a = getchar(); /* 输完密码后回车时,密码被password接收,而回车是\n,被a接收 */
if (a=='Y')
{
printf("Succeeded");
}
else
{
printf("Failed");
}
return 0;
}
输入密码时输入了空格还会出错,改良如下:
int main()
{
int a = 0;
int b = 0;
char password[10] = {0};
printf("Please enter password\n");
scanf("%s", password);
while ((b=getchar()) !='\n')
{
;
}
printf("Please confirm(Y/N):>");
a = getchar();
if (a=='Y')
{
printf("Succeeded");
}
else
{
printf("Failed");
}
return 0;
}
例2
int main()
{
int a = 0;
while ((a=getchar()) !=EOF)
{
if (a<'0' || a>'9')
{
continue;
}
putchar(a);
}
return 0;
}