當前位置:首頁 » 編程語言 » 最長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;
}