當前位置:首頁 » 編程語言 » 區間合並c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

區間合並c語言

發布時間: 2022-01-19 11:48:58

c語言文件合並

文件的合並要使用到FILE類型,以及文件的打開關閉,下面以圖片文件和其它類型的文件進行合並為例,說說文件的合並:

#include<stdio.h>
#include<stdlib.h>
voidmain()
{
FILE*fp,*ff,*ftt;
charch;
charfn1[20],fn2[20],ft[20];
printf(" 圖片文件合成器 ");
printf("輸入要合成的圖片名稱:");
scanf("%s",fn1);
printf("輸入要合成的文件名稱:");
scanf("%s",fn2);
printf("生成的名稱:");
scanf("%s",ft);
if(!(fp=fopen(fn1,"rb")))//當不能打開圖片文件的提示處理
{
printf("不能打開圖片%s ",fn1);
return;
}
if(!(ff=fopen(fn2,"rb")))
{
printf("不能打開文件%s",fn2);
return;
}
if(!(ftt=fopen(ft,"wb")))
{
printf("不能打開%s",ft);
return;
}

while(!(feof(fp)))//寫入圖片文件
{
ch=fgetc(fp);
fputc(ch,ftt);
}
fclose(fp);


while(!(feof(ff)))//寫入其它類型的文件
{
ch=fgetc(ff);
fputc(ch,ftt);
}
fclose(ff);
fclose(ftt);
system("pause");

}

要注意了,這個例子涉及的文件均要在cpp文件的同一級目錄,要是不在同一級目錄則要輸入文件的路徑,合成的文件也在cpp文件的目錄下。

❷ 區間合並C語言找錯誤

你的代碼太亂了,我整理了一下,我故意等了一天來看一看有沒有人來回答,是想看看有沒有人有心情看這么亂的代碼。錯誤在你用0和1代表區間那裡賦值為0的條件加 if (1 != sz[a])

/*
*Version:1.0.1
*Author:XXX
*ModifyAuthor:YB
*/
#include<stdio.h>
#defineN20
intmain(){

inti,k,n,a,s=0,p;
intsz[N]={-1},sz1[N]={-1},sz2[N]={-1},e,f;

//input
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&(sz1[i]),&(sz2[i]));
}
//inputend

//sz表示坐標,數組sz[a]為1則該位在區間;為0則不在區間
for(i=0;i<n;i++)
{
for(a=0;a<N;a++)
{
if(a>=sz1[i]&&a<=sz2[i])
{
sz[a]=1;
}
elseif(1!=sz[a])//修改在此處,如果已經在上個區間里,去不在下個區間,則
{
sz[a]=0;
}
}
}

//將列從小到大排序
for(k=1;k<n;k++)
{
for(i=0;i<n-k;i++)
{
if(sz1[i]>sz1[i+1])
{
e=sz1[i+1];
sz1[i+1]=sz1[i];
sz1[i]=e;
}
}
}
for(k=1;k<n;k++)
{
for(i=0;i<n-k;i++)
{
if(sz2[i]>sz2[i+1])
{
f=sz2[i+1];
sz2[i+1]=sz2[i];
sz2[i]=f;
}
}
}
//排序END

//統計區間元素個數
for(a=0;a<N;a++)
{
if(sz[a]==1)
{
s++;
}
}
//統計END
p=sz2[n-1]-sz1[0]+1;
if(p==s)
{
printf("%d%d",sz1[0],sz2[n-1]);
}
else
{
printf("no");
}

return0;
}

❸ C語言區間交、並問題

先排序一下,然後在大的范圍中去尋找幷集,只要比較你的N個范圍的大小就行了。

❹ 如何將幾道C語言程序的合並

把這些程序做成子函數(不包含主函數),把各函數的聲明放在一個頭文件里,然後新建主函數分別調用。

❺ 合並區間C++程序怎麼寫

演算法問題吧,先將每個區間按起始數值從小到大排序,然後讀取第一個區間,判斷區間結束位置是否大於下一個區間的起始位置,然後將該區間結束位置更新為兩者結束區間的最大值,然後判斷下一個區間,直到結束。

❻ 怎樣用語言c語言實現集合的合並,交集

通過你描述的問題,正確的交集代碼如下:
void
bing(char
a[],char
b[],int
m,int
n)
{
char
d[400];
int
i=0,j=0,s=m;
for(i=0;i<m;i++)
d[i]=a[i];
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
if(b[i]==a[j])
break;
}
if(j==m)
d[s++]=b[i];
}
cout<<"集合並集是:";
for(i=0;i<s;i++)
cout<<d[i]<<"
";
}

❼ C語言 順序表的合並

1、c語言是沒有引用的,可以使用一個const指針來模擬引用void InitList(SqList *L){L->last=0;}。

❽ 區間合並問題

未考慮前面的區間包含在後面的區間,如輸入

2
23
14

你的程序將輸出2。只要在 if 中多條分支即可,或:

#include<iostream>
usingnamespacestd;

intmain(){
intN;
intA[1000][2];

cin>>N;
for(inti=0;i<N;i++)
cin>>A[i][1]>>A[i][2];

intnum=N;
for(intj=0;j<N;j++)
for(intk=j+1;k<N;k++)
if(A[k][2]>A[j][1]&&A[k][1]<A[j][2]){
num--;
if(A[j][1]<A[k][1])
A[k][1]=A[j][1];
if(A[j][2]>A[k][2])
A[k][2]=A[j][2];
break;
}
cout<<num<<endl;
return0;
}

此外,你設數組下標從1開始,那麼a應設成1001大小。

❾ c語言區間合並題目找錯誤

我覺得排序還是有必要的,按ai排序,排好以後如果ai-b(i-1)>1,那就說明區間不連續.按這個邏輯把你的代碼改了下:

哦,不對,應該是ai和最大的bi的差:

#include<stdio.h>
#include<stdlib.h>
intmain()
{
intn,min,max,i,j,m=10000;
scanf("%d",&n);
structp{
intx,y;
}t;
p*sz=newp[n];//c++不支持變長數組,用了new
for(i=0;i<n;i++){
scanf("%d%d",&sz[i].x,&sz[i].y);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<=n-1;j++){
if(sz[i].x>sz[j].x){
t=sz[j];
sz[j]=sz[i];
sz[i]=t;
}
}
}
//======================
max=sz[0].y;
for(i=1;i<n;++i)
{
if(sz[i-1].y>max)
max=sz[i-1].y;
if(sz[i].x-max>1)
{
printf("no ");
delete[]sz;
return0;
}
}
//=============================
printf("%d%d",sz[0].x,sz[n-1].y);
delete[]sz;
return0;
}