《C语言基础篇-4》

今天,顶针为大家带来c语言中比较重要的一部分,前面的代码大多数都是顺序结构,其实c语言中有三大结构——顺序,分支,循环。

今天给大家带来的是即有意思,又重要的循环部分。

一.循环的定义和三要素

循环的定义:将相同功能的代码重复多次。

循环的三要素:1.循环条件 2.循环体 3.更新循环变量

二.循环的分类

while 循环   for循环    do-while循环

1.while循环:

while(循环条件)
{
    循环体;
    更新循环变量;
}
*1.break 用在循环中是用来终止循环的,当满足某个条件时,循环终止。
*2. continue 用在循环中是用来结束本次循环,后面的循环还会继续执行。
分析代码 <1>
1 getchar(); 操作步骤: 1. 取走 stdin 缓冲区的字符;若没有,等待从键盘输入 ( abc\n)
2. 取走第一 个字符的对应的ASCII 码,将其他字符对应的 ASCII 码存进 stdin 缓冲区中
2 ch=getchar();
1. 取走 stdin 缓冲区的字符;若没有,等待从键盘输入 ;
2. 将第一个字符对应的 ASCII 码 存进变量ch 中,其他的存进 stdin 缓冲区
#include <stdio.h>
int main() {
    int ch = 0;
    while ((ch = getchar()) != EOF) {
    putchar(ch);
    }
    return 0;
}

循环中可以嵌套多个或多重循环。

2. for循环 

1.语法:
for(循环变量初始化;循环条件;循环变量更新){
        循环体;
}
2 break continue for 循环中的使用
for 循环中也只可以使用 break continue, 它们的意义和在 while 循环中一样。

3.do-while循环

do-while 的语法:
do{
       循环体    
}(循环条件)
do-while 循环的特点 :循环至少执行一次,使用的场景有限。
知识点:
C 语言随机数生成,使用 rand srand 函数
在实际编程中,我们经常需要生成随机数,例如,扑克牌游戏中随机发牌。
C 语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:
有时候我们需要一组随机数(多个随机数),该怎么生成呢?很容易想到的一种解决方案是使用循环, 运行结果非常奇怪,每次循环我们都重新播种了呀,为什么生成的随机数都一样呢?
这是因为, for 循环 运行速度非常快,在一秒之内就运行完成了,而 time() 函数得到的时间只能精确到 秒,所以每次循环得到的时间都是一样的,这样一来,种子也就是一样的,随机数也就一样了。
那么,该如何解决呢?难道就没有办法连续生成随机数了
吗?当然有 把srand() 放在循环外,就能产生不同的不同的序列
利用循环实现密码登录:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
	char password[256]={0};//定义一个字符串,用来输入密码,比较密码
	int count=1;//计数,从一开始每循环一次代表已经输入一次密码,count就得更新
	while(count<=3){//使用while循环,条件代表循环最多进行三次
		printf("您还有%d次机会\n",3-count+1);//提醒用户剩余次数
		printf("请输入您的密码:\n");//提醒从键盘上输入密码
		scanf("%s",password);
		if(strcmp("20031202", password)==0){//使用if-else分支判断密码,使用strcmp判断输入密码是否对
			printf("登陆成功!\n");
			break;//若输入的与20031202相减等于0,正确,提示用户登陆成功,使用break跳出循环
		}else{
			printf("密码错误,请重试!\n");//若相减不等于0,提示输入错误
		}
		count++;//然后进行循环变量count的更新
	}
	if(count>3){//使用if单分支判断,若count大于3,即输入三次都错,提示用户登陆失败
		printf("登陆失败!\n");
	}
}
99乘法表:
#include <stdio.h>
#include <stdlib.h>

int main(){
	for(int row=1;row<=9;row++)//使用三个for循环,即for循环中嵌套2个for循环(多个循环)
	{//第一个for循环用来打印9行,即99乘法表的九行,定义row为行,循环条件表示打九行,更新循环变量row代表每打一个回车更新一次进入下一次循环
      		for(int gap=1;gap<=9-row;gap++)//多个循环中的第一个用来打印空格,每行打印的空格数=9减去行数
                {                               //每打印一个制表符更新一次变量
                        printf("\t");//一个制表符
                }

		for(int column=1;column<=row;column++)//多个循环中的第一个用来打印乘法,每行打印的乘法数=行数
		{				 //每打印一个乘法更新一次变量
			printf("%d*%d=%-4d",column,row,column*row);//打印的乘法表等于列数*行数=结果
		}
		printf("\n");//打印回车
	}	
}
#include <stdio.h>
#include <stdlib.h>

int main(){     //一共使用6个for循环,俩个大的for循环中分别嵌套多个循环(俩个循环,并列着),然后使用俩个if完善,实现图形
	for(int i=1;i<=5;i++)//外层for循环打5个换行,循环条件是i<=5,i++
	{
		for(int j=1;j<=5-i;j++)//并列的第一个for循环先打印左上角的三角空格区域,循环五次
		{
			printf(" ");//每循环一次打相应数量的空格,每行分别打5-i个空格
		}
		printf("*");//前五次循环每行打一个*
		for(int k=1;k<=2*i-3;k++)//并列的第二个for循环打中间三角区域的空格,循环五次
                {
                        printf(" ");//每次打2*i-3个空格,也就是前5行每行打相应的空格,形成中间上半部分的三角形空格
                }
		if(i>=2){//然后再打最右边的*,因为上面已经打过最上面的*,所以使用单分支判断,当第二次循环开始时才打*
		printf("*");
		}
		printf("\n");//对应第一个大的for,每循环一次,打一个换行,一共打五,就打5行
	}
	for(int l=1;l<=4;l++)//第二个外层循环打四个换行,形成下半部分的四行
	{	
		for(int m=1;m<=l;m++)//并列的第一个for循环先打印左上角的三角空格区域,循环四次
		{	
			printf(" ");//每循环一次打相应数量的空格,每行分别打l个空格
		}
		printf("*");//后四次循环每行打一个*
		for(int n=3;n>=2*l-3;n--)//并列的第二个for循环打中间三角区域的空格,循环四次
		{
			printf(" ");//每次打2*l-3个空格,也就是后4行每行打相应的空格,形成中间下半部分的三角形空格
		}
		if(l<=3){//然后再打最右边的*,因为上面已经打过最下面的*,所以使用单分支判断,第四次循环开始不打*
		printf("*");
		}
		printf("\n");//对应第二个大的for,每循环一次,打一个换行,一共打四个,打四行
	}
	return 0;
}

空菱形的打印:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值