重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
以經給予解答,程序如下。歡迎加QQ群:218691837
公司主營業務:成都網站設計、成都網站建設、外貿網站建設、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯推出牟定免費做網站回饋大家。
#include stdio.h
#include stdlib.h
struct nn
{ int no;
int num;
};
typedef struct nn DATA;
int number( char * , DATA []);
int main( )
{
DATA b[100];
char sa[500];
int i, n;
gets( sa );
n = number( sa, b );
for ( i=0; in; i++ )
printf("%d %d\n", b[i].num, b[i].no );
system("pause");
}
//
#includestring.h
int number( char * str, DATA a[] )
{ int i,j,n,min=0,tag=0;
char *p;
int *t,temp;
p = strtok( str , " ");
for ( i = 0 ; p != NULL ; i++)
{ a[i].num = atoi(p);
p = strtok( NULL , " ");}
n = i;
t=(int *)malloc(n*4);
for(i=0;in;i++)
{*(t+i)=a[i].num;}
for(i=0;in-1;i++)
for(j=i+1;jn;j++)
{
if(*(t+i)*(t+j))
{
temp=*(t+i);
*(t+i)=*(t+j);
*(t+j)=temp;
}
}
//t_temp=(int *)malloc(n*4);
for(i=0;in;i++)
{
for(j=0;jn;j++)
{if(a[i].num==*(t+j))
{
a[i].no=j+1;
//continue;
}
}
}
for(i=0;in-1;i++)
{tag=0;
for(j=i+1;jn;j++)
{
if(a[i].no==a[j].no)
{
tag++;
// a[i].no = (a[i].no)-1;
//printf("tag=%d,no=%d",tag,a[i].no);
}
}
a[i].no=a[i].no-tag;
}
return n;
}
顧名思義,數據庫就是用來儲存數據的倉庫,比如你在百度知道上看到的這些海量的問題和解答,它們在網絡上肯定要有個存放的地方啊,這個地方就是數據庫。
而函數庫的標準說法則是“動態鏈接庫”(Dynamic Link Library),它們一般是以DLL文件的形式出現的,用來存放程序中需要重復調用或者需要與其他程序共享的一些公共函數,C語言等編程語言所調用的函數就是從這里來的。數據庫與函數庫是兩碼事。
數據庫與C語言(或其他任何程序設計語言)之間是相互獨立的,本身并沒有直接關系,當程序需要調用數據庫中的數據時,它們就有關系了。比方說,你跟街上的超市之間本來是沒有啥關系的,但當你需要到超市買東西時,你們之間就發生關系了,明白沒有?
1、配置ODBC數據源。
2、使用SQL函數進行連接。
對于1、配置數據源,配置完以后就可以編程操作數據庫了。
對于2、使用SQL函數進行連接,參考代碼如下:
#includewindows.h
#includesql.h
#includesqlext.h
void?main()
{
HENV?henv;?//環境句柄
HDBC?hdbc;?//數據源句柄
HSTMT?hstmt;?//執行語句句柄
unsigned?char?datasource[]="數據源名稱";?//即源中設置的源名稱
unsigned?char?user[]=?"用戶名";?//數據庫的帳戶名
unsigned?char?pwd[]=?"密碼";?//數據庫的密碼
unsigned?char?search[]="select?xm?from?stu?where?xh=0";
SQLRETURN?retcode;?//記錄各SQL函數的返回情況
//?分配環境句柄
retcode=?SQLAllocEnv(henv);?//?等介于?SQLAllocHandle(SQL_HANDLE_ENV,?SQL_NULL
,?henv);
//?設置ODBC環境版本號為3.0
retcode=?SQLSetEnvAttr(henv,?SQL_ATTR_ODBC_VERSION,?(void*)SQL_OV_ODBC3,?0);
//?分配連接句柄
retcode=?SQLAllocConnect(henv,hdbc);?//?等介于?SQLAllocHandle(SQL_HANDLE_DBC,?henv,?hdbc);
//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)
//?SQLSetConnectAttr(hdbc,?SQL_LOGIN_TIMEOUT,?(SQLPOINTER)(rgbValue),?0);
//直接連接數據源
//?如果是windows身份驗證,第二、三參數可以是
,也可以是任何字串
//SQL_NTS?即?"
retcode=?SQLConnect(hdbc,datasource,?SQL_NTS,?user,?SQL_NTS?,?pwd,?SQL_NTS?);
//分配語句句柄
retcode=?SQLAllocStmt(hdbc,hstmt);?//?等介于?SQLAllocHandle(SQL_HANDLE_STMT,?hdbc,?hstmt);
//直接執行查詢語句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//將數據緩沖區綁定數據庫中的相應字段(i是查詢結果集列號,queryData是綁定緩沖區,BUFF_LENGTH是緩沖區長度)
SQLBindCol(hstmt,?i,?SQL_C_CHAR,?queryData[i-1],?BUFF_LENGTH,?0);
//遍歷結果集到相應緩沖區?queryData
SQLFetch(hstmt);
/*
*對遍歷結果的相關操作,如顯示等
*/
//注意釋放順序,否則會造成未知錯誤!
SQLFreeHandle(SQL_HANDLE_STMT,?hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,?hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,?henv);
}
C語言的庫函數在LIB目錄里面。
庫函數是將函數封裝入庫,供用戶使用的一種方式。方法是把一些常用到的函數編完放到一個文件里,供不同的人進行調用。調用的時候把它所在的文件名用#include加到里面就可以了。一般是放到lib文件里的。
擴展資料:
C語言的語句十分簡單,如果要使用C語言的語句直接計算sin或cos函數,就需要編寫頗為復雜的程序。因為C語言的語句中沒有提供直接計算sin或cos函數的語句。又如為了顯示一段文字,我們在C語言中也找不到顯示語句,只能使用庫函數printf。
C語言的庫函數并不是C語言本身的一部分,它是由編譯程序根據一般用戶的需要編制并提供用戶使用的一組程序。C的庫函數極大地方便了用戶,同時也補充了C語言本身的不足。事實上,在編寫C語言程序時,應當盡可能多地使用庫函數,這樣既可以提高程序的運行效率,又可以提高編程的質量。
數據庫是用來存入數據的倉庫。用戶可以對文件中的數據進行新增、查詢、更新、刪除等操作。但是C語言和數據庫是兩個東西,他們之間的關系就是C語言可以用來開發數據庫管理軟件,也可以通過C語言借助于SQL語句來操作數據庫。
C語言普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有匯編語言的優點,因此相對于其它編程語言,它具有自己獨特的特點。具體體現在以下三個方面:
其一,廣泛性。C 語言的運算范圍的大小直接決定了其優劣性。C 語言中包含了34種運算符,因此運算范圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。此外,C 語言包含了字符型、指針型等多種數據結構形式,因此,更為龐大的數據結構運算它也可以應付。
其二,簡潔性。9 類控制語句和32個KEYWORDS是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同 時還能夠支持高級編程,避免了語言切換的繁瑣。
擴展資料
數據庫架構
1、內層:最接近實際存儲體,亦即有關數據的實際存儲方式。
2、外層:最接近用戶,即有關個別用戶觀看數據的方式。
3、概念層:介于兩者之間的間接層。
參考資料來源:百度百科--數據庫