C 基于用户';s字符输入
我必须用C语言编写一个程序(我是新手),这样用户就可以输入要显示为矩形的行数、列数和字符,例如:6行6列星号矩形 这是详细的作业 您的程序将要做的第一件事是打印一个选项菜单 用户。您可以选择自己的措辞或顺序 提供选项,但菜单中给出的每个选项必须与 以下:提示用户输入单个 性格函数的返回值为char,并将返回 用户输入的字符值。此返回值将为 存储在main()中的局部变量C中。的初始默认值 此字符将为“”(空白或空格字符) 提示用户输入介于1和1之间的数值的函数 及15名(包括在内)。如果用户输入的值超出此范围,则 系统将提示用户重新输入值,直到输入正确的值。 函数的返回值为int,并将返回该值 由用户输入。此返回值将存储在本地 main()中的变量N。此字符的初始默认值 将是0 两个“打印矩形”功能。每个函数都将采用当前值 整数值N和字符值C作为输入参数。回归 这些函数的值将无效。这些函数将被打印出来 使用输入字符C的N行和N列的矩形 Border Only函数将仅打印带有 边境填充函数将矩形打印为实体 矩形。例如,如果整数值N=6,则 值C='*'并调用填充的类型,如下所示 矩形将被打印: 这是我到目前为止的代码,我想知道我做错了什么,我是否正确地编写了程序C 基于用户';s字符输入,c,C,我必须用C语言编写一个程序(我是新手),这样用户就可以输入要显示为矩形的行数、列数和字符,例如:6行6列星号矩形 这是详细的作业 您的程序将要做的第一件事是打印一个选项菜单 用户。您可以选择自己的措辞或顺序 提供选项,但菜单中给出的每个选项必须与 以下:提示用户输入单个 性格函数的返回值为char,并将返回 用户输入的字符值。此返回值将为 存储在main()中的局部变量C中。的初始默认值 此字符将为“”(空白或空格字符) 提示用户输入介于1和1之间的数值的函数 及15名(包括在内)。如果用户输入
#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();
}