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

作者&投稿:蓬才 (若有异议请与网页底部的电邮联系)
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

什么最大?字符串长度?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语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序。
C的字符串是用字符数组操作的,所以排序应该用指针数组完成,以避免字符串拷贝。由于只有3个字符串,用直接操作的办法而不用循环以避免不必要的开销;输入函数选用fgets,既可以方便地控制输入长度不越界,又能允许字符串中存在空格。代码如下:include "stdio.h"#include "string.h"int main(int argc,...

C语言输入3个字符串(长度都小于80),按由小到大顺序输出。
1 定义二维数组存储字符串。2 通过strcmp比较大小,strcpy进行赋值,实现排序。3 输出结果。代码:int main(){ char s[3][100], t[100]; int i,j; for(i =0; i < 3; i ++) scanf("%s",s[i]); for(i =0; i < 2; i ++) for(j = i+1; j <3; j +...

C语言编程:输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三...
\/\/这道题关键是把输入3个字符后的回车过滤掉,不然回车就会成为下一组的第一个字符。有两种方法: \/\/第一种: #include <stdio.h> int main() { char a,b,c,tmp; while((a=getchar())!=EOF) { b=getchar(); c=getchar(); getchar(); \/\/在录入c后用ge...

C语言 输入3个字符后,按各字符的ASC||码大小顺序从小到大输出这些字符...
{ if(a>b){ returna;} else { returnb;} } charmin(chara,charb){ if(a<b){ returna;} else { returnb;} } intmain(intargc,charconst*argv[]){ charc0,c1,c2,c3,c4,c5,c6,c7;printf("Pleaseinputnum:\n");scanf("%c%c%c",&c0...

C语言程序设计:1、输入三个字符串,查找最小字符串并输出该字符串。
define MAX 20 include <stdio.h> 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();retu...

C语言作业: 输入三个字符串,输出最大的字符串
include "stdio.h"include "conio.h"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]);print...

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语言]用二维数组编写程序,输入3个字符串,然后反向输出每个字符串以及...
include <stdio.h> int main(){ char a[3][20];char *p;int i;p=a[0];for (i=0;i<3;i++)gets(a[i]);\/\/ for (i=0;i<3;i++)printf("%s\\n",a[i]); \/\/ 可以直接用 a[i]:for (i=0;i<3;i++)printf("%s\\n",p+i*20); \/\/指针寻址 ;\/\/第二个字符串开始的...

C语言 连续输入三个字符串,在第一个字符串中查找第二个字符串,如果存在...
include <stdio.h>#include <string.h>int main(int argc,char *argv[]){ char a[300],b[50],c[50],t[300],*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+l...

用c语言编程,输入3个字符型数据,求它们的平均值
字符型数据完全可以按照整型变量来操作 include<stdio.h> void main(){ char c1,c2,c3;printf("请输入三个字符:");c1=getchar();c2=getchar();c3=getchar();printf("三者的平均值为%d\\n",(c1+c2+c3)\/3);}

金门县14760693439: C语言题,求大神帮忙啊C语言作业要求 1.从键盘输入3个字符串,要求找出其中最大者 . 2.写一程序,判断一字符串是否是回文,若是输出YES,否则输出... -
百安逸舒:[答案] 具体代码如下: #include int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d\n",(a=a>b?a:b)> c?a:c); } #include #include int main() { char s[50]; char *p,*q; p = s; gets(s); q = &s[strlen(s)-1]; while(p++ = 0; i--) { if('a'

金门县14760693439: C语言编程:从键盘上输入三个字符串,要求找出其中最大者
百安逸舒: #include "stdio.h" #include "conio.h" 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 ...

金门县14760693439: 用c语言编写一个程序,从键盘上输入3个字符串,输出其中的最大者 -
百安逸舒: #include <stdio.h>#include <string.h>#define LONGTH 10 //定义字符串最大长度 void main() { char a[LONGTH],b[LONGTH],c[LONGTH]; char *max; printf("请输入三个字符串,以空格隔开:"); scanf("%s %s %s",a,b,c); printf("输入的...

金门县14760693439: (C语言)输入3个字符串,将其中最小的输出. -
百安逸舒: 你用错了字符串处理函数 不是strcmp(),而是strlen(). 正确的程序-- #include<stdio.h> #include<string.h> main() { char a[10];/*如果你想字符串输入时没有长度限制的话,建议你用字符串指针*/ char b[10];/*例如:"char *a "*/ char c[10]; ...

金门县14760693439: 从键盘上输入3个字符串后原样输出,并要求找出其中最大者进行输出.(用C语言数组方法谢谢,我是初学者) -
百安逸舒: #include main() { char x[128][128]={0}; char ch[4096]={0}; int t[10]; int i=0; int w=0,p=0; int len=0,max=0,top=0; gets(ch);puts(ch);//有空格输入要这个函数 while(ch[i]!='\0' && i<4096) { if(ch[i]==' ') { w++; p=0; i++; continue; } //一个空格表示一个单词...

金门县14760693439: C语言 有3个字符串,找出其中的最大者
百安逸舒: 你可以认为这是一个一维数组,有三个元素,每个元素又是一个有20个char的数组.其实这是一个字符串数组.每个字符串最大可容纳20个字符.

金门县14760693439: C语言输入三个字符串,从小到大输出 -
百安逸舒: 展开全部#include #include//要加头文件 void main() { char str1[10],str2[10],str3[10];/*s1,s2,s3;s1,s2,s3是一个单字符 *//*scanf("%s",&s1),strcpy(str1,s1); scanf("%s",&s2),strcpy(str2,s2); scanf("%s",&s3),strcpy(str3,s3);*/ //改成:scanf("%s...

金门县14760693439: C语言调用一个函数输入3个字符串并返回给数组 -
百安逸舒: 你的程序修改如下 #include "stdio.h" #define N 3 #define M 80 void _kf(char b[N][M]); int main(void) { int i;char a[N][M];puts("请输入3个字符串");_kf(a);for(i=0;i<N;i++)puts(a[i]);system("PAUSE"); } void _kf(char b[N][M]) {int i;for(i=0;i<N;i++)gets(b[i]);}

金门县14760693439: 用C语言编写程序:利用字符串库函实现找出从键盘输入三个字符串中的最大字符串. -
百安逸舒: 第一种,没有分配单元,第二种,过于复杂了,而且没有充分用到字符串函数,把以上两种综合一下 #include "stdio.h" main() { char str1[50],str2[50],str3[50],str4[50]; char *s1,*s2,*s3,*max; s1= str1;s2=str2;s3=str3;max=str4; scanf("%s",s1); ...

金门县14760693439: 输入3个字符串,1)输出其中以字母A打头的;2)输出其中以an结尾的;3)输出其中包含an的. -
百安逸舒: char a[20],b[20],c[20]; 将输入的字符串分别给a,b,c1)逐次比较3个字符串第一个字母的是否为A就行;2)逐次比较3个字符串第a[strlen(a)-1] == 'a' 和a[strlen(a)] == 'n'个字母是否相等;3) 依次比较整个字符串内是否存在'a' 'n',弄个循环从头比到尾就行

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网