您的位置:首页 > 编程语言 > C语言/C++

[黑马程序员]09[C语言]循环控制语句部分学习笔记总结

2015-04-15 02:03 621 查看
-------
android培训、java培训IOS培训、期待与您交流! ----------

循环控制

1. if-else

//有些题为了迷惑读者,或出现悬空else,
//我们所要遵循的时:else与向上最近的一个if匹配
//应用程序加载器

//注意事项:
//1.空语句
//2.if语句与复合语句
//3.if语句与return语句
//4.if语句的作用域问题
//5.作用域紊乱
//int nn=1;
//if(nn==1) int num;
////这样写代码是会报错的,因为作用域紊乱
//6.if语句与else子句的配对问题

//int main()
////首先要有一个数字,生成一个0-9的随机数
////在表示范围的时候,一般左边取得到,右边取不到[),所以要取0-9的数字的时候,我们取0-10的随机数
//{
// int data;
// //long l = random();
// //随机数是一个伪随机数
// //printf("%ld\n",l);
// //时间种子来生成随机数
// //在Mac上创建随机数,使用函数arc4random_unform
// int i =arc4random_uniform(10);//取不到10
// printf("%d\n",i);
//
// printf("请输入数据:\n");
// scanf("%d",&data);
//
// if (data == i) {
// printf("恭喜你猜对啦!\n");
// }
// else{
// printf("sorry~下次再来吧~\n");
// }
// return 0;
//}

//if-else-if语法:
#include
<stdio.h>

int main(){
int score;
printf("请输入成绩:\n");
scanf("%d",&score);

if (score<=100&&score>=90) {

printf("A\n");
}
else
if (score>=80){

printf("B\n");
}
else
if (score>=70){

printf("C\n");
}
else
if (score>=60){

printf("D\n");
}
else{

printf("E\n");
}
return
0;
}

2. while do-while

两种基本一样的循环控制语句,不同的是do-while会必定执行一次,通常用在一些相匹配的客户需求环境

基本语法:

int main()
{
int i =
1;

int sum =0;

while (i<=100)
{
sum += i;
i++;
}
printf("%d\n",sum);

return
0;
}

代表性具体题

//5.猜数字

//#include <stdio.h>
//#include<stdlib.h>
//
//int main()
//{
// // 1.计算机分配一个随机数:
// int computerNum = arc4random_uniform(10);
// int input =0;
// int i =0;
//
// //2.提示用户开始猜
// printf("请输入您猜的数字:\n");
// scanf("%d",&input);
// if (input == computerNum) {
// printf("胜利\n");
// return 0;
// }else if (input >computerNum){
// printf("大了\n");
// }else{
// printf("小了\n");
// }
//
// //3,循环判断
// //4.如果正确了,直接提示胜利,如果不对,提示重新输入
// while (i<2) {
// printf("请重新输入您猜的数字:\n");
// scanf("%d",&input);
// if (input == computerNum) {
// printf("胜利\n");
// return 0;
// }else if (input >computerNum){
// printf("大了\n");
// }else{
// printf("小了\n");
// }
// i++;
// }
// //5.如果次数到了,循环正常结束,提示错误
// printf("次数已到,失败\n");
//
// return 0;
//}

3. switch

语法很简单,分支选择输出,看实例:

int main()
{
int year,month;
printf("请输入年:\n");
scanf("%d",&year);
printf("请输入月:\n");
scanf("%d",&month);

if(month ==2)
{

if ((year %4 ==0 &&year %100 !=
0) || year %400 ==0)
{

printf("29天\n");
}

else
{

printf("28天\n");
}
}
else
{

switch (month) {

case 4:

case 6:

case 9:

case 11:printf("30天\n");

break;
default:

printf("31天\n");

break;
}
}
return
0;
}

4. for

//for循环的诞生主要是针对需要严格显示循环次数的循环

//for语句的几种写法:
//1>将定义声明放在前面,只在for中初始化:
//int i; for(i =0;i<=10;i++)
好处:在循环以后,可以访问变量i(学完数组后这种写法有用)
//2.为了实现统一,将变量的定义放在for的初始语句中:
//for(int i =0;i <=10;i++){}
好处:第二种方便直观,不需要在for循环外调用i值的一般用

