gpt4 book ai didi

c - 逐列将字符串打印为矩阵格式

转载 作者:行者123 更新时间:2023-11-30 16:43:29 25 4
gpt4 key购买 nike

逐列垂直打印包含给定字符串中的字母的方阵,重复字母之间用空格分隔。方阵的大小应根据填充给定字符串中的字符所需的单元格来计算。

示例:
输入(字符串):

hell 世界

输出(方阵):

---0  1  2  3

0 H L R

1 E O L

2 L W D

3 --O

----------------------------问题结束---------------- ----------

我的c程序:

void main()

{

char arr[4][4],a[]="HELLOWORLD";

int i,j,n=0;

clrscr();

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if(a[n]!=a[n+1]){

arr[j][i]=a[n];

n++;}

else

arr[j][i]=' ';

}

}

for(i=0;i<4;i++){

for(j=0;j<4;j++){

printf("%c",arr[i][j]);}}

getch();

}

我没有得到所需的输出。请帮助编写代码。谢谢。

还帮助我如何动态声明矩阵 arr[X][X] 对应于用户输入字符串,如果需要 3x3 矩阵,请说“WELCOME”。

最佳答案

像这样:

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

void square_output(const char *mes);

int main(void){
square_output("HELLOWORLD");
puts("");
square_output("WELCOME");
return 0;
}

void square_output(const char *mes){
char *str = malloc(strlen(mes)*2);
char *cp = str;
char *matrix;
int side, exp_len, mat_size;
//separate of duplicate letter by ' '
while(*mes){
*cp++ = *mes++;
if(mes[-1] == *mes)
*cp++ = ' ';
}
*cp = 0;

exp_len = cp - str;
side = ceil(sqrt(exp_len));//dim
mat_size = side * side;
matrix = malloc(mat_size);//1D array
memset(matrix, ' ', mat_size);//initialize by ' '
memcpy(matrix, str, exp_len);
{ //print
int c, r;
for(c = 0; c < side; ++c){
for(r = 0; r < side; ++r){
if(r)
putchar(' ');
putchar(matrix[r * side + c]);//This means matrix[r][c] in 2D
}
puts("\n");
}
}
free(matrix);
free(str);
}

关于c - 逐列将字符串打印为矩阵格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207187/

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