liyifeng295641 发表于 2024-5-11 10:46:16

C语言 字符串 和字符

#include <stdio.h>

#define M 100

int max_Num_name(int *num, int m)
{
        int i;
        int n = 0;
        int max = num;
       
        for(i = 0; i < m; i++)
        {
                if(max <= num)
                {
                        max = num;
                        n = i;
                }
        }
       
        return n;
}

int max_Prce_name(float *price, int m)
{
        int i, n = 0;
        float max = price;
       
        for(i = 0; i < m; i++)
                {
                        if(max <= price)
                        {
                                        max = price;
                                        n = i;
                        }
                }
       
        return n;
}

//float sum_Price(*price, *num)
//{
//        float sum = 0;
//       
//       
//       
//        return sum;
//}

int main (void)
{
        char name;
        int num;
        float price;
       
        int m;
        printf("请输入商品的数量(m不大于100):");
        scanf("%d", &m);
       
        int i, j, k;
        for(i = 0; i < m; i++)
        {
                printf("请输入商品的名称:");
                scanf("%s", &name);
                printf("请输入商品的数量:");
                scanf("%d", &num);
                printf("请输入商品的单价");
                scanf("%f", &price);
        }
       
        int a = max_Num_name(num, m);
        printf("数量最多的商品名称是:%s\n", name);
       
        int b = max_Prce_name(price, m);
        printf("单价最高的商品名称是:%c\n", name);
       
       
//        float sum = sum_Price(price, num);
//        printf("商品总价是:%f", sum);
       
       
        return 0;
}

@FishC,哪里出问题?

FishC 发表于 2024-5-11 10:46:33

在你的代码中,你定义了一个函数`max_Num_name`来找到一个数组中的最大值。然而,我注意到你的代码中有一些错误。

首先,你定义了一个整型数组`num`,但是你在比较最大值时却使用了`num`,这是不正确的。应该使用`num`来访问数组中的每个元素。

其次,你没有给变量`max`赋初值,这可能会导致错误的结果。你可以将`max`初始化为`0`或者数组中的第一个元素`num`。

最后,你没有在`if`语句中写入条件判断的逻辑,导致代码不完整。

下面是修正后的代码:

#include <stdio.h>

#define M 100

int max_Num_name(int *num, int m)
{
    int i;
    int n = 0;
    int max = num;
   
    for(i = 0; i < m; i++)
    {
      if(num > max)// 比较当前元素和最大值
      {
            max = num;// 更新最大值
            n = i;         // 记录最大值的索引
      }
    }
   
    return n;
}

int main()
{
    int num = {5, 2, 7, 1, 9};
    int maxIndex = max_Num_name(num, 5);
   
    printf("The maximum number is at index %d\n", maxIndex);
   
    return 0;
}

这段代码中,我们使用了一个`for`循环来遍历数组中的每个元素,并将当前元素与最大值进行比较。如果找到更大的元素,则更新`max`和`n`的值。最后,我们返回记录最大值索引的变量`n`。

在`main`函数中,我们创建了一个包含一些数字的数组`num`,并调用`max_Num_name`函数来查找最大值的索引。然后,我们使用`printf`函数打印出结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

liyifeng295641 发表于 2024-5-11 11:06:30

FishC 发表于 2024-5-11 10:46
在你的代码中,你定义了一个函数`max_Num_name`来找到一个数组中的最大值。然而,我注意到你的代码中有一些 ...

我的71行出现一个错误,帮我看下

FishC 发表于 2024-5-11 11:06:48

liyifeng295641 发表于 2024-05-11 11:06
我的71行出现一个错误,帮我看下

抱歉,我之前的回答中有一个错误。在第71行,我们需要将`num`作为数组来访问,因此需要使用索引`i`来访问数组中的每个元素。下面是修改后的代码:

#include <stdio.h>

#define M 100

int max_Num_name(int *num, int m)
{
    int i;
    int n = 0;
    int max = num; // 将max初始化为数组的第一个元素
   
    for(i = 1; i < m; i++) // 从第二个元素开始比较
    {
      if(num > max)// 比较当前元素和最大值
      {
            max = num;// 更新最大值
            n = i;         // 记录最大值的索引
      }
    }
   
    return n;
}

int main()
{
    int num[] = {5, 2, 7, 1, 9}; // 创建包含一些数字的数组
    int maxIndex = max_Num_name(num, 5);
   
    printf("The maximum number is at index %d\n", maxIndex);
   
    return 0;
}

这段代码中,我们将`max`初始化为数组的第一个元素`num`,并从第二个元素开始进行比较。在`if`语句中,我们使用`num`来访问数组中的每个元素。

在`main`函数中,我们创建一个包含一些数字的数组`num`,并调用`max_Num_name`函数来查找最大值的索引。然后,我们使用`printf`函数打印结果。

希望这次回答能够解决你的问题。如果还有其他疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: C语言 字符串 和字符