当前位置:首页 » 编程语言 » 最长c语言代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

最长c语言代码

发布时间: 2022-09-23 20:30:16

㈠ 求最长公共子序列的c语言代码

???

㈡ C语言输出一行字符串中最长的单词

代码如下:

#包括< stdio, h >

# include < string。H >

Voidmain()

字符c[50];

Voidf(charc[50]);//没有返回值,直接用函数f打印结果。

(c);

F(c);

Voidf(charc[50])

Intlen=0,lenth=0,I,flag=0;

For(I=0;C(我)!='\0';我++)

如果(c[我]!='')

Len++;

If(c[I]=='')

If (len > lenth)

长度=兰;

国旗=i-lenth;//当有一个新的最长的字符串时,使用flag记录字符串开始下标

Len=0;

If (len > lenth)

长度=兰;

国旗=i-lenth;//以同样的方式

Printf("最长的子串是%d字符,子串是:",lenth);//打印子串的长度

For (I = flag;I < flag + lenth;i++)//将子字符串从flag输出到flag + lenth-1

Printf("%c",[I]c);

Printf("\n");//换行

(2)最长c语言代码扩展阅读:

1.返回意味着从被调用的函数继续执行到主函数。Return可以伴随一个返回值,返回值可以是常量、变量或表达式。

2.操作:结束正在运行的函数并返回该函数的值。

3.返回值:

返回值可以是各种数据类型,例如:int、float、ouble、char、a[](数组)、*a(指针)、

结构或类(c++)返回类型指定返回后要添加的金额的类型,如果返回类型被声明为void,则不需要返回值。PublicstaticvoidMain()//programentry只能被声明为void和int的返回

{

//没有返回值

}

公共静态空隙(mm)

{

返回;//在某些情况下,在一个voidmethod中,需要跳出来,你可以直接使用return,不能在后面添加任何数量

}

公共静态intcc()

{

321的回归;因为返回类型声明为int,所以返回一个整数

}

公共静态字符串MSMSM()

{

返回“asdfhasjghdg”;因为返回类型被声明为string,所以返回一个string

}

㈢ C语言输出最长字符串 输出不完整 帮我看看代码

把while(scanf("%s",&s) != 0 )中的scanf("%s",&s)改成gets(s)试试!scanf("%s",&s)这个函数是不认空格的,一旦有空格它就认为输入结束了,把空格后的字符当另一次输入,所以最后只剩下最后输入一个字符串……

㈣ C语言 求最长公共子串的代码,其中有一句j+=length1;不太明白作用是什么,没有这句有什么影响,望解答

这个算法是错误的,代码中有一些错误,我修改如下:

j+=length的原始意图是想让s[i]==t[j]满足的情况下,将t字符串移动。

但为什么能一下移动length这么长?这样虽然程序不会死循环,但结果不对。

由于一下子移动太多,可能会漏掉真正的最长公共子串,比如下面这个例子:


#include<stdio.h>
#include<string.h>
voidMaxComStr_youError(chars[],chart[],charc[])
{
intindex=0,length=0,i,j,k,length1;
i=0;
while(s[i]!='')
{
j=0;
while(t[j]!='')
{
if(s[i]==t[j])
{
length1=1;
for(k=1;i+k<strlen(s)&&j+k<strlen(t)&&s[i+k]==t[j+k];k++)
length1++;
if(length1>length)
{
index=i;
length=length1;
}
j+=length1;//这一句的作用是什么没有这一句对程序有什么影响?×/
}
elsej++;
}
i++;
}
for(i=0;i<length;i++)
c[i]=s[index+i];
c[length]='';
}

voidMaxComStr_OK(chars[],chart[],charc[])
{
intindex=0,length=0,i,j,k,length1;
i=0;
while(s[i]!='')
{
j=0;
while(t[j]!='')
{
if(s[i]==t[j])
{
length1=1;
for(k=1;i+k<strlen(s)&&j+k<strlen(t)&&s[i+k]==t[j+k];k++)
length1++;
if(length1>length)
{
index=i;
length=length1;
}
}
j++;
}
i++;
}
for(i=0;i<length;i++)
c[i]=s[index+i];
c[length]='';
}


