vlambda博客
学习文章列表

c语言程序(5):循环结构程序设计

c语言程序(5):循环结构程序设计

Merry Christmas

c语言程序(5):循环结构程序设计

循环结构程序设计


导读

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

/*

循环结构:

1.基本循环语句

while循环

do_while循环

for循环

1.1 所有的的循环,都是满足条件循环

1.2 while循环

while(条件)

{

循环体;

}

1.3 kbhit() :监测键盘是否按键,

1.4 

do

{

循环体;

}while(count<3);

1.5 for循环

for(表达式1;表达式2;表达式3)

{

语句4;

}

执行过程: 1 2 4 3        2 4 3

表达式1:写循环变量的初始化

表达式2:循环条件

表达式3:循环条件的改变

2.跳转语句

break;

continue;

goto;

3.循环的作用

3.1 处理重复或者具有规律的事情

3.2 递推的数学问题

3.3 控制交互的循环

*/

int main()

{

//描述一个鼓掌的过程

//次数去控制循环的次数

int count = 0;

while (count<3)

{

printf("啪啪啪!\n");

count++;//改变条件变量

}



count = 0;

while (count++<3)

printf("啪啪啪!\n");

//count++;//改变条件变量



do   //无论条件成立与否都会执行一次

{

printf("无论条件成立与否,都会执行一次!\n");

} while (0);



count = 0;

do

{

printf("啪啪啪!\n");

} while (count++ < 3);  //注意点后面一定要有  “ ; ”



printf("for循环:\n");

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

{

printf("啪啪啪!\n");

}

//printf("i=%d\n", i); 未定义的变量的,i作用于只在循环中有效


printf("缺省:\n");

count = 0;

for (; count < 3; )  //表达式可以缺省,但是 “ ; ” 必须写

{

printf("啪啪啪!\n");

count++;

}



////按键暂停功能的实现

//while (1)

//{

//printf("唱歌中!....\n");

//if (_kbhit ( ))    // 包含头文件 #include<conio.h>   ;监视键盘,按键暂停

//{

////system("pause");

//int userKey = _getch();

//if (userKey == ' ')

//{

//while (_getch() != ' ');//第一次按键是空格,只有但第二次用户输入的是空格时,才会暂停。

//}

//}

//}


system("pause");

return 0;

}





#include <stdio.h>

#include <stdlib.h>

/*

break; --->跳出整条复合语句  ,即跳出一条循环

conitnue;

一般都是结合选择结构使用   ,结束当前循环,开启下次循环。

goto:一般描述逻辑尽量不适用,原来操作函数的函数的状态可以用-->在同一个函数中跳转

当标签在上面的的时候, 需要 “ ; ”去做间隔

*/

int main()

{

//1.break跳出switch语句

//2.break 在循环中只跳出一层循环

CODE:

;

int count = 0;

while (1)

{

printf("我在鼓掌!\n");

count++;

if (count == 3)

break;

}

printf("我退出无限循环\n");

goto CODE;



count = 0;

while (1)

{

printf("我在鼓掌!\n");

count++;

if (count == 3)

goto NEXT;

}

NEXT:

printf("我退出无限循环\n");



//count = 0;

//while (1)

//{

//count++;

//if (count == 3)

//continue;//提高效率

//printf("第 %d 次 鼓掌!\n",count);

//

//}

system("pause");

return 0;

}



//循环的基本使用:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

int main()

