如何在 C 中的嵌套 for 循环构造中处理 printf?
How do I handle printf in a nested for Loops construct in C?
我需要在 C 中使用嵌套 for 循环实现一个函数。
函数声明如下:
void nest_loop(int n);
并且应该为值 n = 5 打印以下内容
A B C D E
A B C D
A B C
A B
A
但是我需要实现该函数,以便它为以下 Intervall [0,9]
中的任何 unsigned int n 生成输出
在n = 5的情况下
据我了解,有 5 个 for 循环。
for_loop1 打印字符 'A'
的 5 倍
for_loop2 打印字符 'B'
的 4 倍
for_loop3 打印字符 'C'
的 3 倍
for_loop4 打印字符 'D'
的 2 倍
for_loop5 打印 1 次字符 'E'
此外,根据我的理解,嵌套循环结构应该如下所示:
int n = 5;
int c = n - 1;
for(int i = c ; i < 0; i--){ // loop for 'E'
c--;
for(int j = c; j < 0; j--){ // loop for 'D'
c--;
for(int k = c; k < 0; k--){ // loop for 'C'
c--;
for(int l = c; l < 0; l--){ // loop for 'B'
c--;
for(int p = c; p < 0; p--){ // loop for 'A'
}
}
}
}
}
我的嵌套 for 循环结构是否正确?
如果是,那么我现在如何实现 printf 以产生提到的输出?
正如@Jonathon Reinhart 所解释的,您只需要在类似于以下的构造中使用两个循环:
for (int i = n; i > 0; i--) {
for (int j = 0; j <= i; j++) {
[...]
}
}
这里有适合您目的的功能代码
#include <stdio.h>
#include <ctype.h>
int main()
{
int num;
scanf("%d", &num);
char init_char = 'A';
for(int i = 0; i < num; i++, init_char++){
for(int j = num; j > i; j--)
printf("%c", init_char);
printf("\n");
}
return 0;
}
答案在评论中解释得很好,祝你好运:)
*我要补充一点,在 C 语言中,您还可以递增字符,阅读什么是 ASCII table 以及如何将字符编码为数字
你知道在书里我们也是从左到右而不是从上到下写的,所以你上面对你的循环的理解是错误的。随时询问任何澄清谢谢。
#include<stdio.h>
void nest_loop(int n)
{
int i,j;
char k = 'A';
for(i=n;i>0;i--)
{
for(j=n;j>i;j--)
{
printf(" ");//print required spaces.
}
for(j=0;j<i;j++)
{
printf("%c",k+j);//initial char value of k is A and will be incremented by one as looping continues.
}
printf("\n");
}
}
int main()
{
int n;
printf("Enter the row number\n");
scanf("%d",&n);
nest_loop(n);
return 0;
}
这是功能代码。
#include <stdio.h>
#include <ctype.h>
void nest_loop(int n) {
for(int i = 0; i < n; i++){
for (int j = 0; j < i; j++)
printf(" ");
char init_char = 'A';
for(int j = 0; j < n-i; j++, init_char++)
printf("%c ", init_char);
printf("\n");
}
}
int main()
{
int num;
printf("input number: ");
scanf("%d", &num);
nest_loop(num);
return 0;
}
输出为
input number: 5
A B C D E
A B C D
A B C
A B
A
我需要在 C 中使用嵌套 for 循环实现一个函数。
函数声明如下:
void nest_loop(int n);
并且应该为值 n = 5 打印以下内容
A B C D E
A B C D
A B C
A B
A
但是我需要实现该函数,以便它为以下 Intervall [0,9]
中的任何 unsigned int n 生成输出在n = 5的情况下
据我了解,有 5 个 for 循环。
for_loop1 打印字符 'A'
的 5 倍for_loop2 打印字符 'B'
的 4 倍for_loop3 打印字符 'C'
的 3 倍for_loop4 打印字符 'D'
的 2 倍for_loop5 打印 1 次字符 'E'
此外,根据我的理解,嵌套循环结构应该如下所示:
int n = 5;
int c = n - 1;
for(int i = c ; i < 0; i--){ // loop for 'E'
c--;
for(int j = c; j < 0; j--){ // loop for 'D'
c--;
for(int k = c; k < 0; k--){ // loop for 'C'
c--;
for(int l = c; l < 0; l--){ // loop for 'B'
c--;
for(int p = c; p < 0; p--){ // loop for 'A'
}
}
}
}
}
我的嵌套 for 循环结构是否正确? 如果是,那么我现在如何实现 printf 以产生提到的输出?
正如@Jonathon Reinhart 所解释的,您只需要在类似于以下的构造中使用两个循环:
for (int i = n; i > 0; i--) {
for (int j = 0; j <= i; j++) {
[...]
}
}
这里有适合您目的的功能代码
#include <stdio.h>
#include <ctype.h>
int main()
{
int num;
scanf("%d", &num);
char init_char = 'A';
for(int i = 0; i < num; i++, init_char++){
for(int j = num; j > i; j--)
printf("%c", init_char);
printf("\n");
}
return 0;
}
答案在评论中解释得很好,祝你好运:) *我要补充一点,在 C 语言中,您还可以递增字符,阅读什么是 ASCII table 以及如何将字符编码为数字
你知道在书里我们也是从左到右而不是从上到下写的,所以你上面对你的循环的理解是错误的。随时询问任何澄清谢谢。
#include<stdio.h>
void nest_loop(int n)
{
int i,j;
char k = 'A';
for(i=n;i>0;i--)
{
for(j=n;j>i;j--)
{
printf(" ");//print required spaces.
}
for(j=0;j<i;j++)
{
printf("%c",k+j);//initial char value of k is A and will be incremented by one as looping continues.
}
printf("\n");
}
}
int main()
{
int n;
printf("Enter the row number\n");
scanf("%d",&n);
nest_loop(n);
return 0;
}
这是功能代码。
#include <stdio.h>
#include <ctype.h>
void nest_loop(int n) {
for(int i = 0; i < n; i++){
for (int j = 0; j < i; j++)
printf(" ");
char init_char = 'A';
for(int j = 0; j < n-i; j++, init_char++)
printf("%c ", init_char);
printf("\n");
}
}
int main()
{
int num;
printf("input number: ");
scanf("%d", &num);
nest_loop(num);
return 0;
}
输出为
input number: 5
A B C D E
A B C D
A B C
A B
A