intmain(intargc,char*argv[])
{
chars[]="xxxxxxxxababc";
chart[]="abababc";
charc[100];

printf("s=%s t=%s ",s,t);

MaxComStr_youError(s,t,c);
printf(" ERRORresult:%s ",c);

MaxComStr_OK(s,t,c);
printf("OKresult:%s",c);
}
程序输出为:

s=xxxxxxxxababc
t=abababc

ERRORresult:abab
OKresult:ababc

㈤ C语言求最长子序列

下面是你的代码修改过后的结果,改过的地方都有注释,另有测试样例。
#include <stdio.h>
/*
5
5
-2 5 4 -7 3
最长子序列:9
4
-2 -3 8 -7
最长子序列:8
3
-2 -2 7
最长子序列:7
2
-1 5
最长子序列:5
1
-2
最长子序列:0

Process returned 0 (0x0) execution time : 30.999 s
Press any key to continue.

*/
int main() {
int count, i, k, a[100] = {0}, b[10000] = {0}, n, num, max = 0, q, m, j;
scanf("%d", &n);
for (count = 0; count < n; count++) {
scanf("%d", &num);
for (i = 0; i < num; i++) scanf("%d", &a[i]);
k = 0;
for (i = 0; i < num; i++)
for (q = 1; q < num + 1; q++) {
for (m = i; (m < i + q) && (m < num); m++) //在这里再加一个判断条件(m < num),
b[k] += a[m];
k++;
}
j = k - 1;
max = 0; //如果全部都是负数的话,结果应该是0,即一个都不选
for (; j >= 0; j--)
if (max < b[j]) max = b[j];
printf("最长子序列:%d\n", max);
max = 0;
for (i = 0; i < 10000; i++) b[i] = 0;
}
return 0;
}

㈥ 求问C语言:简易版最长序列

#include<stdio.h>
voidfun()
{
intn,m,max=0,a[10]={0};
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
a[m]++;
}
for(m=0;m<10;m++)
if(a[m])
{
if(a[m]>max)
max=a[m];
}
for(m=0;m<10;m++)
if(a[m]==max)
printf("%d%d ",m,a[m]);
}
intmain()
{
intt;
scanf("%d",&t);
while(t--)
{
fun();
}
return0;
}

㈦ c语言求最长行

#include<stdio.h>
#include<string.h>
#define SIZE 5
main()
{
int len[SIZE]={0},max=0,top=0; //top是最大字符串的下标
char ch[SIZE][1024]={0};
char * p=ch[0];
for(int i=0;i<SIZE;i++)
{
printf("输入一个字符串:");
scanf("%s",p+i);
len[i]=strlen(p+i);
}
for(int j=0;j<SIZE;j++)
{
if(max<len[j]) {max=len[j];top=j;} //找最大
}
p=ch[0];
printf("[%s]句最长:%d(ch[%d])\n",p+top,len[top]);
}

㈧ C语言 最长公共子串

首先指出楼主的错误
最长的公共子字符串 应该改成 最长的连续公共子字符串
下面是符合楼主要求的参考代码
//作者:hacker
//时间:9.12.2006
#include <stdio.h>
#include <string.h>

