zzuli oj 1108 打印数字图形

题意分析:
从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用如下函数:PrintSpace(m)用来输出m个空格;PrintDigit(m)来输出一行中的数字串"12...m...21"(该行中的最大数字是m)。函数原型如下:
 void PrintDigit(int m);
 void PrintSpace(int m);
解题思路:
编写两个函数,发现图形规律与打印实心菱形相近,利用两个循环来控制每一行的数字规律。
代码实现:

 1 #include<stdio.h>
 2 void PrintDigit(int m)
 3 {
 4     int i;
 5     for(i=1;i<=m;i++)
 6         printf(" ");
 7 }
 8 void PrintSpace(int m)
 9 {
10     int i;
11     for(i=1;i<=m;i++)
12         printf("%d",i);
13     for(i=m-1;i>=1;i--)
14         printf("%d",i);
15 }
16 int main()
17 {
18     int n,i;
19     scanf("%d",&n);
20     for(i=1;i<=n;i++)
21       {
22           PrintDigit(n-i);
23           PrintSpace(i);
24           printf("\n");
25       }
26     for(i=n-1;i>=1;i--)
27           {
28               PrintDigit(n-i);
29               PrintSpace(i);
30               printf("\n");
31            }
32            return 0;
33 }

易错分析:

忽视空格问题。

原文地址:https://www.cnblogs.com/yuanqingwen/p/10356150.html

时间: 2024-11-12 22:41:53

zzuli oj 1108 打印数字图形的相关文章

1108: 打印数字图形(函数专题)

题目描述 从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形.要求在程序中定义并调用如下函数:PrintSpace(m)用来输出m个空格:PrintDigit(m)来输出一行中的数字串"12...m...21"(该行中的最大数字是m).函数原型如下: void PrintDigit(int m): void PrintSpace(int m); 对于C/C++代码的提交,本题要求必须通过定义PrintSpace函数.PrintDigit函数和main函数实现,否则,返回编译错误.

用代码编译数字图形

1 121 12321 1234321 123454321 打印上述图形 #include <stdio.h>void main(){ int i,j; for (i=0;i<5;i++) { for (j=0;j<2*i+1;j++) { if(j<=i) { printf("%d",j+1); } else { printf("%d",2*i-j+1); } } printf("\n") ; } } 用代码编译数

POJ 2136 Vertical Histogram 打印特殊图形

根据题目要求打印出需要的输出格式. 这算是些趣味题目了,题目本身不难,要说难点就是考如何优雅地去编程了,主要是考编程基础功力. 而且好像测试系统不是十分严格,并不判断后面多余的空格,按题目要求是需要严格去掉后面多余的空格的. 处理这个问题就需要多点代码了. 下面看我使用一个额外的数组spaceHeight[ALP_LEN[来解决这个问题,做到半个多余的空格符也没有. #include <cstdio> #include <string.h> const int MAX_N = 75

Java n个线程轮流打印数字的问题

一. 实现两个线程.轮流打印出数字.例如以下: bThread --> 10 aThread --> 9 bThread --> 8 aThread --> 7 bThread --> 6 aThread --> 5 bThread --> 4 aThread --> 3 bThread --> 2 aThread --> 1 用java中的Lock类实现: package com.yjq.thread_demo; import java.uti

打印数字回环

题目要求: Input a value n, then print out a n×n matrix. Example 1: Input 2, output 1 2 4 3 Example2: Input 5, output 1    2    3    4    5 16   17   18   19    6 15   24   25   20    7 14   23   22   21    8 13   12   11   10    9 思路: 把该输出划分为多个环,每个环上有4根线

打印数字 形状有点得味

打印如下形状的东西: 刚开始看了半天,愣住了,然后才知道了如何做. 一:先来点简单的 就先打印了如下: 这样的还是挺容易的,for循环打印每一行,每一行打印出特定多的,只是在for循环内部确定下一次是要增加打印的个数还是减少,代码: #include <iostream> using namespace std; int main(void) { const int LINES = 15; //n*n的矩形 int cnt = 1; //表示某行该输出多少个数字 for (int i = 0;

蓝桥杯 算法训练 ALGO-145 4-1打印下述图形

算法训练 4-1打印下述图形 时间限制:1.0s   内存限制:256.0MB 问题描述 使用循环结构打印下述图形,打印行数n由用户输入.打印空格时使用"%s"格式,向printf函数传递只包含一个或多个空格的字符串" ",下同. 样例输入 一个满足题目要求的输入范例.例: 5 样例输出 与上面的样例输入对应的输出.例: 数据规模和约定 输入数据中每一个数的范围. 例:0<n<20. 题目解析: 本道题共两种思路,由于 n 的范围很小(0 < n

20140314 java练习题-打印各种图形

1.打印直角三角形 import java.util.Scanner; public class AgeDemo { public static void main(String[] args){ //打印一个倒立的直角三角形如下: //**** //*** //** //* Scanner sc = new Scanner(System.in); System.out.println("请输入边长:"); int a = sc.nextInt(); for(int j=a;j>

PL/SQL语句学习之使用while、loop和for三种循环打印数字的1-10

--使用while循环打印数字的1-10 --set serveroutput on declare --定义循环变量赋初值为1 pnum number := 1; begin while pnum<=10 loop --循环体 dbms_output.put_line(pnum); --使得该变量+1 --pnum++;是错误的写法,oracle不支持这种写法 pnum := pnum+1; end loop; end; --/ --使用loop循环输出1-10 --注意loop循环和whil