用c语言编写定义一个函数void fun(),函数的形参为字符数组S1和S2,函数功能是将字符串S1中的所有数字字符取出,存入另一字符数组S2中,使S2成为一个新的字符串,并在函数中将字符串S2输出
时间: 2024-03-23 09:43:15 浏览: 86
好的,以下是用 C 语言编写的函数 void fun() 的代码:
```c
#include <stdio.h>
#include <string.h>
void fun(char S1[], char S2[]) {
int i, j = 0;
for (i = 0; i < strlen(S1); i++) {
if (S1[i] >= '0' && S1[i] <= '9') { // 判断是否为数字字符
S2[j] = S1[i]; // 将数字字符存入 S2 中
j++;
}
}
S2[j] = '\0'; // 在 S2 末尾加上字符串结束标志
printf("%s\n", S2); // 输出 S2
}
```
这个函数的作用是将字符串 S1 中的所有数字字符取出,存入另一个字符数组 S2 中,并在函数中将字符串 S2 输出。我们可以在主函数中调用这个函数,例如:
```c
int main() {
char S1[] = "a1b2c3d4e5";
char S2[6];
fun(S1, S2); // 调用函数 fun
return 0;
}
```
这个例子中,S1 中包含了数字字符 "1"、"2"、"3"、"4"、"5",我们调用函数 fun 将这些数字字符取出并存入 S2 中,最后输出 S2,输出结果为 "12345"。
相关问题
使用c语言编写一个程序,其中用户自定义函数strcompare函数实现两个字符串s1,s2的比较,函数原型声明为:int strcompare( char *str1 , char *str2 ) ;分别有如下要求:(1)调用函数时实参用数组名,函数形参用指针变量。(2)调用函数时实参和函数形参都用指针变量。(3)调用函数时实参用指针变量,函数形参用数组名。[注]:(1)要求当s1== s2时,函数返回值为0;如果s1≠ s2,返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1<s2,则输出负值。(2)两个字符串s1、s2由main函数输入,strcompare函数的返回值也由main函数输出。
好的,以下是程序代码:
```c
#include <stdio.h>
#include <string.h>
int strcompare1(char *str1, char *str2); //声明函数1
int strcompare2(char *str1, char *str2); //声明函数2
int strcompare3(char str1[], char str2[]); //声明函数3
int main() {
char s1[100], s2[100];
printf("请输入字符串s1:");
scanf("%s", s1);
printf("请输入字符串s2:");
scanf("%s", s2);
//调用函数1
printf("调用函数1,返回值为:%d\n", strcompare1(s1, s2));
//调用函数2
char *p1 = s1, *p2 = s2;
printf("调用函数2,返回值为:%d\n", strcompare2(p1, p2));
//调用函数3
printf("调用函数3,返回值为:%d\n", strcompare3(s1, s2));
return 0;
}
//函数1:调用时实参用数组名,函数形参用指针变量
int strcompare1(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
//函数2:调用时实参和函数形参都用指针变量
int strcompare2(char *str1, char *str2) {
int i = 0;
while (*(str1 + i) != '\0' && *(str2 + i) != '\0') {
if (*(str1 + i) != *(str2 + i)) {
return *(str1 + i) - *(str2 + i);
}
i++;
}
return *(str1 + i) - *(str2 + i);
}
//函数3:调用时实参用指针变量,函数形参用数组名
int strcompare3(char str1[], char str2[]) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
```
程序说明:
1. 主函数中先输入两个字符串 s1 和 s2。
2. 分别调用三个函数,输出它们的返回值。
3. 函数1、函数2、函数3 分别实现了三种不同的调用方式,但实现的功能都是比较两个字符串的大小。
输出示例:
```
请输入字符串s1:BOY
请输入字符串s2:BAD
调用函数1,返回值为:14
调用函数2,返回值为:14
调用函数3,返回值为:14
```
用c语言编写一个程序,其中用户自定义函数strcompare函数实现两个字符串s1,s2的比较,函数原型声明为:int strcompare( char *str1 , char *str2 ) ;分别有如下要求:(1)调用函数时实参用数组名,函数形参用指针变量。(2)调用函数时实参和函数形参都用指针变量。(3)调用函数时实参用指针变量,函数形参用数组名。[注]:(1)要求当s1== s2时,函数返回值为0;如果s1≠ s2,返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1<s2,则输出负值。(2)两个字符串s1、s2由main函数输入,strcompare函数的返回值也由main函数输出。
下面是代码实现:
```c
#include <stdio.h>
int strcompare_1(char *str1, char *str2);
int strcompare_2(char *str1, char *str2);
int strcompare_3(char *str1, char *str2);
int main() {
char str1[100], str2[100];
int result;
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
// 调用函数1
result = strcompare_1(str1, str2);
printf("函数1的比较结果为:%d\n", result);
// 调用函数2
result = strcompare_2(&str1[0], &str2[0]);
printf("函数2的比较结果为:%d\n", result);
// 调用函数3
result = strcompare_3(&str1[0], &str2[0]);
printf("函数3的比较结果为:%d\n", result);
return 0;
}
// 调用函数时实参用数组名,函数形参用指针变量
int strcompare_1(char *str1, char *str2) {
int i = 0;
while (str1[i] == str2[i] && str1[i] != '\0' && str2[i] != '\0') {
i++;
}
return str1[i] - str2[i];
}
// 调用函数时实参和函数形参都用指针变量
int strcompare_2(char *str1, char *str2) {
int i = 0;
while (*(str1 + i) == *(str2 + i) && *(str1 + i) != '\0' && *(str2 + i) != '\0') {
i++;
}
return *(str1 + i) - *(str2 + i);
}
// 调用函数时实参用指针变量,函数形参用数组名
int strcompare_3(char *str1, char *str2) {
int i = 0;
while (*(str1 + i) == *(str2 + i) && *(str1 + i) != '\0' && *(str2 + i) != '\0') {
i++;
}
return str1[i] - str2[i];
}
```
这里实现了三个函数,分别对应题目中的三种调用方式。其中,函数1和函数3都是实参用数组名,函数形参用指针变量;函数2是实参和函数形参都用指针变量。
阅读全文