关于switch()语句
一般形式:
switch(整形表达式)
{
case整型常量表达式1:语句1
break;
case整型常量表达式2:语句2
break;
case整型常量表达式3:语句3
break;
……
default:语句
break;
}
break与default的使用
没有写break则会直接跳转至下一个case或语句;
default用于情况都不存在时;
关于if语句
#include<stdio.h>
int main(void)
{
int num=4
if(num=5)//这里的=是赋值,应使用==,并且编译器不会报错
printf("hahaha\n");
}
改进后;
#include<stdio.h>
int main(void)
{
int num=4
if(5==num)//倒着写时,少打一个等号,编译器会报错
printf("hahaha\n");
}
while循环
模型:
while(条件)
{
语句
}
continue用于结束本次循环,它之后的代码不会执行,直接跳转到while语句的判断部分,进行下一次循环入口判断
#include<stdio.h>
int main(void)
{
int i = 0;
while (i < 10)
{
i++;
if (i == 5)
continue;
printf("%d ", i);
}
结果是:1 2 3 4 6 7 8 9 10
换种写法后:
#include<stdio.h>
int main(void)
{
int i = 0;
while (i < 10)
{
if (i == 5)
continue;
printf("%d ", i);
i++;
}
结果是:1 2 3 4 进入死循环
getchar()与putchar()
getchar():接收
putchar():输出
int ch = getchar();//ch=getchar():赋值给ch
putchar(ch);
printf("%c\n", ch);//putchar(ch):打印ch即printf("%c",ch);
另一种情况:
int ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
ctrl+z:结束运行
EOF:end of file(文件结束标志,也指-1)
for 循环
for(表达式1;表达式2;表达式3)
循环语句;
表达式1:为初始化部分,用于初始化循环变量。
表达式2:为条件判断部分,用于判断循环何时终止。
表达式3:为调整部分,用于循环条件的调整。
for循环里也可以出现break与continue
使用break:
#include<stdio.h>
int main(void)
{
int i;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;//跳出直接到return 0;
printf("%d ", i);
}
return 0;
}
结果是:1 2 3 4
使用continue:
#include<stdio.h>
int main(void)
{
int i;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;//回到for()语句
printf("%d ", i);
}
return 0;
}
结果是:1 2 3 4 6 7 8 9 10
注意:
1、不可在for循环体内改变循环变量,防止for循环体失控
2、建议for语句的循环控制变量的取值采用“前闭后开区间写法”
例如:
#include<stdio.h>
int main(void)
{
int i;
for (i = 1; i <= 10; i++)//前后都是闭区间
{
if (i = 5)//此处写错,变量赋予新的值,一直循环,建议反写:if(5==i)
continue;//回到for()语句
printf("%d ", i);
}
return 0;
}
for循环的变种
#include<stdio.h>
int main(void)
{
int i=0;
for (;;)
{
printf("%d ", i);
}
return 0;
}
结果是:无限打印0
1、for循环的初始化、判断、调整都可以省略,但是,for循环的判断部分如果被省略,那么判断条件就是:恒为真
2、如果不是十分熟练,建议不要随便省略代码
#include<stdio.h>
int main(void)
{
int i=0;
int j=0;
for (;i<10;i++)
{
for(;j<10;j++)//由于初始化被省略,所以每一次再进入for循环时,j为最后一次结果10
printf("%d ", j);
}
return 0;
}
结果是:0 1 2 3 4 5 6 7 8 9
订正:
#include<stdio.h>
int main(void)
{
int i = 0;
int j = 0;
for (i=0; i < 10; i++)//此处的i=0可以省略
{
for (j=0; j < 10; j++)
printf("%d ", j);
}
return 0;
}
另一种:
#include<stdio.h>
int main(void)
{
int i=0;
int j=0;
for(i=0,j=0;j=0;i++,j++)//you由于判断式中j=0恒为假,故无法循环
j++;
return 0;
}
订正:
#include<stdio.h>
int main(void)
{
int i = 0;
int j = 0;
for (i = 0, j = 0; j == 0; i++, j++)//此处只循环一次
j++;
return 0;
}
代码的优化:
#include<stdio.h>
int main(void)
{
int i = 1;
int n = 1;
int 阶层 = 1;
int sum = 0;
int j = 0;
printf("请输入一个数字:");
scanf_s("%d", &n);//使用了两个循环,效率不高
for (sum = 1; sum < n+1; sum++)
{
阶层 = 1;
for (i = 1; i < sum + 1; i++)
{
阶层 = 阶层 * i;
}
j=j+阶层;
}
printf("从1到%d的阶层之和=%d\n", n,j);
return 0;
}
优化:
#include<stdio.h>
int main(void)
{
int i = 1;
int n = 1;
int sum = 0;
int j = 0;
printf("请输入一个数字:");
scanf_s("%d", &n);
for (sum = 1; sum < n + 1; sum++)
{
i =i*sum ;
j = j + i;
}
printf("从1到%d的阶层之和=%d\n", n, j);
return 0;
}
do while循环
示例:
#include<stdio.h>
int main(void)
{
int i=1;
int n = 0;
printf("请输入具体整数:");
scanf_s("%d", &n);
printf("从1到%d中的偶数有:\n", n);
do
{
if(i%2==0)
printf("%d ", i);
i++;
}
while (i<=n);
return 0;
}
do之后若需要执行一条以上语句,需要使用花括号