求两个字符串中的最大数,C语言
时间: 2024-03-20 12:44:06 浏览: 14
假设两个字符串分别为 str1 和 str2,可以按照以下步骤找出它们中的最大数:
1. 使用 strtod() 函数将字符串转换为 double 类型。
```c
double num1 = strtod(str1, NULL);
double num2 = strtod(str2, NULL);
```
2. 使用条件运算符 ?: 比较两个数的大小,并将较大的数赋值给一个变量。
```c
double max_num = (num1 > num2) ? num1 : num2;
```
完整的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[] = "3.14";
char str2[] = "2.71828";
double num1 = strtod(str1, NULL);
double num2 = strtod(str2, NULL);
double max_num = (num1 > num2) ? num1 : num2;
printf("The max number is: %lf\n", max_num);
return 0;
}
```
相关问题
求两个字符串中相同的部分的c语言
可以使用字符串库中的函数 `strstr` 和 `strlen`。
`strstr` 函数可以在一个字符串中查找另一个字符串,返回第一个字符串中第一次出现第二个字符串的位置指针。如果没有找到,返回 NULL。
`strlen` 函数可以计算字符串的长度。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("输入第一个字符串:");
scanf("%s", str1);
printf("输入第二个字符串:");
scanf("%s", str2);
char* p = str1;
while ((p = strstr(p, str2)) != NULL) {
int len = strlen(str2);
printf("第一个字符串中与第二个字符串相同的部分是:%.*s\n", len, p);
p += len;
}
return 0;
}
```
在上面的代码中,我们使用了一个指针 `p` 来遍历第一个字符串。每次使用 `strstr` 函数查找第二个字符串在第一个字符串中的位置,如果找到了,则输出相同的部分,并将指针 `p` 指向下一个位置。如果没有找到,则退出循环。
C语言查找两个字符串中的最大公共子串
可以使用动态规划算法来查找两个字符串中的最大公共子串。具体步骤如下:
1. 定义一个二维数组dp,其中dp[i][j]表示以第一个字符串的第i个字符和第二个字符串的第j个字符结尾的最长公共子串的长度。
2. 初始化dp数组,将第一行和第一列都赋值为0。
3. 遍历两个字符串,如果第一个字符串的第i个字符和第二个字符串的第j个字符相等,则dp[i][j] = dp[i-1][j-1] + 1;否则dp[i][j] = 0。
4. 在遍历的过程中,记录下最长的公共子串的长度和结束位置。
5. 根据结束位置和最长公共子串的长度,可以得到最长公共子串。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
void findLCS(char *str1, char *str2)
{
int len1 = strlen(str1);
int len2 = strlen(str2);
int dp[len1+1][len2+1];
int maxLen = 0;
int endPos = 0;
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (str1[i-1] == str2[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1;
if (dp[i][j] > maxLen) {
maxLen = dp[i][j];
endPos = i;
}
} else {
dp[i][j] = 0;
}
}
}
if (maxLen == 0) {
printf("没有找到公共子串\n");
} else {
printf("最长公共子串为:");
for (int i = endPos - maxLen; i < endPos; i++) {
printf("%c", str1[i]);
}
printf("\n");
}
}
int main()
{
char str1[] = "abcdefg";
char str2[] = "bcdehij";
findLCS(str1, str2);
return 0;
}
```
输出结果为:
```
最长公共子串为:bcde
```