【C语言】编程初学者入门训练(2)

这篇文章包含一系列编程基础练习,涉及将ASCII码转换为字符,输入输出日期,数字交换,字符转ASCII码,计算表达式,带余除法,反向输出数字,特定规则的算术运算以及提取浮点数个位。这些练习旨在帮助学习者掌握基本的编程概念和计算操作。
摘要由CSDN通过智能技术生成

11. ASCII码

  • 问题描述:BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,转换以下ASCII码为对应字符并输出他们。73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

  • 输入描述:无

  • 输出描述:一行输出转换题目中给出的所有ASCII码对应的字符,无需以空格隔开。

  • 代码实现

int main()
{
        printf("%c%c%c%c%c%c%c%c%c%c%c%c\n",73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33);

        return 0;
}
I can do it!

12. 出生日期输入输出

  • 问题描述:输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。

  • 数据范围:年份满足 1990≤y≤2015 ,月份满足 1≤m≤12 ,日满足 1≤d≤30

  • 输入描述:输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。

  • 输出描述:三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。

  • 示例

输入:20130225 
输出:year=2013
	  month=02
	  date=25
  • 备注:通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
  • 代码实现
#include <stdio.h>

int main()
{
        int year,month,date;
        scanf("%4d%2d%2d",&year,&month,&date);

        printf("year=%d\n",year);
        printf("month=%02d\n",month);
        printf("date=%02d\n",date);

        return 0;
}

13. 按照格式输入并交换输出

  • 问题描述:输入两个整数,范围-231~231-1,交换两个数并输出。

  • 输入描述:输入只有一行,按照格式输入两个整数,范围,中间用“,”分隔。

  • 输出描述:把两个整数按格式输出,中间用“,”分隔。

  • 示例1

    • 输入:a=1,b=2
    • 输出:a=2,b=1
  • 备注:如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

  • 代码实现

int main()
{
        int a,b,t;
        scanf("a=%d,b=%d",&a,&b);
                
        t = a;a = b;b = t;

        printf("a=%d,b=%d\n",a,b);

        return 0;
}

14. 字符转ASCII码

  • 问题描述:BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,输入一个字符,输出该字符相应的ASCII码。
  • 输入描述:一行,一个字符。
  • 输出描述:一行,输出输入字符对应的ASCII码。
  • 示例
    • 输入:c
    • 输出:99
  • 代码实现
#include <stdio.h>

int main()
{
        char a;
        scanf("%c",&a);

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

        return 0;
}

15. 计算表达式的值

  • 问题描述:请计算表达式“(-8+22)×a-10+c÷2”,其中,a = 40,c = 212。

  • 输入描述:无。

  • 输出描述:(-8+22)×a-10+c÷2计算之后的结果,为一个整数。

  • 代码实现

#include <stdio.h>

int main()
{
        int a = 40,c = 212;
        int t = (-8 + 22)*a-10 + c/2;

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

        return 0;
}
656

16. 计算带余除法

  • 问题描述:给定两个整数 a 和 b (0 < a,b < 10,000),计算a除以b的整数商和余数。
  • 输入描述:一行,包括两个整数 a 和 b,依次为被除数和除数(不为零),中间用空格隔开。
  • 输出描述:一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。
  • 示例:
    • 输入:15 2
    • 输出:7 1
  • 代码实现
#include <stdio.h>

int main()
{
        int a,b;
        scanf("%d %d",&a,&b);

        printf("%d %d\n",a/b,a%b);

        return 0;
}

17. 反向输出一个四位数

  • 问题描述:将一个四位数,反向输出。

  • 输入描述:一行,输入一个整数n(1000 <= n <= 9999)。

  • 输出描述:针对每组输入,反向输出对应四位数。

  • 示例

    • 输入:1234
    • 输出:4321
  • 代码实现:

#include <stdio.h>

int main()
{
        int n;
        scanf("%d",&n);
        int t = n;

        while(n)
        {
                printf("%d",n % 10);
                n /= 10;
        }
        putchar('\n');

        return 0;
}

18. kiki算数

  • 问题描述:KiKi今年5岁了,已经能够认识100以内的非负整数,并且并且能够进行 100 以内的非负整数的加法计算。不过,BoBo老师发现KiKi在进行大于等于100的正整数的计算时,规则如下:

    1. 只保留该数的最后两位,例如:对KiKi来说1234等价于34;

    2. 如果计算结果大于等于 100, 那么KIKI也仅保留计算结果的最后两位,如果此两位中十位为0,则只保留个位。
      例如:45+80 = 25
      要求给定非负整数 a和 b,模拟KiKi的运算规则计算出 a+b 的值。

  • 数据范围: 0 ≤ a,b ≤ 231-1

  • 输入描述:一行,输入两个非负整数a和b,用一个空格分隔。(0 <= a,b<= 231-1)。

  • 输出描述:针对每组输入,输出按照KiKi的运算规则计算出 a+b 的值。

  • 示例:

    • 输入:45 80
    • 输出:25
  • 代码实现:

int main()
{
        int a,b;
        scanf("%d %d",&a,&b);

        printf("%d\n",(a + b)% 100);
        //因为只能认出最后两位数,所以 % 10保留最后两位 

        return 0;
}

19. 浮点数的个位数字

  • 问题描述:给定一个浮点数,要求得到该浮点数的个位数。

  • 数据范围: 0<n≤200

  • 输入描述:一行,包括一个浮点数。

  • 输出描述:一行,包含一个整数,为输入浮点数对应的个位数。

  • 示例

    • 输入:13.141
    • 输出:3
  • 代码实现

int main()
{
        float n;
        scanf("%f",&n);
        printf("%d\n",(int)n %10);

        return 0;
}

20. 你能活多少秒

  • 问题描述:一年约有 3.156×107 s,要求输入您的年龄,显示该年龄合多少秒。

  • 数据范围:0<age≤200

  • 输入描述:一行,包括一个整数age。

  • 输出描述:一行,包含一个整数,输出年龄对应的秒数。

  • 示例:

    • 输入:20
    • 输出:631200000
  • 代码实现

#include <stdio.h>
#include <math.h>

int main()
{
        int age;
        scanf("%d",&age);

        long long time = age * (3.156 * pow(10,7));

        if(0 < age <= 200)
        {
                printf("%lld\n",time);
        }

        return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值