关于#c++#的问题,请各位专家解答!


#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{ 
    int m,ji=0,ou=0;
    for(int i=0;i<10;i++)
    {
        scanf("%d",&m);
        if(m%2==0)
        {
            if(ou<m)
            ou=m;
        }
        if(m%2!=0)
        {
            if(ji<m)
                ji=m; }
    }
  printf("%d %d",ji,ou);
    
  int n;
    for(n>=10&&n<=1000;n<5;n++)
      {
        int a[n];
        cin>>a[n];
        for(int i=0;i<5;i++)
        {
              for(int j=i+1;j<5;j++)
              {
                if(a[i]>a[j])
                {
                      int k;
                      k=a[i];
                      a[i]=a[j];
                      a[j]=k;    
                }
              }
         }       
    }
    cout<<endl;
    for(int w=0;w<5;w++)
        cout<<a[w]<<" ";
    return 0;
} 

显示

img

,该怎么改 ?

(啊 。.*,改不出来,我要风了o((>ω< ))o)

这个意思是你的a没有定义,代码应该这样写:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,odd=0,even=0;
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(a[i]%2==1) odd=max(odd,a[i]);
        else even=max(even,a[i]);
    }
    sort(a+1,a+n+1);
    cout<<odd<<" "<<even<<endl;
    for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}

有啥C++上的问题都可以问我哈

在循环里面定义的变量到外面就会失效,把定义语句放到外面。而且你的 n 没有赋值,for 循环根本无法运行。

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{ 
    int m,ji=0,ou=0,a[1005];
    for(int i=0;i<10;i++)
    {
        scanf("%d",&m);
        if(m%2==0)
        {
            if(ou<m)
            ou=m;
        }
        if(m%2!=0)
        {
            if(ji<m)
                ji=m; }
    }
  printf("%d %d",ji,ou);
    
  int n;
  cin >> n;
    for(;n>=10&&n<=1000;n++)
      {
        
        cin>>a[n];
        for(int i=0;i<5;i++)
        {
              for(int j=i+1;j<5;j++)
              {
                if(a[i]>a[j])
                {
                      int k;
                      k=a[i];
                      a[i]=a[j];
                      a[j]=k;    
                }
              }
         }       
    }
    cout<<endl;
    for(int w=0;w<5;w++)
        cout<<a[w]<<" ";
    return 0;
} 
...
 int n;
 int a[n];
for (int i = 0; i < n; i++) 
cin >> a[i];
 for(n>=10&&n<=1000;n<5;n++)
{
for(int i=0;i<5;i++)
...

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,我注意到代码中存在一些问题。

    问题1: 使用了既有scanf又有cin,这两种输入方法是不兼容的,应该只使用其中一种。

    问题2: 变量n没有初始化,需要给它一个初始值。

    问题3: 循环条件错误,应该是n<=1000,而不是n>=10 && n<=1000

    问题4: 循环条件错误,n<5会导致循环无法执行。

    问题5: 数组a的大小应该是常量大小,而不是变量大小。

    问题6: 在第二个循环中,应该先读取所有的n个数,然后再进行排序。

    下面是修改后的代码:

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    int main()
    { 
        int m, ji=0, ou=0;
        for (int i=0; i<10; i++)
        {
            cin >> m;
            if (m%2==0)
            {
                if (ou < m)
                    ou = m;
            }
            if (m%2 != 0)
            {
                if (ji < m)
                    ji = m; 
            }
        }
        cout << ji << " " << ou;
    
        int n;
        cin >> n;
        int a[1000]; // 假设数组大小最大为1000
        for (int i = 0; i < n; i++)
        {
            cin >> a[i];
        }
    
        for (int i = 0; i < n - 1; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                if (a[i] > a[j])
                {
                    int k = a[i];
                    a[i] = a[j];
                    a[j] = k;    
                }
            }
        }       
    
        cout << endl;
        for (int w = 0; w < n; w++)
            cout << a[w] << " ";
    
        return 0;
    }
    

    以上代码已经修复了存在的问题,并可以得到预期的输出结果。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^