我正在尝试根据用户输入打印由数字和美元符号组成的模式。我要求用户为模式选择一个选项,然后我要求模式的大小。我使用swap来创建模式,因此如果用户选择选项1然后输入大小为4,他们应该得到类似的东西:
4 $$$ $ 4 $$ $$ 4 $ $$$ 4。
现在我只想让patternOne(0
工作。我无法打印出我在patternOne()
函数中创建的数组元素。这是我的代码:
#include <stdio.h>
int main(void) {
int option, size;
do {
printf("\nMENU\n");
printf("1. Pattern one\n"
"2. Pattern two\n"
"3. Pattern three\n"
"4. Pattern four\n"
"5. Quit\n");
fflush(stdout);
do {
printf("Please enter your choice (between 1 & 5): ");
fflush(stdout);
scanf("%d", &option);
}while(option < 1 || option > 5);
switch(option) {
case 1:
do {
printf("Choose a pattern size (between 2 & 9): \n");
fflush(stdout);
scanf("%d", &size);
}while(size < 2 || size > 9);
patternOne(size);
break;
case 2:
printf("Testing case 2.");
break;
case 3:
printf("Still testing.");
break;
case 4:
printf("Testing case 4.");
break;
case 5:
printf("Thank you for playing.\n");
break;
}
}while(option != 5);
return 0;
}
void patternOne(int size) {
char ar[size];
ar[0] = size;
for(int i = 1; i < size - 1; i++) {
ar[i] = '$';
}
int x = 0, y = 1, temp, iter = 0;
while(iter <= size) {
for(int j = 0; j < size - 1; j++)
{
printf(j);
}
temp = ar[x];
ar[x] = ar[y];
ar[y] = temp;
x++;
y++;
iter++;
}
}
答案 0 :(得分:2)
首先,您需要拥有patternOne()
函数patternOne()
,否则,您将获得隐式定义问题。
然后,在 printf(j);
代码中
printf("%d", j);
应该是,至少
patternOne()
否则,您将把一个invgalid类型的参数传递给forward declaration并调用printf()
。
FWIW,您可以使用以下算法简化char
功能的逻辑
$
数组0
n-1
迭代到n
,设置{{1}}值。答案 1 :(得分:0)
希望这是你想要的,我修改了代码 Sourav Ghosh 建议,
用这个替换你的模式一个函数,
void patternOne(int size) {
char ar[size];
memset (ar, '$', size);
for (int h=0; h<size; h++){
for(int i=0; i<size; i++) {
if(h==i)
printf("%d",size);
else
printf("%c",ar[i]);
}
printf(" ");
}
}
这是我得到的输出
[