利用指针任意给定一个字符串s(长度小于100),其中只包含大写字母“A—Z”和小写字母“a—z”。你的任务是把s中大写字母和小写字母分开,并分别存到指定的字符数组中。拆分后原字母顺序保持不变。本题要求用函数实现。
时间: 2024-05-10 19:19:36 浏览: 107
以下是一个实现该功能的函数示例:
```c
void splitString(char* s, char* upperCase, char* lowerCase) {
int i = 0, j = 0, k = 0;
while (s[i] != '\0') {
if (s[i] >= 'A' && s[i] <= 'Z') {
upperCase[j] = s[i];
j++;
} else if (s[i] >= 'a' && s[i] <= 'z') {
lowerCase[k] = s[i];
k++;
}
i++;
}
upperCase[j] = '\0';
lowerCase[k] = '\0';
}
```
该函数接受一个字符串指针 `s`,以及两个字符数组指针 `upperCase` 和 `lowerCase`,分别用于存放大写字母和小写字母。在函数内部,使用循环遍历字符串 `s` 中的每个字符,判断其是否为大写或小写字母,并将其分别存放到 `upperCase` 和 `lowerCase` 中。最后,在两个数组的末尾添加字符串终止符 `\0`,以保证字符串的正确性。
相关问题
给定一个字符串,编写一个函数,将该字符串中的字母全部转换为大写字母。代码
可以使用循环遍历字符串的每个字符,并使用 `toupper()` 函数将小写字母转换成大写字母。以下是一个简单的实现:
```c
#include <stdio.h>
#include <ctype.h>
void to_upper(char *str)
{
int i = 0;
while (str[i] != '\0') {
str[i] = toupper(str[i]);
i++;
}
}
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
to_upper(str);
printf("转换后的字符串为:%s\n", str);
return 0;
}
```
在此程序中,我们使用 `to_upper()` 函数将字符串中的所有字母转换为大写字母。该函数使用指针参数,以便在函数内部修改原始字符串的值。我们使用 `toupper()` 函数将每个小写字母转换为大写字母,直到遇到字符串的结尾标志 `\0`。
在 `main()` 函数中,我们使用 `scanf()` 从用户那里获取字符串。然后,我们将字符串传递给 `to_upper()` 函数,以便在函数内部将其转换为大写字母。最后,我们输出转换后的字符串。
编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。假设句子长度不超过100个字符。根据给定的句子加密函数原型SentenceEncoding,编写函数SenaceEncoding调用给定的字符加密函数Chax Encoding完成句子加密。然后,编写主程序提示用户输入英文句子,然后调用函数SentenceEncoding对包子加密,最后输出加密后的向子。字符加密规则为大写字母和小写字母均加密为其补码,我们定义ASCII码值相加为'A'+’2’即155的两个大写字母互为补码,ASCII码值相助加 为'a'+’'即219的两个小写字母互为补码。空格用@代替,句号以#代替,其它字符用包点代替。 函数原型: void SentenceEncoding(char*soure, char*code); 功能:对待加密字符串3ource加密后保存加密字符串到Code. 参数:char*soure,指向待加密句子的字符串指针; char*code 指向加密字符串的字符串指针; 字符加密函数代码。 char Char Encoding(char ch) char encode =0; if(ch>=A* 丝 ch<全’') encode=(A'+2')-ch; 1 else if(ch2=.a.Ach='z.) encode =a'+.z'-ch; else 一 switch(ch) Case '':encode=.@': break; case.':encode= #’: break; default:encode = break;
好的,我明白了您的问题。下面是代码实现:
```c
#include <stdio.h>
char CharEncoding(char ch) {
char encode = 0;
if (ch >= 'A' && ch <= 'Z')
encode = ('A' + '2') - ch;
else if (ch >= 'a' && ch <= 'z')
encode = 'a' + 'z' - ch;
else {
switch (ch) {
case ' ':
encode = '@';
break;
case '.':
encode = '#';
break;
default:
encode = '*';
break;
}
}
return encode;
}
void SentenceEncoding(char *source, char *code) {
int i = 0;
while (source[i] != '\0') {
code[i] = CharEncoding(source[i]);
i++;
}
code[i] = '\0';
}
int main() {
char source[101], code[101];
printf("请输入待加密的英文句子(长度不超过100个字符):\n");
fgets(source, 101, stdin);
SentenceEncoding(source, code);
printf("加密后的字符串为:%s\n", code);
return 0;
}
```
您可以将以上代码复制到编译器中运行,输入待加密的英文句子后,即可输出加密后的字符串。代码中,先定义了一个字符加密函数CharEncoding,用于将单个字符加密为补码,然后将该函数作为参数传递给待加密字符串的加密函数SentenceEncoding。函数SentenceEncoding使用while循环遍历待加密字符串中的每个字符,然后将该字符传递给函数CharEncoding进行加密,加密后的补码保存在加密后的字符串中。最后,主程序输出加密后的字符串。
阅读全文