int main()
{
for (int i =0; i <3; i++)
{

printf("\n");
}

for (int i =1; i <=3; i++)
{

printf("\n");
}

for (int i =10; i >3; i--)
{

printf("\n");
}
return
0;
}

//3.在早期计算机,用++i(存1,1,只需要一个内存空间),相比于i++(0,1,需要两个内存空间)可以节约内存

for循环嵌套实例(打印空心菱形)

#include
<stdio.h>
#define N
4

int main()
{
for (int i =0; i <N; ++i) {

//1.打印空格N-1-i个

//for (int k =N -1- i; k>0; --k)

for (int k =
0; k <N-1-i; ++k)
{

printf(" ");
}

//2.打印*2*i+1个

for (int j =0; j <
2*i+1; ++j) {

//打印空金字塔

//1.第一行与最后一个打印"*"

//2.最后一行和第一行不考虑

// if (i ==0||i ==N -1)

// {

// printf("*");

// }else if (j ==0 ||j ==2*i)

// {

// printf("*");

// }else

// {

// printf(" ");

// }

printf(i ==0|| j ==0 ||j ==2*i ?
"*" : " " );
}

//打印换行

printf("\n");
}

for (int i =N-1; i >=0; --i) {

//1.打印空格N-1-i个//i

//for (int k =N -1- i; k>0; --k)

for (int k =
0; k <N -1-i; ++k)
{

printf(" ");
}

//2.打印*2*i+1个 //2*(N-i-1)+1

for (int j =0; j <2*i+1; ++j) {

//打印空金字塔

//1.第一行与最后一个打印"*"

//2.最后一行和第一行不考虑

// if (i ==0||i ==N -1)

// {

// printf("*");
// }else if (j ==0 ||j ==2*i)

// {

// printf("*");

// }else

// {

// printf(" ");

// }

printf(i ==0|| j ==0 ||j ==2*i ?
"*" : " " );
}

//打印换行

printf("\n");
}

return
0;
}

5. break&&continue

//break在switch语句中,表示跳出switch结构,不执行后面的case

//在循环中break有一样的涵义,表示跳出循环(就是结束当前所有的循环,不再执行了)

//break在使用时候常常和if连用,表示在满足某个条件时跳出循环

//比较一下各个循环实现的效果:
//统计字符个数
//1>while
//int main()
//{
// while (1) {
//
// printf("5\n");
//
// break;
// }
// return 0;
//}

//2>do-while

//int main()
//{
// int i =0;
// char ch;
// do {
// scanf("%c",&ch);
// i++;
// } while (ch!='\n');
// printf("%d\n",i -1);
// return 0;
//}
//while和do-while写的是题目的反条件
//当条件多了后有时候容易混淆
//可以这样写:!(e1||e2&&e3||e4)
//也可以这样写:
//while (1){
// if(符合要求) break;
//}

//int main()
//{
// int i =0;
// while (1) {
// if (getchar() =='\n') break;
// i++;
// }
// printf("%d\n",i);
//
// return 0;
//}

//continue语句
//continue表达的意思是结束本次循环,直接进入下一次循环(break是跳出全部)
//案例:打印出1-100中不能被3整除的整数(遇到能被3整除的跳过,不能被3整除的打印)这里适合用continue
int main()
{
int i,j =0;

for (i =1; i <=100; i++) {

if (i%3==0) {

continue;
}

//j
j++;

printf("%d\t",i);

if (j%6 ==0) {

printf("\n");
}

//这里j的引入专门处理行打印问题
}
return
0;
}

int main2()
{
for (int i =0; i <3; ++i) {

for (int j =0; j <2; ++j) {

printf("%d,%d",1,2);
}
}
return
0;
}

//循环套循环查找某个数据是否存在的时候,在最内层里怎么一次性跳出

//1>设置intflag =1;
查找结束时设置
//if (需要条件满足){
//flag = 0;break;
//}

//2>goto语句,直接从当前位置跳出:
//if(需要条件满足){
//goto num;
//}
//...
//num: return 0;

//3>在当前位置改变循环变量位超出循环范围的值,使循环自动跳出
//if (需要条件满足){
//int i=32423423231;(0<i<100)
//}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: