是什么让 # 进入不同的行而不是继续行?
What make # go in different line instead of continuing the line?
我不确定为什么 # 在本应在 'u'
之后继续的情况下却走错了行
#include <stdio.h>
#define LEN 5
int inputNumber() {
int size;
printf("Input Size: ");
scanf("%d",&size);
printf("===\nTriangle Size is %d\n===\n",size);
return size;
}
void printTriangle(int size, char ch[]) {
for(int i = 0; i < size; i++)
{
for(int j = 0; j <= i; j++)
{
if(j<=LEN)
printf("%c ",ch[j]);
if(j>LEN)
printf("# ");
}
printf("\n");
}
}
int main() {
char arr_char[LEN] = {'a','e','i','o','u'};
int number;
number = inputNumber();
printTriangle(number,arr_char);
return 0;
}
我以前问过同样的代码,但我想尝试使用 if-else 而不是 ? : 因为我还没有在 class 中学习,所以我想知道是否可以使用像 if-else 这样的基本东西。
您的代码有未定义的行为,因为您试图访问此 if 语句
中声明的数组 arr_char
之外的内存
if(j<=LEN)
printf("%c ",ch[j]);
数组索引的有效范围是[0, LEN )
。
你需要像这样重写 if 语句
if(j < LEN)
printf("%c ",ch[j]);
从输出图片可以看出,在数组后面的字节中,它以存储换行符 '\n'
.
的方式出现
a e i o u
a e i o u
a e i o u
#
我不确定为什么 # 在本应在 'u'
之后继续的情况下却走错了行#include <stdio.h>
#define LEN 5
int inputNumber() {
int size;
printf("Input Size: ");
scanf("%d",&size);
printf("===\nTriangle Size is %d\n===\n",size);
return size;
}
void printTriangle(int size, char ch[]) {
for(int i = 0; i < size; i++)
{
for(int j = 0; j <= i; j++)
{
if(j<=LEN)
printf("%c ",ch[j]);
if(j>LEN)
printf("# ");
}
printf("\n");
}
}
int main() {
char arr_char[LEN] = {'a','e','i','o','u'};
int number;
number = inputNumber();
printTriangle(number,arr_char);
return 0;
}
我以前问过同样的代码,但我想尝试使用 if-else 而不是 ? : 因为我还没有在 class 中学习,所以我想知道是否可以使用像 if-else 这样的基本东西。
您的代码有未定义的行为,因为您试图访问此 if 语句
中声明的数组arr_char
之外的内存
if(j<=LEN)
printf("%c ",ch[j]);
数组索引的有效范围是[0, LEN )
。
你需要像这样重写 if 语句
if(j < LEN)
printf("%c ",ch[j]);
从输出图片可以看出,在数组后面的字节中,它以存储换行符 '\n'
.
a e i o u
a e i o u
a e i o u
#