當前位置:首頁 » 編程語言 » c語言可以編寫多個程序的集合嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言可以編寫多個程序的集合嗎

發布時間: 2022-07-17 02:35:31

『壹』 用c語言或者C++編寫一個程序,能處理集合中交,並,補運算或者判別。。

首先,申請若干數組。每一個數組表示一個集合。
然後分別定義集合的+-*/之間的運算規律即可。

『貳』 c語言中一個工程下是不是不可以有幾個c程序 寫了一個程序後,在原窗口在想寫個程序整么辦

可以有多個C程序,但是Source Files下的所有文件總共只能有一個main
解決方法就是:
選中多餘文件(只留下一個)——按鍵盤上的Delete鍵刪除(源程序還在,只是不在Source Files下了)——菜單欄「組件」——「清除」
這樣所有的程序都可以帶main互不幹擾
如果想要測試以前的程序:
右鍵單擊Source Files——「添加文件到目錄」,就可以添加了

『叄』 C語言編程 集合子集問題

#include<iostream>
#include<string>
#include<fstream>
#include<conio.h>
usingnamespacestd;
//定義集合的最大數量,可以自己修改
#defineMAX_COUNT100
//集合使用數組來保存
intSetA[MAX_COUNT];
intSetB[MAX_COUNT];
intCountA=0;//集合A的長度
intCountB=0;//集合B的長度
///函數Contains,判定集合是否包含一個數
///@paramset,集合
///@paramcount,集合Set中的元素個數
///@paramvalue,是否包含的值
///@returnset包含value,返回true,否則返回false
boolContains(intset[],intcount,intvalue)
{
for(inti=0;i<count;i++)
if(value==set[i])
returntrue;
returnfalse;
}
//輸入一個集合
voidInputSet(intset[],int&count)
{
strings;
//讀取這一行
getline(cin,s);
inti=0;
while(i<s.length())
{
intspacePos=0;
spacePos=s.find('',i);//查找空格下一個空格的位置
if(spacePos<0||spacePos>=s.length()-1)//如果沒有空格或者空格超出了字元串范圍,跳出循環
break;
stringtemp=s.substr(i,spacePos-i);
if(temp=="")//如果字元串為空,執行下一條
continue;
intvalue=stoi(temp);
if(!Contains(set,count,value))//如果集合中已經包含此數字了,就不再添加
set[count++]=value;
i=spacePos+1;
}
//讀取最後一個數
stringtemp=s.substr(i,s.length()-i);
intvalue=stoi(temp);
if(!Contains(set,count,value))
set[count++]=value;
}
//判斷是為setB是否為setA的子集
boolIsSubSet(intsetA[],intcountA,intsetB[],intcountB)
{
for(inti=0;i<countB;i++)
if(!Contains(setA,countA,setB[i]))
returnfalse;
returntrue;
}
voidmain()
{
cout<<"注意:只能輸入整數,並且數字之間以空格隔開。"<<endl<<endl;
cout<<"請輸入集合A:"<<endl;
InputSet(SetA,CountA);
cout<<"請輸入集合B:"<<endl;
InputSet(SetB,CountB);
cout<<endl;
cout<<"集合A和集合B比較結果"<<endl;
if(IsSubSet(SetA,CountA,SetB,CountB))
cout<<"集合B是集合A的子集"<<endl;
else
cout<<"集合B不是集合A的子集"<<endl;
cout<<endl;
cout<<"按任意鍵退出"<<endl;
getch();
}

『肆』 用C語言編寫集合子集的程序怎麼寫

首先,你的題目和舉例不相符啊。題目是{ 1 ~ n },而舉例是{ 0 ~ n-1};我以題目為准吧。
如果n=5;其中後面的一部分子集按順序排是這樣的:
{5}
{1 5}
{2 5}
{3 5}
{4 5}
{1 4 5}
{2 4 5}
{3 4 5}
{1 3 4 5}

{2 3 4 5}
{1 2 3 4 5}
我們可以把一個子集看成兩個部分,一部分是前面的追趕者,另一部分是後面的累積者。
{1 5},{2 5},{3 5},{4 5}就像這些子集,追趕者從1一直追趕到了4,然後與累積者{5}相遇,累積者變成{4 5};追趕者從頭繼續從1一直追趕到了3,然後與累積者{4 5}相遇,累積者變成{3 4 5};如此反復,可以把這個全部輸出來。
而累積者始終是連續的,比如{4 5}、{3 4 5}、{2 3 4 5},所以我們只用定義累積者的頭和尾,就可以把累積者的范圍定義。
代碼如下,僅供參考:
#include <stdio.h>

