注册 登录
编程论坛 C++教室

C++三道题。谁帮个忙看看

回忆先生 发布于 2010-06-22 00:41, 1270 次点击
1、将6个整数8、4、3、1、2、7保存在一维数组内,从大到小反向排序并输出(交换、排序与输出过程分别包装为自定义函数)
补充:自定义函数不知道什么意思。。
2、输入4行3列整数,计算各行各列的和,分别保存在第5行与第4列,而后行列对齐输出这些数据,要求将输入、输出与计算过程包装为自定义函数
补充:自定义函数不知道什么意思。。
3、输入字符串并输出,要求自定义字符串输入函数,可保证输入的字符串不超出数组范围
补充:自定义不知道什么意思。。怎么用

[ 本帖最后由 回忆先生 于 2010-6-22 00:53 编辑 ]
14 回复
#2
回忆先生2010-06-22 00:45
会的回个贴
谢谢。急用
#3
debroa7232010-06-22 01:00
自定义,就是自己定义,自定义函数,就是自己定义一个函数,说白了,就是自己动手,丰衣足食,如果借别人手定义的就叫他定义了,为了满足“自定义”这个条件,还是楼主自个写这几个函数吧。
#4
回忆先生2010-06-22 01:08
那能看看这个是哪里错了吗》????
#include<stdio.h>
void px(int x[ ],int n)
{
int t;
for(i=0;i<n-1;i++);
for(j=i+1;j<n;j++);
if(x[j]>x[i])
{
   t=x[i];
   x[i]=x[j];
   x[j]=t;
}
}
#5
回忆先生2010-06-22 01:09
回复 3楼 debroa723
#include<stdio.h>
void px(int x[ ],int n)
{
int t;
for(i=0;i<n-1;i++);
for(j=i+1;j<n;j++);
if(x[j]>x[i])
{
   t=x[i];
   x[i]=x[j];
   x[j]=t;
}
}
这个哪错了能看看吗?
#6
回忆先生2010-06-22 01:16
回复 4楼 回忆先生

void main()
{
int a[5]={8,4,3,1,7};
px(a,5);
}
漏了点
#7
debroa7232010-06-22 01:24
你在
for后面加分号,循环无法正常呀。
#8
debroa7232010-06-22 01:28
这道题“交换、排序与输出过程分别包装为自定义函数”,就是说需要做三个函数,分别来完成这三个工作。
所以你给的代码不能满足题意。
#9
南国利剑2010-06-22 01:31
回复 5楼 回忆先生
程序代码:
#include<iostream.h>

void px(int x[],int n)
{
    int i,j,t;//i,j没有定义,在这里补充定义
    for(i=1;i<n-1;i++)//这里把分号去掉
    for(j=0;j<n-1;j++)//这里把分号去掉
        if(x[j]<x[j+1])
        {
            t=x[j];
            x[j]=x[j+1];
            x[j+1]=t;
        }
      
}

int main()
{
    int a[]={4,54,7,64,24,45,45,32,2,34};
    px(a,10);
    for(int i=0;i<10;i++)
        cout<<a[i]<<ends;
    cout<<endl;
    return 0;
}
#10
南国利剑2010-06-22 01:33
以上是我的一个小示例,看看是否满足你的要求。

你的错误有点多。
多看看书吧。
#11
xin_82812010-06-22 21:22
void px(int x[],int n)
{
    int i,j,t;//i,j没有定义,在这里补充定义
    for(i=1;i<n-1;i++)//这里把分号去掉
    for(j=0;j<n-1;j++)//这里把分号去掉
        if(x[j]<x[j+1])
        {
            t=x[j];
            x[j]=x[j+1];
            x[j+1]=t;
        }
      
}
这个数组能直接怎么传直吗? 我觉得你定义个全局变量会好点吧, 或者用POINTER传值比较好点吧...
呵呵
#12
kspliusa2010-06-25 09:55
#include <iostream>
using namespace std;
template <typename T>
void Swap (T & a, T & b) {
    T temp = a;
    a = b;
    b = temp;
} // 交换函数
template <typename T>
void Sort (T * num, int const& len) {//排序函数
    for (int i=0; i<len; ++i) {
        for (int j=i+1; j<len; ++j) {
            if (num[i] > num[j]) {
                Swap (num[i], num[j]);
            }//if
        }//for (j)
    }
}
template <typename T>
void Output (T * num, int const& len) {// 输出函数
    for (int i=0; i<len; ++i)
        cout << num[i] << " ";
    cout << endl;
}
int main (void) {
    int num[] = {8,4,3,1,2,7};
    int len = sizeof (num)/sizeof (int);
    Sort (num, len);
    Output (num, len);
    return 0;
}
// 这是第一题 没有编译,  大概应该是这个样子
#13
kspliusa2010-06-25 23:58
#include <iostream>

using namespace std;

const int N = 10;
template <typename T>
void InputInfo (T num[][N], int const& row, int const& col) {
    for (int i=0; i<row; ++i) {
        for (int j=0; j<col; ++j) {
            cin >> num[i][j];
        }
    }
}

template <typename T>
void Calculate (T num[][N], int const& row, int const& col) {
    for (int i=0; i<row; ++i) {
        T sum = (T)0;
        int j =0;
        for ( j=0; j<col; ++j) {
            sum += num[i][j];
            num[row][j] += num[i][j];
        }
        num[i][j] = sum;
    }
}

template <typename T>
void OutputInfo (T num[][N], int const& row, int  col) {
    for (int i=0; i<row; ++i) {
        for (int  j=0; j<col; ++j) {
            if (i==row-1 && j==col-1)
                break;
            cout << num[i][j] << " ";
        }
        cout << endl;
    }
}
int main (void) {
    int num[N][N];
    memset(num, 0, sizeof (num));
    InputInfo (num, 4, 3);
    Calculate(num, 4, 3);
    OutputInfo(num, 5, 4);
    return 0;
}
// 这个编译通过了,vs2008环境
#14
caimingseed2010-06-27 15:05
#include<iostream>
using namespace std;
int main()
{
    void sort(int *p);
    void outprint(int a[]);
    int a[]={8,4,3,1,2,7},i;
    sort(a);
    outprint(a);
}
void sort(int *p)
{
    void exchange(int *p1,int *p2 );
    int i,k,j;
    for(i=0;i<6;i++)
    {
        k=i;
        for(j=i+1;j<6;j++)
        {
            if(*(p+k)<*(p+j))
            {
                k=j;
            }
        }
        exchange((p+k),(p+i));
    }
}
void exchange(int *p1,int *p2 )
{
    int temp;
    temp=*p1;
    *p1=*p2;
    *p2=temp;
}
void outprint(int a[])
{
    for(int i=0;i<6;i++)
    {
        cout<<a[i]<<"  ";
    }
    cout<<endl;
}
#15
谢谆本2010-06-28 14:26
呵呵~~
1