用C语言.从键盘输入字符串(无空格、制表符等,长度小于20), 对其中的英文字母进行大小写转换并输出;若输入非英文字母,则输出error
时间: 2023-06-15 18:06:35 浏览: 147
可以使用ctype.h库中的函数来判断输入的字符是否为英文字母,并使用条件语句来进行大小写转换。
以下是示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[20];
printf("请输入字符串:");
scanf("%s", str);
for (int i = 0; str[i] != '\0'; i++) {
if (isalpha(str[i])) { // 如果是英文字母
if (islower(str[i])) { // 如果是小写字母
putchar(toupper(str[i])); // 转换为大写字母并输出
} else { // 否则是大写字母
putchar(tolower(str[i])); // 转换为小写字母并输出
}
} else { // 如果不是英文字母
printf("error");
return 0;
}
}
return 0;
}
```
注意,上面的代码中使用`isalpha()`函数判断字符是否为英文字母,它只能判断ASCII码表中的字母,如果输入的是其他语言的字母或符号,可能会出现错误。
相关问题
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。 输入格式: 输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。用C语言写
为了编写一个C语言程序来完成这个任务,你可以按照以下步骤:
1. 首先,你需要创建一个`main()`函数作为程序的入口点。
2. 使用`scanf()`函数从用户那里读取输入的五个字符串,并存储在一个数组中。这里可以假设我们有一个名为`strArray`的动态数组,每个元素可以存储一个字符串。
3. 然后,使用`qsort()`函数对数组进行排序,传递一个比较函数,以便根据字符串的字典序从小到大排列。
4. 最后,遍历并打印排序后的字符串。
下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体表示两个字符串的比较
struct CompareStrings {
char *s1;
char *s2;
};
// 比较函数,根据字符串字典序进行升序
int compare_strings(const void* a, const void* b) {
struct CompareStrings s1 = *(const struct CompareStrings*)a;
struct CompareStrings s2 = *(const struct CompareStrings*)b;
return strcmp(s1.s1, s2.s1);
}
int main() {
char strArray[5][80];
int i;
// 读取输入的五个字符串
for (i = 0; i < 5; i++) {
scanf("%s", strArray[i]);
}
// 排序字符串数组
struct CompareStrings array[5] = {{"\0"}};
for (i = 0; i < 5; i++) {
array[i].s1 = strArray[i];
}
qsort(array, 5, sizeof(array[0]), compare_strings);
// 打印排序后的字符串
for (i = 0; i < 5; i++) {
printf("%s ", array[i].s1); // 注意,这里不需要字符串结束符'\0'
}
return 0;
}
```
记得在实际运行前检查输入是否满足题目要求,比如字符串长度不超过80个字符。此外,`scanf("%s", strArray[i])`可能需要处理缓冲区溢出的问题。
用c语言编写程序,读入5个字符串,按由小到大的顺序输出。 输入格式: 输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
以下是用C语言编写的程序,可以读取5个字符串并按字母顺序从小到大输出:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STRINGS 5
#define MAX_LENGTH 80
int main() {
char strings[NUM_STRINGS][MAX_LENGTH];
int i, j;
char temp[MAX_LENGTH];
// 读取5个字符串
printf("请输入5个由空格分隔的字符串:\n");
for (i = 0; i < NUM_STRINGS; i++) {
scanf("%s", strings[i]);
}
// 简单的冒泡排序
for (i = 0; i < NUM_STRINGS - 1; i++) {
for (j = 0; j < NUM_STRINGS - i - 1; j++) {
if (strcmp(strings[j], strings[j + 1]) > 0) {
// 交换两个字符串
strcpy(temp, strings[j]);
strcpy(strings[j], strings[j + 1]);
strcpy(strings[j + 1], temp);
}
}
}
// 输出排序后的字符串
printf("排序后的字符串顺序为:\n");
for (i = 0; i < NUM_STRINGS; i++) {
printf("%s\n", strings[i]);
}
return 0;
}
```
这个程序的工作原理如下:
1. 定义了两个常量:NUM_STRINGS(要读取的字符串数量)和MAX_LENGTH(每个字符串的最大长度)。
2. 使用二维字符数组 `strings` 来存储输入的字符串。
3. 使用 `scanf` 函数读取5个字符串,每个字符串存储在 `strings` 数组的不同行中。
4. 使用嵌套的 for 循环实现了一个简单的冒泡排序算法。`strcmp` 函数用于比较两个字符串,`strcpy` 函数用于交换字符串。
5. 最后,使用 for 循环遍历排序后的数组,并打印出排序后的字符串。
这个程序会按照字母顺序(ASCII码顺序)从小到大对输入的字符串进行排序。如果需要按照其他顺序排序(例如忽略大小写的字母顺序),可以对比较部分进行修改。
阅读全文
相关推荐













