gpt4 book ai didi

c - 按要求的顺序打印数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:40 25 4
gpt4 key购买 nike

我是一个新程序员

我有一个字符数组 M = "something",我想以这种方式打印

t
eth
methi
omethin
something

任何人都可以帮助我使用循环以这种方式打印的逻辑。

到目前为止,我已经使用了这段代码,但显示了段错误,任何人都可以帮助我解决我出错的地方。

main() {
int i, j, k, m, n;
char a[] = "Something";

n = sizeof(a) - 1;

for (i = 0; i < (n/2) + 1; i++) {
for (j = 0; j <= n - i; j++)
printf(" ");
for (m = (n/2) - i; !(m >= (n/2)); m--)
printf("%c",a[m]);
for (k = (n/2);k <= (n/2) + i; k++)
printf("%c", a[k]);
printf("\n");
}
}

最佳答案

线性解(注意字符串必须是可修改的)

#include<stdio.h>
#include<string.h>
int main()
{
char array[] = "something";
char * str = array;
int size = strlen(str);
int i=size/2;
if(size%2==0)i--;
for(;i>=0;i--){
char c = str[size-i];
str[size-i]='\0';
printf("%s\n",str+i);
str[size-i]=c;
}
}

我记得我学c的时候有这样的作业:)

更新:

正如 Jonathan Leffler 所指出的,无需修改字符串本身,我们可以通过将字符串长度传递给 printf 函数来进行打印。 (我不知道 %.*s 说明符 :))这表明我们甚至可以从基本的简单问题中学习 :) 谢谢 Jonathan。这使得代码更加优雅和紧凑。

#include<stdio.h>
#include<string.h>
void print_string(const char *string)
{
int size = strlen(string),i;
for (i = (size - 1) / 2; i >= 0; i--)
printf("%d:%d: %.*s\n", i, size-2*i, size-2*i, string+i);
}
int main()
{
char * a = "something";
print_string(a);
}

关于c - 按要求的顺序打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16684950/

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