#C++的输出问题,有输入但是却不知道怎么输出。

运行代码之后有输入但没有输出,有没有专家能够教一下?

#define _CRT_SECURE_NO_WARINGS
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX_N = 100;
int n, a[MAX_N];
void solve()
{
    int ans = 0;

    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            for (int k = j + 1; k < n; k++) {
                int len = a[i] + a[j] + a[k];
                int ma = max(a[i], max(a[j], a[k]));
                int rest = len - ma;//其余两棍之和

                if (ma < rest) {if (ma < rest) {
                    ans = max(ans, len);
                }
            }
        }
    }
printf("%d\n",&ans);
}
    int main()
    {
        scanf_s("%d", &n);
        for (int i = 0; i < n; i++)
        {
            scanf_s("%d", &a[i]);
        }
     solve();
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/188250776986188.jpg "#left")


你都没输出的操作
printf

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7554941
  • 这篇博客你也可以参考下:C++字符串问题:输入一任意字符串,输出串中出现的字符及其出现次数,按照首次出现顺序排列。
  • 除此之外, 这篇博客: C++语句复习题以及知识讲解中的 1.5 下面显示的每个程序都有一个常见的编译错误,指出错误在哪里,然后修改它。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • unsigned evencnt=0,oddcnt=0;
    int digit = get_num()%10;
    switch(digit)
    {
        case 1,3,5,7,9:
            oddcnt++;
            break;
        case 2,4,6,8,10;
            evencnt++;
            break;
    }

    上述代码错误在一个case只可以对于一个值,不可以一个对应多个值

    更改后的代码如下所示:

    unsigned evencnt=0,oddcnt=0;
    int digit = get_num()%10;
    switch(digit)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 9:
            oddcnt++;
            break;
        case 2:
        case 4:
        case 6:
        case 8:
        case 10:
            evencnt++;
            break;
    }
    unsigned ival=521, jval=1024,kval=1225;
    unsigned bufsize;
    unsigned swt = get_bufCnt();
    switch(swt)
    {
        case ival:
            bufsize = ival*sizeof(int);
            break;
        case jval:
            bufsize = jval*sizeof(int);
            break;
        case kval:
            bufsize = kval*sizeof(int);
            break;
    }

    上述代码错误在使用变量作为case标签内容,C++规定,case标签的内容只能是整型常量表达式。修改后的程序如下所示:(只需将变量更改为常量即可用const)

    const unsigned ival=521, jval=1024,kval=1225;
    unsigned bufsize;
    unsigned swt = get_bufCnt();
    switch(swt)
    {
        case ival:
            bufsize = ival*sizeof(int);
            break;
        case jval:
            bufsize = jval*sizeof(int);
            break;
        case kval:
            bufsize = kval*sizeof(int);
            break;
    }
  • 您还可以看一下 朱有鹏老师的朱老师C++第2部分-2.3.C++继承和多态特性课程中的 2.3.22.using重新定义继承时访问权限小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据提供的参考资料和代码,问题是在C++程序中有输入但没有输出结果,希望解决这个问题。我会给出解决方案。

    针对问题中的C++程序代码,根据您的描述,问题可能出现在以下几个地方: 1. 输入问题:程序没有正确接收输入。 2. 计数问题:无法按照输入顺序输出只出现过一次的小写字母。

    以下是对每个问题的解决方案建议:

    1. 输入问题:您可以使用 getline 函数来接收输入。这个函数将整行输入读取为字符串,并存储在 string 类型的变量中。具体步骤如下:
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        int n;
        cin >> n;
        cin.ignore(); // 忽略 cin 前面的换行符
        for (int i = 0; i < n; i++)
        {
            string a;
            getline(cin, a); // 使用 getline 读取整行输入
            // ...其他代码
        }
        return 0;
    }
    
    1. 计数问题:要按照输入顺序输出只出现过一次的小写字母,可以修改计数数组 w 的定义,使用 char 类型作为索引。如下所示:
    int w[26] = { 0 }; // 26 个英文字母的计数数组
    

    然后,在输出部分的代码中,可以根据输入字符串的顺序输出结果。如下所示:

    for (int j = 0; j < b; j++)
    {
        c = a[j];
        if (c >= 'a' && c <= 'z')
        {
            w[c-'a']++;
        }
    }
    
    for (int g = 0; g < 26; g++)
    {
        if (w[g] == 1)
        {
            cout << (char)(g + 'a');
        }
    }
    

    通过以上的修改,您的程序应该能够按照输入的顺序输出只出现过一次的小写字母。

    希望这些解决方案能够帮助您解决问题。如果您还有其他问题,请随时提问。

那你可以用cout来试一试