编写一个“banner”函数,该函数的输入为大写字母,输出为一个字符数组,该数组以图形化的方式表示该字母。
2020-07-27 12:15
176 查看
思路
每个字母是如何表示的?
以’I‘为例:
每次画图都感觉心累,关键是画出来效果还不是很好。(不信你看上边那个图,有些线粗有些线细)有什么好的画图办法快救救孩子吧。
I可以表示为:1910 6401 6110 1910具体含义如下:
千位 | 百位 | 十位 | 个位 | |
---|---|---|---|---|
1910 | 1表示1行 | 9表示9列 | 1表示1行9列用1填充 | 0表示同行没有其它填充 |
具体表示结果:
千位 | 百位 | 十位 | 个位 | |
---|---|---|---|---|
6401 | 6表示1行 | 4表示4列 | 0表示6行4列用0填充 | 1表示同行后面有其它填充 |
6110 | 6表示1行 | 1表示1列 | 1表示6行1列用0填充 | 0表示同行没有其它填充 |
具体表示结果:
最后一个1910和第一个1910表示的一样。
字母在文件中的存放
文件中每行代表一个字母,要显示某一个字母只需读取固定的行
代码
//编写一个“banner”函数,该函数的输入为大写字母,输出为一个字符数组,该数组以图形化的方式表示该字母。 //四位数分别表示:千:行 百:列 十:输出空格还是* 个位:后面是否有连续的输出 #include<stdio.h> void print(int l) { int WhichLine = l;//指定要读取哪一行 int CurrentIndex = 0;//当前读取的行 int k, num; int data[100]; FILE* fw = fopen("存放字母文件", "r");//根据自己的存放路径,进行修改。 //读取固定的某一行 while (!feof(fw)) { if (CurrentIndex == WhichLine) { fscanf(fw, "%d", &num); for (k = 0; k < num; k++) fscanf(fw, "%d", &data[k]); break; } fscanf(fw, "%d", &num); for (k = 0; k < num; k++) fscanf(fw, "%d", &data[k]); CurrentIndex++; } fclose(fw); //数据读取完毕,进行打印 int i, j; for (k = 0; k < num; k++) { //打印* if (data[k] / 10 % 10 == 1)//十位为1,打印* { for (i = 0; i < data[k] / 1000; i++)//打印的行(千位) { for (j = 0; j < data[k] / 100 % 10; j++)//打印的列(百位) { printf("%c", '*'); } if (data[k] % 10 == 1)//个位,判断是否在同行打印。若为1在同行打印 { for (j = 0; j < data[k + 1] / 100 % 10; j++) { if (data[k + 1] / 10 % 10 == 1) printf("%c", '*'); else printf("%c", ' '); } if (data[k+1] % 10 == 1) //for (j = 0; j < data[k + 2] / 100 % 10; j++) { if (data[k + 2] / 10 % 10 == 1) { for (int t= 0; t< data[k + 2] / 100 % 10; t++) printf("%c", '*'); if (data[k + 2] % 10 == 1) for (int r= 0; r< data[k + 3] / 100 % 10; r++) { if (data[k + 3] / 10 % 10 == 1) printf("%c", '*'); else printf("%c", ' '); } } else { for (int t = 0; t< data[k + 2] / 100 % 10; t++) printf("%c", ' '); if (data[k + 2] % 10 == 1) for (int r= 0; r < data[k + 3] / 100 % 10; r++) { if (data[k + 3] / 10 % 10 == 1) printf("%c", '*'); else printf("%c", ' '); } } } } printf("\n"); } if (data[k] % 10 == 1) k++; if (data[k] % 10 == 1) k++; if (data[k] % 10 == 1) k++; } //打印空格 if (data[k] / 10 % 10 == 0)//十位为0,打印空格 { for (i = 0; i < data[k] / 1000; i++)//打印的行(千位) { for (j = 0; j < data[k] / 100 % 10; j++)//打印的列(百位) printf("%c", ' '); if (data[k] % 10 == 1)//个位,判断是否在同行打印。若为1在同行打印 { for (j = 0; j < data[k + 1] / 100 % 10; j++) { if (data[k + 1] / 10 % 10 == 1) printf("%c", '*'); else printf("%c", ' '); } if (data[k + 1] % 10 == 1) { if (data[k + 2] / 10 % 10 == 1) { for (int t = 0; t< data[k + 2] / 100 % 10; t++) printf("%c", '*'); if (data[k + 2] % 10 == 1) for (int r = 0; r < data[k + 3] / 100 % 10; r++) { if (data[k + 3] / 10 % 10 == 1) printf("%c", '*'); else printf("%c", ' '); } } else { for (int t = 0; t < data[k + 2] / 100 % 10; t++) printf("%c", ' '); if (data[k + 2] % 10 == 1) for (int r = 0; r < data[k + 3] / 100 % 10; r++) { if (data[k + 3] / 10 % 10 == 1) printf("%c", '*'); else printf("%c", ' '); } } } } printf("\n"); } if (data[k] % 10 == 1) k++; if (data[k] % 10 == 1) k++; if (data[k] % 10 == 1) k++; } } } void main() { char ch; printf("请输入一个大写字母:"); scanf("%c", &ch); if (ch >= 65 && ch <= 90) { printf("%d", ch); printf("该字母对应的字符数组为:\n"); print(ch - 65); } else printf("请输入大写字母!"); }
运行结果
部分字母表示表示:
15 1401 1110 1301 1111 1101 1110 1201 1510 1101 1111 1501 1110 1111 1701 1110 (A)
9 1410 2111 2201 2110 1410 2111 2201 2110 1410 (B)
8 1510 1301 1110 1201 1110 1101 1110 1510 (Z)
6 4111 4201 4110 1410 1301 1110(U)
6 1510 2110 1510 2401 2110 1510(S)
相关文章推荐
- 编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格,和其他字符的个数,在主函数中输入字符串以及输出上述统计的结果。再考虑将算的的结果放在一个数组中
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 编写一个程序从标准输入读取字符,并把它们写到标准输出。除了大写字母转化成小写字母之外,其他的原样输出。
- (C++)编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 编写一函数,由实参数来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果
- 习题7.9 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果
- 【C语言】编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- C语言程序设计联系题 编写一个函数,由实参传来一个字符串,统计此字符串中的字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述结果。
- 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 编写一个程序,从标准输入读取字符,并把它们写到标准输出中。除了大写字母字符要转化为小写字母之外,所有字符的输出形式应该和他的输入形式完全相同
- 【c语言】编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出
- C语言 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- C语言程序设计第四版(谭浩强)7.9 编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数,在主函数中输入字符串并输出以上结果。
- 编写一个程序从标准输入读取字符,并把他们写到标准输出,除了大写字母转换成小写字母之外,其他的原样输出。
- ASCII码的应用(.编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。)
- 编写一个函数,由实参传来一个字符串,统计次字符串中字母、数字、空格和其他字符的个数,在主函数 中输入字符串以及输出上述的结果
- 请编写一个程序,输入一个由小写字母和其他字符构成的序列字符串保存在tt中,统计“a”到“z”26个字母各自出现的次数,并依次保存在pp数组中,并输出pp数组内容。
- 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
- 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。