数字的半金字塔
Half pyramid of numbers
我需要以金字塔模式生成以下奇数输出。
输出会像
1
3 3
5 5 5
7 7 7 7
我写了下面的代码。我应该修改哪一部分?
#include<stdio.h>
int main()
{
int num,r,c;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
m=1;
for(c=1; c<=m; c++)
printf("%d",r);
printf("\n");
}
}
return 0;
}
当前输出:
当前输出就像-
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
在您的代码中,而不是
m=1;
你应该写
m= ( (r/2) + 1);
否则,您将始终只在 for
循环中迭代一次。
一些小的修改就可以了:
#include<stdio.h>
int main()
{
int num,r,c,m=0;
printf("Enter structure number : \n");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
m++;
for(c=1; c<=m; c++)
printf("%d ",r);
printf("\n");
}
}
return 0;
}
- m 未申报
- 在 printf 消息末尾换行
- m 在每次奇数次迭代时递增
- space 印刷数字之间
这里是demo.
内部 for
循环应如下所示:
for(c=1; c <= r/2; c++)
printf("%d ",r);
想一想。你想在每一行打印一个四舍五入的 r/2
数字,对吗?
赞:
3/2
-> 1.5 -rounded-> 1 -> 打印:3
5/2
-> 2.5 -rounded-> 2 -> 打印:5 5
等等。
您可以 运行 此处的代码 ideone.com
你可以这样写:
for(r=1; r <= num; r+=2) //we only need odd numbers
{
times = r/2 + 1; //how many times to print odd number
for(c=1; c <= times; c++)
printf("%d",r); //print one character at a time
printf("\n");
}
如果您只遍历奇数,您可能会更好地理解它。我目前正在这样做并计算我需要打印该数字多少次,然后我只打印它 times
的次数。
这段代码中有 2 个错误。
m 未在任何地方声明。
你是运行一个无限循环
试试这个。
#include<stdio.h>
int main()
{
int num,r,c,m;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
m=r;
for(c=1; c<=m; c++)
printf("%d",r);
printf("\n");
}
}
return 0;
}
#include<stdio.h>
int main()
{
int num,r,c;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
int m=r;
for(c=1; c<=m; c++)
{
if(c%2 != 0){
printf("%d ",r);
}
}
printf("\n");
}
}
return 0;
}
并测试
sh-4.3# main
Enter structure number : 9
1
3 3
5 5 5
7 7 7 7
9 9 9 9 9
在第 1 行,您应该打印 1。
在第 2 行,您应该打印 3.
在第 3 行,您应该打印 5.
在第 4 行,您应该打印 7.
.....................
.....................
在行 n 中,您应该打印 2*n-1.
你可以检查这个:
#include<stdio.h>
int main()
{
int num,r,c;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
for(c=1; c<=r; c++)
printf("%d",2*r-1);
printf("\n");
}
return 0;
}
请看这个:
for(r=1; r<=num; r+=2) // increment by 2, work for r= 1,3,5,7...
{
for(c=1; c<=r; c+=2)// increment by 2
printf("%d",r);
printf("\n");
}
如果您想要替代数字,如 1、3、5、7...,只需将值递增 2
。
我需要以金字塔模式生成以下奇数输出。 输出会像
1
3 3
5 5 5
7 7 7 7
我写了下面的代码。我应该修改哪一部分?
#include<stdio.h>
int main()
{
int num,r,c;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
m=1;
for(c=1; c<=m; c++)
printf("%d",r);
printf("\n");
}
}
return 0;
}
当前输出:
当前输出就像-
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
在您的代码中,而不是
m=1;
你应该写
m= ( (r/2) + 1);
否则,您将始终只在 for
循环中迭代一次。
一些小的修改就可以了:
#include<stdio.h>
int main()
{
int num,r,c,m=0;
printf("Enter structure number : \n");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
m++;
for(c=1; c<=m; c++)
printf("%d ",r);
printf("\n");
}
}
return 0;
}
- m 未申报
- 在 printf 消息末尾换行
- m 在每次奇数次迭代时递增
- space 印刷数字之间
这里是demo.
内部 for
循环应如下所示:
for(c=1; c <= r/2; c++)
printf("%d ",r);
想一想。你想在每一行打印一个四舍五入的 r/2
数字,对吗?
赞:
3/2
-> 1.5 -rounded-> 1 -> 打印:3
5/2
-> 2.5 -rounded-> 2 -> 打印:5 5
等等。
您可以 运行 此处的代码 ideone.com
你可以这样写:
for(r=1; r <= num; r+=2) //we only need odd numbers
{
times = r/2 + 1; //how many times to print odd number
for(c=1; c <= times; c++)
printf("%d",r); //print one character at a time
printf("\n");
}
如果您只遍历奇数,您可能会更好地理解它。我目前正在这样做并计算我需要打印该数字多少次,然后我只打印它 times
的次数。
这段代码中有 2 个错误。 m 未在任何地方声明。 你是运行一个无限循环
试试这个。
#include<stdio.h>
int main()
{
int num,r,c,m;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
m=r;
for(c=1; c<=m; c++)
printf("%d",r);
printf("\n");
}
}
return 0;
}
#include<stdio.h>
int main()
{
int num,r,c;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
if(r%2 != 0){
int m=r;
for(c=1; c<=m; c++)
{
if(c%2 != 0){
printf("%d ",r);
}
}
printf("\n");
}
}
return 0;
}
并测试
sh-4.3# main
Enter structure number : 9
1
3 3
5 5 5
7 7 7 7
9 9 9 9 9
在第 1 行,您应该打印 1。
在第 2 行,您应该打印 3.
在第 3 行,您应该打印 5.
在第 4 行,您应该打印 7.
.....................
.....................
在行 n 中,您应该打印 2*n-1.
你可以检查这个:
#include<stdio.h>
int main()
{
int num,r,c;
printf("Enter structure number : ");
scanf("%d", &num);
for(r=1; r<=num; r++)
{
for(c=1; c<=r; c++)
printf("%d",2*r-1);
printf("\n");
}
return 0;
}
请看这个:
for(r=1; r<=num; r+=2) // increment by 2, work for r= 1,3,5,7...
{
for(c=1; c<=r; c+=2)// increment by 2
printf("%d",r);
printf("\n");
}
如果您想要替代数字,如 1、3、5、7...,只需将值递增 2
。