c语言基础----控制语句

3. 控制语句

3.1. if语句

  1. 细节:省略大括号时,if语句只会认为第一条时if语句里的
int a = 10;
//这里的if判断没用{}大括号括起来,当判断为false时只会认定第一条是if的语句
if (a>10)
	printf("我来了\n");
printf("我是第二次");
return 0;
  1. if else if elseif else语句的使用
		//-----------------------if  else if else  if else  else语句-----------
		//通过控制台输入的分数来判断学生成绩的等级,分abcd四个等级
			printf("请输入您要查找等级的分数\n");
			int score ;
    	//scanf_s方法的使用时控制台输入
			scanf_s("%d", &score);
			if (score >100 || score <0)
			{
				printf("您输入的分数有误,请重新输入");
			}
			else if (score>=90)
			{
				printf("您查询的成绩为a");
			} 
			else if (score >= 80)
			{
				printf("您查询的成绩为b");
			}
			else if (score >= 60)
			{
				printf("您查询的成绩为c");
			}
			else 
			{
				printf("您查询的成绩为d");
			}
  1. for循环控制语句
    1. break关键字在for循环中的使用,作用时跳出整个循环
    2. continue关键字只会眺出i=5这次循环
int i;
for ( i = 0; i < 50; i++)
{
	if (i==5)
	{
		printf("我是5,通过continue我下面的的都不会再走了,我会直接去到i=6再次循环");
		continue;
	}
	printf("i=%d\n", i);
}
			return 0;
//----------------------暑促结果--------------------
i=0
i=1
i=2
i=3
i=4
我是5,通过continue我下面的的都不会再走了,我会直接去到i=6再次循环i=6
i=7
i=8
i=9
    1. for循环整个的过程
	//--------------------------for循环语句---------------------------------------
int num;
int i;
//for循环的执行过程
//第一次执行,通过表达式1给i 赋值,这里注意表达式一只执行一次,以后都不执行了.然后通过表达式2来判断是否需要执行下去,表达式2结果是bool类型,
//如果表达式2为真将执行{}大括号里的代码,如果为假则直接跳出for循环
//二:经过了一次循环,又来到了for ( i = 0; i < 100; i++)这里,接下来的顺序是先是表达式3将i自增+1
//,变成2,接下来就会走到表达式2,来进行判断是否为真为假,为真执行{}大括号的代码,为假跳出for循环
//三:和二一样的过程
//上面我们可以看到是先加一,在进行判断的,所以我们可以想到当i=99执行完之后,来到了for ( i = 0; i < 100; i++)
//就先会执行表达式3,+1,加一之后就变成100了,然后来到表达式2,代码是这样的i<100 ==>相当于100<100
//这时表达式为假,就会跳出for循环了,到这整个循环就结束了
//for (表达式一, 表达式二 ,表达式三){
	//在大括号里的面的叫循环体
//}
for ( i = 0; i < 100; i++)
{
	printf("现在i === %d\n", i);

}
			return 0;
    1. 练习题---九九乘法表(使用嵌套for循环)
int a;
int b;
for (a = 1; a <= 9; a++)
{
	for(b = 1; b <= a; b++)//注意这里,b的循环大小是由外循环a来决定的
	{
		printf("%d * %d = %d    ", b, a, b * a);
	}
	printf("\n");
}
  1. while循环(和平常的循环差不多,就是一个判断表达式)
  2. do..while循环:先执行do里面的代码,然后到while中判断,然后在执行do里面的代码.不管如何do都会执行
//-------------do while就循环一百的和-----------------
int i = 1;
int num = 0;\
//do...while语句限制性一块代码块,后判断,while语句则是先判断在执行while中的代码块
do
{
	num = num + i;
	i++;
} while (i <= 100);
printf("num = %d", num);
			return 0;
  1. goto: 作用就是代码执行跳转到指定地方执行,被跳过的中间部分不会被执行(在程序中少使用goto会导致你代码逻辑的混乱)
    1. goto的使用
