我真的很感激我正在撰写的这段代码的一些帮助。我的程序的目标是能够创建4种不同大小的不同模式。每个模式的大小由列数或行数决定。例如,大小为5的模式有5列和5行。每个模式由字符*和显示大小的数字组成。大小必须介于2到9之间。 这些是模式: 模式1:
*5555
5*555
55*55
555*5
5555*
模式2:
*****
*555*
*555*
*555*
*****
模式3:
55555
5***5
5***5
5***5
55555
模式4:
5555*
555*5
55*55
5*555
*5555
我的程序必须显示菜单并要求用户选择图案和尺寸。我必须有单独的函数来获取选项,获取大小,并打印每个模式。
以下是我目前为我的计划所做的事情:
#include <stdio.h>
void showmenu();
double Get_option ();
double Get_size ();
void pattern1 (int);
void pattern2 (int);
void pattern3 (int);
void pattern4 (int);
int main ()
{
int size1, option1;
const int pattern_1 = 1,
pattern_2 = 2,
pattern_3 = 3,
pattern_4 = 4,
quit = 5;
do
{
showmenu ();
option1 = Get_option ();
size1 = Get_size ();
if (option1 != quit)
{
switch (option1)
{
case 1:
pattern1 (size1);
break;
case 2:
pattern2 (size1);
break;
case 3:
pattern3 (size1);
break;
case 4:
pattern4 (size1);
break;
case 5:
exit (1);
break;
}
}
}
while (option1 != quit);
return 0;
}
void showmenu ()
{
printf ("\n\t\t MENU \n\n" );
printf ( "1. Pattern One" );
printf ( "2. Pattern Two" );
printf ( "3. Pattern Three" );
printf ( "4. Pattern Four" );
printf ( "Quit \n\n" );
}
double Get_option ()
{
int option;
printf ("enter option (1-5):");
scanf ("%d", &option);
while (option < 1 || option > 5)
{
printf ("incorrect option. Try again");
printf ("Enter option (1-5):");
scanf ("%d", &option);
}
return option;
}
double Get_size ()
{
int size;
printf ("Enter pattern size (2-9):");
scanf ("%d", &size);
while (size < 2 || size > 9);
{
printf ("Incorrect pattern size. Try again");
printf ("Enter pattern size (2-9):");
scanf ("%d", &size);
}
return size;
}
void pattern1 (int size1)
{
int row, col;
for (row = 0; row < size1; row++)
{
for (col = 0; col < size1; col++)
{
if (row == col)
printf ("*");
else
printf ("%c", size);
printf ("\n");
}
}
}
我对如何获得其他模式感到有点困惑。如果你读到这里,我真的很感激。此外,我收到一个错误,说“错误:案例标签不会减少到整数常量”
我非常感谢你能得到我的任何帮助。我是这方面的初学者,我不确定该怎么做。
答案 0 :(得分:0)
我没有收到有关case标签的任何错误,因此它可能取决于你的编译器。 const int
应该足够了(我想)。如果仍然出现此错误,请考虑使用enum
而不是const int,或者甚至可以直接在case语句中使用数字。
case 1:
pattern1 (size1);
break;
对我来说看起来不错。特别是因为您已经在提示中对数字进行了硬编码。
您遇到的其他问题:
double
作为Get_Option和Get_Size的返回值。在转换int
并返回时,您应该收到有关精度损失的警告。 int
适用于这些功能。printf
中的pattern1
来电使用%c
来打印控制角色。使用%d
打印一个数字。while
语句末尾有一个分号,用于检查大小。这意味着它总是要求您两次,并且实际上并未检查您是否输入了无效的大小。关于打印其他模式,只需尝试弄清楚如何手动执行,将其写为步骤(伪代码),然后将其转换为c。例如,模式2可以是。
Print N stars
Print a new line
for N - 2 times:
Print one star
Print N, N - 2 times
Print one star
Print a new line
Print N stars
Print a new line