【问题标题】:In C, can i use scanf with just one %d input but get 2 variables with that same input?在 C 中,我可以仅使用一个 %d 输入的 scanf,但使用相同的输入获得 2 个变量吗?
【发布时间】:2021-12-25 00:25:45
【问题描述】:

当我用 while/do 循环完成对数字 (K) 的计数时,原来的 N 数已经丢失,现在为 0。所以我不能转到第 4 步)。这就是为什么我认为 id 创建具有相同输入的 2 个变量,所以我可以将 4) 步骤完全作为一个单独的过程。

(上下文 基本上任务是制作一个程序,1)用scanf读取一个数字N(1 4) 如果 N 包含 K 作为数字,则显示消息“是”,否则显示“否”。)

int main()
{

    int K,N;

    scanf("%d", &N);
    if (N<=1 || N>=999999999)
    {
        printf("Wrong Input\n");
    }
    else
    {
        do
        {
            N=N/10;
            K++;
        }
        while(N!=0);        
     }
    return 0;
}

【问题讨论】:

  • 您可以将N 的值保存在不同的变量中。
  • 是的,复制N。 :) 顺便说一句:您显示的程序中 K 的值未初始化。
  • 在 C 语言中,我可以使用 scanf 只输入一个 %d 输入但获得 2 个具有相同输入的变量吗? 不能。
  • @ShambhavGautam 有这样一个标志,虽然它是一个隐含的标志。它被称为“忽略问题”。你可以在任何你不感兴趣的问题上使用这个技巧,或者你觉得自己低于你。
  • scanf 信任用户输入合理的内容;它更多地用于管道,并且在出现错误时不会返回太多信息。如果您需要更多的交互控制,fgetsstrtol 会更好。

标签: c scanf


【解决方案1】:

您可以只创建一个新的局部变量并存储N 的值以供以后使用



#include <stdio.h>
int main() {
    // initializing with 0 because 0 = false and 1 = true, to use true or false you need the bool.h header file
    int containsDigit = 0;
    int K, N, digits = 0;
    scanf("%d", &N);
    K = N;
    if (N <= 1 || N >= 999999999) {
        printf("Wrong Input\n");
    } else {
        while (N != 0) {
            N /= 10;
            digits++;
        }
        while(K != 0) {
            int cdigit = K % 10;
            if (cdigit == digits) {
                containsDigit = 1;
                break;
            }
            K /= 10;
        }

        if (containsDigit) printf("yes");
        else printf("No");
    }
    return 0;
}

【讨论】:

    【解决方案2】:
    else
    {
        int M = N;
        do
        {
            M=M/10;
            K++;
        }
        while(M!=0);        
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多