C语言基本程序结构
|------|-------|--------|----------|
| 顺序结构 | | | |
| 选择结构 | if | switch | |
| 循环结构 | while | for | do while |
if语句
注意:if里有两句及以上的要带花括号,例如if(条件){语句}
非0表示真,0表示假
if(1 == 2)
printf("hello\n");
没有结果
输入一个整数,判断是否为奇数
int num = 0;
scanf("%d".&num);
if(num % 2 == 1)
printf("%d为奇数\n",num);
else
printf("%d为偶数\n",num);
嵌套if
int num = 0;
scanf("%d",&num);
if(num == 0)
printf("输入的值是0\n");
else{
if(num > 0)
printf("输入的值是正数\n");
else
printf("输入的值是负数\n");
}
或者简化版嵌套if
int num = 0;
scanf("%d",&num);
if(num == 0)
printf("输入的值是0\n");
else if (num > 0)
printf("输入的值是正数\n");
else
printf("输入的值是负数\n");
练习题
int edge = 0
scanf("%d",&edge);
if(edge < 18)
printf("少年\n");
else if(edge <=44)
printf("青年\n");
else if(edge <=59)
printf("中老年\n");
else if(edge <=89)
printf("老年\n");
else
printf("老寿星\n");
关系操作符
>、<、>=、<=、==、!=
条件操作符
也叫三目操作符。表达式为 exp1 ? exp2 : exp3
用法:使用条件表达式实现找另个数中的较大值
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
int m = (a > b ? a : b);
printf("m = %d\n",m);
逻辑操作符:&&,||,!
逻辑与:&&
两边同时为真时,整个表达式才为真。
如果左边为假那就不用算右边的了,这叫短路
逻辑或:||
两边同时为假时,整个表达式才为假。
如果左边为真的时候,右边就不用算了。
逻辑取反运算符:!
|----|----|
| a | !a |
| 非0 | 0 |
| 0 | 1 |
int flag = 5;
scanf("%d",&flag);
if(!flag) //flag为假那要做什么的事
{
printf("hello\n");
}
练习:
输入一个年份year,判断year是否为闰年
闰年判断规则:
1.能被4整除并且不能被100整除
2.能被400整除
int year = 0;
scanf("%d",&year);
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
printf("%d 是闰年",year);
switch语句
实现分支结构。是一种特殊的if...else结构,用于判断条件有多个结果的情况。
所有的case里面要加break,不然不会跳出结果。有特殊情况也可以不加。
default语句可有可无,用于处理case处理不了的情况。
switch(){
case valuel:statemant;
break;
case vasuel:statemant;
break;
default:statemant;
}
输入任意一个整数值,计算除3以后的余数
int n = 0;
scanf("%d",&n);
switch(n % 3){
case 0:
printf("余数是0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
字符类型也可以用这个语句。
char ch = 0;
scanf("%c",&ch);
switch(ch){
case 'a':
break;
case 'b':
break;
}
练习题:周一到周五输出工作日,周六、日输出休息日
int day = 0;
scanf("%d",&day);
switch(day){
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("请输入1~7以内的数字\n");
break;
while循环
while(表达式)
语句;
练习题:在屏幕上打印1~10的值
int i = 1;
while(i <= 10)
{
printf("%d",i);
i = i + 1;
}
练习题:输入一个正整数,逆序打印这个整数的每一位
例如:输入1234,输出4 3 2 1
%是取余数
int n = 0;
scanf("%d",n);
while(n){
printf("%d",n % 10);
n = n / 10;
}
for循环
初始化部分只被执行一次
注意:中间是封号;
for(表达式1; 表达式2; 表达式3)
{
语句
}
例题:打印1~10的值
int i = 0;
for(i = 1; i <= 10; i++)
{
printf("%d",i);
}
例题:计算1~100之间3的倍数的数字之和
int i = 0;
int sum = 0;
for(i = 1; i <= 100; i++)
{
if(i % 3 == 0)
sum += i;
}
printf("%d\n",sum);
do-while循环(循环体至少被执行一次)
先执行再判断
do{
语句;
}while(表达式);
判断表达式为真再执行第二次
例题:打印1~10的值
int i = 1;
do{
printf("%d",i);
i++;
}while(i<=10);
例题:输入一个正整数,计算这个整数是几位数
int n = 0;
scanf("%d",&n); //123
int count = 0;
do{
count++;
n = n / 10;
}while(n);
printf("%d",count);
break和continue语句
break用于永久的终止循环,跳出循环
continue用于跳过本次循环中continue后的代码。在while和for循环中不一样
例题:打印1 2 3 4 6 7 8 9 10
只用跳过打印5就可以了
int i = 0;
while(i <= 10){
i++;
if(i == 5)
continue;
printf("%d",i);
}
int i = 0;
for(i = 1; i <= 10; i++)
{
if(i == 5)
continue;
printf("%d",i);
}
int i = 1;
do{
i++;
if(i == 5)
continue;
printf("%d",i);
}while(i<=10);