文档视界 最新最全的文档下载
当前位置:文档视界 › 第3章语句和预处理

第3章语句和预处理

第3章语句和预处理
第3章语句和预处理

第3章语句和预处理

练习题3

3.1 判断题

√1.表达式和表达式语句是不同的。

×2.空语句是一种没有用处的语句。

×3.复合语句就是分程序。

×4.条件语句中if子句和else子句都是必须有并且仅有一个。

√5.条件语句中else if子句可以没有,也可以有多个。

√6.开关语句可实现多路分支。

×7.开关语句的<语句序列>中必须有一个break语句,否则该开关语句便无法退出。×8.任何循环语句都是至少执行一次循环体。

×9.退出for循环语句必须是for后面括号内的中间一个表达式的值为0。

√10.do-while循环语句至少要执行一次循环体。

×11.循环语句的循环体中可以出现if语句,if语句的if体内不能出现循环语句。

×12.goto语句中所使用的语句标号是一种标识符,它的作用域是文件级的。

√13.break语句和continue语句都可以出现在循环体中,但是它们的作用是不同的。×14.文件包含命令所能包含的文件类型是不受限制的。

3.2 单选题

1.下列关于语句的描述中,错误的是( A )。

A.C++程序中的函数是由若干条语句组成的

B.每条语句都要实现某种操作

C.条件语句是用来实现分支操作的

D.循环语句是用来在一定条件下重复执行某段程序的

2.下列关于条件语句的描述中,错误的是( C )。

A.if语句中最多只能有一个else子句

B.if语句的if体内可以出现开关语句

C.if语句中else if子句和else子句的顺序是没有限制的

D.if语句中else子句是与它最近的if子句配对的

3.下列关于开关语句的描述中,错误的是( B )。

A.开关语句中,case子句的个数是不受限制的

B.开关语句中,case子句的语句序列中一定要有break语句

C.开关语句中,default子句可以省略

D.开关语句中,右花括号具有退出开关语句的功能

4.下列关于循环语句的描述中,错误的是( A )。

A.while循环语句中<条件>给定的表达式不能为非0的常量,否则便是死循环

B.for循环语句的循环体内可以出现while循环语句、do-while循环语句和for循环语句C.循环语句的循环体可以是空语句

D.循环语句的循环体内可以出现break语句,也可以出现continue语句

5.已知:int i(3);下列do-while循环语句的循环次数是( D )。

do{

cout<

i--;

}while(i!=0);

A.0 B.3

C.1 D.无限

6.下列for循环语句的循环次数是( B )。

for(int i(0), j(5); i=3; i++, j--);

A.3 B.无限

C.5 D.0

7.下列while循环语句的循环次数是( A )。

while(int i(0)) i--;

A.0 B.1

C.2 D.无限

8.下列程序段执行后,j值是( B )。

for(int i(0), j(0); i<10; i++)

if(i) j++;

A.0 B.9

C.10 D.无限

9.已知:typedef char CH;下列描述中,正确的是( A )。

A.使用CH定义的变量是char型变量

B.使用CH定义的是一个字符常量

C.使用CH定义的变量其类型不确定

D.使用CH定义的是一个字符串

10.下列关于预处理命令的描述中,错误的是( D )。

A.预处理命令最左边的标识符是#

B.预处理命令是在编译前处理的

C.宏定义命令可以定义符号常量

D.文件包含命令只能包含.h文件

3.3 填空题

1.表达式语句是一个表达式后边加上分号(;) 组成的。空语句是只有一个分号的语句。

2.复合语句是由两条条或两条条以上的语句加上花括号({}) 组成的。

3.分程序是一种带有说明语句的复合语句。

4.循环语句的共同特点是都应具有循环体和退出循环的条件。

5.下列程序是求100之内的能被7整除的自然数之和。

#inelude

void main( )

{

int sum;

_sum=0_;

for(int i(1);__i<=100_; i++)

if(_i%7==0__)

sum+=i;

cout<

}

3.4 上机调试下列程序,并分析其输出结果1.

#include

