簡體   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