用golang打印数字

效果:

guodeMacBook-Air:programming_in_go guo$ go run 1_1.go 1234
   1    222222  333333  4    4 
 1 1         2       3  4    4 
   1    222222  333333  444444 
   1    2            3       4 
1111111 222222  333333       4

go 源码(节选)

package main

import (
    "fmt"
    "os"
)

func main() {
    if len(os.Args) != 2 { 
        fmt.Printf("%s number\n", os.Args[0])
        return
    }   

    bigdigits := [][]string{
        {"  000 ",
        " 0     0", 
        " 0     0", 
        " 0     0", 
        "   000  ",  
        },  
        {   
        "   1   ",  
        " 1 1   ",  
        "   1   ",  
        "   1   ",  
        "1111111",
        },  
        {
        "999999",
        "9    9",
        "999999",
        "     9",
        "999999",
        },
    }
    
    for row := range bigdigits[0] {
        strdigit := os.Args[1]
        line := ""
        for i := range strdigit {
            d := strdigit[i] - ‘0‘
            if d < 0 || d > 9 {
                fmt.Printf("error number\n")
                return
            }
            line += bigdigits[d][row] + " "
        }
        fmt.Printf("%s\n", line)
    }
}

完成同同样效果的c语言源码(节选)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    const char *(a[][11]) = { 
        {"  000 ",
        " 0     0",
        " 0     0",
        " 0     0",
        "   000  ",
        },  
        {   
        "   1    ",
        " 1 1    ",
        "   1    ",
        "   1    ",
        "1111111 "
        },  
        {
        "999999 ",
        "9    9 ",
        "999999 ",
        "     9 ",
        "999999 "
        }
    };

    if (argc != 2) {
        printf("Usage: %s <number>\n", argv[0]);
        return 0;
    }

    char *p;
    int d, r, row;
    row = (int)(sizeof(a[0]) / sizeof(a[0][0]));

    for (r = 0; r < row; r++) {

        for (p = argv[1]; *p; p++) {
            d = *p - ‘0‘;
            if (d < 0 || d > 9) {
                printf("error number \n");
                return EXIT_FAILURE;
            }
            if (a[d][r] == NULL)
                goto done;

            printf("%s", a[d][r]);
        }
        printf("\n");
    }
done:
    return 0;
}
时间: 2024-08-07 06:24:45

用golang打印数字的相关文章

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;

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

Java多个线程顺序打印数字

要求 启动N个线程, 这N个线程要不间断按顺序打印数字1-N. 将问题简化为3个线程无限循环打印1到3 方法一: 使用synchronized 三个线程无序竞争同步锁, 如果遇上的是自己的数字, 就打印. 这种方式会浪费大量的循环 public class TestSequential1 { private volatile int pos = 1; private volatile int count = 0; public void one(int i) { synchronized (th

python 小程序,打印数字

要求如下: 指定一个数字 x ,然后打印 1到x 的所有数字,并问是否继续打印,否退出程序,是就继续.再指定一个数字 y ,如果 y> x 就显示 x+1 到 y 的所有数字,y <= x 提示y 太小了,让用户重新指定y 1 #!/usr/bin/python 2 # -*- coding=UTF-8 -*- 3 4 x=0 5 while x<1000: 6 num = input('请输入一个数字:') 7 if num > x: 8 for i in range(num-x

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

实现两个线程,轮流打印出数字,如下: 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.util.con

打印数字

写一个 shell 脚本,提示你输入一个暂停的数字,然后从 1 打印到该数字,然后询问是否继续,继续的话在输入个在数字接着打印,不继续退出. 例:如果输入的是 5,打印 1 2 3 4 5  然后继续输入 15   然后打印 6 7 ...14 15 依此类推. #!/bin/bash read -p "Please input a number: " num1 seq 1 $num1 read -p "Do you want to continue?(y/n): "

c语言实践 打印数字三角形

效果如下图: 思路就是外层循环控制要打印的行数,里层循环控制每行打印的数字个数. int val = 65; for (int i = 0; i < 6; i++) { for (int j = 0; j < i+1 ; j++) { printf("%d ",val); val++; } printf("\n"); } 原文地址:https://www.cnblogs.com/yfish/p/9718173.html