「已注销」 2021-06-17 08:59 采纳率: 55.6%
浏览 12

c++求解答!!++

 

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2021-06-17 10:52
    关注

    代码如下,如有帮助,请采纳一下,谢谢。

    #include <iostream>
    #include <fstream>
    using namespace std;
    class ARRAY
    {
    private:
    	int a[100];
    	int n;
    public:
    	ARRAY(int t[],int m)
    	{
    		int i = 0;
    		for (;i < m;i++)
    		{
    			a[i] = t[i];
    		}
    		n = m;
    	}
    	//求x的各位数字之和
    	int sum(int x)
    	{
    		int d = x;
    		int s = 0;
    		while(d > 0)
    		{
    			s += d%10;
    			d/=10;
    		}
    		
    		return s;
    	}
    	//排序
    	void fun()
    	{
    		int i,j;
    		int tmp;
    		for (i = 0;i<n-1;i++)
    		{
    			for (j = 0;j<n-1-i;j++)
    			{
    				if(sum(a[j]) > sum(a[j+1]))
    				{
    					tmp = a[j];
    					a[j] = a[j+1];
    					a[j+1] = tmp;
    				}
    			}
    		}
    	}
    
    	//输出
    	void print()
    	{
    		int i;
    		ofstream os("myfile.out");
    		cout << "排序前的数组为";
    		if (!os.is_open())
    		{
    			cout << "myfile.out打开失败" << endl;
    			return;
    		}
    		os << "排序前的数组为" << endl;
    		for (i = 0;i< n;i++)
    		{
    			if(i < n-1)
    			{
    				cout << a[i] << ",";
    				os << a[i] << ",";
    			}
    			else
    			{
    				cout << a[i] << endl;
    				os << a[i] << endl;
    			}
    		}
    		
    		//排序
    		fun();
    		cout << "排序后的数组为";
    		os << "排序后的数组为" << endl;
    		for (i = 0;i< n;i++)
    		{
    			if(i < n-1)
    			{
    				cout << a[i] << ",";
    				os << a[i] << ",";
    			}
    			else
    			{
    				cout << a[i] << endl;
    				os << a[i] << endl;
    			}
    		}
    		//写入姓名 学号 班级
    		os << "zhangsan 10011 计算机一班"; //此处修改成你自己的信息
    		os.close();
    	}
    
    };
    
    
    int main()
    {
    	int t[] = {297,735,624,158,312,900};
    	ARRAY ar(t,6);
    	ar.print();
    	return 0;
    }
    评论

报告相同问题?