分享
用golang打印数字
guonaihong · · 5170 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
效果:
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;
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信5170 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
效果:
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;
}