Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 基于用户';s字符输入_C - Fatal编程技术网

C 基于用户';s字符输入

C 基于用户';s字符输入,c,C,我必须用C语言编写一个程序(我是新手),这样用户就可以输入要显示为矩形的行数、列数和字符,例如:6行6列星号矩形 这是详细的作业 您的程序将要做的第一件事是打印一个选项菜单 用户。您可以选择自己的措辞或顺序 提供选项,但菜单中给出的每个选项必须与 以下:提示用户输入单个 性格函数的返回值为char,并将返回 用户输入的字符值。此返回值将为 存储在main()中的局部变量C中。的初始默认值 此字符将为“”(空白或空格字符) 提示用户输入介于1和1之间的数值的函数 及15名(包括在内)。如果用户输入

我必须用C语言编写一个程序(我是新手),这样用户就可以输入要显示为矩形的行数、列数和字符,例如:6行6列星号矩形

这是详细的作业

您的程序将要做的第一件事是打印一个选项菜单 用户。您可以选择自己的措辞或顺序 提供选项,但菜单中给出的每个选项必须与 以下:提示用户输入单个 性格函数的返回值为char,并将返回 用户输入的字符值。此返回值将为 存储在main()中的局部变量C中。的初始默认值 此字符将为“”(空白或空格字符)

提示用户输入介于1和1之间的数值的函数 及15名(包括在内)。如果用户输入的值超出此范围,则 系统将提示用户重新输入值,直到输入正确的值。 函数的返回值为int,并将返回该值 由用户输入。此返回值将存储在本地 main()中的变量N。此字符的初始默认值 将是0

两个“打印矩形”功能。每个函数都将采用当前值 整数值N和字符值C作为输入参数。回归 这些函数的值将无效。这些函数将被打印出来 使用输入字符C的N行和N列的矩形 Border Only函数将仅打印带有 边境填充函数将矩形打印为实体 矩形。例如,如果整数值N=6,则 值C='*'并调用填充的类型,如下所示 矩形将被打印:

这是我到目前为止的代码,我想知道我做错了什么,我是否正确地编写了程序

       #include <stdio.h>
       #include <stdlib.h>

       char enterSingleChar();
       int enterNumValue();
       void printRectanlgeOne(int N, char C);
       void printRectangleTwo(int N, char C);

     int main()
    `enter code here`{       
        char userChoice;
        int N = 0;
        char C = ' ';
        
        fprintf(stdout, "Please choose one of the following choices below \n");     
        fprintf(stdout, "Enter/Change Character (C/c)\n");
        fprintf(stdout, "Enter/Change Number (N/n) \n");
        fprintf(stdout, "Print Rectangle Type 1 (Border Only), enter 1 \n");
        fprintf(stdout, "Print Rectangle Type 2 (Filled in), etner 2 \n");
        fprintf(stdout, "Quit Program (Q/q) \n");
                
        scanf("%c", &userChoice);
        
        switch(userChoice)
        {       
                case 'C':
                case 'c':
                        enterSingleChar();
                        break;
                case 'N':
                case 'n':
                        enterNumValue();
                        break;
                case '1':
                        printRectangleOne(N,C);
                        break;
                case '2':
                        printRectangleTwo(N,C);
                        break;
        break;
                case 'Q':
                case 'q':
                        fprintf(stdout, "The program will now quit\n");
                        exit(1);
                default:
                        break;
        }               
}       

char enterSingleChar()
{
        char singleChar = ' ';
        fprintf(stdout, "Please enter a single character \n");
        scanf("%c", &singleCharC);
        return singleChar;
}

int enterNumValue()
{
        int numValue;
        fprintf(stdout, "Please enter a numerical value between 1 and 15 inclusively \n");
    
scanf("%d", &numValue);

        while(numValue <= 1 || numValue >= 15)
        {
                fprintf(stdout, "You have entered an invalid num \n");
                fprintf(stdout, "Please try again \n");
                fprintf(stdout, "Please enter a numerical value between 1 and 15 inclusively \n");
                scanf("%d", &numValue);
        }
        return numValue;
}

void printRectangleOne(int N, char C)
{
        int i;
        int j;
        for(i = 0; i <= N; i++)
        {
                fprintf(stdout, &C);

                for(j = 0; i <= N; i++)
                {
fprintf(stdout, &C);
                }
        }
        printf();
}