//-----------------------goto语句的使用---------------------------------------
printf("我是11111111111111111111\n");
printf("我是22222222222222222\n")	  ;
goto tmp;//注意这里会直接眺到输出666666666666,中间跳过的345不会执行
printf("我是33333333333333\n")		;
printf("我是4444444444444444444\n");
printf("我是555555555555555\n")		;
tmp :
printf("我是66666666666666\n")		;
printf("我是777777777777777777\n")	;
return 0; 
//输出结果
我是11111111111111111111
我是22222222222222222
我是66666666666666
我是777777777777777777

  1. switch语句
    1. 注意 : switch (表达式)表达式只能是字符型或整型的(shortint int long int)
    2. break的作用:跳出switch语句
	//--------------siwtch--------------------------------------------------------------
	//表达式只能是字符型或整型的(shortint int long int)
	int a = 4;
	switch (a	)
	{
	case 1 :
		printf("i am 1");
		break;
	case 2:
		printf("i am 2");
		break;
	case 3:
		printf("i am 3");
		break;
	case 4:
		printf("i am 4");
		break;
	default:
		printf("我是最后一个  5噢");
		break;
	}

			return 0;

本节练习

练习一:

//-----------------------------求0-999的水仙花数------
//水仙花数:各为的立方相加等于这个数  比如: 153 = 1*1*1 + 5*5*5 + 3*3*3;
int i;
int	num1;
int num2;
int num3;
for (i = 0; i <= 999 ; i++)
{
	//通过求余来区分 个,十, 百,千
	//通过百位对100相除的到百位
	num1 = i / 100;
	//先通过一百求余,得到53,53对10相乘的十位
	num2 = (i % 100) / 10;
	//直接整个于10求余不就得到了个位吗
	num3 = i % 10;
		if (i == (num1 * num1 * num1+num2 * num2 * num2+ num3*num3*num3))
		{
			printf("0-999的水仙花数为= %d\n", i);
		}

}

练习二:(注意scanf_s方法的使用:scanf_s("%d %d %d", &year, &month, &day); 有几个参数就写几个格式符),其实可以不用写的这么复杂的,因为除了闰年多了一天,其他的都是一样的

int year;
int month;
int day;
int totalDay;
printf("请输入您要查询天数的年月日,请使用空格来隔开\n");
scanf_s("%d %d %d", &year, &month, &day);
//先要注意平年和闰年
// 闰年:条件是年份能被四百整除,或年份能被4整除但不能被100整除
if ((year % 400 == 0 && month > 0 && month <= 12) || (year % 4 == 0 && year % 100 != 0 && month > 0 && month <= 12))
{
	switch (month)
	{
		//31:1 3 5 7 8 10 12
	case 1:
		totalDay = day;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 2:
		totalDay = 1*31+day;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 3:
		totalDay = 1 * 31 + day+29;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 4:
		totalDay =2 * 31 + day + 29;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 5:
		totalDay = 2 * 31 + day + 29+30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 6:
		totalDay = 3 * 31 + day + 29 +30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 7:
		totalDay = 3 * 31 + day + 29 +2*30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 8:
		totalDay = 4 * 31 + day + 29 +60;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 9:
		totalDay = 5 * 31 + day + 29 +60;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 10:
		totalDay = 5 * 31 + day + 29 +3*30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 11:
		totalDay = 6 * 31 + day + 29 +3*30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;	
            	case 12:
		totalDay = 6 * 31 + day + 29 +4*30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;	
	default:
		printf("您输入的时间有误,请重新输入");
		break;
	}
}
else //这里是平年的代码
{
	switch (month)
	{
	case 1:
		totalDay = day;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 2:
		totalDay = 1 * 31 + day;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 3:
		totalDay = 1 * 31 + day + 28;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 4:
		totalDay = 2 * 31 + day + 28;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 5:
		totalDay = 2 * 31 + day + 28 + 30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 6:
		totalDay = 3 * 31 + day + 28 + 30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 7:
		totalDay = 3 * 31 + day + 28 + 2 * 30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 8:
		totalDay = 4 * 31 + day + 28 + 60;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 9:
		totalDay = 5 * 31 + day + 28 + 60;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 10:
		totalDay = 5 * 31 + day + 28 + 3 * 30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 11:
		totalDay = 6 * 31 + day + 28 + 3 * 30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	case 12:
		totalDay = 6 * 31 + day + 29 + 4 * 30;
		printf("查询到你输入的日期是今年的第%d天", totalDay);
		break;
	default:
		printf("您输入的时间有误,请重新输入");
		break;
	}
}
return 0;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值