用C语言输入3个字符串,并找出其中的最大值? 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个字符):
");
    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
",&str[indext][0]);
    indext=getmax(sum)[0]-'0';
    printf("ASC码值和最大的是: %s
",&str[indext][0]);
    printf("作为数字比最大的是:%s
",&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;
}


#include<stdio.h>
#include<string.h>

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

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

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


C语言输入四个字符串,找出其中的最大者~

你的输入没问题,就是比较的时候出了问题,你用了strcpy函数就不用弄那么复杂,用一个for循环就行了,而你用了3个!
下面是我写的一个,pc存放当前最大的字符串
#include
#include
#define MAX 4

void main()
{
char str[MAX][];
char* pc;
int i;

for(i=0;i<MAX;i++)
{
gets(str[i]);
}

pc=str[0];

for(i=1;i<MAX;i++)
{
if(strcmp(str[i],pc))

pc=str[i];
}

puts(pc);

}

#include"stdio.h"
#include"algorithm.h"


void main()
{
char a[5][10],*p;
int i;
for(i=0;i<5;i++)
scanf("%s",a[i]);
for(j=0;j<5;j++)
if(strcmp(a[j],a[j+1])>0)
p=a[j];
a[j]=a[j+1];
a[j+1]=p;

for(k=0;k<5;k++)
printf("%s",a[k]);




}

1

从键盘上输入3个字符串后原样输出,并要求找出其中最大者进行输出。(用...
答:gets(ch); puts(ch);//有空格输入要这个函数 while(ch[i]!='\0' && i<4096) { if(ch[i]==' ') { w++; p=0; i++; continue; } //一个空格表示一个单词分隔 else x[w][p]=ch[i]; p++; i++; } //w 就是单词的个数了 for(int j=0;j<=w;j++) { len=strlen(x[j]);...

用C语言输入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][...

c语言输入3个字符,找出并打印ASCII码最大的字符
答:请输入第三个字符 : x ASCII最大的字符是 : x Press any key to continue / include <stdio.h> int max(int a,int b) { return ((a > b) ? a : b);} int main() { char ch1,ch2,ch3;printf("请输入第一个字符 : ");scanf("%c",&ch1);fflush(stdin);printf("请输入第二...

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

C语言,输入3个字符串,找到并输出最大的字符串
答:include"stdio.h"include"algorithm.h"void main(){ char a[5][10],*p;int i;for(i=0;i<5;i++)scanf("%s",a[i]);for(j=0;j<5;j++)if(strcmp(a[j],a[j+1])>0)p=a[j];a[j]=a[j+1];a[j+1]=p;for(k=0;k<5;k++)printf("%s",a[k]);} 1 ...

C语言程序设计:1、输入三个字符串,查找最小字符串并输出该字符串。
答:void shellsort(char *a[],int n);int main(){ int i;char* p[3];for(i=0;i<3;i++){ printf("输入第%d个:",i+1);p[i] = (char*)malloc(MAX);scanf("%s",p[i]);} shellsort(p,3);printf("最小的是:%s\n",p[0]);getch();return 0;} void shellsort(char *a[...

用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语言 连续输入三个字符串,在第一个字符串中查找第二个字符串,如果存在...
答:,*pt; int lb; printf("Input 3 strings...\n"); scanf("%100s%50s%50s",a,b,c); lb=strlen(b); while(pt=strstr(a,b)){ strcpy(t,pt+lb); strcpy(pt,c); strcat(a,t); } puts(a); return 0;} ...

c语言编程:请输入三个字符串,每行60个字符,要求统计出其中共有多少个...
答:include <stdio.h>int main(){ char str[3][61],*p; int up,low,blank,punc; int i; for(i=0;i<3;i++) gets(str[i]); up=low=blank=punc=0; for(i=0;i<3;i++) { p=str[i]; for(p=str[i];*p!='\0';p++) { if(*p>='A'...

C语言编程:输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三...
答:ASCII码从小到大的顺序输出这三个字符的源代码如下:include< stdio.h> void main(){ char a,s,c;char max,min;printf("Please input three numbers:");scanf("%c,%c,%c",&a,&b,&c);max=a;if(max<b) max=b;if(max<c) max=c;printf("max=%c\n",max);min=a;if(min>b) ...