2021.10.13练习

本文展示了三个C语言程序示例,分别涉及密码验证、输入数字的奇偶性统计和自由落体问题的计算。第一个程序检查6位数字密码,第二个程序统计正整数中奇偶数的数量,第三个程序计算球多次落地反弹的总距离和反弹高度。这些程序锻炼了基本的输入处理和条件判断技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。

#include <stdio.h>
  int main()
  {
    int x,ret;
    char n;
    printf("Input your password:\n");
    ret = scanf("%c",&n);
    for(x=1;x<=6;x++)
    {
        while (ret!=1||n<=0)
    {
        printf("error!\n");
        while(getchar()!='\n');//一定要增加过滤条件否则系统会在输入非法语句时无限循环
        printf("Input your password:\n");
        ret = scanf("%c",&n);

    }

    printf("%c, you have enter %d-bits number\n",n,x);
    ret = scanf(" %c",&n);

    }
    return 0;
  }

(以上为本人第一次练习时所写,不够符合题意,正确答案如下:)

#include <stdio.h>
  int main()
  {
    int x=1;
    int n;
    printf("Input your password:\n");
    while(x<=6)
    {
        scanf("%c",&n);
        if(n>='0'&&n<='9')//所有的数字及字符等都以ascii码存储在计算机中,所以我们通过加单引号将数字字符转译为其asc值来进行判断,可以极大的减轻我们的编码数量。
        {
            printf("%c, you have enter %d-bits number\n",n,x);
            x++;
        }
        else
        {
            printf("error!\n");
        }
        while(getchar()!='\n');//在scanf存储%c时,回车符通常是被存储在缓冲区的,因此我们可以添加while(getchar()!=0)来清除掉缓冲区中的回车符。通过在字符输入时添加%*c也可以忽略掉一个字符型输入。
    }

    return 0;
  }

从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出"over!"。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。

#include <stdio.h>
  int main()
  {
    int n,x=0,y=0;
    printf("Please enter the number:\n");
    do
     {
            scanf("%d",&n);
            if(n%2!=0&&n!=-1)
        {
            printf("%d:odd\n",n);
            x++;
            //scanf("%d",&n);
        }
            else if(n%2==0)
        {
            printf("%d:even\n",n);
            y++;
            //scanf("%d",&n);
        }

    }while(n!=-1);

        if(x==0&&y==0)
        {
            printf("over!\n");
        }
        else if(x!=0||y!=0)
        {
            printf("The total number of odd is %d\n",x);
            printf("The total number of even is %d\n",y);
        }
    return 0;
  }

一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米?第5次和第10次反弹分别是多高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n<=15)。程序中所有浮点数的数据类型均为float。

#include <stdio.h>
  int main()
  {
    float sum = 0,m=100;
    int n,t;
    printf("input:\n");
    scanf("%d",&n);
    printf("%d times:\n",n);
    for(t = 1;t<=n;t++)
    {

        sum = sum + 2*m;
        m = m*0.5;
    }


    printf("%.3f\n",sum-100);
    printf("%.3f\n",m);
    return 0;
  }

今天的联系就到这里了,开始新章节的学习了,送自己一句话:

人总是低估自己的能力,但是又高估自己的毅力。

坚持下去,为了更好的明天!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值