我想根據用戶輸入打印由數字和美元符號組成的模式。我要求用戶選擇一個模式的選項,然後我要求模式的大小。我使用交換來創建模式,所以如果用戶選擇選項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++;
}
}
打開編譯器警告。這段代碼中有幾個項目應該關注,其中最值得注意的是'patternOne'中錯誤執行的[**'printf' **](http://en.cppreference.com/w/c/io/fprintf) '函數,爲此您不提供格式字符串。 – WhozCraig