C语言找出最长的字符串。输入5个字符串,输入其中最长的字符串。

Posted

tags:

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

找出最长的字符串。输入5个字符串,输入其中最长的字符串。输入字符串调用函数scanf。错在哪?为什么?怎么改?谢谢。

#include <stdio.h>

#include <string.h >

int main()

int i = 0;

char s[80] = "", max[80] = "";

printf("输入五个字符串:\\n");

scanf("%s",s);

strcpy(max,s);

for(i=1; i<5; i++)

scanf("%s",s);

if( strcmp(max,s)<0 )

strcpy(max,s);

printf("最大的字符串是:%s \\n",max);

return 0;

扩展资料:

printf函数使用注意事项

1、域宽

%d:按整型数据的实际长度输出。

如果想输出指定宽度可以指定域宽,%md--&gt;m域宽,打印出来以后,在控制台上,显示m位;

如果要打印的数的位数如果超过我们设定m则原样输出;

如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。

参考技术A

#include <stdio.h>
#include <string.h>
int main(void)

int i,j=0,max=0;
char str[5][20];
for(i=0;i<5;i++)

printf("  请输入第 %d 个字符串:",i+1);
scanf("%s",str[i]);
if(!max)
max=strlen(str[i]);
if(max<strlen(str[i]))

max=strlen(str[i]);
j=i;


printf("  输入的 5 个字符串中最长的字符串是:%s\\n",str[j]);
return 0;

参考技术B 第17行k(i)应改为k[i]本回答被提问者采纳 参考技术C 应该是:
if(k[i]>max) //不是k(i)

leetCode第3题(找出字符串中不含有重复字符的最长子串的长度)

一、题目

给定一个字符串str,请你找出其中不含有重复字符的最长子串的长度

示例1
输入: str=“abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是"abc",所以其长度为3

示例2
输入: str=“bbbbb”
输出: 1
解释:因为无重复字符的最长子串是"b",所以其长度为1

示例3
输入: str=“pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是"wke",所以其长度为3

示例4
输入: str=""
输出: 0

二、题目代码解析

package com.xz.leetcode.day3;

import java.util.HashSet;
import java.util.Set;

/**
 * @description: 给定一个字符串str,请你找出其中不含有重复字符的最长子串的长度
 *
 *              示例1
 *              输入: str="abcabcbb"
 *              输出: 3
 *              解释: 因为无重复字符的最长子串是"abc",所以其长度为3
 *
 *              示例2
 *              输入: str="bbbbb"
 *              输出: 1
 *              解释:因为无重复字符的最长子串是"b",所以其长度为1
 *
 *              示例3
 *              输入: str="pwwkew"
 *              输出: 3
 *              解释: 因为无重复字符的最长子串是"wke",所以其长度为3
 *
 *              示例4
 *              输入: str=""
 *              输出: 0
 * @author: xz
 * @create: 2021-07-27 22:11
 */
public class Demo {
    public static void main(String[] args) {
        String str="abcabcbb";
        int length=lengthOfLongestSubString(str);
        System.out.println("不含有重复字符的最长子串的长度: "+length);
    }

    public static int lengthOfLongestSubString(String str){
        //定义一个哈希集合,记录每个字符是否出现过
        Set<Character> set =new HashSet<>();
        //右指针的初始值为0,相当于我们在字符串的左边界第一个字符
        int rk =0;
        //最长子串的长度,初始值为0
        int ans=0;
        for(int i=0;i<str.length();++i){
            if(i != 0){
                //左指针向右移动一格,移除一个字符
                set.remove(str.charAt(i-1));
            }
            //不断的移动右指针
            while(rk < str.length() && !set.contains(str.charAt(rk))){
                //添加到set集合中
                set.add(str.charAt(rk));
                ++rk;
            }
            //计算最大值
            ans=Math.max(ans,rk-i);
        }
        return ans;

    }
}

2、输出结果

以上是关于C语言找出最长的字符串。输入5个字符串,输入其中最长的字符串。的主要内容,如果未能解决你的问题,请参考以下文章

C语言输入五个字符串,找出最长的字符串,长度不够的在字符左边用*补齐后输出?

C语言:从键盘输入10个字符串,找出一个最长的字符串。

输入n个字符串,找出最长最短字符串(若有个数相同的,都打印出来)

ZZNUOJ_用C语言编写程序实现1170:最长字符串(指针专题)(附完整源码)

c语言输出n个字符串中最长字符串

求两个输入的字符串的最长公共子串