我试图打印一个由数字和美元符号组成的基于用户输入的模式我要求用户为模式选择一个选项,然后要求模式的大小我使用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++;
}
}
最佳答案
首先也是最重要的,你需要有一个forward declaration的函数patternOne()
,否则,你会得到一个隐含的定义问题。
然后,在patternOne()
代码中,
printf(j);
至少应该是
printf("%d", j);
否则,您将向
printf()
传递invgalid类型的参数并调用undefined behaviour。FWIW,您可以使用以下算法简化
patternOne()
函数的逻辑创建
char
数组memset设置为
$
运行循环,从
0
迭代到n-1
,设置n
值。继续到2,直到循环用完