c语言,输入6个字符串,求最大串和最小串

输入6个字符串,输出最大串及最小串,如
输入:
hello,world
c
java
c++
#c
cp
运行结果:
最大串:java
最小串:c

以下是我的代码,请问哪里有错,怎么改

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 7
#define M 15

int main()
{
    int i,j,changdu[N];
    char *m[M],min[M],max[M];
    printf("input 6 strings:\n");
    for(i = 0; i < 6; i++)
    {
        scanf("%s",&m[i]);
    }
    strcpy(min[M],m[0]);
    strcpy(max[M],m[0]);
    for(i = 0; i < 5;i++)
    {
        changdu[i] = strlen(m[i]);
        for(j = i+1; j < 6 ; j++)
        {
            changdu[j] = strlen(m[j]);
            if(changdu[i] < changdu[j])
            {
                strcpy(max[M] , m[j]);
                strcpy(min[M] , m[i]);

            }
        }
    }
    printf("max string is %s,min is %s",max[M],min[M]);

}


5个回答

各位人家都给分了,稍微耐心点嘛,代码改了一下你看看,基本按照你思路弄的:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 7
#define M 15

int main()
{
    int i, j, changdu[N];
    char m[N][M], min[M], max[M];
    int maxlen, minlen;
    printf("input 6 strings:\n");
    for (i = 0; i < 6; i++)
    {
        scanf("%s", &m[i]);
    }
    strcpy(min, m[0]);
    strcpy(max, m[0]);

    changdu[0] = strlen(m[0]);
    maxlen = changdu[0];
    minlen = changdu[0];
    for (j = 1; j < 6; j++)
    {
        changdu[j] = strlen(m[j]);
        if (maxlen < changdu[j])
        {
            strcpy(max, m[j]);
            maxlen = changdu[j];
        }
        else if (minlen > changdu[j])
        {
            strcpy(min, m[j]);
            minlen = changdu[j];
        }
    }

    printf("max string is %s,min is %s", max, min);

}

执行结果,最长的可不是java是第一行的:
图片说明

weixin_43408535
-cfyjbjonn 回复phenix2009: 哦好的,谢谢
一年多之前 回复
phenix2009
白色一大坨 回复-cfyjbjonn: 要是没什么问题请结一下
一年多之前 回复
phenix2009
白色一大坨 回复-cfyjbjonn: 你的最大长度和最小长度是需要随着比较结果变化的,怎么可能用一个固定数值呢
一年多之前 回复
weixin_43408535
-cfyjbjonn 请问为什么直接用changdu[i] < changdu[j]这样就不行,必须要用maxlen和minlen呢
一年多之前 回复

两个问题,一个是字符串比较的问题
一个是 char *m[M],这里你并没有给m分配空间。它只是一个指针
你下面就开始往里面输入了

weixin_43408535
-cfyjbjonn 请问char *m[M]要分配空间的话怎么改?
一年多之前 回复

懒得再重写一遍了,下面的链接可供楼主参考:输入6个字符串,输出最小串及最大串。

至于你的程序问题,楼上几位该说的也说了,关于楼主问的字符与数字间的转换有专文探讨,链接如下:c/字符串,字符转数字,数字转字符

实在懒得再重新总结一遍,楼主自己去领悟吧

看这一句:if(changdu[i] < changdu[j])
字符串不能用<、>、==比较大小,要用strcmp函数,这样用:strcmp(字符串1,字符串2)。如果字符串1<字符串2,返回负数;如果相等,返回0;如果大于,返回正数。

weixin_43408535
-cfyjbjonn 请问这道题到底怎么改呢
一年多之前 回复
weixin_43408535
-cfyjbjonn 没有啊,我这里的changdu[]是int 类型的
一年多之前 回复

请教:C语言怎么将字符“3 5 13-18”数字转换为3 5 13 14 15 16 17 18数字,“13-18”弄不好

weixin_41461277
_ZGq 请另开一个问题提问。(具体的方法我会在那个问题里回答)
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
比较三个字符串的大小并输出:

