C语言入门(三)控制语句入门、运算符与变量扩展、控制语句扩展

(一)控制语句入门

一.条件判断语句

1.if-else 语句

语法:

if(条件){
   /* 如果表达式为真将执行的语句 */
}else{
   /* 如果表达式为假将执行的语句 */
}

2.if 语句

语法:

if(条件){
   /* 如果表达式为真将执行的语句 */
}

3.if-else,if-else 语句

语法:

if(条件1){
   /* 当条件1为真时执行 */
} else if(条件2){
   /* 当条件2为真时执行 */
} else if(条件3){
   /* 当条件3为真时执行 */
}else{
   /* 当上面条件都不为真时执行 */
}

4.switch-case 语句

语法:

switch(表达式){
    case 整型常量1:
       /* 表达式等于整型常量1执行的代码 */
       break; /* 可选的 */
    case 整型常量2:
       /* 表达式等于整型常量2执行的代码 */
       break; /* 可选的 */
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       /* 表达式不等于上面所有情况执行的代码 */
}

 例:输入某年某月某日,判断这一天是这一年的第几天

#include<stdio.h>
int main()
{
	int year,month,day;
	scanf("%d%d%d",&year,&month,&day);
	int days=0;
	for(int i=1;i<month;i++){
		switch(i){
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
                days += 31;
                break;
		case 4:
		case 6:
		case 9:
		case 11:
                days += 30;
				break;
		case 2:
				if(year%4==0&&year%100!=0||year%400==0){
					days += 29;
				}else{
					days += 28;
				}
				break;
	   }
	}
	days+=day;
	   printf("%d",days);
	}

二.循环语句

1. while 语句

语法:

while(条件){
   /* 如果条件为真将重复执行的语句 */
}

说明:

if与while区别在于if只执行一次,但是while重复执行多次直至条件为假

while语句的代码块通常称为循环体

例:输入一个整数,将其反转。例如:123:321。

#include<stdio.h>
int main{
    int n;
	int m=0;
	scanf("%d",&n);
	while(n!=0){
		m=m*10+n%10;
		n=n/10;
	}
	printf("%d\n",m);
}

2.do-while 语句

语法:

do {
   /* 如果表达式为真将重复执行的语句 */
}while(条件);

例:猜数字

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(){
	srand(time(NULL));//用系统时间作随机数播种
	int num=rand()%100;//将随机数限制在100以内以防太大
	int x;
	printf("%d",num);
	do{
		printf("请输入数字:\n");
		scanf("%d",&x);
		if(x>num){
			printf("太大了\n");
		}else if(x<num){
			printf("太小了\n");
		}
	}while(num!=x);
	printf("猜对啦"); 
} 

 说明:while后有;

while语句与do-while的区别:while先判断后循环,do-while先循环后判断

3.for 语句 

语法:

for (初始值;条件;递增或递减){
   /* 如果条件为真将重复执行的语句 */
}

 说明:for语句与while语句可以相互替换

4.break 语句与 continue 语句

在while和for循环中,break是结束整个循环体;continue是结束单次循环,继续下一次的循环。

(二)运算符与变量

一.逗号表达式 

以右边的表达式为结果

例:

int n = (1+2,2*3,4-5,5/6,6%7);

 输出为:6

二.短路与&& 短路或||

短路与&&:左边表达式是false,右边就不执行,逻辑表达式值为false

int x = 1;
printf("%d\n",1<0 && ++x);
printf("x=%d\n",x);

输出为:0

              x=1 

短路或||:左边表达式是true,右边就不执行,逻辑表达式值为true。 

int x = 1;
printf("%d\n",1>0 || ++x);
printf("x=%d\n",x);

 输出为:1

               x=1

(三)控制语句

一.for嵌套 

例:打印九九乘法表

#include<stdio.h>
int main(){
	int n;
	scanf("%d",&n);
	int m;
	for(int i=0;i<n;i++){
		m=i+1;
		for(int j=0;j<m;j++){
			printf("%dx%d=%d ",i+1,j+1,(i+1)*(j+1));
			if((i+1)*(j+1)<10) printf(" ");
		}
		printf("\n");
	}
	printf("\n");
}

二.switch-case省略break

输出天数: 

int days_of_mouth(int year,int mouth){
    int days;
    switch(mouth){
        case 1:
            days = 31;
            break;
        case 2:
            days = (year%4==0&&year%100||year%400==0)?29:28;
            break;
        case 3:
            days = 31;
            break;
        case 4:
            days = 30;
            break;
        case 5:
            days = 31;
            break;
        case 6:
            days = 30;
            break;
        case 7:
            days = 31;
            break;
        case 8:
            days = 31;
            break;
        case 9:
            days = 30;
            break;
        case 10:
            days = 31;
            break;
        case 11:
            days = 30;
            break;
        case 12:
            days = 31;
            break;
        case 1:
            days = 31;
            break;
        default:
            days = -1; // 表示错误
    }
    return days;
}

 省略break:

int days_of_mouth(int year,int mouth){
    int days;
    switch(mouth){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            days = 31;
            break;
        case 2:
            days = (year%4==0&&year%100||year%400==0)?29:28;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            days = 30;
            break;
        default:
            days = -1; // 表示错误
    }
    return days;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值