描述
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输入描述:
每一行包括两个字符串,长度不超过100。
输出描述:
可能有多组测试数据,对于每组数据, 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 输出连接后的字符串。
示例1
输入:
abc def
复制输出:
abcdef
答案1
#include <stdio.h>
int main() {
char input[400];
int i=0;
while(1){
scanf("%c",&input[i]);
if(input[i]==' '){
continue;i++;
}
printf("%c",input[i]);
i++;
if(input[i]==EOF){
break;
}
}
return 0;
}
详解1
偷懒方法,这样应该是没问题,但是运行起来效率不佳,建议采用答案2
答案2
#include <stdio.h>
int main() {
char input1[100], input2[100], output[200];
int i = 0, j = 0;
// 读取第一个字符串
while (1) {
scanf("%c", &input1[i]);
if (input1[i] == ' ' || input1[i] == '\n') {
break;
} else {
i++;
}
}
// 读取第二个字符串
while (1) {
scanf("%c", &input2[j]);
if (input2[j] == '\n') {
break;
} else {
j++;
}
}
// 连接两个字符串
int k;
for (k = 0; k < i; k++) {
output[k] = input1[k];
}int l;
for ( l = 0; l < j; l++) {
output[k + l] = input2[l];
}
output[k + l] = '\0';
// 输出连接后的字符串
printf("%s\n", output);
return 0;
}
详解2
-
char input1[100], input2[100], output[200];
:定义了三个字符数组,分别是input1
、input2
和output
。input1
和input2
用于存储两个输入的字符串,output
用于存储连接后的字符串。数组大小分别为 100 和 200。 -
while (1) {...}
:无限循环,用于读取第一个字符串。-
scanf("%c", &input1[i]);
:使用scanf
函数逐个字符地读取输入,并将其存储在input1
数组中。 -
if (input1[i] == ' ' || input1[i] == '\n') { break; }
:当读取到空格或换行符时,结束当前循环,跳出读取第一个字符串的过程。 -
else { i++; }
:否则,增加i
的值,以便存储下一个字符。
-
-
while (1) {...}
:无限循环,用于读取第二个字符串。-
scanf("%c", &input2[j]);
:使用scanf
函数逐个字符地读取输入,并将其存储在input2
数组中。 -
if (input2[j] == '\n') { break; }
:当读取到换行符时,结束当前循环,跳出读取第二个字符串的过程。 -
else { j++; }
:否则,增加j
的值,以便存储下一个字符。
-
-
for (k = 0; k < i; k++) {...}
:使用for
循环将第一个字符串input1
中的字符复制到output
中。 -
for (int l = 0; l < j; l++) {...}
:使用for
循环将第二个字符串input2
中的字符连接到output
的末尾。 -
output[k + l] = '\0';
:在连接完第二个字符串后,添加字符串结束符'\0'
,以表示连接后的字符串的结束。 -
printf("%s\n", output);
:输出连接后的字符串。