C语言编程,用键盘输入一个正数N,输出2N+1行的空心菱形
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 07:58:56
C语言编程,用键盘输入一个正数N,输出2N+1行的空心菱形
例如输入N=3,输出
例如输入N=3,输出
#include <stdio.h>
/* 能输出n个空格的函数 */
void repspace(int n) {
if (n == 0) return;
putchar(' ');
repspace(n-1);
}
/* b:第一个数字前有几个空格 a:第一个数字后有几个空格 */
/* e:输出到第几行为止 low:0代表输出的是上面那行,1代表是下面那行 */
void prline(int b, int a, int n, int e, int low) {
repspace(b);
putchar('0'+n);
if (a > 0) {
repspace(a);
putchar('0'+n);
}
putchar('\n');
if (low == 1) return;
if (e == n) return;
if (low == 0)
prline(b-1, a+2, n+1, e, 0);
prline(b, a, n, e, 1);
}
void pr(int n) {
prline(n, -1, 1, n+1, 0);
}
int main()
{
int n;
scanf("%d", &n);
pr(n);
return 0;
}可以知道每行有两个数值,在第一个数字的“前面有几个空格”和“后面有几个空格”.如果后面大于0个空格,就说明数字要输出两个(一前一后)
然后还有一上一下,现在输出了 2 2 等会儿还要 2 2,这样的结构,呃,我感觉我是不是又写天书一样的代码出来了
/* 能输出n个空格的函数 */
void repspace(int n) {
if (n == 0) return;
putchar(' ');
repspace(n-1);
}
/* b:第一个数字前有几个空格 a:第一个数字后有几个空格 */
/* e:输出到第几行为止 low:0代表输出的是上面那行,1代表是下面那行 */
void prline(int b, int a, int n, int e, int low) {
repspace(b);
putchar('0'+n);
if (a > 0) {
repspace(a);
putchar('0'+n);
}
putchar('\n');
if (low == 1) return;
if (e == n) return;
if (low == 0)
prline(b-1, a+2, n+1, e, 0);
prline(b, a, n, e, 1);
}
void pr(int n) {
prline(n, -1, 1, n+1, 0);
}
int main()
{
int n;
scanf("%d", &n);
pr(n);
return 0;
}可以知道每行有两个数值,在第一个数字的“前面有几个空格”和“后面有几个空格”.如果后面大于0个空格,就说明数字要输出两个(一前一后)
然后还有一上一下,现在输出了 2 2 等会儿还要 2 2,这样的结构,呃,我感觉我是不是又写天书一样的代码出来了
C语言编程,用键盘输入一个正数N,输出2N+1行的空心菱形
用C语言编程:从键盘输入N,输出一个由*组成的N行的等腰三角形
用C语言编程:从键盘输入N,输出一个由*组成的边长为n的正六边形,我要空心和实心的两个,编2个程序.
c语言编程:编程输出n行图形.(n值通过键盘输入)
用C语言编程,从键盘输入正整数n,输出1+(1+2)+(1+2+3)+···+(1+2+3+···+n)的值
C语言编程 计算1!+2!+3!+...+n!的值,其中n的值通过键盘输入
C语言编程:由键盘输入一个点的坐标,判断这个点是否在单位圆内,在的话输出Y,否则输出N.
用C语言编程:用函数调用的方法求f(k,n)=1^k+2^k+…+n^k,其中k和n从键盘输入
C语言编程题:S=1!+2!+3!+4!+5!+…+n!n由键盘输入
C语言编程 从键盘输入任意自然数N(N>10),要求:1)筛选出3-N之间的素数; 2)输出素数,每个数占6宽度
c语言从键盘输入n求1+2+...+n的结果并输出:while语句中为什么是n=n-1?不是n=n+1?
C语言编程.从键盘输入一个小于1000的正数,要求输出它的平方根(如果平方根不是整数,则输出其整数