c语言学习 条件、循环语句

目录

一、条件语句

if语句:

switch语句

二、循环语句

while 循环

for 循环

三、代码举例

1.密码的确认:输入密码后进行确认,输入Y/N

2、计算1!+2!+3!+4!+。。。+10! 

3、 在一个有序数组中查找具体某个数字(折半查找)

4.输出闰年

5、输出素数

6、演示多个字符从两端移动,向中间汇聚 

7、模拟密码登陆,三次机会

8.猜数字游戏

9、输入三个数,从大到小输出 


一、条件语句

if语句:

if(表达式1) { 语句1;}
else if(表达式2) {语句2;}

else if(表达式n){语句n;}
else{语句n+1;}

注:else 与最近的 if 匹配。

switch语句

switch(表达式){
    case 整型数值1: 语句 1;
    case 整型数值2: 语句 2;
    ......
    case 整型数值n: 语句 n;
    default: 语句 n+1;
}
注:

1、在switch 语句中,有 break 一直循环,直到把所有 case 运行完。

2、break 是C语言中的一个关键字,专门用于跳出 switch 语句。break 只在switch和循环语句中使用, continue 只在循环语句中使用。

3、case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。

4、default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

二、循环语句

while 循环

while (表达式)

   循环语句;

:while循环中,break用来永久终止循环,countinue 的作用是跳过本次循环到continue 后面的代码,直接去判断部分,看是否进入下一次循环。

for 循环

 for (var i = 0; i < 10; i++) { 要执行的代码 }

三、代码举例

1.密码的确认:输入密码后进行确认,输入Y/N

//gerchar putchar while
#include <stdio.h>

int main() {
    char password[20]={0};
    printf("please input password:\n");
    scanf("%s",password);//读取密码字符串
    printf("please Y or N\n");//确认信息
    int tem;
    while ((tem=getchar())!='\n')
    {
        ;
    }    //用来消除缓冲区中多个内容
    int ch=getchar();//重新获得字符串进行判断
    if (ch=='Y')
        printf("success\n");
    else
        printf("failure");
    return 0;
}

2、计算1!+2!+3!+4!+。。。+10! 

//计算1!+2!+3!+4!+。。。+10!

#include <stdio.h>

int main() {

    int ret=1;
    int sum=0;
    for (int n = 1; n <=10; ++n)
    {
        ret*=n;
        sum+=ret;
        
    }
    printf("%d\n",sum);
    return 0;
}

3、 在一个有序数组中查找具体某个数字(折半查找)

//在有序数组中查找数,二分法
#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)
            left=mid+1;
        else if (arr[mid]>k)
            right=mid-1;
        else
        {
            printf("find:%d\n",mid);
            break;
        }
    }
    if (left>right)
        printf("no");

    return 0;
}

4.输出闰年

//算法自下而上,逐步细化的方法 输出2000-2100中是闰年的年份,符合下列一条
//能被4整除但不能被100整除
//能被100整除且能被400整除
#include <stdio.h>

int main() {
    int year=2000;//年份
    while (year<=2100) {
        if (year % 4 == 0) {
            if (year % 100 != 0)
                printf("%d yes\n",year);
            else {
                if (year % 400 == 0)
                    printf("%d yes\n",year);

            }
        }
        year = year + 1;
    }
    return 0;
}

5、输出素数

//判断一个数是否为素数
//能被整除就不是素数
#include"stdio.h"
#include"math.h"
main()
{
    int number,i,n;
    printf("number:\t");
    scanf("%d",&number);
    while(number>0)//输入0或小于0的数,结束循环
    {
        n=(int)sqrt(number);//开平方
        if(number==1)
        {
            printf("1既不是素数,也不是合数\n");//注:1既不是素数,也不是合数
            scanf("%d",&number);
            continue; //跳出这一次循环
        }
        for(i=2;i<=n;i++)   //2和3的开平方分别为1.414和1.732,不满足循环条件(i<=n)
        {
            if(number%i==0)
                break;
        }
        if(i>n) //i=2,2和3满足(i>n),所以是素数
            printf("%d yes\n",number);
        else
            printf("%d no\n",number);
        printf("number:\t");
        scanf("%d",&number);
    }
}



6、演示多个字符从两端移动,向中间汇聚 

//演示多个字符从两端移动向中间汇聚

#include <stdio.h>
#include <string.h>
#include <windows.h>

int main() {
    char arr1[]="welcome to there";
    char arr2[]="################";
    int left=0;
    int right=strlen(arr1)-1;
    while (left<=right)
    {
        arr2[left]=arr1[left];
        arr2[right]=arr1[right];
        printf("%s\n",arr2);
        Sleep(1000);//休眠1s
        system("cls");//清空屏幕
        left++;
        right--;
    }
    printf("%s\n",arr2);
    return 0;
}

7、模拟密码登陆,三次机会

//编写模拟三次密码输入场景,密码假设为123456
#include <stdio.h>
#include "string.h"
int main() {
    int i=0;
    char password[20]={0};
    for (i = 0; i <3 ; ++i) {
        printf("input password:\n");
        scanf("%s",password);
        if (strcmp(password,"123456")==0)//比较字符串内容
        {
            printf("success\n");
            break;
        } else
            printf("fault\n");

    }
    if (i==3)
        printf("output\n");
    return 0;
}

8.猜数字游戏

//猜数字游戏
#include <stdio.h>
#include "stdlib.h"
#include "time.h"
void menu()//打印菜单
{
    printf("***********\n");
    printf("***1.play**\n");
    printf("***0.exit**\n");
}
void game()//进行游戏
{
    int ret=rand()%100+1;//随机生成1到100的数
    int guess=0;
    while (1)
    {
        printf("guess the number");
        scanf("%d",&guess);
        if (guess<ret)
            printf("small\n");
        else if(guess>ret)
        {printf("big\n");}
        else
        {
            printf("success\n");
            break;
        }
    }
}
int main() {
    int input=0;
    srand((unsigned int )time(NULL));
    printf("Hello, World!\n");
    do
    {
        menu();
        printf("please choose:\n");
        scanf("%d",&input);
        switch (input) {//选择0 1
            case 1:
                game();
                break;
                case 0:
                    printf("output\n");
                break;;
            default:
                printf("new choose:\n");
                break;


        }
    }while (input);
    return 0;
}

9、输入三个数,从大到小输出 

//输入3个整数,从大到小输出

#include <stdio.h>

int main() {
    int a,b,c;

    scanf("%d %d %d",&a,&b,&c);
    int tem;
    if (b>a)
    {
        tem=a;//a放到tem b放到a
        a=b;
        b=tem;
    }
    if (a<c)
    {
        tem=a;
        a=c;
        c=tem;
    }
    if (c>b)
    {
        tem=b;
        b=c;
        c=tem;
    }

    printf("%d %d %d\n",a,b,c);
    return 0;
}

10、 两个数的最大公约数

//最大公约数

#include <stdio.h>

int main() {
    int n=0;
    int m=0;
    scanf("%d %d",&m,&n);
    int max=m>n?n:m;//让max=其中的最小值
    while(1)
    {
        if(m%max==0&&n%max==0)
        {
            printf("%d\n",max);
            break;
        }
        max--;
    }

    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值