我正在尝试创建一个仅使用1、2和3来生成根据高度打印三角形图案的C程序:
Enter the height:
7
Pattern:
1
22
333
1111
22222
333333
1111111
我只能打印数字,但我不知道如何仅使用1、2和3进行打印
到目前为止,这是我的代码:
printf("Enter the height: \n");
scanf("%d", &height);
if(height <0 || height > 10){
printf("Please enter height within 1 to 10!");
}
else{
printf("Pattern: \n");
for(row=1; row<=height; row++){
for(int col=1; col<=row; col++){
printf("%d", row );
}
printf("\n");
}
return 0;
}
输出:
Enter the height:
7
Pattern:
1
22
333
4444
55555
666666
7777777
谢谢
答案 0 :(得分:3)
只需更改您的打印声明,
printf("%d", (row % 3) > 0 ? row % 3 : 3);
答案 1 :(得分:2)
更改为:
for(row=1; row<=height; row++){
int num = row%3;
if(num==0)
num = 3;
for(int col=1; col<=row; col++){
printf("%d", num );
}
printf("\n");
}
逻辑:
1.将row
的值除以3,得到余数(即执行row % 3
)。
2.如果余数为0,则表示行号是3的倍数。因此,打印3s。
3.否则,打印其余部分。
答案 2 :(得分:2)
我只能打印数字,但我不知道如何仅使用1、2和3进行打印
这是因为您一直在打印代码中的行号。实现同一件事的方法有很多。
要解决您的问题,您可以拥有一个变量(在下面的程序中为number
),并在外部incrementing
循环中继续使用for
,一旦变量超过{{ 1}},然后将其重置为3
。
1
或者您可以使用运算符modulus void print_pattern(unsigned height)
{
unsigned row,number,column;
for (row=0, number=1; row < height; row++) {
for (column=0; column <= row; column++)
printf("%u", number);
printf("\r\n");
if (++number > 3)
number = 1;
}
}
。您可以将其应用于%
变量(请参见下面的程序)以获取要在特定行上打印的数字。
row
答案 3 :(得分:1)
使用mod操作%.. (数字%4)介于0和3之间。 因为您想要从1到3,然后取(number%3 + 1)..
printf("Enter the height: \n");
scanf("%d", &height);
if(height <0 || height > 10){
printf("Please enter height within 1 to 10!");
}
else{
printf("Pattern: \n");
for(row=1; row<=height; row++){
for(int col=1; col<=row; col++){
printf("%d", (row%3)+1 );
}
printf("\n");
}
return 0;
}
答案 4 :(得分:1)
#include<stdio.h>
#include<conio.h>
int main(){
int n; int l=1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
int j=i;
while(j!=0){
printf("%d",l);
j--;
}
l++;
if(l==4){
l=1;
}
printf("\n");
}
}