繁体   English   中英

如何在 C 中定义变量“N”类型,当 N 是 C 的输入并且它也由输入函数定义时(N 将提示用户输入)

[英]How to define a variable “N” type in C when N it is an input to C and its also defined by an input function( N will prompt the user for input)

我对编程还是很陌生,对 C 编程还是很陌生,所以如果我的问题看起来很荒谬,请原谅我。

我正在学习函数和 function 调用,我正在尝试跟随讲师正在做的事情,但有一点补充。 导师做了以下事情:

  • 讲师定义了一个 function 咳嗽——(无效咳嗽(int N))
  • 仅使用一行代码在 main 中调用 function
  • 该程序在屏幕上打印出硬编码的咳嗽次数,即咳嗽(3)将打印咳嗽 3 次。

我在尝试着:

  • 定义一个 function 咳嗽——(无效咳嗽(int))
  • 仅使用一行代码在 main 中调用 function
  • 程序应在屏幕上打印 N 次咳嗽,但应在程序启动时得到提示,例如“咳嗽多少次?”

我正在使用的 C(c99) 有一个库 cs50.h(来自在线课程 cs50),它提供了获取 integer 输入的代码。 经过搜索和尝试后,我已成功完成如下:

包含 cs50 库后 int N = get_int("多少咳嗽") 咳嗽 (N)

还有咳嗽(get_int(“咳嗽多少次”))

我只是想知道为什么我不能在 C 中成功使用以下代码而不会出错。 为什么不能从 function 生成 N?

我得到的错误是---使用未声明的标识符'N'

void cough(int N);
int main(void)
{
    cough(N);
}

void cough(int N)
{
    N = get_int("How many coughs?\n");
    for (int i = 0; i < N; i++)
    {
        printf("cough\n");
    }
}

感谢您阅读长篇故事并提供指导。

我只是想知道为什么我不能在 C 中成功使用以下代码而不会出错。

使用未声明的标识符“N”

因为在

int main(void)
{
    cough(N);
}

N没有在main中定义为局部变量,也不是全局变量,因此您无法编译代码

但应该在程序以提示符启动时获取,例如“咳嗽多少次?”

所以

N = get_int("How many coughs?\n");

必须移入

最后你想要这样的东西:

void cough(int N);
int main(void)
{
    cough(get_int("How many coughs?\n"));
    return 0;
}

void cough(int N)
{
    for (int i = 0; i < N; i++)
    {
        printf("cough\n");
    }
}

请注意,您的printf打印一个常量字符串,因此您可以将其替换为puts("cough"); 这有点快,因为在这种情况下printf搜索“%”一无所获

你可以试试这个,但我没有使用get_int()

void cough(int N);
int main(void)
{
    int N = 0;
    scanf( "%d", &N );
    cough(N);
}

void cough(int N)
{
    printf("How many coughs?\n");
    for (int i = 0; i < N; i++)
    {
        printf("cough\n");
    }
}

当您在 C 中编写程序时,您只能使用之前定义的标识符......或者,当然,当您定义它们时。

因此,让我们逐行处理您的代码

void cough(int N);

void已定义:语言关键字
cough ,这里是(暂时)定义的
int已经定义:一个语言关键字N它被(暂时)定义在这里。 此定义在下一个右括号之前有效,因为它是一个参数定义

int main(void) {

main在这里定义

    cough(N);

cough是(暂时)定义的,所以没关系:编译器知道它是一个 function,以前的暂定定义和实际定义不能改变它。 N OOPS,,: 之前未定义,不是关键字,编译器因错误而停止:)


不过,您可以将cough()定义为不使用 arguments

#include <stdio.h>
#include "cs50.h"

int cough(void);
int main(void)
{
    cough();
}

void cough(void)
{
    int N = get_int("How many coughs?\n");
    for (int i = 0; i < N; i++)
    {
        printf("cough\n");
    }
}

您需要在main中定义N (顺便说一下,它完全独立于N in cough 。例如:

int main(void)
{
    int N = 5;
    cough(N);
{

作为替代方案,您可以使用cough(5)或将N定义为全局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM