c语言,输入三个数,输出其中的最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言,输入三个数,输出其中的最大值相关的知识,希望对你有一定的参考价值。

# include <stdio.h>
int main()
int a,b,c,max;
printf("please input a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b,a>c)max=a;
if(b>a,b>c)max=b;
if(c>a,c>b)max=c;
printf("The largest number is %d\n",max);
return 0;


当输入3,2,1 时,输出的最大值是2。
请问错在哪里呢?

# include <stdio.h>

int main()
 
    int a,b,c,max;

    printf("please input a,b,c:\\n");
    scanf("%d,%d,%d",&a,&b,&c);

    if((a>=b)&&(a>=c))   
        max=a;
    if((b>=a)&&(b>=c)) 
        max=b;
    if((c>=a)&&(c>=b)) 
        max=c;
    printf("The largest number is %d\\n",max);
    return 0;

你原来的代码

if(a>b,a>c)

这种是符号表达式,符号表达式只有最后那个语句是有效的,也就是说无论a>b与否,这个比较结果都会被忽略,起作用的只有a>c

参考技术A //******************************************************************************
// LZ注意一下scanf的格式就可以了,加油噢!!
// %d,%d,%d 中间放了什么,就需要用什么隔开。 (不放或者空格隔开时,输入时用空格隔开即可)
// 比如 %d@%d@%d 输入的三个数就需要用@来隔开
//******************************************************************************
#include<stdio.h>
int max(int a,int b,int c)

int max=a;
if (max<b)
max=b;
if (max<c)
max=c;
return max;

int main()

int a,b,c,x;
scanf("%d%d%d",&a,&b,&c); // %d,%d,%d 去掉中间的逗号。
x=max(a,b,c);
printf("max=%d\n",x);

//******************************************************************************
// 祝学习进步,更上一层楼 *(^-^)*
//******************************************************************************
参考技术B 逻辑表达式的与应该用关键字and或者&&符号
即if(a>b && a>c)max=a;

另外你的程序逻辑有误,如果有两数相等,这个程序将输出一个内存中的随机数。本回答被提问者和网友采纳
参考技术C # include <stdio.h>
int main()
int a,b,c,max;
printf("please input a,b,c:\\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a>=b&&a>=c)max=a;
if(b>=a&&b>=c)max=b;
if(c>=a&&c>=b)max=c;
printf("The largest number is %d\\n",max);
return 0;

参考技术D

逗号改为&&

if(a>=b&&a>=c)max=a;
if(b>=a&&b>=c)max=b;
if(c>=a&&c>=b)max=c;

C++编程问题?输入一个英语句子,输出其中最长的单词,并输出次单词的位置。

#include<iostream>
#include<string>
using namespace std;
int find(char *a,char *b);
int main()
char a[80],b[80];
cout<<"请输入一个英文句子";
cin.getline(a,79);
int k=find(a,b);
cout<<"最长的单词是:";
for(int i=0;b[i]!=0;i++)
cout<<b[i];

cout<<"最长单词的起始位置下为:"<<k;
return 0;

int find(char *a,char *b)
char*j,*i;
int k=1;
j=a;i=a+1;
int c[80][2]=0;
int l=0;
while(*i!=0)
if(*i==' '||*i==',')
c[l][0]=i-j;
c[l][1]=j-a;
l++;
i=i+1;
j=i;

else i++;

for(k;k<=80;k++)
if(c[0][0]<c[k][0])
c[0][0]=c[k][0];
c[0][1]=c[k][1];


for(int g=0;g<=c[0][0];g++)
b[g]=*(b+c[0][1]+g);

return c[0][1];

运行结果很奇葩(如图),求大神解释啊

可能是字符串没加\0吧,数组b[80]没显示0初始化,find函数里也没有显式的加\0。没看懂你的算法,所以只能这样猜了。写了个标准库的方法,可以参考下:
#include <iostream>
#include <sstream>
#include <map>

using namespace std;
int main()

typedef string::size_type ST;
//存放所有单词的长度、单词本身、单词出现的位置
multimap<ST,pair<string,ST> > m;
string line;
cout<<"请输入一个英文句子:";
getline(cin,line);
ST pos=0;
while((pos=line.find(','))<line.size())
line[pos]=' ';//替换掉所有逗号

istringstream ins(line);
string token;
pos=0;
while(ins>>token)
m.insert(pair<ST,pair<string,ST> >(token.size(),
pair<string,ST>(token,pos=line.find(token,pos)+1)));

ST t=m.rbegin()->first;
//map容器默认是按照key排序的,最后的长度最大,往前找
for(multimap<ST,pair<string,ST> >::reverse_iterator it=m.rbegin();
it!=m.rend();++it)
if(it->first==t)
cout<<"最长的单词是:"<<it->second.first<<endl
<<"起始位置下为:"<<it->second.second<<endl;
else break;

如果有长度一样的词,按照倒序显示,这样简单些。起始位置从1开始算的。
参考技术A 这种情况 语句没有响应就是ascll代码意思就是超过所能理解的代码

以上是关于c语言,输入三个数,输出其中的最大值的主要内容,如果未能解决你的问题,请参考以下文章

C语言求输入三个数输出最大与最小值

c语言的。。。 输入三个数 输出最大值

c语言输入三个数,显示最大值。

怎么编程“输入三个数,要求输出最大值”?

怎么用C语言编写一个程序,输入三个数值,然后输出其中最大者?

C语言输入多个整,输出其中的最大数。用0结束输入