当前位置:首页 » 编程语言 » c语言谓词

c语言谓词

发布时间: 2022-07-28 03:38:20

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.

连系动词和表语在意思上紧密联系,不宜分割;有关动词的种类这方面知识在课本中已有介绍,此处不多说了。谓词:在计算机语言的环境下,谓词是指条件表达式的求值返回真或假的过程。

在韩语中,谓词又称为“用词”,与“体词"相对。指在句中直接接语尾,主要充当谓语,能受副词修饰的一些词类,包括动词、形容词等。

热点内容
cvr网络存储 发布:2025-01-24 17:24:52 浏览:415
腿套压缩袜 发布:2025-01-24 17:05:16 浏览:458
电脑如何将安卓软件卸载干净 发布:2025-01-24 17:03:06 浏览:489
hello密码怎么破解 发布:2025-01-24 17:03:06 浏览:73
pspfifa无缓存 发布:2025-01-24 16:45:13 浏览:165
androidhandler机制 发布:2025-01-24 16:41:10 浏览:936
安卓系统如何下载aov 发布:2025-01-24 16:29:53 浏览:573
iptables允许ip访问 发布:2025-01-24 16:19:58 浏览:932
安卓80如何识别存储卡权限 发布:2025-01-24 16:19:54 浏览:232
存储介质价格 发布:2025-01-24 16:19:18 浏览:151