首页 > 其他分享 >分支和循环(2)

分支和循环(2)

时间:2022-11-13 23:32:16浏览次数:53  
标签:main return int while 循环 printf include 分支

#include<stdio.h>
int main()
{
//EOF -end of file 文件结束标志
int ch = 0;
while((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}


scanf和getchar都是输入函数

工作原理:在读字符串时先去检测输入缓冲区,如果输入缓冲区里没有数据,会闪动光标等待你输入一些数据

如果有东西,会从输入缓冲区拿走想要的一部分

#include<stdio.h>
int main()
{
int ch = 0;
int ret = 0;
char password[20] = {0};
printf("请输入密码:>");
scanf("%s",password); //输入密码,并存放在password数组中
//缓冲区还剩一个‘\n’
//要把‘\n’读取走
while ((ch = getchar()) != '\n')
{
;
}
printf("请确认(Y/N):>");
ret = getchar(); //Y/N
if(ret == "Y")
{
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}

只输入数字字符

#include<stdio.h>
int main()
{
int ch = 0;
while((ch = getchar()) != EOF)
{
if(ch < '0' || ch > '9')
continue;
putchar(ch);
}
return 0;
}


循环语句常用排序

1.for语句

2.while语句

3.do...while语句


for循环

for循环语法

for(表达式1;表达式2;表达式3)
循环语句;

表达式1为初始化部分,用于初始化循环变量。

表达式2为条件判断部分,用于判断循环体什么时候终止。

表达式3为调整部分,用于循环条件的调整。


while循环和for循环的对比

//while循环
#include <stdio.h>
int main()
{
int i = 0; //初始化
//初始化
//.....


while(i<10) //判断
{
//....
i++; //调整
}
return 0;
}
//for循环
//在屏幕上打印1~10
#include <stdio.h>
int main()
{
int i = 0;
// 初始化 判断 调整
for(i = 1;i<=10;i++)
{
printf("%d",i);
}
return 0;
}


break,continue

for循环中的break和continue,他们的意义和在while循环中是一样的

//break
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1;i <= 10;i++)
{
if(5 == i)
break;
printf("%d ",i); //1 2 3 4
}
return 0;
}
//continue
#include <stdio.h>
int main()
{
int i = 0;
for(i = 1;i <= 10;i++)
{
if(5 == i)
continue;
printf("%d ",i); //1 2 3 4 6 7 8 9 10
}
return 0;
}

while循环中的continue和for循环中的continue对比

//while循环
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(5 == i)
continue;
printf("%d ",i);//1 2 3 4 死循环
i++;
}
return 0;
}


for语句的循环控制变量 一些建议:

1.不可在for循环体内修改循环变量,防止for循环失去控制

2.建议for语句的循环控制变量的取值采用“前闭后开”写法

//1.
#include <stdio.h>
int main()
{
int i = 0;
for(i = 0;i<10;i++)
{
if(i = 5)
printf("haha\n");
printf("hehe\n");
}
return 0;
}
//2.
#include <stdio.h>
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int i = 0;
// for(i = 0;i<=9;i++) 前闭后闭区间
for(i = 0;i<10;i++) //前闭后开区间
{
printf("%d ",arr[i]);
}
return 0;
}


一些for循环的变种

//变种1
#include <stdio.h>
int main()
{
for(;;)
{
printf("hehe\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for(;i<10;i++)
{
for(;j<10;j++)
{
printf("hehe\n"); //打印10个hehe
}
}
return 0;
}

1.for循环的初始化,判断,调整都可以省略,但是:for循环的判断部分如果被省略,那判断条件​就是:恒为真

2.如果不是非常熟练,建议大家不要随便省略

//变种2
#include <stdio.h>
int main()
{
int x,y;
for(x = 0, y = 0;x<2 && y<5;x++,y++)
{
printf("hehe\n"); //打印2个hehe
}
return 0;
}


一道笔试题 请问循环要循环多少次

#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for(i = 0,k = 0;k = 0;i++,k++) //=为赋值符号 k=0为假不进入循环
k++;
return 0;
}


do...while循环

语法

do
循环语句;
while(表达式);


在屏幕上打印1~10

#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ",i);
i++;
}
while(i<=10);
return 0;
}


break

#include <stdio.h>
int main()
{
int i = 1;
do
{
if(5 ==i)
break;
printf("%d ",i);//打印1,2,3,4
i++;
}
while(i<=10);
return 0;
}


continue

#include <stdio.h>
int main()
{
int i = 1;
do
{
if(5 == i)
continue;
printf("%d ",i); //1 2 3 4 死循环
i++;
}
while(i<=10);
return 0;
}


练习

计算n的阶乘

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


计算1!+2!+3!+......+10!(计算1的阶乘+2的阶乘.....)

//法1
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1
int sum = 0;
for(n = 1;n<=10;n++)
{
ret = 1;
for(i = 1;i<=n;i++)
{
ret = ret*i;
}
sum = sum + ret;
}
printf("sum = %d\n",sum);
return 0;
}
//法2
#include <stdio.h>
int main()
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
for(n =1;n<=10;n++)
{
ret = ret * n;
sum = sum + ret;
}
printf("sum = %d\n",sum);
return 0;
}


