第一节 判断
1.1 if语句
&& | 与 | 将两个表达式连接成一个。两个表达式必须都为 true,整个表达式才为 true |
|| | 或 | 将两个表达式连接成一个。必须有一个或两个表达式为 true,才能使整个表达式为 true。只要其中有一个为 true,那么另外一个就变得无关紧要 |
! | 非 | 反转一个表达式的“真相”。它使一个表达式从 true 变成了 false,或者从 false 变成了 true |
#include <stdio.h>
int main()
{
int hour1,minute1;
int hour2,minute2;
printf("输入时分\n");
scanf("%d %d",&hour1,&minute1);
printf("输入时分\n");
scanf("%d %d",&hour2,&minute2);
int t1=hour1-hour2;
int t2=minute1-minute2;
if(t2<0&&t1<0){
t2=60+t2;
t1++;
}
printf("相差%d时%d分",t1,t2);
return 0;
}
1.2 if else语句
#include <stdio.h>
int main()
{
int num1,num2;
printf("请输入两个数字 \n");
scanf("%d %d",&num1,&num2);
if(num1>num2){
printf("num1大于num2");
}
else if(num1==num2){
printf("num1等于num2");
}
else{
printf("num1小于num2");
}
return 0;
}
1.3 嵌套 if语句
#include <stdio.h>
int main()
{
int age1,age2;
printf("请输入两人的年龄");
scanf("%d %d",&age1,&age2);
if(age1>age2){
if(abs(age1-age2)<3)
{
printf("两人相差年龄小于3岁");
}
else
{
printf("两人相差年龄大于或等于3岁");
}
}
return 0;
}
C语言中的if后面能跟如a>b>c这样的表达式吗?
回答:在if条件中,意思并不是a大于b大于c,而是如果a大于b ,得一个结果1,否则得一个结0,然后这个1或者0与c比较,如果大于c则结果为1,否则为0
#include <stdio.h>
int main(){
int a,b,c;
int max,min;
printf("请输入三个数字\n");
scanf("%d %d %d",&a,&b,&c);
if(a>b&&a>c){
max=a;
if(b>c){
min=c;
}
else{
min=b;
}
}
else if(b>a&&b>c){
max=b;
if(a>c){
min=c;
}
else{
min=a;
}
}
else{
max=c;
if(a>b){
min=b;
}
else{
min=a;
}
}
printf("最大值是:%d,最小值:%d",max,min);
return 0;
}
1.4 switch语句
switch(expression){
/* switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型
每个 case 后跟一个要比较的值和一个冒号
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行
*/
case constant-expression :
statement(s);
break; /* 可选的 */
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
// default case 可用于在上面所有 case 都不为真时执行一个任务
default : /* 可选的 */
statement(s);
}
case:分支标号,分指标号只是说明Switch内部位置的路标,如:num=12,就会到相应的case:12处,一直执行case里的语句直到遇到break
#include <stdio.h>
int main()
{
int num;
printf("请输入幸运数字");
scanf("%d",&num);
switch(num)
{
case 16:
printf("恭喜您获得一等奖");
break;
case 12:
case 8:
printf("恭喜您获得二等奖");
break;
case 6:
case 10:
case 2:
printf("恭喜您获得三等奖");
break;
default:
printf("很遗憾您没中奖");
}
return 0;
}
1.4 嵌套Switch语句
#include <stdio.h>
int main()
{
int num1=100;
int num2=200;
switch(num1)
{
case 100:
printf("这是外部 switch 的一部分\n");
switch(num2)
{
case 200:
printf("这是内部 switch 的一部分\n");
}
}
return 0;
}
第二节 循环
2.1 while语句
#include <stdio.h>
int main(){
int num,count;
printf("输入要计算位数的数字\n");
scanf("%d",&num);
while(num!=0){
num/=10;
count++;
}
printf("一共%d位数",count);
return 0;
}
#include <stdio.h>
int main(){
int num,count;
printf("输入要计算位数的数字\n");
scanf("%d",&num);
// num/=10 表示 num=num/10
num/=10;
count++;
while(num!=0){
num/=10;
count++;
}
printf("一共%d位数",count);
return 0;
}
2.2 do-while语句
#include <stdio.h>
int main(){
int num,count;
printf("输入要计算位数的数字\n");
scanf("%d",&num);
//如果要判断的数字是0,输出的位数是1,因为最少都要先执行一遍d0里的语句再判断
do
{
num/=10;
count++;
}while(num!=0);
printf("一共%d位数",count);
return 0;
}
2.3 for循环
//从1*n
#include <stdio.h>
int main(){
int n;
printf("输入数字\n");
scanf("%d",&n);
// 从1开始乘
int fact=1;
int i=1;
for (i=2;i<=n;i++){
fact*=i;
}
printf("运算结果:%d",fact);
return 0;
}
//从n*1
#include <stdio.h>
int main(){
int n;
printf("输入数字\n");
scanf("%d",&n);
int i;
for(i=n-1;i>=1;i--){
n*=i;
}
printf("运算结果:%d",n);
}
//另一种写法,i也可以用n代替
#include <stdio.h>
int main(){
int n;
printf("输入数字\n");
scanf("%d",&n);
int fact=1;
for(n=n;n>1;n--){
fact*=n;
}
printf("运算结果:%d",fact);
return 0;
}
2.4 条件运算符