void main()
{
char* x="aabcdababce";
char* y="12abcabcdace";
int m = strlen(x);
int n = strlen(y);
int i, j, k, l;
int maxlength = 0;
int start = 0;
int count = 0;//用来判断是否匹配的变量

for (i=1;i<=n;i++)//匹配长度的循环
for (j=0;j<n-i+1;j++)//y的起始位置的循环
for (k=0;k<m-i+1;k++)//x的起始位置的循环
{
count = 0;
for (l=0;l<i;l++)//判断是否匹配,代码可以优化
if (y[j+l] == x[k+l])
count++;
if (count==i&&i>maxlength)
{
maxlength = i;//记录最大长度
start = j;//记录最大长度的起起位置
}
}

//作者:hacker
//时间:9.12.2006
#include <stdio.h>
#include <string.h>

void main()
{
char* x="aabcdababce";
char* y="12abcabcdace";
int m = strlen(x);
int n = strlen(y);
int i, j, k, l;
int maxlength = 0;
int start = 0;
int count = 0;//用来判断是否匹配的变量

for (i=1;i<=n;i++)//匹配长度的循环
for (j=0;j<n-i;j++)//y的起始位置的循环
for (k=0;k<m-i;k++)//x的起始位置的循环
{
count = 0;
for (l=0;l<i;l++)//判断是否匹配,代码可以优化
if (y[j+l] == x[k+l])
count++;
if (count==i&&i>maxlength)
{
maxlength = i;//记录最大长度
start = j;//记录最大长度的起起位置
}
}

if (maxlength==0)
printf("No Answer");
else
for (i=0;i<maxlength;i++)
printf("%c",y[start+i]);
}

}
下面是真正的最长公共子串的动态规划算法
//作者:hacker
//时间:9.12.2006

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

int b[50][50];
int c[50][50];

void lcs(x,m,y,n)
char *x;
int m;
char *y;
int n;
{
int i;
int j;

for (i=1;i<=m;i++) c[i][0] = 0;
for (i=1;i<=n;i++) c[0][i] = 0;
c[0][0] = 0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{
if (x[i-1] == y[j-1])
{
c[i][j] = c[i-1][j-1] + 1;
b[i][j] = 1;
}
else
if (c[i-1][j] > c[i][j-1])
{
c[i][j] = c[i-1][j];
b[i][j] = 2;
}
else
{
c[i][j] = c[i][j-1];
b[i][j] = 3;
}

}
}

void show(i,j,x)
int i;
int j;
char* x;
{
if (i==0||j==0)
return;
if (b[i][j]==1)
{
show(i-1,j-1,x);
printf("%c",x[i-1]);
}
else
if (b[i][j]==2)
show(i-1,j,x);
else
show(i,j-1,x);
}

void main()
{
char* x="aabcdababce";
char* y="12abcabcdace";
int m = strlen(x);
int n = strlen(y);
lcs(x,m,y,n);
show(m,n,x);

}

㈨ C语言编程:输出由键盘输入的n个字符串中最长的字符串。咋做

代码文本:

#include "stdio.h"

#include <stdlib.h>

#include <string.h>

#define N 101

int Longer(char **str,int n){//判断串长度函数

int i,k;

for(k=0,i=1;i<n;i++)

if(strlen(str[i])>strlen(str[k]))

k=i;

return k;

}

int main(int argc,char *argv[]){

int n,i;

char **str,*q;

printf("Enter n(int n>0)... ");

if(scanf("%d",&n)==1 && n>0){//输入字符串个数n

q=(char *)malloc(sizeof(char)*N*n);//由n申请空间

if(!q || (str=(char **)malloc(sizeof(char *)*n))==NULL){

printf("Application memory failure, exit... ");

return 0;//申请不成功则退出

}

for(str[i=0]=q;i<n;str[i++]=q+i*N);//将空间组织成二维数组

printf("Please enter %d string(s)... ",n);

for(i=0;i<n;scanf("%100s",str[i++]));//输入字符串

printf(" The longest: %s ",str[Longer(str,n)]);//输出

free(q);//释放所申请的空间

free(str);

}

else

printf("Input error, exit... ");//输入错误提示

return 0;

}

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

先输入10个字符串,然后依次计算字符串长度,找到最长的一个,并把这个字符串输出即可。

代码如下:

#include<stdio.h>
#include<string.h>
intmain()
{
chars[10][100];
inti;
intmax_i,max_len=0;
for(i=0;i<10;i++)
scanf("%s",a[i]);//输入10个字符串。

for(i=0;i<10;i++)
{
intl=strlen(s[i]);
if(max_len<l)//依次将长度和max_len对比,找到最长一个。
{
max_len=l;
max_i=i;
}
}
printf("%s ",s[max_i]);//输出最长字符串。

return0;
}