提问者:小点点

找出3个数字中最小的一个。 (学校作业)


我在编程方面是个新手,我不太清楚该如何完成学校交给我的这份作业。

编写一个函数void print_min(unsigned char a,short b,int c),它打印“min of(a,b,c)=m”。 M是这3个数字中最小的一个。 对于计算和打印,使用函数int min(unsigned char a,short b,int c)printf

我试过了,但我似乎无法使它工作,因为它每次都出错。

这是我尝试使用的代码:

#include <iostream>
#include <fstream>
#include <stdio.h> 


void print_min(unsigned char a, short b, int c)
{   
    int m = 0;
    if( a < b ) m = a; else m = b;
    if( c < m ) m = c;
}
int main()
{ 
    unsigned char a; short b;int c;int M;
    cin >> a;
    cin >> b; 
    cin >> c;
    M = print_min("a", b,c);
    return 0;
}

有没有可能给我一些关于我需要做什么的指示。 提前谢谢!


共2个答案

匿名用户

您的程序存在多个问题

问题1:
print_min返回void,而您可能希望它返回int。

int print_min(unsigned char a, short b, int c)
{   
    int m = 0;
    if( a < b ) 
        m = a;
    else 
        m = b;
    if( c < m ) 
        m = c;
    return m;
}

问题2

M = print_min("a", b,c);

函数需要一个无符号字符,但您发送的是字符串文本“a”

M = print_min(a, b,c);

问题3

您需要在cin之前显式指定std::命名空间

int main()
{ 
    unsigned char a; short b;int c;int M;
    std::cin >> a;
    std::cin >> b; 
    std::cin >> c;
    M = print_min(a, b,c);
    return 0;
}

问题4:

std::cin >> a; 

读取字符时,您发送的是ascii值,而不是预期的数值。 最好对所有对象保持相同的类型int。

#include <iostream>

int print_min(int a, int b, int c)
{   
    int m = 0;
    if( a < b ) 
        m = a; 
    else 
        m = b;
    if( c < m ) m = c;
    return m;
}

int main()
{ 
    int a; int b; int c; int M;
    std::cin >> a;
    std::cin >> b; 
    std::cin >> c;
    M = print_min(a, b, c);
    std::cout << "Smallest of 3 is = " << M << std::endl;
    return 0;
}

匿名用户

我的理解是,您的任务是编写一个函数,该函数打印min of(a,b,c)=M,并且M应该被abc替换,所以首先您肯定知道这句话将在print_min函数中打印,而不是在main函数中打印,因为print_min返回一个void类型。 而其他细节已由其他答案给出。 我想这个问题现在对你来说不会有什么不同。 希望你能快点解决。 :)