C语言学习记录2
  lMkSwLP82OO5 2023年11月02日 37 0

发完才发现可以插入代码块

1、输入函数 从 输入缓冲区读取数据

C语言学习记录2_初始化

2、利用getchar() 读取剩下\n ,若缓冲区不一定只剩\n,则用while循环结合getchar() 函数

int main()

{    int ch = 0;

    int ret = 0;

    // while(ch = getchar() != EOF);

    // {

    //     putchar(ch);

    // }

    //实际价值

    char password[20] = {0};

    printf("请输入密码:>");

    scanf("%s",password);//输入密码,并存入password数组中,scanf()不能读取空格

    //缓冲区还剩余/n

    //读取一下\n 用getchar

    // getchar();  //都去掉缓冲区的 \n,从而不影响下面的输入

    while((ch = getchar()) != '\n');//但输入的数据中存在空格或其他一些字符,导致scanf不能读取至剩下'\n',while函数循环

    printf("请确认(Y/N):>");

    ret = getchar();

    if(ret == 'Y')

    {        printf("确认成功\n");    }

    else

    {        printf("放弃确认\n");   }

    return 0;

}//


int main()

{

    char ch = '\0';

 while ((ch = getchar()) != EOF) //EOF----文件结束标志

 {

    if (ch < '0' || ch > '9')

        continue;

    putchar(ch);

}

    return 0;

}

//这个代码的作用是:只打印数字字符,跳过其他字符的、


for 循环;

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

       循环语句;

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

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

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

2\流程

C语言学习记录2_初始化_02

3、continue在while循环与for循环中的差别:C语言学习记录2_i++_03C语言学习记录2_for循环_04

因为continue是满足条件就跳过其后代码回到循环入口,while在循环入口没有调整部分,其满足continue的条件不会改变,导致一直跳回陷入循环;而for循环在入口处有调整部分,再跳回后调整使其不满足continue条件进而进一步循环。

4、

不可在for 循环体内修改循环变量,防止 for 循环失去控制。建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

int i = 0;

//前闭后开的写法

for(i=0; i<10; i++)

{}

//两边都是闭区间

for(i=0; i<=9; i++)

{}

5、

for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题;

判断部分如果被省略,那么判断结果恒为真

int main()

{    for(;;)

    {        printf("hehe\n");    }

 return 0;}

输出结果为 hehe 无限循环


int main()

{

    int i = 0;

    int j = 0;

    for(;i<10;i++)

    {

        for(;j<10;j++)

        {

            printf("heihei\n");

        }

    }//10*10 = 100

    return 0;

}//只输出10个 ”heihei“

省略第二个for循环的初始化部分,导致只输出十个 heihei ;因为缺乏初始化部分,在第一次j的循环结束后,j的值就变成10(int j= 0,写在第一个for循环前面,此时j不是该for循环的局部变量),导致i++后无法再次进入 j 的for循环,最后只会输出10个 ‘heihei’()

将int j =  0 写进第二个for循环前面,则会输出100个”heihei“

int main()

{

    int i = 0;

    for(;i<10;i++)

    {

        int j = 0;

        for(;j<10;j++)

        {

            printf("heihei\n");

        }

    }

    return 0;

}//输出100个”heihei“


6、

初始化部分可以为多个变量:

int main()

{

    int x, y;

    for (x = 0, y = 0; x<2 && y<5; ++x, y++)

    {

        printf("hehe\n");

    }

    return 0;

}//输出两个hehe

7、

/* #include <stdio.h>

int main()

{

 int i = 0;

 int k = 0;

 for(i =0,k=0; k=0; i++,k++)//中间判断部分不是判断语句,是将0赋值给K,   0为假,则不进入循环

    k++;

 return 0;

} *///循环0次

do……while()循环

1、语法

C语言学习记录2_for循环_05


2、流程

C语言学习记录2_i++_06


3、同样,若有break,终止循环

int main()

{int i = 10;

do

{  if(5 == i)

    break;

printf("%d\n", i);

}while(i<10);

return 0;

}

4、continue ,再该函数中使用continue,会产生与while相同的结果,陷入死循环

int main()

{

int i = 10;

do

{ if(5 == i)

        continue;

printf("%d\n", i);

}while(i<10);

return 0;

}


计算 n的阶乘。

int main()

{

    int i = 0;

    int sum = 1;  

    int n;

    printf("输入一个非负整数:");

    scanf("%d",&n);

    if(n<0)

    {

        printf("error---负数没有阶乘");

    }

    else if(n==0)

    {

        printf("%d",sum);

    }

    else

    {

        for(i =1;i<=n;i++)

    {

        sum = sum*i;


    }

    printf("%d",sum);

    }

    return 0;

}


计算1!+2!……+n!:

int main()

{

    int i = 0;

    int sum = 1;

    int a = 0;  

    int n;

    printf("输入一个非负整数:");

    scanf("%d",&n);

    if(n<0)

    {

        printf("error---负数没有阶乘");

    }

    else if(n==0)

    {

        sum = sum;

        a = a+sum;

        printf("sum = %d\n",sum);

        printf("a = %d",a);

    }

    else

    {

        for(i =1;i<=n;i++)

    {

        sum = sum*i;

        a = a+sum;

    }

    printf("sum = %d\n",sum);

    printf("a = %d",a);

    }

    return 0;

}





【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  EhkezVjvcUv6   2023年11月02日   52   0   0 #includei++测试数据
  uaa50elB8Qct   2023年12月06日   20   0   0 数组初始化二维数组
  Fv5flEkOgYS5   2023年11月02日   51   0   0 i++javaide
  Mqh2iumZ9USt   2023年11月02日   50   0   0 #includei++ios
lMkSwLP82OO5
作者其他文章 更多