如果输出是这样的话,如何用C语言编写代码呢?我需要字符串格式的代码,因为我们的主题是字符串。
#include <stdio.h>
#include <stdlib.h>
void main()
{
char my_string[50];
printf("Enter a word:");
scanf("%s", my_string);
printf("Enter a word:");
scanf("%s", my_string);
// Some unknown code here...
// this part is my only problem to solve this.
getch();
}
输出:
Hello -> (user input)
World -> (user input)
HWeolrllod -> (result)
答案 0 :(得分:9)
好的,你需要做一些调查。作为一般规则,我们不会为他们做家庭作业,因为:
您应该使用的C库调用用户输入是fgets
,沿着以下行:
char buffer[100];
fgets (buffer, sizeof(buffer), stdin);
这会将一个字符串输入到名为buffer的字符数组中。
如果你使用两个不同的缓冲区,那么你将拥有内存中的字符串。
然后你需要创建指向它们的指针并遍历输出交替字符的两个字符串。指针不是一个容易的主题,但以下伪代码可能会有所帮助:
set p1 to address of first character in string s1
set p1 to address of first character in string s1
while contents of p1 are not end of string marker:
output contents of p1
add 1 to p1 (move to next character)
if contents of p2 are not end of string marker:
output contents of p2
add 1 to p2 (move to next character)
while contents of p2 are not end of string marker:
output contents of p2
add 1 to p2 (move to next character)
将其转换为C将需要一些工作,但算法是可靠的。您只需要知道可以使用char *p1;
定义字符指针,使用*p1
获取其内容并使其前进p = p + 1;
或p1++;
。< / p>
没有为你编写代码(我不会去做),你可能没有其他需要。
答案 1 :(得分:2)
void main()
{
char my_string1[50],my_string2[50]; int ptr;
ptr=0;
printf("Enter a word : ");
scanf("%s",my_string1);
printf("enter a word");
scanf("%s",my_string2);
while(my_string1[ptr]!='\0' && my_string2[ptr]!='\0')
{
printf("%c%c",my_string1[ptr],my_string2[ptr]);
ptr++;
}
if(my_string1[ptr]!='\0')
{
while(my_string1[ptr]!='\0')
{ printf("%c",my_string1[ptr]);
ptr++;
}
}
else
{
while(my_string2[ptr]!='\0')
{printf("%c",my_string2[ptr]);
ptr++;
}
}
}
答案 2 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char my_string1[50],my_string2[50];
int i,l1=1,l2=0;
printf("Enter a word:");
scanf("%s", my_string1);
printf("Enter a word:");
scanf("%s", my_string2);
l1=strlen(my_string1); /* Length of 1st string */
l2=strlen(my_string2); /* Length of 2nd string */
if(l1==l2)
{
for(i=0;i<l1;i++)
{
printf("%c%c",my_string1[i],my_string2[i]);
}
}
else
{
printf("Length of the entered strings do not match");
}
}
这是您需要的代码。
答案 3 :(得分:0)
你可以看到输出必须是一个包含User String1和User String2的所有字符的字符串......
你可以这样做......
//add #include<String.h>
int l1=strlen(s1);
int l2=strlen(s2);
if(l1!=l2)
{
printf("length do not match");
return 0;
}
char ansstr[l1+l2];
int i,j=0,k=0;
for(i=0;i<l1+l2;i=i+2)
{
ansstr[i]=s1[j];
ansstr[i+1]=s2[k];
j++;
k++;``
}
//ansstr is your answer
答案 4 :(得分:-4)
好的,这是你的代码。来吧,如果他在这里问这意味着他无法解决这个问题。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char str1[] = "abcdefghijklmopq";
char str2[] = "jklm";
int len1 = strlen(str1);
int len2 = strlen(str2);
int c1 = 0, c2 = 0;
int max = (len1 > len2) ? len1 : len2 ;
char *result = malloc(len1 + len2);
for(c1 = 0; c1 <= max; c1++) {
if(c1 < len1)
result[c2++] = str1[c1];
if(c1 < len2)
result[c2++] = str2[c1];
}
result[c2] = 0;
printf("\n%s\n", result);
return 0;
}
基本上,循环从str1
中选取一个角色并将其追加到结果中。然后它选择一个字符,该字符与str2
中的第一个字符位于相同位置,并将其附加到结果,就像之前一样。我每次都会将c2
增加2,因为我要向result
添加2个字符。我检查c1
是否大于字符串的长度,因为我只想复制字符串中的字符而没有终止\0
。如果你知道你的字符串长度相同,你可以省略这些ifs。