gpt4 book ai didi

c - 根据 C 中的用户输入打印数组

转载 作者:行者123 更新时间:2023-11-30 17:09:22 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,其中用户输入文本,控制台以 7 x 5 的星号网格打印该文本。

例如;

Enter a word:
a

****
*
*****
* *
*****

但是,我无法识别字符并让程序知道。

到目前为止我的尝试:

#include <stdio.h>
#include <string.h>


char a[7][6] = {
" ",
" ",
"**** ",
" *",
"*****",
"* *",
"*****"
};

...other letters...

char word[20];
int i;
int j;
char letter[2];

int main() {//main

fgets(word, sizeof(word), stdin);

for (j = 0; j < strlen(word); j++) {
strcpy(letter, word[j]);
for (i = 0; i < 7 ; i++) {
printf("%s %d\n", letter[i]);
}
}

printf("Total number of characters processed: %d\n", strlen(word) - 1);

return (0);
}//*main

字母以单独的数组形式排列,并通过循环逐行打印,以便水平逐行打印。

我最好的想法是变量letter,它会将值更改为从word读取的当前字符,但我知道这是不正确的。

最佳答案

这是一个以星号形式打印整个单词的工作示例(通过代码进行注释):

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

#define maxchar 10 // number of characters in asterisk form
#define maxrows 6 // vertical length
#define maxcols 5 // horizontal length
#define imax 5 // number of chars to be displayed in asterisk form

int main()
{
// testing word with spaces
char number[imax] = "92 02";

// array of numbers
char letter[maxrows][maxchar][maxcols] =
{ // j=0 , j=1 , j=2 , j=3 , j=4 , j=5 , j=6 , j=7 , j=8 , j=9
{ " ** ", "*** ", "*** ", "*** ", "* *", "****", "* ", "****", " ** ", " ***" }, // row=0
{ "* *", " * ", " *", " *", "* *", "* ", "* ", " *", "* *", "* *" }, // row=1
{ "* *", " * ", " *", " ** ", "****", "*** ", "*** ", " *", " ** ", "* *" }, // row=2
{ "* *", " * ", "*** ", " *", " *", " *", "* *", " *", "* *", " ***" }, // row=3
{ "* *", " * ", "* ", " *", " *", " *", "* *", " *", "* *", " *" }, // row=4
{ " ** ", "****", "****", "*** ", " *", "*** ", "*** ", " *", " ** ", " *" } // row=5
};


// "iterators"
int row, col, i;

for(row=0; row < maxrows; ++row) // print from up to down
{
for(i=0; i < imax; ++i) // for each character in array "number"
{
int j = number[i] - '0'; // get position in "letter". For characters, change to j = number[i] - 'a';

if(j<0)
printf(" "); // if number[i] is not a valid character, print a space
else
for(col = 0; col < maxcols; ++col)
printf("%c", letter[row][j][col]); // print each * at given row

printf(" "); // print a small space between characters
}
printf("\n"); // proceed to next row
}

return 0;
}

虽然我使用数字而不是字符,但最小的更改就可以满足您的需求。对于此代码,number[] = "92 02" 将打印为:

  ***  ***          **   ***   
* * * * * *
* * * * * *
*** *** * * ***
* * * * *
* **** ** ****

关于c - 根据 C 中的用户输入打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33322870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com