用C语言输入3个字符串,并找出其中的最大值?

如题所述

什么最大?字符串长度?ASC码总和?还是说是纯数字的字符串,作为数字来比较大小?

我把几种情况都写了。你参考吧。

多个相等的最大值,只返回其中1个

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
int getsum(char *str);//获取字符串ASC总和
char *getmax(int num[3]);//3个整数型的数字比较,返回最大的那个数组下标 如果多个最大值返回多个下标(用字符串保存)
int getmax2(char str[][10]);//3个字符型的数字比较,返回最大的那个数组下标

int main()
{
    char str[3][10];
    int indext;
    int len[3];//3个字符串长度
    int sum[3];//3个字符串的ASC码总和
    printf("测试:输入3个字符串(最多9个字符):\n");
    scanf("%s",&str[0][0]);
    scanf("%s",&str[1][0]);
    scanf("%s",&str[2][0]);

    len[0]=strlen(&str[0][0]);len[1]=strlen(&str[1][0]);len[2]=strlen(&str[2][0]);//获取3个字符串长度
    sum[0]=strlen(&str[0][0]);sum[1]=strlen(&str[1][0]);sum[2]=strlen(&str[2][0]);//获取3个字符串的ASC码总和

    indext=getmax(len)[0]-'0';
    printf("字符串长度最大的是:%s\n",&str[indext][0]);
    indext=getmax(sum)[0]-'0';
    printf("ASC码值和最大的是: %s\n",&str[indext][0]);
    printf("作为数字比最大的是:%s\n",&str[getmax2(str)][0]);
    return 1;
}
int getsum(char *str)//获取字符串ASC总和
{
    int len=strlen(str),i,sum=0;
    for(i=0;i<len;i++)
    {
        sum=sum+(int)str[i];
    }
    return sum;
}
char *getmax(int num[3])//3个整数型的数字比较,返回最大的那个数组下标 如果多个最大值返回多个下标
{
    char *renum=(char *)malloc(sizeof(char)*4);
    memset(renum,0,4);
    if(num[0]>=num[1] && num[0]>=num[2])
    {
        if(renum[0]==0)
            renum[0]='0';
        else if(renum[1]==0)
            renum[1]='0';
        else if(renum[2]==0)
            renum[2]='0';
    }
    if(num[1]>=num[2] && num[1]>=num[0])
    {
        if(renum[0]==0)
            renum[0]='1';
        else if(renum[1]==0)
            renum[1]='1';
        else if(renum[2]==0)
            renum[2]='1';
    }

    if(num[2]>=num[1] && num[2]>=num[0])
    {
        if(renum[0]==0)
            renum[0]='2';
        else if(renum[1]==0)
            renum[1]='2';
        else if(renum[2]==0)
            renum[2]='2';
    }
    return renum;
}

