【C刷题训练营】第三讲(c语言入门训练)(下)

简介: 【C刷题训练营】第三讲(c语言入门训练)(下)

BC10-成绩的输入输出


来源:成绩输入输出_牛客题霸_牛客网 (nowcoder.com)

题目描述

输入3科成绩,然后把三科成绩输出,成绩为整数形式。

输入描述:

一行,3科成绩,用空格分隔,范围(0~100)。

输出描述:

一行,把3科成绩显示出来,输出格式详见输出样例。

示例1

输入

60 80 90

输出

score1=60,score2=80,score3=90


写法一:

       这个写法就正常输入,定义和输出即可。但注意一点是,变量的定义,不给其初始化为0,默认为随机值。

#include <stdio.h>
int main() {
    int a=0,b=0,c=0;
    //输入成绩
    scanf("%d %d %d",&a,&b,&c);
    //打印成绩
    printf("score1=%d,score2=%d,score3=%d",a,b,c);
    return 0;
} 


写法二解析:

  1. int score[3] = {0}; 这行声明了一个名为 score 的整数数组,大小为3个元素,并将所有元素初始化为0。这个数组将用于存储用户输入的三个分数。
  2. 变量 i 被声明并初始化为0,它将用作循环计数器。
  3. for 循环用于循环三次,每次循环读取一个分数。在每次迭代中,scanf函数用于从用户输入中读取一个整数值,并将其存储在score[i] 中。&运算符用于获取 score[i] 的内存地址,以供 scanf 存储输入值。
  4. 读取完三个分数后,printf 函数用于在控制台上显示这些分数。格式字符串 "score1=%d,score2=%d,score3=%d" 指定了打印分数的格式,对应的值 score[0]score[1]score[2]被作为参数传递给 printf
  5. 最后,return 0; 语句用于退出 main 函数并终止程序的执行。
#include <stdio.h>
int main(){
    int score[3]={0};
    int i=0;
    for(i=0;i<3;i++)
    {
        scanf("%d",&score[i]);
    }
    printf("score1=%d,score2=%d,score3=%d",score[0],score[1],score[2]);
    return 0;
}


BC38-变种水仙花数


来源:变种水仙花_牛客题霸_牛客网 (nowcoder.com)

题目描述:

变种水仙花数 - Lily Number:

     把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),1461,1461),如果所有拆分后的乘积之和等于自身,则是一个Lily Number

例如:

655 = 6 * 55 + 65 * 5

1461 = 1 * 461 + 14 * 61 + 146 * 1

求出 5位数中的所有 Lily Number

输入描述:

输出描述:

一行,5位数中的所有Lily Number,每两个数之间间隔一个空格

代码实现:

#include <stdio.h>
int main() {
    int  i=0;
    for(i=10000;i<99999;i++)
    {   //判断i是否为Lily Number
        int sum=0;
        int j=0;
      for(j=10;j<=10000;j=j*10)
     {
        sum+=(i/j)*(i%j);
     }
     if(i==sum)
     {
        printf("%d ",i);
     }
    }
    return 0;
}


解析:先看这组数据

a18d74b01a89456b8a27a262eaa7e497.png

再看这组数据:

72d4324df4dd4e098f4c94abdf9940f9.png

这就容易理解很多了。


代码执行:

3a9150b3c9be4615ac7e3382e2210b71.png


BC20-kiki算数


来源:kiki算数_牛客题霸_牛客网 (nowcoder.com)

题目描述

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

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

       2. 如果计算结果大于等于 100 , 那么 KIKI 也仅保留计算结果的最后两位,如果此两位中十位为 0 ,则只保留个位。

例如: 45 + 80 = 25

       要求给定非负整数 a 和 b ,模拟 KiKi 的运算规则计算出 a + b 的值。

输入描述:

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

输出描述:

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

示例1

输入

45 80

输出

25

方法一:

       两数分别取模然后再相加,防止其加起来是三位数,之和再取模100

int main()
{
    //定义
    int a=0,b=0;
    int sum=0;
    //输入
    scanf("%d %d",&a,&b);
    //和
    sum=(a%100+b%100)%100;
    printf("%d",sum);
}


方法二:

       两数先加起来,和之后%100,这个很好理解,无论加到多大,只要是大于等于2位数,%100也可以拿到那两位。

int main()
{
    //定义
    int a=0,b=0;
    int sum=0;
    //输入
    scanf("%d %d",&a,&b);
    //和
    sum=(a+b)%100;
    printf("%d",sum);
}


方法三:

分类讨论:

  • <100直接输出,a与b之和赋值给sum,直接打印sum
  • >=100,a与b之和直接%100,赋值给sum,之后打印sum
int main() {
    int a=0,b=0;
    int sum=0;
    while(scanf("%d %d",&a,&b)!=EOF){
    if(a+b<100)
    {
         sum=a+b;
         printf("%d",sum);
    }
    else if(a+b>=100) 
    {
        sum=(a+b)%100;
        printf("%d",sum);
    }  
    }
    return 0;
}


方法一二三均可通过:

676bd992687d4f6e984443764c1db180.png


BC21-浮点数的个位数字


来源:浮点数的个位数字_牛客题霸_牛客网 (nowcoder.com)

题目描述

给定一个浮点数,要求得到该浮点数的个位数。

数据范围: 0<n≤200 0< n ≤200

输入描述:

一行,包括一个浮点数

输出描述:

一行,包含一个整数,为输入浮点数对应的个位数。

示例1

输入:13.141

输出:3

写法一:

       定义一个浮点数,输入浮点数,强制转换成整型,并用整型变量n接收,打印这个n%10的值。

int main()
{
  double d= 0;
  scanf("%lf", &d);
  int n = (int)d;
  printf("%d",n%10);
    return 0;
}


写法二:

       定义一个整型,输入浮点数,以整型的形式打印。

int main()
{
  int n = 0;
  scanf("%d", &n);
  printf("%d", n % 10);
}


   写法一二均可通过

a84c1e503c9747e6990644604b03bf97.png


BC22-你能活多少秒


来源:你能活多少秒_牛客题霸_牛客网 (nowcoder.com)

题目描述:

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

数据范围: 0< age ≤200 0<age≤200

输入描述:

一行,包括一个整数age。

输出描述:

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

示例1

输入:20

输出:631200000

参考代码:

#include <stdio.h>
int main() {
    //定义
    int age=0;
    //输入年龄
    scanf("%d",&age);
    long long second=age*3.156e7; 
    //输出
    printf("%lld\n",second);
    return 0;
}


执行:

6c2ba5d6556546d5919b919baab74a2a.png

     c训练营第三讲到此结束,感谢来访!

相关文章
|
1月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
52 2
|
3月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
1月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
30 1
|
1月前
|
机器学习/深度学习 编译器 C语言
C语言刷题(中)(保姆式详解)
C语言刷题(中)(保姆式详解)
15 0
|
1月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
3月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
3月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
58 1
|
3月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
3月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
3月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)