{

//3.1 处理重复或者具有规律的事情

//3.1.1 处理重复-->逆序操作

printf("逆序操作!\n");

int num = 1234567;

while (num)

{

printf("%d", num % 10);

num /= 10;//递推--->循环  递归--->函数里面

}

printf("\n");



//3.2 递推的数学问题

//求和,求阶乘

int sum = 0;

for (int i = 0; i <= 100; i++)

{

sum += i;

}

printf("求和:%d\n", sum);



//求1/2+1/3+....1/n;

int x;

scanf("%d", &x);

float result = 0;

for (int i = 2; i <= x; i++)  //++运算符只能用在整数里面,小数里面没有++运算符。

{

result += 1.0 / i;  //描述有规律的事物一定要注意类型问题

}

printf("%.4f\n", result);



//3.3 控制交互的循环

while (1)

{

printf("0.退出\n1.xxx\n2.ooo\n");//游戏菜单

int choice = 0;

scanf("%d", &choice);

switch (choice)

{

case 0:

printf("正常退出!");

system("pause");

//exit(0)

break;

case 1:


break;

case 2:


break;

}

if (choice == 0)

{

break;

}

system("pause");

system("cls");

}

printf("循环外面!\n");

system("pause");

return 0;

}



//循环嵌套的含义:

#include <stdio.h>

#include <stdlib.h>

/*

任何循环之间都可以嵌套

代表的是一种类似于乘法的一种规律描述

或者是一种具有表格特性的规律的描述

习惯于用外层循环描述行的变化 内层循环描述列的变化

*/


int main()

{

int count = 10;

for (int i = 0; i < count; i++)//外循环

{

for (int j = 'A'; j < 'A'+10; j++) //内循环

{

printf("%d%C\t", i, j);//i每是一个数,j都要循环10次,所以j共循环100次。

}

printf("\n");

}

/*

行: 列

*****                1      5个*       6-1

****                2    4  6-2

***3    3  6-3

**4    2  6-4

*5    1  6-5

 6-i

*/

for (int i = 1; i <= 5; i++)

{

for (int j = 6 - i; j >= 1; j--)

{

printf("*");

}

printf("\n"); 

}

/*


1111*11    

111***23

11*****35

1******* 47

********* 59

     2*i-1  //简单的方法,套公式

*/

for (int i = 1; i <= 5; i++)

{

for (int j = 5 - i; j >= 1; j--)

{

printf(" ");

}

for (int k = 1 ; k <= 2*i-1 ; k++)

{

printf("*");

}

printf("\n");

}

system("pause");

return 0;

}





#define  _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

int main()

{

//1.求最大公约数和最小公倍数

//9 6 能够同时用两个整数去整除的最大整数就是 :最大公约数

//最大公约数:辗转相除法

//9 6   最大公约数:3

//能被两数整除最小整数:最小公倍数  :18


//数学特性:最小公倍数=两数之积/最大公约数


int firstNum, secondNum,temp;

scanf("%d%d", &firstNum, &secondNum);

int sum = firstNum*secondNum;//准备一点

//1.求最大值:

if (firstNum < secondNum)

{

//交换a和b的值--->杯子倒水

temp = firstNum;

firstNum = secondNum;

secondNum = temp;

}

//前提是对于欧几里得了解(辗转相除法)

while (firstNum%secondNum != 0)

{

/*

1997 / 615 = 3 (余 152)

615 / 152 = 4(余7)

152 / 7 = 21(余5)

7 / 5 = 1 (余2)

5 / 2 = 2 (余1)

2 / 1 = 2 (余0)

*/

temp = secondNum;   //占用存储最小的值,防止改变

secondNum = firstNum%secondNum;  //第二次除数要是余数

firstNum = temp;   //第二的被除数是不是第一次的最小值

}

printf("最大公约数是:%d\n", secondNum);

printf("最小公倍数:%d\n", sum / secondNum);



//求素数: 素数-->除了被1和自身整除的数

int num = 0;

scanf("%d", &num);

//标记法

int  flag = 0;

for (int i = 2; i < num; i++)

{

if (num%i == 0)

{

flag = 1;

break;

}

}

if (1==flag)  //非零表示真,0表示假

{

printf("该数不是素数!\n");

}

else

{

printf("该数是素数!\n");

}


int flag = 0;

if ("来一个人")

{

if ("他上了女厕所")

{

flag = 1;

}

}


if (flag == 1)

{

printf("女的!\n");

}

else

{

printf("汉子!\n");

}



system("pause");

return 0;

}


我知道你在看

c语言程序(5):循环结构程序设计




新浪微博:@秀米XIUMI