void main()

{

int a(8),b(5);

if(!a)

b--;

else if(b)

if(a)

a++;

else

a--;

else

b++;

cout<

}

答:9,5

2.

#include

void main()

{

int a(10);

while(--a)

{

if(a==5) break;

if(a%2==0&&a%3==0) continue;

cout<

}

}

答:9

8

7

3.

#include

void main()

{

int b(10);

do {

++b;

cout<<++b<

if(b==15) break;

}while(b<15);

cout<<"ok! "<

答:12

14

16

ok!

4.

#include

void main()

{

int w(5);

do {

switch(w%2)

{

case 1: w--; break;

case 0: w++; break;

}

w--;

cout<

}while(w>0);

}

答: 3

1

-1

5.

#include

void main()

{

int a(4),b(5),i(0),j(0);

switch(a)

{

case 4: switch(b)

{

case 4: i++; break;

case 5: j++; break;

default: i++;j++;

}

case 5: i++; j++;

break;

default: i++;j++;

}

cout<

}

答:1,2

#include

void main()

{

int b(10);

for(int i=9;i>=0;i--)

{

switch(i)

{

case 1: case 4: case 7: b++;break;

case 2: case 5: case 8: break;

case 3: case 6: case 9: b+=2;

}

}

cout<

}

答:19

7.

#include

void main()

{

int a(6);

for(int i(1);i<=a;i++)

{

for(int j=1;j<=a-i;j++)

cout<<' ';

for(j=1;j<=2*i-1;j++)

cout<<'A';

cout<

}

}

答: A

AAA

AAAAA

AAAAAAA

AAAAAAAAA

AAAAAAAAAAA

8.

#include

#define MAX(x,y) (x)>(y)?(x):(y)

void main()

{

typedef int IN;

IN a(3),b(4),c;

c=MAX(a,b)*2;

cout<

}

答:8

3.5 编程题

1.求100之内的自然数中奇数之和。

答:编程如下:

#include

void main()

{

int s=0;

for(int i=1;i<100;i+=2)

s+=i;

cout<

}

2.求两个整数的最大公约数和最小公倍数。

答:编程如下:

假定两个整数分别为15和25,求它们的最大公约数和最小公倍数。

#include

void main()

{

int m,n,t;

m=15;

n=25;

if(m

{

t=m;

m=n;

n=t;

}

int m0=m,n0=n;

while(n!=0)

{

t=m%n;

m=n;

n=t;

}

cout<<"最大公约数为"<

cout<<"最小公倍数为"<

}

3.求下列分数序列前15项之和。

2/1,3/2,5/3,8/5,13/8,…

答:编程如下:

#include

void main()

{

int a;

double i=2,j=1,sum=0,t;

for(a=1;a<15;a++)

{

sum+=i/j;

t=i;

i+=j;

j=t;

}

cout<<"SUM="<

}

4.按下列公式,求e的近似值。

e=1+1/1!+1/2!+1/3!+…+1/n!

答:编程如下:

#include

#include

void main()

{

double x(1),s(0);

for(int i=1;fabs(x)>1e-8;i++)

{

x*=(-1.0)*(2*i-3)/(2*i-1);

s+=x;

}

s*=4;

cout<<"pi="<

}

5.求下列式子之和,假定n=10。

S=1+(1+2)+(1+2+3)+…+(1+2+3+…+n) 答:编程如下:

#include

void main()

{

int s(0),s1(0);

for(int i=1;i<=10;i++)

{

s1+=i;

s+=s1;

}

cout<

}

3.6 简单回答下列问题

1.分程序是复合语句吗?复合语句与分程序的区别是什么?

答:分程序是复合语句。复合语句与分程序的区别在于含有说明语句的复合语句称为分程序。

2.if语句中,else子句的功能是什么?

答:该子句的功能是当if子句和所有else if子句的条件都为0时,则执行else子句。3.在开关语句中,是否每个case子句后面的<语句序列>中都应该有break语句?

答:通常case子句后面的<语句序列>中都有break语句,根据需要也可以没有break语句。

4.循环语句的循环体中出现的continue语句的作用是什么?

答:结束本次循环,转到循环头判断是否继续循环。

5.文件包含命令的功能吗?该命令一定要放在程序首部吗?

答:该预处理命令是将指定的包含文件内容放在该命令出现的地方。通常放在程序开头,便于后边语句的使用。

编译预处理

第九章编译预处理 9.1 选择题 【题9.1】以下叙述中不正确的是。 A)预处理命令行都必须以#号开始 B)在程序中凡是以#号开始的语句行都是预处理命令行 C)C程序在执行过程中对预处理命令行进行处理 D)以下是正确的宏定义 #define IBM_PC 【题9.2】以下叙述中正确的是。 A)在程序的一行上可以出现多个有效的预处理命令行 B)使用带参的宏时,参数的类型应与宏定义时的一致 C)宏替换不占用运行时间,只占编译时间 D)在以下定义中C R是称为“宏名”的标识符 #define C R 045 【题9.3】请读程序: #define ADD(x) x+x main() { int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(“sum=%d”,sum); } 上面程序的运行结果是。 A)sum=9 B)sum=10 C)sum=12 D)sum=18 【题9.4】以下程序的运行结果是。 #define MIN(x,y) (x)<(y)?(x):(y) main() { int i=10,j=15,k; k=10*MIN(i,j); printf(“%d\n”,k); } A)10 B)15 C)100 D)150 【题9.5】在宏定义#define PI 3.14159中,用宏名PI代替一个。 A)常量B)单精度数C)双精度数D)字符串

【题9.6】以下程序的运行结果是。 #include #define FUDGE(y) 2.84+y #define PR(a) printf(“%d”,(int)(a)) #define PRINT1(a) PR(a); putchar(‘\n’) main() { int x=2; PRINT1(FUDGE(5)*x); } A)11 B)12 C)13 D)15 【题9.7】以下有关宏替换的叙述不正确的是。 A)宏替换不占用运行时间B)宏名无类型 C)宏替换只是字符替换D)宏名必须用大写字母表示 【题9.8】C语言的编译系统对宏命令的处理是。 A)在程序运行时进行的 B)在程序连接时进行的 C)和C程序中的其它语句同时进行编译的 D)在对源程序中其它成份正式编译之前进行的 【题9.9】若有宏定义如下: #define X 5 #define Y X+1 #define Z Y*X/2 则执行以下printf语句后,输出结果是。 int a; a=Y; printf(“%d\n”,Z); printf(“%d\n”,--a); A)7 B)12 C)12 D)7 6 6 5 5 【题9.10】若有以下宏定义如下: #define N 2 #define Y(n) ((N+1)*n) 则执行语句z=2*(N+Y(5));后的结果是。 A)语句有错误B)z=34 C)z=70 D)z无定值 【题9.11】若有宏定义:#define MOD(x,y) x%y 则执行以下语句后的输出为。 int z,a=15,b=100; z=MOD(b,a); printf(“%d\n”,z++);

第3章语句和预处理

第3章语句和预处理 练习题3 3.1 判断题 √1.表达式和表达式语句是不同的。 ×2.空语句是一种没有用处的语句。 ×3.复合语句就是分程序。 ×4.条件语句中if子句和else子句都是必须有并且仅有一个。 √5.条件语句中else if子句可以没有,也可以有多个。 √6.开关语句可实现多路分支。 ×7.开关语句的<语句序列>中必须有一个break语句,否则该开关语句便无法退出。×8.任何循环语句都是至少执行一次循环体。 ×9.退出for循环语句必须是for后面括号内的中间一个表达式的值为0。 √10.do-while循环语句至少要执行一次循环体。 ×11.循环语句的循环体中可以出现if语句,if语句的if体内不能出现循环语句。 ×12.goto语句中所使用的语句标号是一种标识符,它的作用域是文件级的。 √13.break语句和continue语句都可以出现在循环体中,但是它们的作用是不同的。×14.文件包含命令所能包含的文件类型是不受限制的。 3.2 单选题 1.下列关于语句的描述中,错误的是( A )。 A.C++程序中的函数是由若干条语句组成的 B.每条语句都要实现某种操作 C.条件语句是用来实现分支操作的 D.循环语句是用来在一定条件下重复执行某段程序的 2.下列关于条件语句的描述中,错误的是( C )。 A.if语句中最多只能有一个else子句 B.if语句的if体内可以出现开关语句 C.if语句中else if子句和else子句的顺序是没有限制的 D.if语句中else子句是与它最近的if子句配对的 3.下列关于开关语句的描述中,错误的是( B )。 A.开关语句中,case子句的个数是不受限制的 B.开关语句中,case子句的语句序列中一定要有break语句 C.开关语句中,default子句可以省略 D.开关语句中,右花括号具有退出开关语句的功能 4.下列关于循环语句的描述中,错误的是( A )。 A.while循环语句中<条件>给定的表达式不能为非0的常量,否则便是死循环 B.for循环语句的循环体内可以出现while循环语句、do-while循环语句和for循环语句C.循环语句的循环体可以是空语句 D.循环语句的循环体内可以出现break语句,也可以出现continue语句 5.已知:int i(3);下列do-while循环语句的循环次数是( D )。 do{

C语言题库第7章宏定义与预处理√

第七章宏定义与预处理一.单项选择 1. 以下程序的运行结果是( D )。 #include #define ADD(x) x+x int main ( ) { int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf(“%d\n”,sum) ; return 0; } A.18 B.9 C.12 D.10 2. 以下程序的运行结果是( C )。 #include #define MIN(x,y) (x)>(y) ? (x) : (y) int main ( ) { int i=10, j=15 , k; k = 10*MIN(i,j); printf(“%d\n”,k); return 0; } A.15 B.100 C.10 D.150 3. 以下程序的运行结果是( A )。 #include #define X 5 #define Y X+1 #define Z Y*X/2 int main ( ) { int a=Y; printf(“%d\n”,Z); printf(“%d\n”,--a); return 0; }

A.75 B.125 C.76 D.126 4. 以下程序的运行结果是( C )。 #include #define DOUBLE(r) r*r int main ( ) { int x=1,y=2,t; t = DOUBLE(x+y) ; printf (“%d\n”,t); return 0; } A.7 B.6 C.5 D.8 5. 在“文件包含”预处理命令形式中,当#include后面的文件名用””(双引号)括起时,寻找被包含文件的方式是( C )。 A.仅仅搜索源程序所在目录 B.直接按系统设定的标准方式搜索目录 C.先在源程序所在目录中搜索,再按系统设定的标准方式搜索 D.仅仅搜索当前目录 6. 若有定义 #define N 2 #define Y(n) ((N+1)*n) 则执行语句z=2*(N+Y(5));后,z的值为( C )。 A.无确定值 B.语句有错误 C.34 D.70 7. 若有定义#define MOD(x,y) x%y,则执行下面语句后的输出为( A )。 int z,a=15; float b=100; z=MOD(b,a); printf(“%d\n”,z++); A.有语法错误 B.11 C.10 D.6 8. 在任何情况下计算平方数都不会引起二义性的宏定义是( B ) A.#define POWER(x) (x)*(x) B.#define POWER(x) ((x)*(x))

c语言第8章-编译预处理及位运算习题答案doc资料

c语言第8章-编译预处理及位运算习题答 案

编译预处理习题 一.单项选择题 1.在宏定义#define A 3.897678中,宏名A代替一个()。 A)单精度数 B)双精度数 C)常量 D)字符串2.以下叙述中正确的是 A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令 C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间3.C语言的编译系统对宏命令的处理()。 A)在程序运行时进行的 B)在程序连接时进行的 C)和C程序中的其它语句同时进行的 D)在对源程序中其它语句正式编译之前进行的 4.在文件包含预处理语句的中,被包含文件名用“< >”括起时,寻找被包含文 件的方式是()。 A)直接按系统设定的标准方式搜索目录 B)先在源程序所在目录搜索,再按系统设定的标准方式搜索 C)仅仅在源程序所在目录搜索 D)仅仅搜索当前目录 5.以下说法中正确的是 A)#define和printf都是C语句 B)#define是C语句,而printf不是 C)printf是C语句,但#define不是D)#define和printf都不是C 语句 6.#define A 3.897678 #include main( ) { printf(“A=%f ”,A); } 程序运行结果为()。 A) 3.897678=3.897678 B) 3.897678=A C) A=3.897678 D)无结果 7.有宏定义:#define LI(a,b) a*b #define LJ(a,b) (a)*(b) 在后面的程序中有宏引用:x=LI(3+2,5+8); y=LJ(3+2,5+8); 则x、y的值是()。 A) x=65,y=65 B) x=21,y=65 C) x=65,y=21 D) x=21,y=21 8.有以下程序 # define f(x) (x*x) main()

JSP 预处理语句的优点

JSP 预处理语句的优点 预处理语句具有两个主要的优点: ●查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多 次。当查询准备好(Prepared)之后,数据库就会分析,编译并优化它要 执行查询的计划。对于复杂查询来说,如果要重复执行许多次有不同参数 的但结构相同的查询,这个过程会占用大量的时间,使得应用变慢。通过 使用一个预处理语句就可以避免重复分析、编译、优化的环节。简单来说, 预处理语句使用更少的资源,执行速度也就更快。 ●传给预处理语句的参数不需要使用引号,底层驱动会处理这个。如果应用 独占地使用预处理语句,就可以确信没有SQL注入会发生。 正因为预处理语句是如此有用,它成了PDO惟一为不支持此特性的数据库提供的模拟实现。这使你可以使用统一的数据访问规范而不必关心数据库本身是否具备此特性。 在JDBC组件中,PreparedStatement接口创建表示预编译的SQL语句的对象。SQL语句经过预编译,并存储在PreparedStatement对象中。然后,此对象可用来有效地多次执行此语句。PreparedStatement接口继承Statement类,并与之在两方面有所不同: ●PreparedStatement实例包含已编译的SQL语句。由于PreparedStatement对 象已预编译过,所以其执行速度要快于Statement对象。因此,多次执行 的SQL语句经常创建为PreparedStatement对象,以提高效率。 ●包含于PreparedStatement对象中的SQL语句可具有一个或多个IN参参。 IN参数的值在SQL语句创建时未被指定。相反的,该语句为每个IN参数 保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前, 通过适当的SetXXX方法来提供。 作为Statement的子类,PreparedStatement继承了Statement的所有功能。另外它还添加了一整套方法,用于设置发送给数据库以取代IN参数占位符的值。同时,三种方法execute、executeQuery和executeUpdate已被更改又以使其不再需要参数。这些方法的Statement形式(接受SQL语句参数的形式)不应该用于PreparedStatement对象。其详细信息如表6-6所示: 表6-6 PreparedStatement接口方法

编译预处理

编译预处理 1概述: 编译预处理是在源程序正式编译前的处理。预处理名令一般写在程序的最开头,并且以#开头的命令。编译预处理命令不是c语言本身的组成部分,也不属于c语句,不能直接对他们编译。在代码的正式编译之前(编译即指转换成二进制的机器语言),系统先对预处理命令进行处理,然后再由编译程序对处理后的程序进行正常的编译,得到可执行文件。即对一个源程序进行编译时,系统会先引用预处理命令对源程序中的预处理部分进行处理,然后自动进行源程序的编译。 C语言提供3中预处理命令:宏替换文件包含条件编译他们均以#开头,并独占一个书写行,语句结尾不用;作为结束符。 2 宏替换(宏定义) 分为两种: (1)无参数的宏替换 是指用一个指定的标识符(即宏名)来代表程序中的一个字符串。 格式#define 宏名字符串 如#define SIZE 10 SIZE为宏名,此命令执行后,预处理程序对源程序中的所有SIZE的标识符用10替换。 说明: ①宏名一般用大写字符,但不是必须的。 ②字符串可以是常量,表达式,语句或多条语句可以是任何语句如输出语句,赋值语句等等 ③宏定义与变量定义不同,只是做字符的简单替换,不占内存空间,也不赋值 ④结尾不能加;,如果加了;,则;也作为字符串的一部分,一同参与替换。 ⑤宏定义允许嵌套定义,即在宏定义的字符串中可以使用已经定义的宏名。 ⑥宏定义要写在函数之外的,一般写在程序的开头,作用范围是从定义到本文件结束,出来这个文件失去作用了。若要终止其作用,在需要终止前面加#undef 宏名 ⑦若宏名出现在双引号中,则将不会发生宏替换。如printf(“ADD”) ADD是宏,这里不会进行宏替换了 ⑧替换文本不替换用户标识符中的成分宏名ADD不会替换标识符ADDIP中的ADD (2)有参数的宏替换 宏定义中的参数为形式参数,在宏调用中的参数为实际参数。 格式:#define 宏名(形参)字符串 各参数间用,隔开。替换时,不仅要将宏展开,还要将形参替换为实参,但是仅仅是替换而不会去运算得出一个值,这点千万注意。 说明:①注意参数有括号与无括号的区别,这里只是进行直接的替换,不进行其他任何操作。 ②宏替换之后为一个字符串,不是一个值。 ③在带参的宏定义中宏名与(形参)之间不能有空格,否则则被认为是无参宏定义,会将空格后面的字符都当做替换字符串的一部分。如: #define Y (x) x*x K=Y(5); 宏替换为 K=(x) x*x(5) ④这里虽然哟形参与实参但是,与函数调用时不同,这里只是简单的替换,不存在数值传递。形参不占内存,不必进行类型说明。但实参的值是要进行类型说明的。

C语言习题集合(预处理命令)

预处理命令 1 选择题 1.下面叙述中正确的是()。 A. 带参数的宏定义中参数是没有类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C语言中的一种特殊语句 D. 使用#include命令包含的头文件必须以“.h”为后缀 2.下面叙述中正确的是()。 A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 3.在“文件包含”预处理语句中,当#include后面的文件名用双引号括起时,寻找被包含文件的方式为()。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 4.下面叙述中不正确的是()。 A. 函数调用时,先求出实参表达式,然后带入形参。而使用带参的宏只是进行简单的字 符替换 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行 的,在展开时也要分配内存单元,进行值传递 C. 对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题, 宏没有类型 D. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果 5.下面叙述中不正确的是()。 A. 使用宏的次数较多时,宏展开后源程序长度增长。而函数调用不会使源程序变长 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行 的,在展开时不分配内存单元,不进行值传递 C. 宏替换占用编译时间 D. 函数调用占用编译时间 6.下面叙述中正确的是( )。

C语言程序设计第八章预处理命令

一、选择题 1、对宏命令的处理是_ ___ A、在程序执行时进行的 B、在对程序中其他语句进行编译前进行的 C、在程序连接时进行的 D、与程序中其他语句同时进行编译 2、下面对编译预处理的叙述正确的是_ _____ A、预处理命令只能位于程序的开始处 B、预处理功能是指完成宏替换和文件包含的调用 C、只要行首以“#”标识的控制行都是预处理命令 D、编译预处理就是对源程序进行初步的语法检查 3、以下叙述中不正确的是()。 A)预处理命令行都必须以#号开始 B)在程序中凡是以#号开始的语句行都是预处理命令行 C)C程序在执行过程中对预处理命令行进行处理 D)以下是正确的宏定义#define IBM-PC 4、以下叙述中正确的是()。 A)在程序的一行上可以出项多个有效的预处理命令行 B)使用带参的宏时,参数的类型应与宏定义时的一致 C)宏替换不占用运行时间,只占编译时间 D)在以下定义中C R是称为”宏名”的标识符#define C R 045 5、#define ADD(x) x+x main() {int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(“sum=%d”,sum);} 上面程序的运行结果是()。 A)sum=9 B)sum=10 C)sum=12 D)sum=18 6、以下程序的运行结果是()。 #define MIN(x,y) (x)<(y)?(x):(y) main() {int i=10,j+15,k; k+10*MIN(i,j); printf(“%d\n”,k);} A)10 B)15 C)100 D)150 7、在宏定义#define PI 3.14159中,用宏名PI代替一个()。 A)常量B)单精度数C)双精度数D)字符串 8、以下程序的运行结果是() #include”stdio.h” #define FUDGE(y) 2.84+y #define PR(a) printf(“%d”,(int)(a)) #define PRINT1(a) PR(a);put char(‘\n’) main() {int x=2;

MySql存储过程脚本中含有预处理语句时,不能执行脚本

MySql存储过程脚本中含有预处理语句时,不能执行脚本 ## 不含预处理的存储过程 ## 存储过程CustomCount.sql : 取各个表的记录数 Drop Procedure If Exists CustomCount; Create Procedure CustomCount ( outRowNumbigint ) Not Deterministic SQL Security Definer Comment '' Begin Select Count(*) Into RowNum From uc_members; End; ------------------------------------------------------------------------ ## 含预处理的存储过程 ## 存储过程GetCount.sql: 传入表名,取某个表的记录数Drop Procedure If Exists GetCount; Create Procedure GetCount ( TableNamevarchar(100) , out RowNumbigint ) Not Deterministic SQL Security Definer Comment '' Begin Declare SQLStrvarchar(2000) default '';

Set SQLStr = Concat('Select Count(*) Into @MyNum From ', TableName); Set @ResultSQL = SQLStr; Prepare preSQL From @ResultSQL; Execute PreSQL; Deallocate Prepare preSQL; Set RowNum = @MyNum; End; ------------------------------------------------------------------------- 上述两个存储过程脚本,在C#中读取文件内容后,运行,含预处理的存储过程执行失败。是什么原因呢?? 附件是 .NET Framework 4.0的WinForm运行脚本源码示例,含这两个存储过程。 请修改您的MySql连接字符串即可。 CustomCount.sql中的uc_members表名变可改成您的表名。 备注: 1. 制作Web安装包时,需要用程序运行MySql脚本,而这些脚本中,经常含有预处理脚本。 2. 使用这个预处理脚本主要是为了在动态执行SQL 时取得输出参数的值(类似GetCount.sql 中取值)。 3. 不要建议说,使用mysql.exe这个命令一个一个的运行,或者说是调用其它MySql的.dll 或.exe这种方式,因为Web安装时,经常是没有权限取得本地文件的执行权限的。 4. 主要是需要在虚拟主机下进行Web安装。

c语言习题集合预处理命令)

第六章预处理命令 6.1 选择题 1.下面叙述中正确的是()。 A. 带参数的宏定义中参数是没有类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C语言中的一种特殊语句 D. 使用#include命令包含的头文件必须以“.h”为后缀 2.下面叙述中正确的是()。 A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 3.在“文件包含”预处理语句中,当#include后面的文件名用双引号括起时,寻找被包含文件的方式为()。 A. 直接按系统设定的标准方式搜索目录 B.先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 4.下面叙述中不正确的是()。 A. 函数调用时,先求出实参表达式,然后带入形参。而使用带参的宏只是进行简单的字符替换 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在 展开时也要分配内存单元,进行值传递 C. 对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏没 有类型 D. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果 5.下面叙述中不正确的是()。 A. 使用宏的次数较多时,宏展开后源程序长度增长。而函数调用不会使源程序变长 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在 展开时不分配内存单元,不进行值传递 C. 宏替换占用编译时间 D.函数调用占用编译时间 6.下面叙述中正确的是( )。 A. 可以把define和if定义为用户标识符 B.可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 7.下面叙述中正确的是()。 A.#define和printf都是C语句 B.#define是C语句,而printf不是 C.printf是C语句,但#define不是 D.#define和printf都不是C语句 8.以下叙述中正确的是()。 A. 用#include包含的头文件的后缀不可以是“.a”

相关文档
相关文档 最新文档