利用3×20的二维字符数组存放3个字符串,找出其中最大的字符串并输出。 输入格式: 在3行分别输入3个字符串,在字符串中不要出现换行符,空格,制表符 输出格式: 在两行中按照“The largest string is:(换行)最大字符串”的顺序输出。 输入样例: as qwer zxc 输出样例: The largest string is: zxc 难道最大的字符串不应该是qwer吗?为什么会是zxc呢 ``` #include <iostream> #include <cstdlib> #include <iomanip> using namespace std; int main(){ string str[3]; string s; int i; for(i=0;i<3;i++) { getline(cin,str[i]); } for(i=0;i<2;i++) { if(str[i]<str[i+1]) s=str[i+1]; } cout<<"The largest string is:" <<endl; cout<<s; return 0; } ``` 我用这样的代码输出的还真是zxc ``` #include <iostream> #include <cstdlib> #include <iomanip> using namespace std; int main(){ string str[3]; string max; int i,length1,length2; for(i=0;i<3;i++) { getline(cin,str[i]); } for(i=0;i<2;i++) { length1=str[i].length(); length2=str[i+1].length(); if(length1<length2) max=str[i+1]; } cout<<"The largest string is:" <<endl; cout<<max; return 0; } ``` 但是我换成length的话就变成了qwer是最大字符串了, 能帮我解答一下为什么用string比较和用length比较会出现两种不一样的结果吗

C语言程序编程PTA在线求

输入5个字符串(长度小于10),比较大小,将最大串和最小串连接,大串在前,小串在后

c语言:输入3个字符串,按由小到大的顺序输出,为什么输出有问题

``` #include <stdio.h> #include <string.h> int main(){ void change(char *,char *); char a[]="you"; char b[]="love"; char c[]="l"; if(strcmp(a,b)>0)change(a,b); if(strcmp(a,c)>0)change(a,c); if(strcmp(b,c)>0)change(b,c); printf("%s%s%s",a,b,c); return 0; } void change(char *p1,char *p2){ char p[50]; strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); } ``` 输出结果为:l love 为什么少了you???

大佬看看哪里错了 题目描述:输入两个字符串a和b,将b串中的最大字符插入到a串中最小字符后面。

#include <stdio.h> int main() { int i,j=0,n=0; char a[1][30],max,min; fgets(a[0],29,stdin); fgets(a[1],29,stdin); min = a[0][0]; max = a[1][0]; for (i=0;a[0][i]!='\0';i++) { if ( min < a[0][i]) { min = a[0][i]; j = i; } n++; } for (i=0;a[1][i]!='\0';i++) if ( max > a[1][i]) max = a[1][i]; a[0][n+1]='\0'; for (i=n;i > (j+1);i--) a[0][i]=a[0][i-1]; a[0][j+1] = max; printf("%s",a[0]); while(1); return 0; }

C语言,字符串匹配问题

题目是:输入两个字符串,输出字符串1中与字符串2最先匹配的内容,字符串2中可包含?,?可代表任何字符。已知字符串2不会全为?。 输入输出格式:输入:abcdefabcdeg,a?c??f 输出:abcdef 下述代码可运行出题目中的例子,但测评显示答案错误,是哪里错了,还望大神们指教! ``` #include <stdio.h> int main() { char str1[129],str2[129],*p1,*p2,c,str[129],*p3; p1=str1; p3=str; while(1) { c=getchar(); if(c==',') { (*p1)='\0'; break; } (*p1)=c; p1++; } gets(str2); for(p1=str1,p2=str2;((*p1)!='\0')&&((*p2)!='\0');p1++) { if(((*p1)==(*p2))||((*p2)=='?')) { *(p3++)=(*p1); p2++; } else if(((*(p1-1))==(*(p2-1)))||((*(p2-1))=='?')) { p2=str2; p3=str; continue; } } if((*p2)=='\0') { (*p3)='\0'; puts(str); } putchar(10); return 0; } ```

找出n个字符串中出现次数最多的字符串

1. 找出n个字符串中出现次数最多的字符串。 C/C++: char* find(char **data,int n); Java: String find(String data[]); 说明: 1. data是字符串数组,n是数组中字符串的个数,返回值为出现次数最多的字符串。 2. 若结果有多个,返回任意一个即可 3. 不得使用任何库函数/API,如需使用类似功能, 请自行实现 4. 算法效率尽可能高,尽量少的使用内存空间 5. 必须要有代码注释和算法说明。 例如:data里面的数据是{“paper”,”cup”,”book”,”cup”,”pen”,”book”}。n = 6。返回结果为”cup”或”book”。

PTA P字符串的输入输出

