C入门基础(二):条件判断与循环

1.常见的关系运算

运算符意义
==相等
!=不等
>大于
>=大于等于
<小于
<=小于等于

Note:所有的关系运算符的优先级都比算术运算符低,但比赋值运算高

2.条件判断 if-else

    //if-else的使用示例
	const int MINOR=30;
    const int MAXOR=70;
    int age=0;
    printf("请输入您的年龄:");
    scanf("%d",&age);
    if(age<MINOR){
        printf("当前正值青春年华,要好好学习,努力向上\n");
    }else if(age>MAXOR){
        printf("年龄虽然较大,但我们心态永远18!\n");
    }else{
        printf("时间就像海绵里的水,挤一挤总还是有的!\n");
    }

3.循环for-while型

(1)while

	//判断整数位数的示例,测试用例请不要大于10位!!!
	int num,temp;
	int count=1;
	printf("请输入一个整数:");
	scanf("%d",&num);
	temp=num/10;//不断除10
	while(temp>0){
		count++;
		temp=temp/10;	
	}
	printf("您输入的数为%d位",count);

(2)do-while

    //我们在上面的那个例子上稍加改进,就可以实现程序的反复执行了
    char j='c';
    do{
        //判断整数位数的示例,测试用例请不要大于10位!!!
        int num,temp;
        int count=1;
        printf("请输入一个整数:");
        scanf("%d",&num);
        temp=num/10;//不断除10
        while(temp>0){
            count++;
            temp=temp/10;	
        }
        printf("您输入的数为%d位\n",count);
        printf("\t##########################\n");
        printf("请确认是否继续('是'请输入字符'c'):");
        scanf("%s",&j);	
    }while(j=='c');

(3)for

    //实现n!阶乘
    int n=0;
    int result=1;
    printf("请输入你需要计算的最大数:");
    scanf("%d",&n);
    for(int i=2;i<=n;i++){
        result*=i;
    }
    printf("%d!的结果为%d\n",n,result);

4.循环的选择(Tips for Loops)

<1> 固定次数计算,用for

<2> 必须执行一次,用do-while

<3> 其他情况,用while

5.逻辑类型与运算

(1)bool类型[C99]

    #include <stdio.h>
    #include <stdbool.h>//C中使用bool类型需要导入的头文件 

    int main()
    {
        bool b=true;
        printf("%d\n",b);//C中没有真正的bool类型,所以无法直接输出true
        return 0;
    }

(2)逻辑运算

运算符描述示例结果
逻辑非!a若a为true,结果为false
&&逻辑与a && ba、b同时为真结果为真
||逻辑或a || ba、b至少其中一个为真结果为真

Notes:优先级的顺序:! > && > || AND 避免短路

6.条件运算符与逗号运算符

    int count=15;
    count = (count > 10) ? count-10 : count+10;//条件运算符示例
    printf("%d\n",count);
	//逗号运算示例
	int c;
	c=3+4,5+6;
	printf("%d\n",c);//c=7
	int d;
	d=(3+4,5+6);
	printf("%d\n",d);//d=11

Note:条件运算符是一个三目运算符,它的优先级高于赋值运算符,但低于其他运算符

7.多路分支

    switch(type){
        case 1:
            printf("...");
            break;
        case 2:
            printf("......");
            break;
        case 3:
            printf(".........");
            break;
        default:
            printf("....");		
    }

8.一些小知识

<1>常见运算符的优先级积累

优先级运算符结合性
1( )从左到右
2! + - ++ –从右到左(单目的+和-)
3* / %从左到右
4+ -从左到右
5< <= > >=从左到右
6== !=从左到右
7&&从左到右
8||从左到右
9= += -= *= /= %=从右到左

<2>int类型最大为什么只能输入十位?

int是将一个数值向下取整为最接近的整数的函数。一般在电脑中,int占用4字节,32比特,数据范围为-21474836482147483647[-2^312^31-1];

    #include <stdio.h>

    int main()
    {
        printf("%d",sizeof(int));//可以打印出你的电脑上int类型所占用的字节数
        return 0;
    }

<3>goto是什么?

goto语句也称为无条件转移语句,在C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句。goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

9.编程小例子

Note:以下所提供的代码皆可继续改进提高!!!

a.一定范围内素数的计算;

    //素数的计算
    int num=0;
    printf("请输入你需要计算素数的范围最大值:");
    scanf("%d",&num);
    for(int i=2;i<=num;i++){
        int flag=1;
        for(int j=2;j<i;j++){
            int t=i%j;
            if(t==0){
                flag=0;
                break;
            }	
        }
        if(flag==1){
            printf("%d ",i);
        }
    }

b.输入一个年份判断是否为闰年;

    //闰年的计算
    int y;
    printf("请输入你需要计算的年份:");
    scanf("%d",&y);
    if(y%4==0){
        if(y%100==0 || y%400==0){
            printf("%d是闰年\n",y);
        }
    }else{
        printf("%d不是闰年\n",y);
    }

c.计算两个数的最大公约数;

    //最大公约数的计算
    int num1,num2,t;
    printf("请输入你需要计算的两个数(空格分开):");
    scanf("%d %d",&num1,&num2);
    //辗转相除法
    while(num2!=0){
        t=num1%num2;
        num1=num2;
        num2=t;
        printf("num1=%d  num2=%d\n",num1,num2);
    }
    printf("最大公约数为%d\n",num1);

d.输入一个非负整数,正序分解这个数;

    int n,temp;
    int mask = 1;
    printf("请输入一个非负整数:");
    scanf("%d",&n);
    temp=n;
    while(temp > 9){
        temp /= 10;
        mask *= 10;	
    }

    do{
        int d = n / mask;
        printf("%d",d);
        if(mask > 9){
            printf(" ");
        }
        n %= mask;
        mask /= 10;
    }while(mask > 0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值