c語言謂詞
int fun(int x)
{
if (x<0) return x;
else if (x==0) return x-1;
else return x+1;
}
int func(x)
{
switch(x)
{
case -4 ... -1: return x;
case 0: return x-1;
case 1 ... 9: return x+1;
}
}
這個要用到gcc的擴展。
case -4 ... -1 :相當於 case -4:case:-3:case:-2:case-1:
這個沒多大意思。編譯器會把他們編譯成一樣的。
另外調用者要保證參數的有效性。
小數仍然可以用if else判斷。
if else if else if ...從某種意義上講不算嵌套了。因為他的語法是二義的,所以依賴一種特殊規則來解析。
switch的變數必須是整型。這是規定。不過你完全可以定義幾個函數謂詞然後比如switch( check(x) ), int check(float x)等等。
不過真的沒什麼意思。
⑵ c語言中的merge函數
merge()是C++標准庫的函數,主要實現函數的排序和合並,不僅僅是合並,具體要求參照標准庫。
#include"stdafx.h"
#include<iostream>
#include<algorithm>
#include<array>
#include<list>
usingnamespacestd;
boolcomp(constinti,constintj){
returni>j;
}
intmain(void){
/*自定義謂詞*/
std::array<int,4>ai1={1,3,4,5};
std::list<int>lsti1;
for(constauto&i:ai1)
lsti1.push_front(i);//從大到小
std::array<int,4>ai2={2,6,7,8};
std::list<int>lsti2;
for(constauto&i:ai2)
lsti2.push_front(i);
lsti1.merge(lsti2,comp);
std::cout<<"merge(>):";
for(constauto&i:lsti1)
std::cout<<i<<"";
std::cout<<std::endl;
/*默認謂詞*/
std::array<int,4>ai1d={1,3,4,5};
std::list<int>lsti1d;
for(constauto&i:ai1d)
lsti1d.push_back(i);//從小到大
std::array<int,4>ai2d={2,6,7,8};
std::list<int>lsti2d;
for(constauto&i:ai2d)
lsti2d.push_back(i);
lsti1d.merge(lsti2d);
std::cout<<"merge(<):";
for(constauto&i:lsti1d)
std::cout<<i<<"";
std::cout<<std::endl;
return0;
}
(2)c語言謂詞擴展閱讀
Merge演算法的兩種介面,把兩個有序的數組合並到另一個數組中:
void Merge(int *A, int f, int m, int e){
int temp[e-f+1];
int i,first=f,last=m+1;
for(i=0;i<(e-first+1)&&f<=m&&last<=e;i++){
if(A[f]<=A[last]) {
temp[i]=A[f];
f++;
}
else {
temp[i]=A[last];
last++;
}
}
while(f>m&&last<=e){
temp[i]=A[last];
i++;
last++;
}
while(f<=m&&last>e){
temp[i]=A[f];
i++;
f++;
}
for(i=0;first<=e;i++,first++){
A[first]=temp[i];
}
}
⑶ z語言和C語言誰比較好
C語言比較好點。
C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
Z語言是一種以一階謂詞演算為主要理論基礎的規約語言,是一種功能性語言。Z語言是將事物的狀態和行為用數學符號形式化表達的語言,為編寫計算機程序和驗證計算機程序的正確性提供依據,是軟體工程中編碼之前的規格說明語言。
⑷ 誰能給我關於C語言的資料啊
全國計算機等考二級C語言模擬試題一一、選擇題(1)~(10)每小題2分,(11)~(50)每小題1分,共60分)下列各題A)、B)、c)、D)四個選項中,只有一個選項是正確的,請將正確的選項塗寫在答題卡相應位置上,答在試卷上不得分。(1)在數據結構中,從邏輯上可以把數據結構分為_______。A)動態結構和靜態結構B)緊湊結構和非緊湊結構c)線性結構和非線性結構D)內部結構和外部結構答案:C評析:邏輯結構反映數據元素之間的邏輯關系,線性結構表示數據元素之間一對一的關系,非線性結構表示數據元素之間一對多或多對一的關系。(2)若進棧序列為l,2,3,4,進棧過程中可以出棧,則下列不可能的一個出棧序列是_______。A)1,4,3,2B)2,3,4,lC)3,1,4,2D)3,4, 2,1答案:C評析:棧是一種後進先出表,選項c中,先出棧的是3,說明此時棧內必然有1,2,由於l先於2進棧,所以l不可能在2之前出棧,故選項C這種出棧序列是不可能的。(3)排序方法中,將整個無序序列分割成若干小的子序列並分別進行插入排序的方法,稱為_______。A)希爾排序B)冒泡排序c)插入排序D)選擇排序答案:A評析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進行插入排序。(4)在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關鍵碼值11,所需的關鍵碼比較次數為_______。A)2B)3 C)4D)5答案:C評析:二分法查找是用關鍵碼與線性表的中間元素比較,然後根據比較結果來判斷是結束查找,還是在左邊或者右邊子表按相同的方法繼續查找。本題中,與ll比較的關鍵碼分別為15,8,10,12四個。(5)對於n個結點的單向鏈表(無表頭結點),需要指針單元的個數至少為_______。A)n-1B)nC)n+lD)2n答案:C評析:在n個結點的單向鏈表(無表頭結點)中,每個結點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。(6)在軟體開發過程中,軟體結構 設計 是描述_______。A)數據存儲結構 B)軟體體系結構C)軟體結構測試D)軟體控制過程答案:B評析:從工程管理角度來看,軟體設計分兩步完成:概要設計和詳細設計。概要設計(又稱結構設計)將軟體需求轉化為軟體體系結構、確定系統級介面、全局數據結構或資料庫模式。(7)模塊本身的內聚是模塊獨立性的重要性度量因素之一。在7類內聚中,具有最強內聚的一類是_______。A)順序性內聚 B)過程性內聚c)邏輯性內聚D)功能性內聚答案:D評析:內聚性是一個模塊內部各元素間彼此結合的緊密程度的度量。內聚共有7類,它們之間的內聚性由弱到強排列順序為:偶然內聚、邏輯內聚、時間內聚、過程內聚、 通信 內聚、順序內聚和功能內聚。(8)數據存儲和數據流都是_______,僅僅是所處的狀態不同。A)分析結果B)事件C)動作D)數據答案:D評析:數據流圖有4種成分:源點或終點、處理、數據存儲和數據流。數據存儲是處於靜止狀態的數據,數據流是處於運動中的數據。(9)數據的完整性是指數據的正確性、有效性和_______。A)可維護性B)獨立性C)安全性D)相容性答案:D評析:數據模型的完整性規則是給定的數據模型中數據及其聯系所具有的制約和依存規則,用以限定符合數據模型的資料庫狀態及其狀態的變化,以保證數據的正確性、有效性和相容性。(10)關系代數運算是以_______為基礎的運算。A)關系運算B)謂詞運算c)集合運算 D)代數運算答案:C評析:關系代數運算是以關系代數作為運算對象的一組高級運算的集合。它的基本操作是並、交、差、笛卡爾積,另外還包垂直分割(投影)、水平分割(選擇)、關系的結合(連接)等。(11)能將高級語言程序轉換成目標語言程序的是_______。A)調試程序B)解釋程序C)編譯程序D)編輯程序答案:C評析:用高級語言編寫的程序稱為"源程序",而計算機只能識別和執行由0和l組成的二進制指令,所以高級語言必須先用一種稱為"編譯程序"的軟體,把源程序翻譯成二進制形式的"目標程序"。(12) _______是構成c語言程序的基本單位。A)函數B)過程c)子程序 D)子常式答案:A評析:c程序是由函數構成的。一個c源程序至少包含一個main函數,也可以包含一個main函數和若干個其他函數,因此,函數是c程序的基本單位。(13)可以在C語言中用做用戶標識符的是_______。A)voidB)as_b3C)forD)2cdefine_123 -abcDoWORD Ifcas SIG答案:B評析:c語言規定,標識符只能由字母、數字和下劃線三種符號組成,而且第一個字元必須是字母或下劃線。另外還需要注意的是關鍵字不能作標識符。選項A中void,C中for都為關鍵字,D中2c以字母開頭。(14)若有以下類型說明語句:char w;int x;float y,z;則表達式w*x+z-y的結果為________類型。A)floatB)char C)int D)double答案:A評析:在進行運算時,不同類型的數據參加運算,需要先將其轉換成同一類型的數據,然後再進行運算。轉換的順序由低到高為:char,short→int→unsigned→long→double→float,故結果為float型。(15)main((){float x=123A56;printf("%-5.2f\n",x);}以上程序輸出的結果是________。A)123.4B)123.5C)123.45D)123.46答案:D評析:f格式符,用來輸出實數,以小數形式輸出。"%-m.nf"的含義是:輸出數據共佔m列,其中n位小數,如果輸出位數小於m。則右端補空格。如果總長度大於列數,則按實際情況四捨五入輸出。(16)下面語句的輸出結果是________。Printf("%d\n",strlen("\t\"\065\xff\n"));A)14B)8C)5 D)輸出項不合法,無正常輸出答案:C評析:在c語言中,以"\"開頭的字元均為轉義字元,其中"\"後可跟l~3位八進制數或在"\"後跟字母x及l~2位十六進制數,以此來代表一個特定的字元。(17)下列程序的輸出結果是________。main(){int a=0,b=0,c=0;if(++a>0lI++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}A)a=0,b=0,c=0 B)a=l,b=l,c=1C)a=l,b=O, c=I D)a=0, b=1.c=1答案:C評析:"︱︱"是或運算,它有個"短路"的特點需特別注意,當"︱︱"運算符左邊的表達式的值為真時,則程序就不再對"︱︱"右邊的表達式的值進行運算,而是使得整個表達式的值直接為真。(18)下列程序的輸出結果是_________。Main(){int i;for(i=1;i+l;i++){if(i>4){printlf("%d",i++);break;}}printf("%d",i++);}A)55B)56c)程序錯誤,沒有輸出D)循環條件永遠為真,死循環答案:B評析:本程序中有個for循環,但注意到for循環的條件是"i+l",也就是只要i+l的值為真(非零值均為真),就執行循環。當i=l的時,i+l的值為真,判斷if條件不成立,執行i++,輸出i的值為5。(19)下列程序的輸出結果是_________。#define A 100main(){int i=O,sum=O;do{if(I==(i/2)*2)continue;sum+=i;}while(++iprintf("%d\n",sum);}A)2500B)2050C)4D)O答案:A評析:本題程序的功能是求1到_99之問(包括1和99)所有奇數之和。程序中的while循環的終止條件為++i=100,在while循環體內,如果i是偶數,則執行continue,跳過這一次循環,執行下一次循環,否則求和。最後輸出的值是1到99之間(包括l和99)所有奇數之和(1+99)*50/2=2500。(20)下列程序的輸出結果是_________。main(){int I=3;switch(i){ case 1:case 2:printf("%d",i);case 3:case 4:break;default:printf("OK");}}A)0B)3C)OKD)沒有任何輸出答案:D評析:在題中,i的值為3,由於"case 3:"後面沒有break語句,所以繼續向下執行"case 4:"後面的語句,由於"case 4:"後面的語句為break強行退出switch語句,所以,本題沒有任何輸出。(21)下列程序執行後的輸出結果是________。main(){int m[][3]={1,4,7,2,5,8,3,6,9};int i,k=2:for(I=0;i<3;i++){printf("%d",m[k][i]);}}A)456B)258C)369D)789答案:C評析:根據二維數組的定義得出:m[O][O]=1,m[O][1]=4,m[O][2]=7,m[1][0]=2,rail][1]=5,m[1][2]=8,m[2][0]=3,m[2][l]=6,m[2][2]=9,所以本題的輸出是第3行的值m[2][0],m[2][1],m[2][2],即369。(22)設已定義洱口k為int類型變數,則以下for循環語句_________。for(i=0;k=-1,k=1;i++,k++)printf("****\n");A)判斷循環結束的條件不合法B)是無限循環C)循環一次也不執行D)循環只執行一次答案:B評析:本題定義了一個for循環,循環變數是i,但由於本題並沒有設置循環條件,所以循環的條件永遠默認為真,即無限次執行循環。(23)下面程序的輸出結果是___________。unsigned fun(unsigned num){ unsigned k=1;do{k*=num%lO;num/=lO;}while(num);return(k);}main(){unsigned n。26;printf("%d\n",fun(n));}A)0B)4c)12D)無限次循環答案:C評析:本題定義了一個fun函數,用於num求和,具體執行過程如下:num=26:k=k*(num%10)=1*(26%10),所以k=6,num=num/10=2;num=2:k=k*(num%10)=6*(2%10),所以k=12,num=num/lO=O;num=O:while條件不成立,所以返回k的值12.(24)已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序_______。main(){char a='A';int b=20;printf("%d,%o",(a=a+a,a+b,b),a+'a'-'A',b);}A)表達式非法,輸出零或不確定值B)因輸出項過多,無輸出或輸出不確定值C)輸出結果為20,141D)輸出結果為20,141,20答案:C評析:本題中首先輸出逗號表達式"a=a+a,a+b,b"的值,即20。然後以八進制的形式輸出a+'a'-'A'的值為97對應的八進制數141,由於最後一個表達式b沒有對應輸出格式的輸出項表列就不會輸出。(25)C語言函數返回值的類型是由__________決定的。A)return語句中的表達式類型B)調用函數的主調函數類型c)調用函數時臨時 D)定義函數時所指定的函數類型答案:D評析:函數值的類型應當是在定義函數時指定的。在定義函數時對函數值說明的類型一般應該和return語句中的表達式類型一致,如果不_致,則以函數類型為准,即函數類型決定返回值的類型。本篇文章來源於《點睛考試網》[www.kswchina.com] ;原文鏈接地址: http://it.kswchina.com/ncre/ej/xy/mn/525799.html
⑸ 關於C語言連接sql資料庫…
1、配置ODBC數據源。
2、使用SQL函數進行連接。
對於1、配置數據源,配置完以後就可以編程操作資料庫了。
對於2、使用SQL函數進行連接,參考代碼如下:
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void main()
{
HENV henv; //環境句柄
HDBC hdbc; //數據源句柄
HSTMT hstmt; //執行語句句柄
unsigned char datasource[]="數據源名稱"; //即<a href="https://www..com/s?wd=ODBC&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">ODBC</a>源中設置的源名稱
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_<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>_HANDLE, &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身份驗證,第二、三參數可以是<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>,也可以是任何字串
//SQL_NTS 即 "<a href="https://www..com/s?wd=Null&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">Null</a>-Terminated String"
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);
}
代碼看上去很復雜,其實都可以直接復制。其中需要改的是數據源名稱、資料庫用戶名、資料庫密碼和SQL語句。
然後就是SQLFetch後得到結果集後,如何使用的問題了。
在下面的注釋部分 填寫你的處理代碼即可。
/*
*對遍歷結果的相關操作,如顯示等
*/
⑹ C語言高手進,C語言程序切片
google了一下,找到一些概念:
定義:一個程序切片是由程序中的一些語句和判定表達式組成的集合.這些語句和判定表達式可能會影響在程序的某個位置(常用行號標識)p上所定義的或所使用的變數v的值。
所謂程序切片是指通過分析程序的數據依賴和控制依賴而達到自動分解源程序的一種方法.其中數據依賴揭示了語句間存在的數據流方面的內在聯系而控制依賴則揭示了語句間存在的控制流的內在聯系。
程序P的切片S是P的一個可執行部分,對某個興趣點s處的變數v而言,這個可執行部分相對於程序P,在功能上是等效的[1].程序切片S由程序P中可能影響s處變數v的值的所有語句組成。
程序切片是一種分析和理解程序的技術,是通過對源程序中每個興趣點分別計算切片來達到對程序的分析和理解.程序中某個興趣點的程序切片不僅與在該點定義和使用的變數有關,而且與影響該變數的值的語句和謂詞以及受該變數的值影響的語句和謂詞有關.
⑺ c語言怎麼實現求謂詞公式的前束範式
⑻ 菜鳥問C語言題啦~\(≥▽≤)/~
你這個搞的好復雜看看這個吧
#include <stdio.h>
#include<string.h>
void main()
{
char str[100];
int len,i;
printf("please input a string:");
gets(str);
len=strlen(str);
for(i=0;i<=len/2;i++)
{
if(str[i]!=str[len-1-i])
{
printf("%s 不是迴文\n",str);
break;
}
}
if(i>len/2)
printf("%s 是迴文\n",str);
}
⑼ 現代漢語的謂詞包括
謂詞,用來代替或者展示其客體性質、特徵或者客體之間關系的詞項。根據《現代漢語》的定義,漢語的詞或者辭包括名詞,數詞,量詞;漢語的謂詞可以包括一切的例句。例如:
"貓是動物"一句中的"是"就是一個謂詞,而"貓"是客體。
"3 大於 2"中"大於"是一個謂詞。
謂詞常項
表示某個確定判定的謂詞稱為謂詞常項。如上述兩個謂詞"是"、"大於"。
謂詞變項
尚未確定的謂詞稱為謂詞變項。例如用 P(3,2)記一個謂詞變項,可以表示 "3 大於 2"、"3 小於 2"等等。
n 元謂詞
在一個命題中,若有 n 個客體名稱與謂詞相聯系,則稱該謂詞為 n 元謂詞。
如上述"是動物"為一元謂詞,因為只有"貓"這一個客體與之相聯系。
而命題「3 大於 2」中的謂詞「大於」與兩個客體聯結,是一個二元謂詞。謂語是對主語的陳述或說明,指出「做什麼」、「是什麼」或「怎麼樣.
謂語由動詞構成,依據其在句中繁簡程度可把謂語分為簡單謂語和復合謂語兩類。不論何種時態,語態,語氣,凡由一個動詞(或動詞片語)構成的謂語都是簡單謂語。例如:
I like walking.(一般現在時主動語態)
I made your birthday cake last night. (一般過去時主動語態)
It is used by travellers and business people all over the world. (一般現在時被動語態)
復合謂語也可分為兩種情況:
第一種是由情態動詞,助動詞+不帶to的動詞不定式構成的復合謂語:
What does this word mean?
I won』t do it again.
I』ll go and move away the bag of rice with Lin Tao.
You』d better catch a bus.
第二種是由連系動詞+表語構成的復合謂語。例如:
You look the same.
We are all here.
The weather gets warmer, and the days get longer.
Keep quite and listen to me.
He looked worried.
We have to be up early in the moming.
Is Bill in?
School Is over. Let』s go home.
My pen is in my bag.
I feel terrible.
I* fell tried all the time.
He seemed rather tired last night.
連系動詞和表語在意思上緊密聯系,不宜分割;有關動詞的種類這方面知識在課本中已有介紹,此處不多說了。謂詞:在計算機語言的環境下,謂詞是指條件表達式的求值返回真或假的過程。
在韓語中,謂詞又稱為「用詞」,與「體詞"相對。指在句中直接接語尾,主要充當謂語,能受副詞修飾的一些詞類,包括動詞、形容詞等。