![图片说明](https://img-ask.csdn.net/upload/202003/02/1583144707_184521.jpg) 这是题目的题干。 ``` 请问这样的字符串的输入输出函数应该怎么写呢? 如果以scanf("%s",str)输入的话那最后一位只能是'\0'了就与题意不符了 ```

输入任意个英文字符串,按字符串长度由大到小顺序输出,结果字符串全都和原来输入的不一样

#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int i,k,answer=0,count=0; printf("请输入谚语:"); char **array=(char**)malloc(20*sizeof(char)); char temp[50]; char *p=temp; if(!array) printf("分配内存失败!"); for(i=0;i<20;i++) {array[i]=(char*)malloc(50*sizeof(char)); if(!array[i]) printf("分配内存失败!");} i=0; do{gets(*array+i); i=i+1; count++; printf("继续输入(0),不再输入(1)"); scanf("%d",&answer); getchar(); }while(answer==0); for(i=0;i<count-1;i++) for(k=0;k<count-1-i;k++) if(sizeof(array[k])>sizeof(array[k+1])) {*p=**(array+k); **(array+k)=**(array+k+1); **(array+k+1)=*p; } for(i=0;i<count;i++) printf("%s\n",*array+i); free(array); return 0; }

C语言计算实现,字符串的编码值小于等于给定的值则输出yes,否则输出no

Problem Description Javac++ 一天在看计算机的书籍的时候,看到了一个有趣的东西!每一串字符都可以被编码成一些数字来储存信息,但是不同的编码方式得到的储存空间是不一样的!并且当储存空间大于一定的值的时候是不安全的!所以Javac++ 就想是否有一种方式是可以得到字符编码最小的空间值!显然这是可以的,因为书上有这一块内容--哈夫曼编码(Huffman Coding);一个字母的权值等于该字母在字符串中出现的频率。所以Javac++ 想让你帮忙,给你安全数值和一串字符串,并让你判断这个字符串是否是安全的? Input 输入有多组case,首先是一个数字n表示有n组数据,然后每一组数据是有一个数值m(integer),和一串字符串没有空格只有包含小写字母组成! Output 如果字符串的编码值小于等于给定的值则输出yes,否则输出no。 Sample Input 2 12 helloworld 66 ithinkyoucandoit Sample Output no yes

PTA《C语言程序设计》习题8-7 字符串排序

我在Dev C上测试样例数据,结果没问题。但在平台上测试全部提示段错误。是哪里出错了? 另外,我不会把排序写成函数。请问应该怎样定义和调用参数? 题目: ![图片说明](https://img-ask.csdn.net/upload/202004/01/1585725127_29159.png) 代码: ``` #include<stdio.h> #include<string.h> void swap(char *s1, char *s2); int main() { char s[5][81]; int i; for(i=0;i<5;i++) scanf("%s",s[i]); int finish=5,index=5; while(finish>1) { for(i=0;i+1<finish;i++) { if(strcmp(s[i],s[i+1])>0) { swap(s[i],s[i+1]); index=i+1; } } if(index<finish) finish=index; else finish=0; } printf("After sorted:\n"); for(i=0;i<5;i++) printf("%s\n",s[i]); return 0; } void swap(char *s1, char *s2) { char *temp; strcpy(temp,s1); strcpy(s1,s2); strcpy(s2,temp); } ```

编程实现找出字符串中最大字符元素并输出该元素及其对应的ASCII值 请问为什么运行显示无输出?

#include <stdio.h> int main() { char str[100]; int i,ans=0; printf("Input a string:\n"); gets(str); for (i=0;i<=strlen(str)-1;i++) if (str[i]>ans) { ans=str[i]; } printf("The largest character of \"%s\" is \'%c\' ,The ASCII is %d.",str,ans,ans); return 0; }

求大侠帮忙:C语言程序设计---编程题(以下所有题目程序应是非递归的)

1. 编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2. 2. 学校工会组织活动,要求有8名教师参加,这8名教师将分别从A学院3名教师、B学院5名教师、C学院6名教师中任意抽取,且其中必须有B学院的教师参加,请编程输出所有可能的方案 3. 已知在C盘根目录下存有文本文件“file1.txt”,编程统计文件“file1.txt”中每个字母字符和每个数字字符出现的频率,在屏幕上显示统计结果,并将统计结果写入磁盘文件“file2.txt”中 4. 输入一个字符串,内有数字和非数字字符,如:AS234fgh456d 17968x7654,将其中连续的数字作为一个整体,依次存放到一数组a中,例如234存入a[0],456存入a[1],…,编程统计其共有多少个整数,并输出这些数。要求: 1) 编写函数完成将字符串中连续的数字作为一个整体,依次存放到一数组a中 2) 在主函数中完成数据的输入与结果的输出 5. 按由大到小的顺序对一个含有N个整型数据的数组A[N]进行排序,利用如下改进的选择排序方法:第一次选出最大者存入A[1],第二次选出最小者存入A[N],第三次选出次大者存入A[2],第四次选出次小者存入A[N-1],如此大小交替地选择,直到排序完成。要求: 1) 编写函数sort完成排序 2) 在主函数中完成数据的输入与结果的输出 6. 已知用两个单链表分别存储的两个字符串,均按递增次序排列。编程实现将这两个单链表归并为一个按数据域值递减次序排列的单链表。要求: 1) 单链表中每个结点只存放一个字符 2) 利用原链表中的结点空间存储归并后的单链表,不另外生成新链表 3) 单链表的建立写一函数create实现 4) 两个链表归并过程写一函数sub实现 5) 输出结果写一函数output实现 6) 主函数调用这三个函数完成程序功能