int getmax2(char str[][10])//3个字符型的数字比较,返回最大的那个数组下标
{
    int len[3],i,maxlen,num[3];
    char *renum=NULL;
    len[0]=strlen(&str[0][0]);
    len[1]=strlen(&str[1][0]);
    len[2]=strlen(&str[2][0]);
    if(len[0]>len[1] && len[0]>len[2])
        return 0;
    if(len[1]>len[2] && len[1]>len[0])
        return 1;
    if(len[2]>len[1] && len[2]>len[0])
        return 2;

    maxlen=len[0];
    if(maxlen<len[1])
        maxlen=len[1];
    if(maxlen<len[2])
        maxlen=len[2];
    for(i=0;i<maxlen;i++)
    {
        if(maxlen-len[0]==0)
            num[0]=str[0][i]-'0';
        else
            num[0]=-1;
        if(maxlen-len[1]==0)
            num[1]=str[1][i]-'0';
        else
            num[1]=-1;
        if(maxlen-len[2]==0)
            num[2]=str[2][i]-'0';
        else
            num[2]=-1;
        renum=getmax(num);
        if(strlen(renum)==1)//如果当前位比较,得到唯一最大值,则返回下标
            return renum[0]-'0';
        if(strlen(renum)>1 && i==maxlen-1)//如果已比较到最后1位,且数值相等,则返回第一个最大值下标
            return renum[0]-'0';
    }

    return -1;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-07
#include<stdio.h>
#include<string.h>

int main(void)
{
char st1[100],st2[100],st3[100],st4[100];

printf("请输入字符串1:\n");
gets(st1);
printf("请输入字符串2:\n");
gets(st2);
printf("请输入字符串3:\n");
gets(st3);
strcpy(st4,st1);

if(strcmp(st4,st2)<0)
{
strcpy(st4,st2);
}
if(strcmp(st4,st3)<0)
{
strcpy(st4,st3);
}
printf("%s\n",st4);
return 0;
}

本回答被提问者采纳

用C语言输入3个字符串,并找出其中的最大值?
多个相等的最大值,只返回其中1个 include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>int getsum(char *str);\/\/获取字符串ASC总和char *getmax(int num[3]);\/\/3个整数型的数字比较,返回最大的那个数组下标 如果多个最大值返回多个下标(用字符串保存)int getmax...

C语言编程:从键盘上输入三个字符串,要求找出其中最大者
字符串比较使用strcmp函数。三个字符串比较大小,先比较字符串a和字符串b的大小,把大的字符串和字符串c比较,最后输出最大的字符串即可。strcmp函数原型:int strcmp( char *str1 , char *str2 )功能:比较字符串str1和strl2的大小。结果:若str1==str2,则返回零;若str1>str2,则返回正数;...

用c语言编写一个程序,从键盘上输入3个字符串,输出其中的最大者_百度...
1. int strcmp( const char *str1, const char *str2 );功能:比较字符串str1 and str2, 返回值如下:返回值 < 0 str1 < str2 = 0 str1 == str2 > 0 str1 > str2 include <stdio.h>#include <string.h>int main(){ char a[100], b[100], c[100]; printf...

C语言作业: 输入三个字符串,输出最大的字符串
int main(){ char string[20];char str[3][20];int i;for(i=0;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);else strcpy (string,str[1]);if(strcmp( str[2],string)>0)strcpy(string,str[2]);printf("\\nthe largest string is:\\n%s\\...

编写一个C程序,运行时输入a,b,c三个值,输出其中值最大者
include<stdio.h> int main(){ int a,b,c,max;printf("请输入三个数:\\n");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;if(c>max)max = c;printf("三个数中最大的数为:%d",max);return 0;}

c语言三个数求最大值
c语言三个数求最大值介绍如下:具体代码如下:if(a>b) t=a;else t=b;\/\/此时t是a、b中较大的那个。if(t<c) t=c;∥再与c此较,找出大的即可。C语言的字符串其实就是以'\\0'字符结尾的char型数组,使用字符型并不需要引用库,但是使用字符串就需要C标准库里面的一些用于对字符串进行操作...

C语言比较三个字符串大小,找出最大值
mian->main

C语言 有3个字符串,找出其中的最大者
你可以认为这是一个一维数组,有三个元素,每个元素又是一个有20个char的数组。其实这是一个字符串数组。每个字符串最大可容纳20个字符。

编写一个C程序,输入ABC三个数,输出最大
int a,b,c,max; printf("请输入3个数字:"); scanf("%d%d%d",&a,&b,&c); max=a; if(max<b) max=b; if(max<c) max=c; printf("最大的数是%d:",max); return 0; } 可以借鉴应用的其他方法: #include<stdio.h> void main() { int a,b,c,max; scanf("%d %d %d",&a,&b,&c)...

用指针实现输入3个整数,找出最大的数输出
int main(int argc,char*argv[]){ float a,b,c,*pa=&a,*pb=&b,*pc=&c,max;scanf("%f,%f,%f",pa,pb,pc);if(*pa>*pb){ max=*pa;printf("if1%f\\n",max);} else { max=*pb;printf("else\\n");} if(*pc>max){ max=*pc;printf("if2\\n");} printf("max=%f\\n",...

相似回答