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



我仍然是编程新手,对C编程非常陌生,所以如果我的问题看起来很荒谬,请原谅我。

我正在学习函数和函数调用,我正在尝试遵循讲师正在做的事情,但需要一点补充。 讲师做了以下工作:

  • 讲师定义了一个功能咳嗽--(空洞咳嗽(int N((
  • 仅使用一行代码在 main 中调用函数
  • 该程序在屏幕上打印出咳嗽的硬编码次数,即咳嗽(3(将打印咳嗽3次。

我正在尝试:

  • 定义一个函数咳嗽 -- (void cough(int((
  • 仅使用一行代码在 main 中调用函数
  • 程序应在
  • 屏幕上打印出咳嗽N次,但应在程序开始时出现提示(例如"咳嗽多少次?

我正在使用的 C(c99( 有一个库 cs50.h(来自在线课程 cs50(,它提供了一个获取整数输入的代码。 经过搜索和尝试,我成功地做到了以下几点:

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

而且 咳嗽(get_int("咳嗽多少"((

我只是想知道为什么我不能在 C 中成功使用以下代码而不会出错。为什么不能从函数生成 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("coughn");
}
}

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

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

使用未声明的标识符"N">

因为在

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

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

但应该在程序开始时出现提示,例如"咳嗽多少次?

所以

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("coughn");
}
}

请注意,您的printf打印一个常量字符串,因此您可以将其替换为puts("cough");,这更快一些,因为在这种情况下printf搜索"%"没有任何内容

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

因此,让我们逐行使用您的代码

void cough(int N);

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

int main(void) {

main在这里定义

cough(N);

cough之前(暂时(定义过,所以没关系:编译器知道它是一个函数,之前的暂定定义和实际定义无法改变这一点。N哎呀!!之前未定义,不是关键字,编译器停止并出现错误:)


不过,您可以定义cough()不带参数

#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("coughn");
}
}

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

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

或者,您可以使用cough(5)或将N定义为全局。

你可以试试这个,但我没有使用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("coughn");
}
}

最新更新