基于哈夫曼树的数据压缩算法

A 基于哈夫曼树的数据压缩算法 时间限制(C/C++):1000MS/3000MS 运行内存限制:65536KByte 总提交:445 测试通过:131 描述 输入一串字符串,根据给定的字符串中字符出现的频率建立相应哈夫曼树,构造哈夫曼编码表,在此基础上可以对待压缩文件进行压缩(即编码),同时可以对压缩后的二进制编码文件进行解压(即译码)。 输入 多组数据,每组数据一行,为一个字符串(只考虑26个小写字母即可)。当输入字符串为“0”时,输入结束。 输出 每组数据输出2n+4行(n为输入串中字符类别的个数)。第一行为统计出来的字符出现频率(只输出存在的字符,格式为:字符:频度),每两组字符之间用一个空格分隔,字符按照ASCII码从小到大的顺序排列。第二行至第2n行为哈夫曼树的存储结构的终态(形如教材139页表5.2(b),一行当中的数据用空格分隔)。第2n+2行为每个字符的哈夫曼编码(只输出存在的字符,格式为:字符:编码),每两组字符之间用一个空格分隔,字符按照ASCII码从小到大的顺序排列。第2n+3行为编码后的字符串,第2n+4行为解码后的字符串(与输入的字符串相同)。 样例输入 aaaaaaabbbbbccdddd aabccc 0 样例输出 a:7 b:5 c:2 d:4 1 7 7 0 0 2 5 6 0 0 3 2 5 0 0 4 4 5 0 0 5 6 6 3 4 6 11 7 2 5 7 18 0 1 6 a:0 b:10 c:110 d:111 00000001010101010110110111111111111 aaaaaaabbbbbccdddd a:2 b:1 c:3 1 2 4 0 0 2 1 4 0 0 3 3 5 0 0 4 3 5 2 1 5 6 0 3 4 a:11 b:10 c:0 111110000 aabccc

java 输入double型数并求最大和最小

import java.io.*; import java.util.*; public class MaxAndMin { double max; double min; public static void main(String[] args) { MaxAndMin m=new MaxAndMin(); m.cmp(); } public void cmp(){ ArrayList a=new ArrayList(); System.out.println("Please enter four double numbers:"); BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); try{ String line=reader.readLine(); while(line != null){ a.add(new Double(line)); line=reader.readLine(); } int size=a.size(); double[] d=new double[size]; for(int i=0;i<size;i++){ d[i]=((Double)a.get(i)).doubleValue(); } for(int i=0;i<size-1;i++){ if(d[i]<d[i+1]){ max=d[i+1]; min=d[i]; } else{ max=d[i]; min=d[i+1]; } } System.out.println("The maxinum number is "+max); System.out.println("The mininum number is "+min); }catch(IOException ex){ ex.printStackTrace(); } } } 这个程序是要从键盘输入若干个double类型的数,然后比较,找出最大的和最小的并输出。 不知道这个程序错在哪里?在eclipse运行时,我每输入一个数就按下回车,输入四个数后,按回车,第五个什么也不输入,直接按回车,没有结果。??

设有一个顺序串s,其字符仅由数字和小写字母组成。设计一个算法将s中所有数字字符放在前半部分,所有小写字母字符放在后半部分。并给出你所设计的算法的时间和空间复杂度。

设有一个顺序串s,其字符仅由数字和小写字母组成。设计一个算法将s中所有数字字符放在前半部分,所有小写字母字符放在后半部分。并给出你所设计的算法的时间和空间复杂度。

