程序来创建不同大小的图案,但存在一些混乱
Program to create patterns of different sizes, and theres some confusion
我非常感谢您对我正在编写的代码的帮助。我的程序的目标是能够创建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 ("ntt MENU nn" );
printf ( "1. Pattern One" );
printf ( "2. Pattern Two" );
printf ( "3. Pattern Three" );
printf ( "4. Pattern Four" );
printf ( "Quit nn" );
}
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");
}
}
}
我对如何获得其他模式有点困惑。如果你读到这里,我真的很感激。此外,我在案例中收到一个错误,说"错误:案例标签没有减少为整数常数"
我真的很感激你能给我的任何帮助。我是这方面的初学者,我真的不知道该怎么办。
我没有得到任何关于case标签的错误,所以它可能取决于您的编译器。const int
应该足够了(我认为)。如果仍然出现此错误,请考虑使用enum
而不是constint,或者甚至可能只在case语句中直接使用数字。
case 1:
pattern1 (size1);
break;
在我看来还可以。尤其是当你在提示中对数字进行了硬编码时。
其他问题:
- 不要使用
double
作为Get_Option和Get_Size的返回值。在转换int
和返回时,您应该收到有关精度损失的警告。CCD_ 5对于这些函数是合适的 pattern1
中的printf
调用使用%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
相关文章:
- C++模板来检查友元函数的存在
- 既然存在危险,为什么项目要使用-I include开关
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- 如何克服提升精神AST混乱
- C++quit()函数中可能存在作用域问题
- C++擦除(如果存在)
- g++ 说函数不存在,即使包含正确的标头
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- C++Builder中的OnClick事件签名存在问题
- 如何正确地将分支添加到已存在的树中
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 如何检查QList中是否存在值
- 根据某个函数是否存在启用模板
- 如何将分支添加到已存在的TTree:ROOT
- 地图计数确实很重要,或者只是检查是否存在
- 程序来创建不同大小的图案,但存在一些混乱