目 录CONTENT

文章目录
C

C-scanf技巧用法

~梓
2025-06-02 / 0 评论 / 0 点赞 / 4 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、输入流

#include<stdio.h>
int main(){
  int a,b,c;
  scanf("_______",&a,&b,&c);//请补充代码
  printf("%d",a+b+c);
  return 0;
}

输入流中有五个整数,但要求你只输出其中的第1、3、5个数的和。

输入样例:

1 2 3 4 5

输出样例:

9

输入样例:

12 25 8 65 7

输出样例:

27

解决代码:

#include<stdio.h>
int main() {
    int a, b, c;
    scanf("%d %*d %d %*d %d", &a, &b, &c); //请补充代码
    printf("%d", a + b + c);
    return 0;
}

解析

  • %d:读取并存储一个整数。
  • %*d:读取一个整数但不存储(* 是赋值抑制符,表示跳过该值)。

二、输入定制

输入数据是一大串数字,要求读取五个数,但要求你只处理其中的第1、3、5个数,输出这三个数的和。第一个数只读1位数,第二个数只读2位数,第三个数只读3位数,第四个数只读4位数,第五个数只读5位数。

输入样例:
说明:按照题意,此样例要求你读入的数据依次是:1,23,456,7890,12345,最后输出1+456+12345的和是12802

12345678901234567890

输出样例:

12802

解决代码:

#include <stdio.h>

int main() {
    int num1, num3, num5;
    // %1d 表示读取 1 位整数,%2d 表示读取 2 位整数,以此类推
    // 利用 %*d 跳过不需要处理的数
    scanf("%1d %*2d %3d %*4d %5d", &num1, &num3, &num5);
    int sum = num1 + num3 + num5;
    printf("%d\n", sum);
    return 0;
}

代码解析

  1. 变量定义:定义 num1num3num5 三个整型变量,用于存储需要处理的第 1、3、5 个数。
  2. scanf 函数:
  3. %1d:表示从输入流中读取 1 位整数,并存储到 num1 中。
  4. %*2d* 是赋值抑制符,%*2d 表示从输入流中读取 2 位整数,但不存储,即跳过第二个数。
  5. %3d:表示从输入流中读取 3 位整数,并存储到 num3 中。
  6. %*4d:表示从输入流中读取 4 位整数,但不存储,跳过第四个数。
  7. %5d:表示从输入流中读取 5 位整数,并存储到 num5 中。
  8. 计算与输出:将 num1num3num5 相加得到 sum,然后使用 printf 函数输出 sum 的值。

三、一个或多个输入

输入最多两个整数,如果输入的是一个整数,就输出它的平方,如果输入的是两个整数,就输出它们的乘积。

输入样例:

 25 

输出样例:

625 

输入样例:

2 5 

输出样例:

10

解决代码:

#include <stdio.h>

int main() {
    int num1, num2;
    char ch; // 用于检测输入中的字符

    // 尝试读取第一个整数
    if (scanf("%d", &num1) == 1) {
        // 检查是否有第二个整数
        ch = getchar(); // 读取下一个字符(可能是空格或换行符)
        if (ch == ' ') {
            // 如果有空格,说明可能有第二个整数
            if (scanf("%d", &num2) == 1) {
                printf("%d\n", num1 * num2);
            } else {
                // 如果没有第二个整数,输出第一个整数的平方
                printf("%d\n", num1 * num1);
            }
        } else {
            // 没有空格,说明只有一个整数
            printf("%d\n", num1 * num1);
        }
    }

    return 0;
}

四、一个或多个输入(二)

编程输入几个整数,最多4个,最少1个,输出它们的和、平均值。

输入样例1:

1 2 3 4

输出样例1:

SUM=10,AVG=2.50

输入样例2:

1 3 2

输出样例2:

SUM=6,AVG=2.00

输入样例3:

1

输出样例3:

SUM=1,AVG=1.00

解决代码:

#include <stdio.h>

int main() {
    int nums[4];
    int count = 0;
    double sum = 0.0;
    double avg = 0.0;

    // 读取输入的整数,最多4个
    while (count < 4 && scanf("%d", &nums[count]) == 1) {
        sum += nums[count];
        count++;
    }

    // 计算平均值
    if (count > 0) {
        avg = sum / count;
    }

    // 输出结果,保留两位小数
    printf("SUM=%.0f,AVG=%.2f\n", sum, avg);

    return 0;
}

代码说明:

  1. 数组定义:定义了一个长度为 4 的整数数组nums,用于存储输入的整数。
  2. 计数器与累加和:使用count记录实际输入的整数个数,sum累加所有输入的整数。
  3. 输入处理:通过while循环读取输入,最多读取 4 个整数,当读取到文件结束符或达到 4 个整数时停止。
  4. 平均值计算:在输入结束后,根据实际输入的整数个数计算平均值。
  5. 输出格式化:使用%.0f确保和没有小数部分,%.2f确保平均值保留两位小数。
0
C

评论区