C语言 数组交换问题 用指针

输入 10 个整数,将其中最小的数与第一个数互换,把最大的数与最后一个数互换。写三个函数分别实现:(1)输入 10 个数;(2)实现具体互换处理,并通过指针型参数的间接运算返回最大值和最小值;(3)输出 10 个数。 脑子已经迷糊了 中间的交换函数不会写了。。qiu'jiao #include<stdio.h> void input(int *x[],int n) { int i; for(i=0;i<=n-1;i++) { scanf("%d",&x[i]); } } void swap(int *x[],int n) void output(int *x[],int n) { int i; for(i=0;i<n;i++) { printf("%d ",x[i]); } } int main() { int a; input(a,10); swap(a,10); output(a,10); return 0; }

c语言数据结构问题 代码相似性度量

我的思路:对要进行比较的所有代码段进行词法分析,并转化为特定的标记(token)串,自己制定一个转换规则。接着,通过两两比较标记(token)串来确定代码之间的相似性,并由此确定代码之间抄袭的程度。 将这两个代码分别转换为token串后,基于算法RKR-GST( running-karp-rabin greedy-string-tiling)算法思想,循环求取两个标记串中未被匹配部分的最大公共子串,将其用空格代替,并根据公式求出两个token串A,B的相似度 源代码 #include <stdio.h> #include <string.h> #include <ctype.h> #include <conio.h> #include <malloc.h> #include <stdlib.h> #include <windows.h> #define N 10000 #define M 10000 #define MAXSTRLEN 10000 //定义最大串长 typedef int status; typedef unsigned char SString[MAXSTRLEN+1]; //串的定长顺序存储表示 SString a[3]={"int","long","short"}; SString b[2]={"float","double"}; SString c[15]={"&&","||","++","--","+","-","*","/","=",">=","<=","==","!=",">","<"}; SString d[12]={"[","]","{","}","(",")",",",";","'","#",";","."}; SString e[29]={"auto","break","case","char","const","continue","default","do","else","enum", "extern","for","goto","if","main","printf","register","return","signed","sizeof", "static","struct","switch","typedef","union","unsigned","void","while","volatile"}; HANDLE hOut; DWORD written; void ShadowWindowLine(char *str); char type(char *str); void token(char name[],char list[],char token[],FILE *table); void simple(int MinMatchLen,FILE *fp1,FILE *fp2); status replace(SString s,int pos,int len,int Ls); int copy(float n); void ShadowWindowLine(char *str) { SMALL_RECT rc; CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息 WORD att0,att1,attBack; int i, chNum = strlen(str); GetConsoleScreenBufferInfo( hOut, &bInfo ); // 获取窗口缓冲区信息 // 计算显示窗口大小和位置 rc.Left = (bInfo.dwSize.X - chNum)/2 - 2; rc.Top = 8; // 原代码段中此处为bInfo.dwSize.Y/2 - 2,但是如果您的DOS屏幕有垂直滚动条的话,还需要把滚动条下拉才能看到,为了方便就把它改为10 rc.Right = rc.Left + chNum + 4; rc.Bottom = rc.Top + 4; att0 = BACKGROUND_RED |BACKGROUND_BLUE; // 阴影属性 att1 = FOREGROUND_RED |FOREGROUND_GREEN |FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY;// 文本属性 attBack = BACKGROUND_RED |BACKGROUND_GREEN |BACKGROUND_BLUE | BACKGROUND_INTENSITY; // 背景属性 // 设置阴影然后填充 COORD posShadow = {rc.Left+1, rc.Top+1}, posText = {rc.Left, rc.Top},posBack={0,0}; for (i=0;i<25;i++) { FillConsoleOutputAttribute(hOut, attBack,80, posBack, &written); posBack.Y++; } for (i=0; i<5; i++) { FillConsoleOutputAttribute(hOut, att0, chNum + 4, posShadow, &written); posShadow.Y++; } for (i=0;i<5;i++) { FillConsoleOutputAttribute(hOut, att1,chNum + 4, posText, &written); posText.Y++; } // 写文本和边框 posText.X = rc.Left + 2; posText.Y = rc.Top + 2; WriteConsoleOutputCharacter(hOut, str, strlen(str), posText, &written); SetConsoleTextAttribute(hOut, bInfo.wAttributes); // 恢复原来的属性 } char type(char *str) //此函数判断单词类型 { int i; for(i=0;i<3;i++) //a中的关键字 { if(strcmp(str,a[i])==0) return 'K'; } for(i=0;i<2;i++) //b中的关键字 { if(strcmp(str,b[i])==0) return 'E'; } for(i=0;i<15;i++) //c中的符号 { if(strcmp(str,c[i])==0) return 'A'; } for(i=0;i<12;i++) //d中符号 { if(strcmp(str,d[i])==0) return 'R'; } for(i=0;i<29;i++) //e中的关键字 { if(strcmp(str,e[i])==0) return 'Y'; } if(isdigit(str[0])) //0-9是数字 { return 'N'; } //一般的变量与字符 if(!isalnum(str[0])) return 'H'; else return 'C';//变量 } void token(char name[],char list[],char token[],FILE *table) //将两个文件中的字符串分别切割转换为token串 {    FILE *in,*out; char ch,c,buffer[N],*link[M]; int i=0,j=0,k=0,LenLink=0; if((in=fopen(name,"r+"))==NULL) { printf("源文件无法打开!\n"); exit(0); } if((out=fopen(list,"w+"))==NULL) { printf("文件写入失败!\n"); exit(0); } if((table=fopen(token,"w+"))==NULL) { printf("文件写入失败!\n"); exit(0); } while(!feof(in)) //逐字读取文件 { ch=fgetc(in); if(ch=='\t' || ch==' ' || ch== '\n') //去掉空格、制表符、回车 continue; if(isalpha(ch)) //如果首字符是字母 { while(isalnum(ch)&&(i<N)) //其他位是字母或数字 { buffer[i++]=ch; ch=fgetc(in); } buffer[i]='\0'; link[j++]=(char *)malloc(sizeof(char)*(strlen(buffer)+1)); strcpy(link[j-1],buffer); i=0; fseek(in,-1L,1); //在文件当中定位 } else if(isdigit(ch)) //如果首字符是数字 { while(isalnum(ch)&&(i<N)) //其他位是字母或数字 { buffer[i++]=ch; ch=fgetc(in); } buffer[i]='\0'; link[j++]=(char *)malloc(sizeof(char)*(strlen(buffer)+1)); strcpy(link[j-1],buffer); i=0; fseek(in,-1L,1); } else if(!isalnum(ch)) //如果首字符既不是数字也不是字母 { if(ch!='\n'&&ch!=' '&&ch!='\t') { if(ch=='>'||ch=='<'||ch=='!') //以下代码实现超前搜索 { if((c=fgetc(in))=='=') //>=,<=,!=这些需被认为是一个符号 { buffer[i++]=ch; buffer[i++]=c; buffer[i]='\0'; link[j++]=(char *)malloc(sizeof(char)*3); strcpy(link[j-1],buffer); i=0; } else { buffer[i++]=ch; buffer[i]='\0'; link[j++]=(char *)malloc(sizeof(char)*2); strcpy(link[j-1],buffer); i=0; fseek(in,-1L,1); } } else if(ch=='+'||ch=='-'||ch=='&'||ch=='|'||ch=='=') { if((c=fgetc(in))==ch) //++,--,&&,||,==这些需被认为是一个符号 { buffer[i++]=ch; buffer[i++]=c; buffer[i]='\0'; link[j++]=(char *)malloc(sizeof(char)*3); strcpy(link[j-1],buffer); i=0; } else { buffer[i++]=ch; buffer[i]='\0'; link[j++]=(char *)malloc(sizeof(char)*2); strcpy(link[j-1],buffer); i=0; fseek(in,-1L,1); } } else //其他符号 { buffer[i++]=ch; buffer[i]='\0'; link[j++]=(char *)malloc(sizeof(char)*2); strcpy(link[j-1],buffer); i=0; } } } } LenLink = j-1; //存到link中的总长度 for(i=0;i<LenLink;i++) //打印token中的内容 { c=type(link[i]); // if(c=='N'||c=='A'||c=='R')//数字,符号在表中保留 fputs(link[i],table); if(c=='C') //变量均替换为id fputs("id",table); if(c=='K')//关键字int,short,long替换为zh fputs("zh",table); if(c=='E')//关键字float,double替换为fu fputs("fu",table); if(c=='Y')//其他关键字不变 fputs(link[i],table); if(c=='H')//汉字删掉 fputs("\0",table); } fclose(table); fprintf(out,"\t***** 单词类型观察表 *****\n");//打印list中的内容 fprintf(out,"\t K --int,short,long \n"); fprintf(out,"\t E --float,double\n"); fprintf(out,"\t Y --其他关键字\n"); fprintf(out,"\t A --运算符号\n"); fprintf(out,"\t R --语言符号\n"); fprintf(out,"\t N --数字\n"); fprintf(out,"\t H --汉字\n"); fprintf(out,"\t C --一般变量或标识符\n"); fprintf(out,"\t*****************************\n"); for(i=0;i<LenLink;i++) { c=type(link[i]); //判断单词的类型 fputc('(',out); fputc(c,out); fputc(',',out); fputs(link[i],out); fputc(',',out); fprintf(out,"%d",i); fputc(')',out); fputc('\n',out); } } void simple(int MinMatchLen,FILE *fp1,FILE *fp2)//此函数计算相似度,MinMatchLen: 公共子串要达到的最小长度 { SString A,B; char ch,h; int i=0,j=0,k,t,s,a=1,La,Lb,lena,lenb,x,y; float n; int MatchLen=0;//所有公共子串的总长度 int maxmatch;//当前最大公共子串长度 if ((fp1=fopen("f:\\token1.txt","r"))==NULL)//设定文件位于当前目录下,可更改为绝对路径 { printf("文件打开失败!"); getch(); exit(0); } A[++i]=fgetc(fp1); while(!feof(fp1)) A[++i]=fgetc(fp1); fclose(fp1); La=i-1; printf("token串1长度为%d,",La); if ((fp2=fopen("f:\\token2.txt","r"))==NULL)//设定文件位于当前目录下,可更改为绝对路径 { printf("文件打开失败!"); getch(); exit(0); } B[++j]=fgetc(fp2); while(!feof(fp2)) B[++j]=fgetc(fp2); fclose(fp2); Lb=j-1; printf("token串2长度为%d\n",Lb); printf("是否要查看这两个token串?Y/N "); h=getchar(); if(h=='Y'||h=='y') { ShellExecute(NULL,"open","F:\\token1.txt",NULL,NULL,SW_SHOWNORMAL); ShellExecute(NULL,"open","F:\\token2.txt",NULL,NULL,SW_SHOWNORMAL); } getchar(); printf("\n将超过指定长度的公共子串用空格替换,是否要查看细节?Y/N "); ch=getchar(); lena=i-1; lenb=j-1; do { maxmatch=MinMatchLen; for(i=1;i<=La;i++) { for(j=1;j<=Lb;j++) { k=0; while((k<=La-i)&&(k<=Lb-j)&&(A[i+k]==B[j+k])&&((A[i+k]!='\0')||(B[j+k]!='\0'))&&(A[i+k]!=' ')&&(B[j+k]!=' ')) //串A的第i+k个字符与串B的第j+k个字符是否相等 k++; if(k>maxmatch) { maxmatch=k; x=i; y=j; } } } if(maxmatch>MinMatchLen) { replace(A,x,maxmatch,La); replace(B,y,maxmatch,Lb); La=La-maxmatch+1; Lb=Lb-maxmatch+1; MatchLen+=maxmatch; } if(ch=='Y'||ch=='y') { printf("第%d次检查两串中的匹配串\n",a); a++; for(s=1;s<=La;s++) printf("%c",A[s]); printf("\n"); for(s=1;s<=Lb;s++) printf("%c",B[s]); printf("\n"); } } while(maxmatch>MinMatchLen); printf("\n已经没有能够匹配的公共子串了\n"); n=(2.0*MatchLen)/(lena+lenb); printf("公共子串的总长为%d,",MatchLen); printf("根据公式\n"); printf("\t\t ——————————————————————————\n"); printf("\t\t| 相似度=(2×公共子串长度)÷(串A长度+串B长度) |\n"); printf("\t\t ——————————————————————————\n"); printf("这两串代码的相似度为%f\n",n); copy(n); } status replace(SString s,int pos,int len,int Ls) //用空格来代替两个token串中的最大匹配子串 { int i; if(pos<1||pos>Ls-len+1||len<0) return 0; s[pos]=' '; for(i=pos+len;i<=Ls;i++) { s[i-len+1]=s[i]; } return 1; } int copy(float n) //此函数判断是否抄袭 { printf("\n相似度超过0.8,则认为是抄袭"); if(n>=0.8) printf("\n这两个代码有抄袭嫌疑,请做进一步检查"); else printf("\n这两个代码没有抄袭嫌疑"); return 0; } void main(void) { hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄 SetConsoleOutputCP(936); // 设置代码页,此为中文简体 ShadowWindowLine(" 欢迎使用C语言代码复制/相似度检测软件 "); getchar(); system("cls"); //清屏 char name1[50]; char name2[50]; //存储输入的文件路径字符串 FILE *f1,*f2; system("color F3"); printf("\n代码1:"); scanf("%s",name1); token(name1,"f:\\list1.txt","f:\\token1.txt",f1); printf("代码2:"); scanf("%s",name2); token(name2,"f:\\list2.txt","f:\\token2.txt",f2); printf("\ntoken串已生成成功,"); getchar(); simple(3,f1,f2); }

