C语言基础知识(二)

分支语句

if_else switch_case

基本结构

if(表达式1)

{

代码段1;

}else

{

代码段2;

}

判断表达式1是否成立,如果成立执行代码段1,不成立执行代码段2;

分层结构

if(表达式1)

{

代码段1;

}else if(表达式2)

{

代码段2;

}else

{

代码段3;

}

练习:输入一个年份,判断:

普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

#include <stdio.h>

int main()
{
    int year = 0;
    printf("输入年份:");
    scanf("%d",&year);
    if(year%4==0&&year%100!=0)
    {
        printf("是普通闰年\n");
    }
    else if(year%400==0)
    {
        printf("是世纪闰年\n");
    }
    else
    {
        printf("不是闰年\n");
    }
    
    return 0;
}

嵌套结构

if(表达式1)

{

        if(表达式2)

        {

        }

}

注意

if后边可以没有else但是else前边必须有if

语句块只有一行代码{}可以省略

练习实现大小写转换

输入大写字符输出小写字符

输入小写字符输出大写字符

输入其他类型输出error

#include <stdio.h>

int main(int argc, char const *argv[])
{
    char x;
    printf("请输入英文字母:");
    scanf("%c",&x);

    if(x>='a' && x<='z')
    {
        printf("大写字母是:%c\n",x-32);   //小写字母的ASCII码值-32就是
                                         //本身的大写字母的ASCII码值
    }
    else if(x>='A' &&  x<='Z')
    {
        printf("小写字母是:%c\n",x+32);
    }
    else
    {
        printf("不是英文字母");
    }
    
    return 0;
}

switch

switch (表达式)

    {

    case 常量1:

        /* code1 */

        break;

case 常量2:

        /* code2 */

        break;

    default:

        break;

    }

执行顺序判断表达式结果case后的常量值进行匹配匹配成功执行对应语句块如果没有匹配成功执行default的语句块遇到break结束

注意:

表达式结果不能小数case常量不能浮点数字符串

每个对应case语句后边要加上break不加继续向下执行直到遇到break结束

int day=1;

    switch (day)

    {

    case 1:

        printf("1111\n");

        break;

    case 2:

        printf("2222\n");

        break;

    default:

        printf("error\n");

        break;

    }

练习

switch实现等级划分

A 100-90

B 89-80

C 79-70

补考 <70

#include<stdio.h>

int main(int argc, char const *argv[])
{
    int x = 0;
    printf("输入成绩:");
    scanf("%d",&x);
    x = x/10;
    switch (x)
    {
        case 10:
        case 9:
        {
            printf("A\n");
            break;
        }
        case 8:
        {
            printf("B\n");
            break;
        }
        case 7:
        {
            printf("C\n");
            break;
        }
        default:
        {
            printf("补考\n");
            break;
        }
    }
    return 0;
}

循环语句

for     while     do while

for循环

格式

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

{

    //代码段

} 

表达式1:变量赋初值

表达式2:终止条件

表达式3:增值或减值

执行顺序:首先执行表达式1进行赋值,然后判断表达式2是否成立,如果成立就进入循环执行语句块,再执行表达式3进行增值或减值然后继续判断表达式2是否成立,直到表达式2不成立退出循环

死循环:表达式2永远成立  for(;;)

 

嵌套 

for(表达式1;表达式2;表达式3)
{
	for(表达式1;表达式2;表达式3)
	{
    
    }
}
//外层循环执行一次,内层循环执行一轮

 练习:水仙花数,是指一个3位数,其每个位上的数字的3次幂之和等于它本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153,找出三位数里所有的水仙花数

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int m, n, b = 0;
    for (int i = 100; i < 999; i++)
    {
        m = i / 100;
        n = i % 100 / 10;
        b = i % 10;
        if (m * m * m + n * n * n + b * b * b == i)
            printf("%d\n", i);
    }
    return 0;
}

while循环

格式

while(表达式)
{
    //代码段
}
   int i=1;

    while(i<4)

    {

        printf("qqqq\n");

        i++;

    }

执行顺序:首先定义循环变量并赋值,然后判断是否符合终止条件,如果符合就进入循环执行语句块及增值减值语句,然后继续判断,直到不成立退出循环

死循环:while(1)

do...while循环

int a=8;

    do

    {

        printf("qqqqq\n");

        a++;

    } while (a<5);

while:先判断再执行

do...while:先执行一次程序,再判断

循环控制语句

break  continue

continue:结束本次循环,继续下一次

break:终止循环

return 0:结束程序

练习:循环输入一个5位数,判断它是不是回文数。当输入0时循环结束。

比如说12321,从前往后读和从后往前读都是一样的,就叫回文数

练习:

斐波那契数列,从第三个数开始,每一个数都是前两个数的和,如{1,1,2,3,5,8}

请做出有15个数的斐波那契数列

#include <stdio.h>

int main(int argc, char const *argv[])
{
    int a[15] = {1, 1};
    for (int i = 2; i < 15; i++)
    {
        a[i] = a[i - 1] + a[i - 2];
    }
    for (int j = 0; j < 15; j++)
    {
        printf("%d\n", a[j]);
    }

    return 0;
}

打印以下图案:

要求行数从终端输入。

输入:5

输出:

*

**

***

****

*****

*****

 ****

  ***

   **

    *

#include <stdio.h>

int main(int argc, char const *argv[])
{
    printf("输入行数:");
    int n, i = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        int j = 0;
        while (j < i)
        {
            printf("*");
            j++;
        }
        printf("\n");
    }
    for (i = n; i >= 1; i--)
    {
        int j = 0;
        for (int k = 0; k < n - i; k++)
            printf(" ");
        while (j < i)
        {
            printf("*");
            j++;
        }
        printf("\n");
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值