c語言隊列庫函數
❶ C程序 sort函數
c語言中沒有預置的sort函數。如果在C語言中,遇到有調用sort函數,就是自定義的一個函數,功能一般用於排序。
一、可以編寫自己的sort函數。
如下函數為將整型數組從小到大排序。
voidsort(int*a,intl)//a為數組地址,l為數組長度。
{
inti,j;
intv;
//排序主體
for(i=0;i<l-1;i++)
for(j=i+1;j<l;j++)
{
if(a[i]>a[j])//如前面的比後面的大,則交換。
{
v=a[i];
a[i]=a[j];
a[j]=v;
}
}}對於這樣的自定義sort函數,可以按照定義的規范來調用。
二、C語言有自有的qsort函數。
功 能: 使用快速排序常式進行排序
頭文件:stdlib.h
原型: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
參數:
1 待排序數組首地址
2 數組中待排序元素數量
3 各元素的佔用空間大小
4 指向函數的指針,用於確定排序的順序
這個函數必須要自己寫比較函數,即使要排序的元素是int,float一類的C語言基礎類型。
以下是qsort的一個例子:
#include<stdio.h>
#include<stdlib.h>
intcomp(constvoid*a,constvoid*b)//用來做比較的函數。
{
return*(int*)a-*(int*)b;
}
intmain()
{
inta[10]={2,4,1,5,5,3,7,4,1,5};//亂序的數組。
inti;
qsort(a,n,sizeof(int),comp);//調用qsort排序
for(i=0;i<10;i++)//輸出排序後的數組
{
printf("%d ",array[i]);
}
return0;
}(1)c語言隊列庫函數擴展閱讀:
sort函數的用法(C++排序庫函數的調用)
對數組進行排序,在c++中有庫函數幫我們實現,這們就不需要我們自己來編程進行排序了。
(一)為什麼要用c++標准庫里的排序函數
Sort()函數是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的冒泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間復雜度為n*log2(n),執行效率較高!
(二)c++標准庫里的排序函數的使用方法
I)Sort函數包含在頭文件為#include<algorithm>的c++標准庫中,調用標准庫里的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!
II)Sort函數有三個參數:
(1)第一個是要排序的數組的起始地址。
(2)第二個是結束的地址(最後一位要排序的地址的下一地址)
(3)第三個參數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個參數,此時默認的排序方法是從小到大排序。
Sort函數使用模板:
Sort(start,end,排序方法)
下面就具體使用sort()函數結合對數組里的十個數進行排序做一個說明!
例一:sort函數沒有第三個參數,實現的是從小到大
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
sort(a,a+11);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}
編譯器
GCC,GNU組織開發的開源免費的編譯器
MinGW,Windows操作系統下的GCC
Clang,開源的BSD協議的基於LLVM的編譯器
Visual C++:: cl.exe,Microsoft VC++自帶的編譯器
集成開發環境
CodeBlocks,開源免費的C/C++ IDE
CodeLite,開源、跨平台的C/C++集成開發環境
Orwell Dev-C++,可移植的C/C++IDE
C-Free
Light Table
Visual Studio系列
Hello World
❷ C語言常用的函數有哪些
C語言庫函數,常用庫函數有:
1、scanf格式輸入函數
2、printf格式輸出函數
3、systemdos命令函數
4、sort排序
5、main主函數
6、fgets文件讀取字元串函數
7、fputs文件寫入字元串函數
8、fscanf文件格式讀取函數
9、fprintf文件格式寫入函數
10、fopen打開文件函數
11、getchar輸入字元函數
12、putchar輸出字元函數
13、malloc動態申請內存函數
14、free釋放內存函數
15、abs求絕對值數學函數
16、sqrt求平方根數學函數
(2)c語言隊列庫函數擴展閱讀
語言組成:
1、數據類型
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
2、常量與變數
常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
3、數組
如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
4、指針
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
❸ C語言中的頭文件有多少種都有哪些C函數庫有哪些
iv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;
常見的函數有malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等。具體內容可以在編譯器的包含目錄stdlib.h頭文件中打開查看。
為了方便用戶編寫程序,C語言為用戶開發了大量的庫函數,定義在。H文件,用戶可以調用這些函數來實現強大的功能。因此,對於用戶來說,這些函數的使用是提高編程水平的關鍵。
(3)c語言隊列庫函數擴展閱讀:
以下內容適用於頭文件
1.對於具有外部存儲類型的標識符,可以在任何其他源程序文件中聲明後引用它們,這樣用戶就可以完全將具有外部存儲類型的標識符的一些聲明放在頭文件中。
2.具體來說,頭文件可以包括用戶構造的數據類型(例如枚舉類型)、外部變數、外部函數、常量和具有一定通用性或公共量的內聯函數。一般的變數和函數定義不應該放在頭文件中。
其他:
雙假設(雙x,雙y);//給定一個直角三角形的兩條邊的長度,求斜邊的長度。
雙ldexp(雙x,int指數);//計算x*(2的指數次方)。
雙poly(Doublex,intdegree,Doublecoeffs[])//計算多項式。
Ntmatherr(structexception*e)//數學錯誤計算處理程序。
❹ c語言庫函數queue可以定義string類隊列嗎,如圖是我的代碼,編譯後顯示有錯誤,如何修改
可以定義
不過q還是queue類型
所以 q和"END"比較肯定是不行的
你可以試試
q.top()!="END"
也就是queue的元素
❺ C語言,用數組實現隊列的入隊,出隊函數編程
這樣的話應該符合你的要求:
#include<stdio.h>
voidadd(intqueue[],intx);
intTop(intqueue[]);
voiddel(intqueue[]);
intend=0;
intmain()
{
intn;
scanf("%d",&n);//將要入隊列n個元素
intqueue[1000];
for(inti=1;i<=n;i++)//輸入n個元素
{
add(queue,i);//將i加入隊列
}
//驗證加入隊列的元素,將隊列中的元素按照輸入的順序輸出:
for(i=1;i<=n;i++)
{
printf("%d",Top(queue));//Top函數返回隊頭元素
del(queue);//刪除隊頭元素
}
//驗證輸出已經出隊列後的隊列(數組)元素:
printf(" ");
for(i=1;i<=n;i++)
printf("%d",queue[i]);
printf(" ");
return0;
}
voidadd(intqueue[],intx)
{
queue[++end]=x;
}
intTop(intqueue[])
{
returnqueue[1];//注意,這里的函數始終returnqueue[1];這里是和將普通數組中的元素輸出最大的不同之處。!!!!!!
}
voiddel(intqueue[])
{
for(inti=2;i<=end;i++)
{
queue[i-1]=queue[i];
}
queue[end]=0;//將刪除後的地方置0
end--;
}