有一个由数字1,2,3,4,5,6,7,8,9组成的数字串(长度不超过200),问如何将M个加号插入这个串中

所得的算术表达式的值最小,加号不能加在数字串的最前面或最末尾,也不应有两个或两个以上的加号相邻

对给定的N位高精度正整数,去掉其中的k个数字后,使剩下的数字构成的整数最大。

Input 输入第1行为一个整数L 后面L行的每一行包括一个长度为N的高精度正整数和需要去掉的数的个数k。(1 <= N <= 1000 , 1 <= k < N) Output 输出每一行表示每个高精度正整数去掉相应的k个数字后构成的新的最大正整数。 Sample Input Original Transformed 2 12345 1 54321 2 Sample Output Original Transformed 2345 543 C语言有没有比较好的解决方法或者算法思路,自己编的程序总是出现一些小问题

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

抖音上很火的时钟效果

反正,我的抖音没人看,别人都有几十万个赞什么的。 发到CSDN上来,大家交流下~ 主要用到原生态的 JS+CSS3。 具体不解释了,看注释: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Title&lt;/tit...

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

推荐9个能让你看一天的网站

分享的这9个保证另你意外的网站,每个都非常实用!非常干货!毫不客气的说,这些网站最少值10万块钱。 利用好这些网站,会让你各方面的技能都得到成长,不说让你走上人生巅峰,但对比现在的你,在眼界、学识、技能方面都有质的飞跃。 一、AIRPANO 传送门:https://www.airpano.com/360photo_list.php 这是一个可以躺在家里,就能环游世界的神奇网站。 世界那么大,绝大多...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