写一个代码,在arr数组中(有序的)中找到7

//法1
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k =7;
int i = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
for(i = 0;i<sz;i++)
{
if(k == arr[i])
{
printf("找到了,下标是:%d\n",i);
break;
}
}
if (i == sz)
printf("找不到\n");
return 0
}
//法2  折半查找算法 二分查找算法
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 7;
int sz = sizeof(arr)/sizeof(arr[0]); //计算元素个数
int left = 0;
int right = sz-1;
while(left<=right)
{
int mid = (left+right)/2;
if(arr[mid]>k)
{
right = mid-1;
}
else if(arr[mid]<k)
{
left = mid+1;
}
else
{
printf("找到了,下标是:%d\n",mid);
break;
}
}
if(left>right)
{
printf("找不到\n");
}
return 0;
}


编写代码,演示多个字符从两端移动,向中间汇聚“welcome to bit !!!!!!”

#include <stdio.h>
#incldue <string.h>
#include <windows.h>
#include <stdlib.h>
int main()
{
char arr1[] = "welcome to bit !!!!!!";
char arr2[] = "#####################";
int left = 0;
//int right = sizeof(arr)/sizeof(arr[0]) - 2;// 字符串末尾有一个'\n'
int right = strlen(arr1) -1;
while(left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
//休息1s
Sleep(1000); //windows.h
system("cls"); //执行系统命令的一个函数 —cls 清空屏幕 stdlib.h
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<stdlib.h>
void delay(unsigned int ms)
{
unsigned int j, k;
for (j = 0; j < ms; j++)
for (k = 0; k < 125; k++)
;
}
int main()
{
char arr1[] = "welcome to bit!!!!!!";
char arr2[] = "####################";
int left = 0;
//int right = sizeof(arr1) / sizeof(arr1[0]) - 2;
int right = strlen(arr1) - 1;

while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
//休息1s
delay(20000);
system("cls"); //执行系统命令的一个函数 -cls -清空屏幕 stdlib.h
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}


编写代码实现模拟用户登录情景,并且只能登陆三次(只允许输入三次密码,如果密码正确则提示登陆成功,如果三次均输入错误,则退出程序)

#include <stdio.h>
#include <sting.h>
int main()
{
int i = 0;
char password[20] = {0};
for(i = 0;i<3;i++)
{
printf("请输入密码:>");
scanf("%s",password);
if(strcmp(password,"123456") == 0) //==不能用来比较两个字符串是否相等,应该使用一个库函数-strcmp
{
printf("登陆成功\n");
break;
}
else
{
printf("输入错误\n");
}
}
if(i == 3)
printf("三次密码均错误,退出程序\n");
return 0;
}


标签:main,return,int,while,循环,printf,include,分支
From: https://blog.51cto.com/u_15848198/5848004

相关文章

  • 循环队列顺序表实现
    #include<stdlib.h>#include<stdio.h>#include<stdbool.h>#include<math.h>/**循环队列的顺序存储实现队列头在队列第一个元素前不指向元素队列尾是指向队......
  • 循环更新
    第三节循环语句1.基础知识:whiledowhileforif是判断一次执行后面的语句,while是每次成立执行循环语句中的语句if(a%2)与if(a%2==0)i区别f(a%2)是对A%2的结果......
  • JavaScript中的几种for循环效率对比
    JavaScript(下文简称JS)中最常用的数据结构有两种,即数组(下文用Array表示)和对象(下文用Object表示)。须要注意的是,本质上,数组也是一种对象,只不过是特殊的对象。遍历Array和Obje......
  • python的while循环
    语法while条件:#条件成立,循环执行的代码一#条件成立,循环执行的代码二#条件成立,循环执行的代码三#条件成立,循环执行的代码四#.......如......
  • python的for循环
    语法foriinxxx#循环体else:#循环正常结束执行执行else中的代码#循环通过break强制结束则不会执行else用法1、遍历列表li=[34,66,33,7......
  • 分别应用while语句、do-while语句和for语句, 求出100以内所有奇数的和。分析三种循环语
    //#include<stdio.h>//intmain()//{// inta,b,c;// b=1;a=1;c=0;// while(a<100)// {// b=a+b;// printf("%d",a); // c=a+c;// a=a+2;// }// prin......
  • 第七章 用户输入和while循环
    7.1函数input()的工作原理函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,python将其存储在一个变量中。7.1.1使用int()来获取数值输入将字符转变为......
  • 分支语句/选择语句switch
    switch语句switch(整型表达式){ 语句项;}语句项//是一些case语句//如下:case整型常量表达式;语句;break语句把语句划分为不同部分default语句switch......
  • Git分支
        几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新功能,以免影响开发主线。 1.......
  • 循环
    ##第三节循环语句###1.基础知识:whiledowhileforif是判断一次执行后面的语句,while是每次成立执行循环语句中的语句~~~c++inti=0;if(i<10){cout<<i<endl;i++......