void printRectangleTwo(int N, char C)
{

}
                                                

                                                     
#包括
#包括
char enterSingleChar();
int enterNumValue();
无效印刷品(内部编号,字符C);
void printRectangleTwo(int N,char C);
int main()
`在此处输入代码`{
字符用户选择;
int N=0;
字符C='';
fprintf(stdout,“请选择下列选项之一\n”);
fprintf(标准输出,“输入/更改字符(C/C)\n”);
fprintf(标准“输入/更改编号(N/N)\N”);
fprintf(stdout,“打印矩形类型1(仅限边框)”,输入1\n);
fprintf(标准输出,“打印矩形类型2(已填充),等等2\n”);
fprintf(标准输出,“退出程序(Q/Q)\n”);
scanf(“%c”、&userChoice);
开关(用户选择)
{       
案例“C”:
案例“c”:
enterSingleChar();
打破
案例“N”:
案例“n”:
enterNumValue();
打破
案例“1”:
打印矩形一(N,C);
打破
案例“2”:
打印矩形二(N,C);
打破
打破
案例‘Q’:
案例‘q’:
fprintf(stdout,“程序现在将退出”\n);
出口(1);
违约:
打破
}               
}       
char enterSingleChar()
{
char singleChar='';
fprintf(stdout,“请输入单个字符”\n);
scanf(“%c”&singleCharC);
返回singleChar;
}
int enterNumValue()
{
int数值;
fprintf(stdout,“请输入一个介于1和15之间的数值,\n”);
scanf(“%d”和numValue);
while(numValue=15)
{
fprintf(stdout,“您输入了一个无效的num\n”);
fprintf(stdout,“请重试”\n);
fprintf(stdout,“请输入一个介于1和15之间的数值,\n”);
scanf(“%d”和numValue);
}
返回numValue;
}
void printRectangleOne(int N,char C)
{
int i;
int j;
对于(i=0;我使用您的编译器
如果您尝试在启用所有警告的情况下编译该代码,它将开始抛出错误,您应该在继续之前更正这些错误:

以及:

检查您的输入 我看到的一个问题是,当使用
scanf
读取标准输入时,回车键也会被放入队列中

所以有人问你

Enter one character:
Enter another character:
然后键入:

A输入B输入

您希望这两个字符是A和B。输入队列中的实际内容可能是什么,取决于平台(我不确定):

此外,如果您使用其中一个伪字符(例如“\n”,即“换行符”)围绕字符“C”绘制一个3x3矩形,您将实际向输出发送三条空行(顶行)、一条空行(中心线的左边框)、一条“C”和另外四条空行

这可能是相当令人费解的

你不会在问题中陈述你的问题到底是什么,但如果上述任何症状被发现,请检查你的输入例程

其他问题
void printRectangleOne(int N,char C)
{
int i;
int j;

对于(i=0;i我建议采用迭代方法。如果您在不编译的情况下同时运行编写代码,那么调试将很困难。因此,从简单的完整程序开始。我认为问题描述在不同的任务中都很清楚。您可以先从菜单开始,然后确保它工作正常,然后再向代码添加其他功能。这因此为您提供了更好的学习和新功能。

那么,您的具体问题是什么?在printRectangleOne函数中,请查看第二个循环:for(j=0;i变量
C
N
ev
test.c: In function ‘main’:
test.c:34:25: warning: implicit declaration of function ‘printRectangleOne’ [-Wimplicit-function-declaration]
                         printRectangleOne(N,C);
                         ^
test.c: In function ‘enterSingleChar’:
test.c:53:22: error: ‘singleCharC’ undeclared (first use in this function)
         scanf("%c", &singleCharC);
Enter one character:
Enter another character:
A\r\nB\r\n  (*six* characters!)
A\nB\n      four characters
A\rB\r      four characters
void printRectangleOne(int N, char C)
{
        int i;
        int j;
        for (i = 0; i <= N; i++)
        {
                // Why do you output this C here?
                fprintf(stdout, &C);
                // You are checking and incrementing i here, not j.
                for(j = 0; i <= N; i++)
                {
                     // fprintf does not work this way. Use
                     // putchar(C);
                     // instead.
                     fprintf(stdout, &C);
                }
        }
        // I don't think this is going to work. Use either
        // putchar('\n') or printf("\n") to get a newline.
        printf();
}