如题将输入的两个字符串连接后,将串中全部空格移到串首后输出。
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100], s2[100], result[200];
int i, j;
//获取两个字符串的输入
printf("输入第一个字符串:");
fgets(s1, sizeof(s1), stdin);
printf("输入第二个字符串:");
fgets(s2, sizeof(s2), stdin);
//将两个字符串连接到一个字符串中
strcpy(result, s1);
strcat(result, s2);
//将空格移到字符串首
for (i = 0; result[i] == ' '; i++)
{
for (j = i; j < strlen(result); j++)
{
result[j] = result[j+1];
}
result[strlen(result)] = ' ';
}
//输出结果
printf("连接后的字符串并移动空格:%s", result);
return 0;
}
供参考:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100], s2[100], res[200];
int i, j;
printf("第一个字符串:");
gets(s1);
printf("第二个字符串:");
gets(s2);
//将两个字符串连接到一个字符串中
strcpy(res, s1);
strcat(res, s2);
for (i = 0; i < strlen(res); i++)
{
for (j = 0; j < strlen(res) - i; j++)
{
if (j && res[j] == ' ') {
char ch = res[j];
res[j] = res[j - 1];
res[j - 1] = ch;
}
}
}
printf("全部空格移到串首后输出:%s", res);
return 0;
}
冒泡的写法:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100], s2[100], res[200];
int i, j;
printf("第一个字符串:");
gets(s1);
printf("第二个字符串:");
gets(s2);
//将两个字符串连接到一个字符串中
strcpy(res, s1);
strcat(res, s2);
for (i = 0; i < strlen(res) - 1; i++)
{
for (j = 0; j < strlen(res) - i - 1; j++)
{
if (res[j] != ' ' && res[j+1] == ' '){
char ch = res[j];
res[j] = res[j + 1];
res[j + 1] = ch;
}
}
}
printf("全部空格移到串首后输出:%s", res);
return 0;
}
#include<stdio.h>
#pragma warning(disable:4996)
#define end '0' //用0作为输入结束标志
int main() {
char c;
int count = 0;//单词个数
printf("请输入英文字符,以数字0作为结束标记:\n");
c = getchar();
while (c != end) {//用0作为输入结束标志
int flag = 0;//存在单词则标记为1;
while ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z')) {//单词连续输入
flag = 1;
c = getchar();
}
if (flag == 1) count++;//一个单词结束则count++
if (c == end)break;//判断是否出现结束标志0
c = getchar();
}
printf("\n单词的个数:%d\n", count);
return 0;
}
测试: