变量的存储类型与预编译命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十二变量的存储类型与与编译命令(上机练习)1、输入下面的程序并运行,分析为什么会得到此结果。
#include
#define PI 3.1415926
#define S(r) PI*r*r
float S1(int r)
{
return(PI*r*r);
}
void main()
{
printf("%f\n",S(2));
printf("%f\n",S(1+1));
printf("%f\n",S1(2));
printf("%f\n",S(1+1));
}
具体要求:
①分析程序的运行结果。
②认真比较函数和宏定义的不同之处。
2.以下程序的输出结果是()。
A.15 B.100 C.10 D.150
#include
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{ int i,j,k;i=10;j=15;k=10*MIN(i,j);
printf("%d\n",k);}
3.以下程序中的for循环执行的次数是()。
A.5 B.6 C.8 D.9
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{ int i;for(i=1;i<=NUM;i++);
printf(“%d\n”,i);}
4.以下程序的输出结果是()。
A.11 B.12 C.13 D.15
#include “stdio.h”
#define FUDGF(y) 2.84+y
#define PR(a) printf(“%d”,(int)(a))
#define PRINT1(a) PR(a);putchar(‘\n’)
main()
{ int x=2;PRINT1(FUDGF(5)*x); }
5.以下叙述正确的是()。
A.用#include包含的头文件的后缀不可以是“.a”
B.若一些源程序中包含某个头文件;当该头文件有错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译
C.宏命令可以看做是一行C语句
D.C编译中的预处理是在编译之前进行的。
6.以下有关宏替换的叙述不正确的是()。
A.宏替换不占用运行时间 B.宏名无类型
C.宏替换只是字符替换 D.宏名必须用大写字母表示7.宏定义#define G 9.8中的宏名G代替()
A.一个单精度实数 B.一个双精度实数C.一个字符串 D.不确定类型的数8.若有宏定义:
#define MOD(x,y) x%y
则执行以下程序段的输出为()
int z,a=15,b=100;
z=MOD(b,a);
printf(“%d\n”,z++);
A.11 B.10 C.6 D.宏定义不合法
9.以下程序的运行结果是()。
#define DOUBLE(r) r*r
main( )
{ int y1=1,y2=2,t;
t=DOUBLE(y1+y2);
printf(“%d\n”,t);}
A.11 B.10 C.5 D.9
10.下列程序段的输出结果是()
#include
main()
{int x=10;
int y=x++;
printf("%d,%d\n",(x++,y),y++);}
A .11,10
B .11,11
C .10,10
D .10,11
选择题:
1.若有定义:int x ,*pb ;则以下正确的赋值表达式是( )。
A .pb=&x
B .pb=x
C .*pb=&x
D .*pb=*x
2.以下程序的输出结果是( )。
A .因变量无定义输出不定值
B .0
C .-1
D .1
#include “stdio.h ”
main ()
{ printf (“%d\n ”,NULL );}
3.已知指针p 的指向如图8.1所示,则表达式*++p 的值是( )。
A .20
B .30
C .21
D .31
4.已知指针p 的指向如图8.1所示,则表达式++*p 的值是( )。
A .20
B .30
C .21
D .31
5.以下程序的输出结果是( )。
A .23
B .24
C .25
D .26
void prtv (int *x )
{ printf (“%d\n ”,++*x ); }
main ()
{ int a=25;prtv (&a );}
a[0] a[1] a[2] a[3] a[4] 图8.1 p ↑