求大佬帮忙看看这道题
定义 char str,编程实现以下功能:1)输入 5 个字符串。
2) 将字符串中的英文字母保留,其他字符全部删除。(以一维数组的角度去处理二维数组)
[思路:先分别写出 str,str数组保留字母的代码,然后观察和综合以上两个代码,写出每一个一维数组保留字母的代码]。
3) 对于剩下的英文字母中的小写字母全部转换为大写字母。
4) 输出这五个字符串。 本帖最后由 a905448839 于 2023-4-23 15:45 编辑
#include <stdio.h>
int main()
{ char str;
int i, j, k;
// 输入5个字符串
for (i = 0; i < 5; i++)
{
printf("请输入第%d个字符串:", i + 1);
gets(str);
}
// 保留英文字母并转换为大写字母
for (i = 0; i < 5; i++)
{
k = 0;
for (j = 0; str != '\0'; j++)
{
if ((str >= 'a' && str <= 'z') ||
(str >= 'A' && str <= 'Z'))
{
if (str >= 'a' && str <= 'z')
{
str = str - 'a' + 'A';
}
else
{
str = str;
}
k++;
}
}
str = '\0'; // 加上字符串结束符
}
// 输出5个字符串
for (i = 0; i < 5; i++)
{
printf("第%d个字符串为:%s\n", i + 1, str);
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void remove_non_alpha(char *str) {
int i = 0, j = 0;
while (str) {
if (isalpha(str)) {
str = str;
}
i++;
}
str = '\0';
}
void to_upper(char *str) {
int i = 0;
while (str) {
str = toupper(str);
i++;
}
}
int main() {
char str;
// 1. 输入5个字符串
for (int i = 0; i < 5; i++) {
printf("请输入字符串 %d: ", i + 1);
fgets(str, sizeof(str), stdin);
str, "\n")] = 0; // 去掉末尾的换行符
}
// 2. 保留英文字母并删除其他字符
for (int i = 0; i < 5; i++) {
remove_non_alpha(str);
}
// 3. 将小写字母转换为大写字母
for (int i = 0; i < 5; i++) {
to_upper(str);
}
// 4. 输出处理后的字符串
printf("\n处理后的字符串:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", str);
}
return 0;
}
这段代码定义了两个辅助函数 `remove_non_alpha` 和 `to_upper`,分别实现题目中要求的功能。`remove_non_alpha` 函数删除字符串中的非英文字母字符,`to_upper` 函数将字符串中的小写字母转换为大写字母。`main` 函数中依次实现了题目要求的输入、处理和输出过程。 isdkz 发表于 2023-4-23 15:01
这段代码定义了两个辅助函数 `remove_non_alpha` 和 `to_upper`,分别实现题目中要求的功能。`remove ...
不好意思啊,你这个有好多我没学过,看不太懂 isdkz 发表于 2023-4-23 15:01
这段代码定义了两个辅助函数 `remove_non_alpha` 和 `to_upper`,分别实现题目中要求的功能。`remove ...
#include<stdio.h>
#include<string.h>
int main()
{
char str;
int i,j,t=0;
for(i=0;i<5;i++)
{gets(str);}
for(i=0;i<5;i++)
for(j=0;j<80;j++)
{
if('a'<=str&&str<='z')
{
str-=32;
}
}
for(i=0;i<5;i++)
{puts(str);}
}
我用这个方法搞,就是不知道怎么删除空格和数字 乔治爱啃脚趾 发表于 2023-4-23 15:38
#include
#include
int main()
#include<stdio.h>
#include<string.h>
int main()
{
char str,str1;
int i,j,t=0;
for(i=0;i<5;i++)
{gets(str);}
for(i=0;i<5;i++)
for(j=0;j<80;j++)
{
if('a'<=str&&str<='z')
{
str-=32;
}
}
for(i=0;i<5;i++)
{puts(str);}
} 乔治爱啃脚趾 发表于 2023-4-23 15:38
#include
#include
int main()
了解您的需求,我们可以修改您提供的代码来实现题目要求。以下是修改后的代码:
#include <stdio.h>
#include <string.h>
int main() {
char str;
int i, j, k;
// 输入5个字符串
for (i = 0; i < 5; i++) {
printf("请输入字符串 %d: ", i + 1);
gets(str);
}
// 保留英文字母并删除其他字符
for (i = 0; i < 5; i++) {
k = 0;
for (j = 0; j < strlen(str); j++) {
if (('a' <= str && str <= 'z') || ('A' <= str && str <= 'Z')) {
str = str;
}
}
str = '\0';
}
// 将小写字母转换为大写字母
for (i = 0; i < 5; i++) {
for (j = 0; j < strlen(str); j++) {
if ('a' <= str && str <= 'z') {
str -= 32;
}
}
}
// 输出处理后的字符串
printf("\n处理后的字符串:\n");
for (i = 0; i < 5; i++) {
puts(str);
}
return 0;
}
这个代码使用您的原始结构,但添加了一个额外的循环来删除字符串中的非英文字母字符。我们使用变量 `k` 来记录已经处理过的字符的位置。在字符串中遍历每个字符,如果是英文字母,将其复制到 `k` 位置,然后增加 `k` 的值。处理完毕后,我们将字符串末尾的空字符 `\0` 设置在 `k` 位置。这样就实现了保留英文字母并删除其他字符的功能。 isdkz 发表于 2023-4-23 15:50
了解您的需求,我们可以修改您提供的代码来实现题目要求。以下是修改后的代码:
我已经明白了,谢谢你{:7_112:}
页:
[1]