void main( void )
{
int n,i,runner,start,end;
printf("請輸入正整數n的值:");
scanf("%d",&n);
printf("{}\n"); //空集必定是有的
for(end=1;end<=n;end++) //累積者的尾加一,直到n
{
printf("{%d}\n",end);
for(start=end;start>0;start--) //累積者的頭減一,直到1
{
for(runner=1;runner<start;runner++) //追趕者加一,直到遇到累積者的頭
{
printf("{");
printf("%d ",runner); //輸出追趕者
for(i=start;i<end;i++)
printf("%d ",i); //輸出累積者(不包括頭,因為累積者的尾後面不跟空格,而是跟})
printf("%d}\n",end); //輸出累積者的尾
}
}
}
}

『伍』 用c語言編寫一段程序,求兩個集合的交

/*鏈表實現集合運算*/
#include<iostream.h>

typedef int ElemType;
struct SNode {
ElemType data;
SNode* next;
};

void InitSet(SNode*& HT)
{
HT=NULL;
}

void ClearSet(SNode*& HT)
{
SNode *p=HT, *q;
while(p!=NULL)
{
q=p->next;
delete p;
p=q;
}
HT=NULL;
}

int LenthSet(SNode* HT)
{
int n=0;
while(HT!=NULL)
{
n++;
HT=HT->next;
}
return n;
}

bool EmptySet(SNode* HT)
{
return HT==NULL;
}

bool Inset(SNode* HT, ElemType item)
{
while(HT!=NULL)
{
if(HT->data==item) return true;
else HT=HT->next;
}
return false;
}

void OutputSet(SNode* HT)
{
while(HT!=NULL)
{
cout<<HT->data<<' ';
HT=HT->next;
}
cout<<endl;
}

bool FindSet(SNode* HT, ElemType& item)
{
while(HT!=NULL)
{
if(HT->data==item) break;
else HT=HT->next;
}
if(HT!=NULL)
{
item=HT->data;
return true;
}
else return false;
}

bool ModifySet(SNode* HT, ElemType item, ElemType temp)
{
while(HT!=NULL)
{
if(HT->data==item) break;
else HT=HT->next;
}
if(HT!=NULL)
{
HT->data=temp;
return true;
}
else return false;
}

bool InsertSet(SNode*& HT, ElemType item)
{
//建立值為item的新結點
SNode* newptr= new SNode;
newptr->data=item;
//從單鏈表中順序查找是否存在值為item的結點
SNode* p=HT;
while(p!=NULL)
{
if(p->data==item) break;
else p=p->next;
}
// 若不存在則把新結點插入到表頭並返回真,否則不返回假
if(p==NULL)
{
newptr->next=HT;
HT=newptr;
return true;
}
else return false;
}

bool DeleteSet(SNode*& HT, ElemType& item)
{
//從單鏈表中順序查找是否存在值為item的結點
SNode *cp=HT, *ap=NULL;
while(cp!=NULL)
{
if(cp->data==item) break;
else
{
ap=cp;
cp=cp->next;
}
}
//若不存在則不返回假,表明刪除失敗
if(cp==NULL)
return false;
//由item帶回待刪除結點cp的完整值,若不需要帶回可設置item為值參
item=cp->data;
if(ap==NULL) HT=cp->next;
//從單鏈表中刪除已經找到的cp結點並對ap是否為表頭做不同處理
else ap->next = cp->next;
//刪除cp結點後返回真
delete cp;
return true;
}

//求兩集合的並集
void UnionSet(SNode* HT1, SNode* HT2, SNode*& HT)
{
HT=NULL;
//把HT1集合單鏈表元素復制到HT集合單鏈表中
SNode* p=HT1;
while(p!=NULL)
{
//建立新結點並賦值為p->data
SNode* newptr=new SNode;
newptr->data=p->data;
//把新結點插入到HT集合單鏈表的表頭並讓P指向下一個結點
newptr->next=HT;
HT=newptr;
p=p->next;
}
//把HT1集合單鏈表的每個元素插入到HT集合單鏈表中
p=HT2;
while(p!=NULL)
{
InsertSet(HT, p->data);
p=p->next;
}
}

//求集合的交集
void InterseSet(SNode* HT1, SNode* HT2, SNode*& HT)
{
HT=NULL;
ElemType x;
SNode* p=HT2;
while(p!=NULL)
{
x=p->data;
bool b=FindSet(HT1,x); //用x查找HT1集合
if(b) InsertSet(HT,x); //若查找成功則把x插入到HT集合中
p=p->next;
}
if(HT==NULL)
cout<<"空集"<<endl;
}