一场疫情,炸出了退休的COBOL程序员

COBOL编程语言,估计大多数程序员从没听说过,我这样的编程老司机,也是只闻其名,从未一睹芳容。出门问了问度娘,答案如下:COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据...

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

讲真,这两款idea插件,能治愈你英语不好的病

时不时就有小伙伴问我,“二哥,能推荐一款 IDE 吗?”你看这话问的,现在搞 Java 的不都在用 Intellij IDEA 吗,还用得着推荐(我已经和 Eclipse 分手了)。然后小伙伴又说,“二哥,IDEA 支持中文吗?我英语不太好。”你看这话问的,搞编程的,英语不好是硬伤啊! 不过,随着 IDEA 最新版(版本号是 2020.1)的发布,英语不好的病可以彻底治愈了。为什么这么说呢?因为 ...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

又一起程序员被抓事件

就在昨天互联网又发生一起让人心酸的程序员犯罪事件,著名的百度不限速下载软件 Pandownload PC 版作者被警方抓获。案件大致是这样的:软件的作者不仅非法盗取用户数据,还在QQ群进...

瑞德西韦重症用药结果再曝光,上百名重症一周内好转,股价大涨19%

郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI期盼已久的瑞德西韦临床数据,现在“偷跑”了。在芝加哥大学医学院的临床试验中,125名病人参与,大部分人都已经出院,其中只有2名病...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

Vue商城——详情页功能

详情页实现思路 点击商品进去详情页,根据点击请求更加详细的信息,要传过来goodsItem的iid,根据id去服务器请求更加详细的信息;配置路由映射关系,点击进行跳转,带参数传递跳转 itemClick(){ this.$router.push('/detail/'+this.goodsItem.iid) /* this.$router.push({ ...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

自学编程的 6 个致命误区

嗨,小伙伴们大家好,我是沉默王二。本篇文章来和大家聊聊自学编程中的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的问题,很有代表性,所以我就结合自己的亲身体会来谈一谈,希望对小伙伴们有所启发。 01、追求时髦 所谓基础不牢,地动山摇啊。可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟,心灰意冷...

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问