请帮我回答这个问题,void函数带参数。我不太了解
我想编写一个程序,以便用户可以输入构成模式的两个字符
我需要定义两个(字符)变量(星号)和(下一个),语句必须包含三个参数 - 一个是模式的(int)
和两个将是(字符)字符显示模式。
我必须将函数(drawpattern)更改为具有三个值参数
一个(int)参数,表示模式的大小;两个(字符),表示将用于显示模式的字符。
输入(4)表示大小,(Y)表示用于启动模式的字符,(+)表示第二个和每个替换组
这是我到目前为止所做的事情,如果可以,我现在不会这样做:
#include <iostream>
using namespace std;
void drawPattern(int size, char start, char next)
{
for (int i = 0; i <= size; i++)
for (int j = 0; j <= size; j++)
{
if ((i / size) % 3 == 0)
if ((j / size3) % 3 == 0)
cout << '4';
else
cout << 'Y';
else
if ((j / size) % 3 == 0)
cout << '+';
else
cout << '4';
}
}
int main ()
{
int size;
char start, next;
cout << "Please enter number ( 4 ) for the size of the pattern : ";
cin >> size;
cout << " Now enter leter ( Y ) to start the pattern: ";
cin >> start;
cout << "Lastly enter the ( + ) for the other pattern: ";
cin >> size;
cout << " This is the output pattern: " << endl;
drawPattern(size, start, next);
return 0;
}
答案 0 :(得分:0)
看起来您在drawPattern函数中对输出进行了硬编码并忽略了用户的实际输入。我认为你应该用传递给函数的相应参数替换'Y'和'+',因为我很确定教授对硬编码值不满意。
答案 1 :(得分:0)
在第11行,你有一个错字。它说size3
应该说size
。
你也犯了一个逻辑错误。
此代码
if ((i / size) % 3 == 0)
在概念上是错误的。至少在现在编写代码时。通常你会这样写:
if (i % 3 == 0)
此if语句每三行都为true。 %
(modulu)计算整数(整数)除法firstnumber / secondnumber
的余数。如果序列i
从0到10,则i % 3
输出
i: 0 1 2 3 4 5 6 7 8 9 10
i%3: 0 1 2 0 1 2 0 1 2 0 1
如您所见,i % 3 == 0
是true
,当我可以被3整除时。
您的代码有所不同。假设size
= 10.然后计算(整数)除法i / size
。最后,您计算(i / size) % 3
。但是,i
始终小于size
,但在循环的最后一个转弯处除外。让我们再看一下这些值:
i: 0 1 2 3 4 5 6 7 8 9 10
size: 10 10 10 10 10 10 10 10 10 10 10
i/size: 0 0 0 0 0 0 0 0 0 0 1
由于i / size
的值只更改一次,因此计算(i / size) % 3
毫无意义。