//求集合的差集
void DifferenceSet(SNode* HT1, SNode* HT2, SNode*& HT)
{
HT=NULL;
ElemType x;
SNode* p=HT1;
while(p!=NULL)
{
x=p->data;
bool b=FindSet(HT2,x); //用x查找HT2集合
if(b) InsertSet(HT,x); //若查找失敗則把x插入到HT集合中
p=p->next;
}
if(HT==NULL)
cout<<"空集"<<endl;
}

int main()
{
SNode *a,*b,*c,*d;
InitSet(a);
InitSet(b);
InitSet(c);
InitSet(d);
ElemType r[8] = {12,32,13,1,2,4,7,8};
ElemType r1[8] = {25,98,26,15,46,38,5,1};
ElemType r2[8] = {5,98,25,8,34,1,15,46};
int i;
for(i=0;i<8;i++)
InsertSet(a,r[i]);
for(i=0;i<8;i++)
InsertSet(b,r1[i]);
for(i=0;i<8;i++)
InsertSet(c,r2[i]);
ElemType x=1,y=25;
DeleteSet(a,x);
DeleteSet(a,y);
cout<<"輸出a集合的元素:"<<endl;
OutputSet(a);
cout<<"---------------------------------------------------------"<<endl;
if(ModifySet(a,13,30))
cout<<"把 a 集合的 13 更新為 30 更新成功 !"<<endl;
else
cout<<"集合 a 更新不成功 !"<<endl;
if(EmptySet(a))
cout<<"集合 a 為空 !"<<endl;
else
cout<<"集合 a 不為空 !"<<endl;
cout<<"集合a的長度:"<<LenthSet(a)<<endl;
cout<<"---------------------------------------------------------"<<endl;

cout<<"輸出b集合的元素:"<<endl;
OutputSet(b);
cout<<endl;

cout<<"輸出c集合的元素:"<<endl;
OutputSet(c);
cout<<endl;

cout<<"b、c兩個集合的並集是:"<<endl;
UnionSet(b,c,d);
OutputSet(d);
cout<<endl;

cout<<"b、c兩個集合的交集是:"<<endl;
InterseSet(b,c,d);
OutputSet(d);
cout<<endl;

cout<<"b、c兩個集合的差集(c-b)是:"<<endl;
DifferenceSet(b,c,d);
OutputSet(d);

ClearSet(a);
ClearSet(b);
ClearSet(c);
ClearSet(d);

return 0;
}

『陸』 C語言程序設計問題,關於把幾個小程序集合在一個菜單程序里

如果是調用外部進程需要你把那些程序執行文件拷入本程序執行目錄下,然後按照以下編寫代碼執行。
把以下代碼中Application1與Application1.exe名稱改成你需要調用的程序執行文件名
#include
<conio.h>
#include
<stdio.h>
#include
<process.h>
void
main()
{
while(true)
{
printf("\nPlease
select
a
application
to
execute:");
printf("\n1.Application1");
printf("\nInput:\n");
char
ch
=
getch();
if(ch
==
'q')
break;
else
if(ch
==
'1')
system("Application1.exe");
}
}

『柒』 怎樣在C語言中編寫多個程序並發執行的程序

多線程就可以

『捌』 c語言編程,集合

動態規劃.

#include<stdio.h>
/*#include<stdlib.h>*/
#include<memory.h>

#defineN5050

intmain(intargc,char*argv)
{
intd[N];
intn,s;
while(scanf("%d",&n)!=EOF){
s=n*(n+1)>>1;
if(s&1){
printf("0 ");
}
else{
s=s>>1;
inti,j;
memset(d,0,N*sizeof(d[0]));
d[0]=1;
for(i=1;i<=n;i++){
for(j=s;j>=i;j--){
d[j]=d[j]+d[j-i];
}
}
printf("%d ",d[s]>>1);
}
}
return0;
}

『玖』 C語言中,如何用多個文件編寫程序

1.
將一個函數寫在一個文件里,然後再在另一個文件里用「include」包含這個文件。
2.
舉例:
在文件c1.c里編一個函數:
void
printWord(){

printf("Hello!world!");
}
再建立一個文件c2.c,文件開頭寫上#include"c1.c",就可以調用c1.c里的函數printword()了
這樣通過include操作,可以把任意多個文件連接起來,編譯成一個程序運行。

『拾』 用C語言編寫一個程序,從小到大輸出一個集合

給你描述一下方法,具體怎麼寫,還需要自己去寫一下。否則是學不會編程的。
把他們寫進一個數組,用if語句判斷大於a且小於z,再進行排序,再次刪除相同元素,最後輸出,輸出注意格式。我也是一個從什麼都不會,慢慢摸索出來的。可能有很簡單的方法,但是我還是不會,希望這些能幫到你。