1、写一个c语言程序,从键盘输入字符串a,a中有若干个单词且单词间由一个或者多个空格相隔,字符串的开头和结尾也可能存在空格。设计一个程序将字符串a中每一个单词的首字母按照顺序放入字符串b中,并输出字符串b
时间: 2024-02-18 10:59:01 浏览: 66
好的,我来帮您写一个符合要求的 C 语言程序:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char a[100], b[100];
int i, j = 0, len;
printf("请输入字符串a:");
gets(a); // 从键盘输入字符串a
len = strlen(a);
for (i = 0; i < len; i++)
{
if (a[i] != ' ' && (i == 0 || a[i-1] == ' ')) // 判断单词的首字母
{
b[j++] = a[i]; // 将首字母存入字符串b中
}
}
b[j] = '\0'; // 在字符串b的末尾添加结束符
printf("输出字符串b:");
puts(b); // 输出字符串b
return 0;
}
```
程序的思路是:首先从键盘输入字符串 a,然后遍历字符串 a 中的每一个字符,判断是否为单词的首字母,如果是,则将其存入字符串 b 中。最后输出字符串 b。
需要注意的是,在输入字符串 a 时,使用 gets 函数,因为该函数可以读取空格,而 scanf 函数无法读取空格。同时,在输出字符串 b 时,使用 puts 函数,因为该函数可以输出字符串,并自动换行。
相关问题
写一个c语言程序,从键盘输入字符串a,a中有若干个单词且单词间由一个或者多个空格相隔,字符串的开头和结尾也可能存在空格。设计一个程序将字符串a中每一个单词的首字母按照顺序放入字符串b中,并输出字符串b
以下是实现上述功能的C语言程序:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char a[MAX_LEN], b[MAX_LEN];
int len_a, len_b, i, j;
// 读入字符串a
printf("请输入字符串a:");
fgets(a, MAX_LEN, stdin);
len_a = strlen(a);
// 将每个单词的首字母放入字符串b中
j = 0;
for (i = 0; i < len_a; i++) {
if (i == 0 || isspace(a[i - 1])) { // 判断单词的开头
b[j++] = toupper(a[i]); // 将首字母转为大写并存入字符串b中
}
}
b[j] = '\0'; // 字符串b以空字符结尾
// 输出字符串b
len_b = strlen(b);
printf("字符串b为:%s\n", b);
return 0;
}
```
程序的主要思路是从字符串a中逐个字符遍历,判断每个单词的开头,将其首字母转为大写并存入字符串b中。最后输出字符串b。
其中,使用了C标准库中的`isspace()`函数判断字符是否为空格,`toupper()`函数将字符转为大写,`fgets()`函数从标准输入中读入字符串。另外,为避免字符串越界,程序中使用了预定义常量`MAX_LEN`来限制字符串的最大长度。
用c语言实现从键盘输入字符串a,a中有若干个单词且单词间由一个或者多个空格相隔,字符串的开头和结尾也可能存在空格。设计一个程序将字符串a中每一个单词的首字母按照顺序放入字符串b中,并输出字符串b。
可以使用C语言的字符串处理函数来实现该功能,具体步骤如下:
1. 从键盘输入字符串a。
2. 定义一个字符指针p,指向字符串a的首地址。
3. 定义一个字符数组b,用于存放每个单词的首字母。
4. 使用while循环遍历字符串a,当遇到空格时,将指针p移动到下一个单词的首字母位置,并将当前单词的首字母存入字符数组b中。
5. 循环结束后,将字符数组b中的内容输出即可。
下面是实现该功能的代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
int main() {
char a[MAX_SIZE];
char b[MAX_SIZE];
char *p = a;
int i = 0;
printf("请输入字符串a:");
gets(a); // 从键盘输入字符串a
// 遍历字符串a
while (*p != '\0') {
// 跳过开头的空格
while (*p == ' ') {
p++;
}
// 将当前单词的首字母存入字符数组b中
b[i++] = *p;
// 移动指针p到当前单词的结尾
while (*p != ' ' && *p != '\0') {
p++;
}
}
// 在字符数组b的末尾添加结束符
b[i] = '\0';
printf("输出字符串b:");
puts(b); // 输出字符串b
return 0;
}
```
注意,上述代码中使用了gets()函数来获取输入的字符串a,该函数存在安全问题,不建议在实际应用中使用。在实际应用中,应该使用fgets()函数,并对输入的字符串进行安全验证和处理。
阅读全文