gpt4 book ai didi

C 程序中相同首字母的串联(不区分大小写)

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

我们必须编写一个程序,按照字母顺序组合第一个字母。例如。输入=茶、船、蜜蜂、脚趾、婴儿。输出应该是 =Babybeeboat,Teatoe。但我的程序在组合单词之前会打印相同的字符串两次。这是我的代码:

//how to combine first letter alike string

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

int main()
{
char str1[1000][1000], str[1000], temp[1000];
int n, i, p, j, a;
char *ptr, *ptr1;

printf("Enter how many arrays: ");
scanf("%d", &n);

for(i=0; i<n; i++)
{
printf("Enter string %d: ", i+1);
scanf("%s", &str1[i]);
}

for(i=0; i<n; i++)
{
for(j=0; j<n-i-1; j++)
{
if(strcmp(str1[j], str1[j+1])>0)
{
strcpy(temp, str1[j]);
strcpy(str1[j], str1[j+1]);
strcpy(str1[j+1], temp);
}
}
}

for(i=0; i<n; i++)
{
for(j=0; j<i-1; j++)
{
a=strncmp(str1[j],str1[j+1],1);
if(a==0)
printf("%s", str1[j]);
else
printf(",");
}
}
for(i=0; i<n; i++)
{
for(j=0; j<i-1; j++)
{
a=strncmp(str1[j],str1[j+1],1);
if(a==0)
printf("%s", str1[i]);
else
printf(",");
}
}
}

最佳答案

你在最后几个 for 循环中出错了:

for(i=0; i<n; i++)
{
for(j=0; j<n-i-1; j++)
{

外循环应在 n-1 处停止,内循环应从 i+1(即数组中的下一个字符串)开始到 n:

for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
{
if(strcmp(str1[i], str1[j])>0)
{
strcpy(temp, str1[i]);
strcpy(str1[i], str1[j]);
strcpy(str1[j], temp);
}
}
}

然后您只需要在此之后进行一个循环来检查数组中字符串的第一个字符。如果字符不同,则打印 ,<string> 。存储该字符以便在下一次迭代中进行比较。

char letter;
for(i=0; i<n; i++)
{
if (i != 0)
{
if (str1[i][0] != letter)
{
printf(",");
}
}

printf("%s", str1[i]);
letter = str1[i][0];
}

关于C 程序中相同首字母的串联(不区分大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59024711/

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