一、選擇題
(1)有以下程序
main()
{ char p[]={'a', 'b', 'c'}, q[]="abc";
printf("%d %d\n", sizeof(p),sizeof(q));
};
程序運行后的輸出結果是
A)4 4 B)3 3 C)3 4 D)4 3
(2)有以下程序
# define f(x) (x*x)
main()
{ int i1, i2;
i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;
printf("%d, %d\n",i1,i2);
}
程序運行后的輸出結果是
A)64, 28 B)4, 4 C)4, 3 D)64, 64
(3)有以下程序
main()
{ char a[7]="a0\0a0\0";int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
}
程序運行后的輸出結果是
A)2 2
B)7 6
C)7 2
D)6 2
(4)以下敘述中正確的是
A)預處理命令行必須位于源文件的開頭
B)在源文件的一行上可以有多條預處理命令
C)宏名必須用大寫字母表示
D)宏替換不占用程序的運行時間
(5) 有以下程序
main( )
{ char a[]=”abcdefg”,b[10]=”abcdefg”;
printf(“%d %d\n”,sizeof(A) ,sizeof(B) );
}
執(zhí)行后輸出結果是
A) 7 7 B) 8 8 C) 8 10 D) 10 10
(6) 有以下程序
#define f(x) x*x
main( )
{ int i;
i=f(4+4)/f(2+2);
printf(“%d\n”,i);
}
執(zhí)行后輸出結果是
A) 28 B) 22 C) 16 D) 4
(7) 有以下程序
#include
#define F(X,Y) (X)*(Y)
main ()
{ int a=3, b=4;
printf("%d\n", F(a++,b++));
}
程序運行后的輸出結果是
A) 12 B) 15 C) 16 D) 20
(8) 有以下程序
main()
{ char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
執(zhí)行后輸出結果是
A) 賦初值的字符串有錯 B) 6,7 C) 5,6 D) 6,6
(9) 有以下程序
main(int arge,char *argv[])
{ int n,i=0;
while(arv[1][i]!='\0'
{ n=fun(); i++;}
printf(%d\n",n*argc);
}
int fun()
{ static int s=0;
s+=1;
return s;
}
假設程序經(jīng)編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以下命令行
exam 123<回車>
則運行結果為
(10) 有以下程序
main()
{ char a[ ]={‘a(chǎn)’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序運行后的輸出結果是
A)9,9 B)8,9 C)1,8 D)9,8
(11) 程序中頭文件typel.h 的內(nèi)容是:
#define N 5
#define M1 N*3
程序如下:
#define “type1.h”
#define M2 N*2
main()
{ int i;
i=M1+M2; printf(“%d\n”,i);
}
程序編譯后運行的輸出結果是:
A) 10 B) 20 C) 25 D) 30
(12) 有以下程序
#include
main()
{ char *p,*q;
p=(char*)malloc(sizeof(char)*20); q=p;
scanf(“%s%s”,p,q); printf(“%s%s\n”,p,q);
}
若從鍵盤輸入:abc def<回車>,則輸出結果是:
A) def def B) abc def C) abc d D) d d
(13) 若指針p已正確定義,要使p指向兩個連續(xù)的整型動態(tài)存儲單元,不正確的語句是
A) p=2*(int*)malloc(sizeof(int));
B) p=(int*)malloc(2*sizeof(int));
C) p=(int*)malloc(2*2);
D) p=(int*)calloc(2,sizeof(int));
(14) 以下程序的輸出結果是
main()
{ char st[20]= “hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
(15) 以下程序的輸出結果是
amovep(int p, int (a)[3],int n)
{ int i, j;
for( i=0;i<;i++)
for(j=0;j }
main()
{ int *p,a[3][3]={{1,3,5},{2,4,6}};
p=(int *)malloc(100);
amovep(p,a,3);
printf(“%d %d \n”,p[2],p[5]);free(p);
}
A) 56 B) 25 C) 34 D) 程序錯誤
(16) 以下程序的輸出結果是
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf(“%d\n”, M(a+b,b+c, c+a));
}
A) 19 B) 17 C) 15 D) 12
(17) 以下程序的輸出結果是
A) 16 B) 2 C) 9 D) 1
#define SQR(X) X*X
main()
{ int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf(“d\n”,a);
}
(18) 若定義了以下函數(shù):
void f(……)
{……
*p=(double *)malloc( 10*sizeof( double));
……
}
p是該函數(shù)的形參,要求通過p把動態(tài)分配存儲單元的地址傳回主調(diào)函數(shù),則形參p的正確定義應當是
A) double *p B) float **p C) double **p D) float *p
(19) 有如下程序
#define N 2
#define M N+1
#define NUM 2*M+1
#main()
{ int i;
for(i=1;i<=NUM;i++)printf(“%d\n”,i);
}
該程序中的for循環(huán)執(zhí)行的次數(shù)是
A) 5 B) 6 C) 7 D) 8
(20) 下列程序執(zhí)行后的輸出結果是
A) 6 B) 8 C) 10 D) 12
#define MA(x) x*(x-1)
main()
{ int a=1,b=2; printf("%d \n",MA(1+a+b));}
(21) 若有說明:long *p,a;則不能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是
A) *p=&a; scanf("%ld",p);
B) p=(long *)malloc(8); scanf("%ld",p);
C) scanf("%ld",p=&a);
D) scanf("%ld",&a);
(22) 以下程序的輸出結果是
A) 1 B) 4 C) 7 D) 5
#include
int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;
main( )
{ p=(int*)malloc(sizeof(int));
f(p,a);
printf("%d \n",*p);
}
f(int *s, int p[][3])
{ *s=p[1][1]; }
(23) 以下程序的輸出結果是
A) 9 B) 6 C) 36 D) 18
#define f(x) x*x
main( )
{ int a=6,b=2,c;
c=f(a) / f(b);
printf("%d \n",c);
}
(24) 以下程序運行后,輸出結果是
A) 49.5 B) 9.5 C) 22.0 D) 45.0
#include
#define PT 5.5
#define S(x) PT* x * x
main()
{ int a=1,b=2;
printf("%4.1f\n",S(a+b));
}
(25) 以下程序運行后,輸出結果是
A) 1 B) 7 C) 9 D) 11
fut(int **s, int p[2][3])
{ **s=p[1][1];}
main()
{ int a[2][3]={1,3,5,7,9,11}, *p;
p=(int *) malloc(sizeof(int));
fut(&p,a);
printf("%d\n",*P);
}
(26) 設有以下宏定義:
#define N 3
#define Y(n) ( (N+1)*n)
則執(zhí)行語句:z=2 * (N+Y(5+1));后,z的值為
A) 出錯 B) 42 C) 48 D) 54
(27) 若有說明,double *p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是
A)*p=&a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);
C) p=&a;scanf("%lf",a); D)p=&a; scanf("%le",p);
(28) 執(zhí)行下面的程序后,a的值是
#define SQR(X) X*X
main( )
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a); }
A) 10 B) 1 C) 9 D) 0
(29) 以下程序的輸出結果是
fut (int**s,int p[2][3])
{ **s=p[1][1]; }
main( )
{ int a[2][3]={1,3,5,7,9,11},*p;
p=(int*)malloc(sizeof(int));
fut(&p,a);
primtf("%d\n",*p); }
A) 1 B) 7 C) 9 D) 11
(30) 若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元:
int *p;
p=__________ malloc( sizeof(int));
則應填入
A) int B) inst * C) (*int) D) (int *)
(31) 請讀程序:
#include
#define SUB(X,Y) (X)*Y
main()
{ int a=3, b=4;
printf("%d", SUB(a++, b++));
}
上面程序的輸出結果是
A) 12 B) 15 C) 16 D) 20
(32) 請讀程序:
#include
void fun(float *pl, float *p2, float *s)
{ s=( float * )calloc( 1, sizeof(float));
*s=*p1+ *(p2++);
}
main()
{ float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;
fun(a, b, s)
printf("%f\n",*s);
}
上面程序的輸出結果是
A) 11.100000 B) 12.100000 C) 21.100000 D) 1.100000
(33) 在宏定義 #define PI 3.14159中,用宏名PI代替一個
A) 單精度數(shù) B) 雙精度數(shù) C) 常量 D) 字符串
(34) 請選出以下程序段的輸出結果
#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);
}
A) 15 B) 100 C) 10 D) 150
(35) sizeof(double)是 【35】 。
A)一種函數(shù)調(diào)用 B)一個雙精度型表達式
C)一個整型表達式 D)一個不合法的表達式
(36) 以下for語句構成的循環(huán)執(zhí)行了 【36】 次。
# include
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{ int i , n=0;
for ( i=1;i<=NUM;i + + );
{n + + ; printf("%d",n); }
printf("\n"); }
A) 5 B) 6 C) 8 D) 9
(37) 以下程序的輸出結果是 【37】 。
# 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 二、填空題:
(1)已有定義:double *p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型 的動態(tài)存儲單元 【1】 。
(2)以下程序運行后的輸出結果是 【2】 .
#define S(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d\n",S(i+j));
}
(3) 以下程序中, for循環(huán)體執(zhí)行的次數(shù)是 【3】 。
#define N 2
#define M N+1
#define K M+1*M/2
main()
{ int i;
for(i=1;i { ... }
...
}
(4) 以下程序中給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?BR> # include
main ( )
{ double *p;
p=(double *) malloc(【4】);
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf(“%f%f%f\n”,p[0],p[1],p[2]);
}
(5) 以下程序的輸出結果是【5】 。
#defint MCRA(m) 2*m
#define MCRB(n,m) 2*MCRA(n)+m
main()
{ int i=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
(6) 下面程序的運行結果是【6】 。
#define N 10
#define s(x) x*x
#define f(x) (x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf(“%d %d\n”,i1,i2);
}
(7) 設有如下宏定義
#define MYSWAP(z,x,y) {z=x; x=y; y=z;}
以下程序段通過宏調(diào)用實現(xiàn)變量a、b內(nèi)容交換,請?zhí)羁铡?BR> float a=5,b=16,c;
MYSWAP( 【7】 ,a,b);
(8) 用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡?BR> st=(char*) 【8】 ;
(9) 以下程序的輸出結果是【9】。
#define MAX(x,y) (x)>(y)?(x):(y)
main()
{ int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf(“%d\n”,t);
}
(10) 若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?BR> p= [10] malloc(sizeof(double));
(11) 下面程序的輸出是 【11】 。
#define PR(ar) printf("%d", ar)
main()
{ int j, a[]={ 1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3; j; j--)
{ switch(j)
{ case 1:
case 2: PR(*p++); break;
case 3: PR(*(--p));}
}
}
答案:
一、選擇題:
1) C 2) C 3) C 4) D 5) C 6) A 7) A 8) C 9) A 10) D
11) C 12) A 13) A 14) B 15) A 16) D 17) B 18) C 19) B 20) B
21) A 22) D 23) C 24) B 25) C 26) C 27) D 28) B 29) C 30) D
31) A 32) D 33) D 34) A 35) C 36) C 37) B 38) 39) 40)
二、填空題:
(1) p=(double*)malloc(sizeof(double))
(2) 81
(3) 4
(4) 3*sizeof(double)
(5) 16
(6) 1000 10
(7) c
(8) Malloc (11) 或malloc(sizeof(char)*11)
(9) 7
(10) (double *)
(11) 9911
(1)有以下程序
main()
{ char p[]={'a', 'b', 'c'}, q[]="abc";
printf("%d %d\n", sizeof(p),sizeof(q));
};
程序運行后的輸出結果是
A)4 4 B)3 3 C)3 4 D)4 3
(2)有以下程序
# define f(x) (x*x)
main()
{ int i1, i2;
i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;
printf("%d, %d\n",i1,i2);
}
程序運行后的輸出結果是
A)64, 28 B)4, 4 C)4, 3 D)64, 64
(3)有以下程序
main()
{ char a[7]="a0\0a0\0";int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
}
程序運行后的輸出結果是
A)2 2
B)7 6
C)7 2
D)6 2
(4)以下敘述中正確的是
A)預處理命令行必須位于源文件的開頭
B)在源文件的一行上可以有多條預處理命令
C)宏名必須用大寫字母表示
D)宏替換不占用程序的運行時間
(5) 有以下程序
main( )
{ char a[]=”abcdefg”,b[10]=”abcdefg”;
printf(“%d %d\n”,sizeof(A) ,sizeof(B) );
}
執(zhí)行后輸出結果是
A) 7 7 B) 8 8 C) 8 10 D) 10 10
(6) 有以下程序
#define f(x) x*x
main( )
{ int i;
i=f(4+4)/f(2+2);
printf(“%d\n”,i);
}
執(zhí)行后輸出結果是
A) 28 B) 22 C) 16 D) 4
(7) 有以下程序
#include
#define F(X,Y) (X)*(Y)
main ()
{ int a=3, b=4;
printf("%d\n", F(a++,b++));
}
程序運行后的輸出結果是
A) 12 B) 15 C) 16 D) 20
(8) 有以下程序
main()
{ char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
執(zhí)行后輸出結果是
A) 賦初值的字符串有錯 B) 6,7 C) 5,6 D) 6,6
(9) 有以下程序
main(int arge,char *argv[])
{ int n,i=0;
while(arv[1][i]!='\0'
{ n=fun(); i++;}
printf(%d\n",n*argc);
}
int fun()
{ static int s=0;
s+=1;
return s;
}
假設程序經(jīng)編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以下命令行
exam 123<回車>
則運行結果為
(10) 有以下程序
main()
{ char a[ ]={‘a(chǎn)’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序運行后的輸出結果是
A)9,9 B)8,9 C)1,8 D)9,8
(11) 程序中頭文件typel.h 的內(nèi)容是:
#define N 5
#define M1 N*3
程序如下:
#define “type1.h”
#define M2 N*2
main()
{ int i;
i=M1+M2; printf(“%d\n”,i);
}
程序編譯后運行的輸出結果是:
A) 10 B) 20 C) 25 D) 30
(12) 有以下程序
#include
main()
{ char *p,*q;
p=(char*)malloc(sizeof(char)*20); q=p;
scanf(“%s%s”,p,q); printf(“%s%s\n”,p,q);
}
若從鍵盤輸入:abc def<回車>,則輸出結果是:
A) def def B) abc def C) abc d D) d d
(13) 若指針p已正確定義,要使p指向兩個連續(xù)的整型動態(tài)存儲單元,不正確的語句是
A) p=2*(int*)malloc(sizeof(int));
B) p=(int*)malloc(2*sizeof(int));
C) p=(int*)malloc(2*2);
D) p=(int*)calloc(2,sizeof(int));
(14) 以下程序的輸出結果是
main()
{ char st[20]= “hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
(15) 以下程序的輸出結果是
amovep(int p, int (a)[3],int n)
{ int i, j;
for( i=0;i<;i++)
for(j=0;j
main()
{ int *p,a[3][3]={{1,3,5},{2,4,6}};
p=(int *)malloc(100);
amovep(p,a,3);
printf(“%d %d \n”,p[2],p[5]);free(p);
}
A) 56 B) 25 C) 34 D) 程序錯誤
(16) 以下程序的輸出結果是
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf(“%d\n”, M(a+b,b+c, c+a));
}
A) 19 B) 17 C) 15 D) 12
(17) 以下程序的輸出結果是
A) 16 B) 2 C) 9 D) 1
#define SQR(X) X*X
main()
{ int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf(“d\n”,a);
}
(18) 若定義了以下函數(shù):
void f(……)
{……
*p=(double *)malloc( 10*sizeof( double));
……
}
p是該函數(shù)的形參,要求通過p把動態(tài)分配存儲單元的地址傳回主調(diào)函數(shù),則形參p的正確定義應當是
A) double *p B) float **p C) double **p D) float *p
(19) 有如下程序
#define N 2
#define M N+1
#define NUM 2*M+1
#main()
{ int i;
for(i=1;i<=NUM;i++)printf(“%d\n”,i);
}
該程序中的for循環(huán)執(zhí)行的次數(shù)是
A) 5 B) 6 C) 7 D) 8
(20) 下列程序執(zhí)行后的輸出結果是
A) 6 B) 8 C) 10 D) 12
#define MA(x) x*(x-1)
main()
{ int a=1,b=2; printf("%d \n",MA(1+a+b));}
(21) 若有說明:long *p,a;則不能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是
A) *p=&a; scanf("%ld",p);
B) p=(long *)malloc(8); scanf("%ld",p);
C) scanf("%ld",p=&a);
D) scanf("%ld",&a);
(22) 以下程序的輸出結果是
A) 1 B) 4 C) 7 D) 5
#include
int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;
main( )
{ p=(int*)malloc(sizeof(int));
f(p,a);
printf("%d \n",*p);
}
f(int *s, int p[][3])
{ *s=p[1][1]; }
(23) 以下程序的輸出結果是
A) 9 B) 6 C) 36 D) 18
#define f(x) x*x
main( )
{ int a=6,b=2,c;
c=f(a) / f(b);
printf("%d \n",c);
}
(24) 以下程序運行后,輸出結果是
A) 49.5 B) 9.5 C) 22.0 D) 45.0
#include
#define PT 5.5
#define S(x) PT* x * x
main()
{ int a=1,b=2;
printf("%4.1f\n",S(a+b));
}
(25) 以下程序運行后,輸出結果是
A) 1 B) 7 C) 9 D) 11
fut(int **s, int p[2][3])
{ **s=p[1][1];}
main()
{ int a[2][3]={1,3,5,7,9,11}, *p;
p=(int *) malloc(sizeof(int));
fut(&p,a);
printf("%d\n",*P);
}
(26) 設有以下宏定義:
#define N 3
#define Y(n) ( (N+1)*n)
則執(zhí)行語句:z=2 * (N+Y(5+1));后,z的值為
A) 出錯 B) 42 C) 48 D) 54
(27) 若有說明,double *p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是
A)*p=&a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);
C) p=&a;scanf("%lf",a); D)p=&a; scanf("%le",p);
(28) 執(zhí)行下面的程序后,a的值是
#define SQR(X) X*X
main( )
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a); }
A) 10 B) 1 C) 9 D) 0
(29) 以下程序的輸出結果是
fut (int**s,int p[2][3])
{ **s=p[1][1]; }
main( )
{ int a[2][3]={1,3,5,7,9,11},*p;
p=(int*)malloc(sizeof(int));
fut(&p,a);
primtf("%d\n",*p); }
A) 1 B) 7 C) 9 D) 11
(30) 若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元:
int *p;
p=__________ malloc( sizeof(int));
則應填入
A) int B) inst * C) (*int) D) (int *)
(31) 請讀程序:
#include
#define SUB(X,Y) (X)*Y
main()
{ int a=3, b=4;
printf("%d", SUB(a++, b++));
}
上面程序的輸出結果是
A) 12 B) 15 C) 16 D) 20
(32) 請讀程序:
#include
void fun(float *pl, float *p2, float *s)
{ s=( float * )calloc( 1, sizeof(float));
*s=*p1+ *(p2++);
}
main()
{ float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;
fun(a, b, s)
printf("%f\n",*s);
}
上面程序的輸出結果是
A) 11.100000 B) 12.100000 C) 21.100000 D) 1.100000
(33) 在宏定義 #define PI 3.14159中,用宏名PI代替一個
A) 單精度數(shù) B) 雙精度數(shù) C) 常量 D) 字符串
(34) 請選出以下程序段的輸出結果
#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);
}
A) 15 B) 100 C) 10 D) 150
(35) sizeof(double)是 【35】 。
A)一種函數(shù)調(diào)用 B)一個雙精度型表達式
C)一個整型表達式 D)一個不合法的表達式
(36) 以下for語句構成的循環(huán)執(zhí)行了 【36】 次。
# include
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{ int i , n=0;
for ( i=1;i<=NUM;i + + );
{n + + ; printf("%d",n); }
printf("\n"); }
A) 5 B) 6 C) 8 D) 9
(37) 以下程序的輸出結果是 【37】 。
# 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 二、填空題:
(1)已有定義:double *p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型 的動態(tài)存儲單元 【1】 。
(2)以下程序運行后的輸出結果是 【2】 .
#define S(x) 4*x*x+1
main()
{
int i=6,j=8;
printf("%d\n",S(i+j));
}
(3) 以下程序中, for循環(huán)體執(zhí)行的次數(shù)是 【3】 。
#define N 2
#define M N+1
#define K M+1*M/2
main()
{ int i;
for(i=1;i
...
}
(4) 以下程序中給指針p分配三個double型動態(tài)內(nèi)存單元,請?zhí)羁铡?BR> # include
main ( )
{ double *p;
p=(double *) malloc(【4】);
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf(“%f%f%f\n”,p[0],p[1],p[2]);
}
(5) 以下程序的輸出結果是【5】 。
#defint MCRA(m) 2*m
#define MCRB(n,m) 2*MCRA(n)+m
main()
{ int i=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
(6) 下面程序的運行結果是【6】 。
#define N 10
#define s(x) x*x
#define f(x) (x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf(“%d %d\n”,i1,i2);
}
(7) 設有如下宏定義
#define MYSWAP(z,x,y) {z=x; x=y; y=z;}
以下程序段通過宏調(diào)用實現(xiàn)變量a、b內(nèi)容交換,請?zhí)羁铡?BR> float a=5,b=16,c;
MYSWAP( 【7】 ,a,b);
(8) 用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁铡?BR> st=(char*) 【8】 ;
(9) 以下程序的輸出結果是【9】。
#define MAX(x,y) (x)>(y)?(x):(y)
main()
{ int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf(“%d\n”,t);
}
(10) 若要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)羁铡?BR> p= [10] malloc(sizeof(double));
(11) 下面程序的輸出是 【11】 。
#define PR(ar) printf("%d", ar)
main()
{ int j, a[]={ 1,3,5,7,9,11,13,15}, *p=a+5;
for(j=3; j; j--)
{ switch(j)
{ case 1:
case 2: PR(*p++); break;
case 3: PR(*(--p));}
}
}
答案:
一、選擇題:
1) C 2) C 3) C 4) D 5) C 6) A 7) A 8) C 9) A 10) D
11) C 12) A 13) A 14) B 15) A 16) D 17) B 18) C 19) B 20) B
21) A 22) D 23) C 24) B 25) C 26) C 27) D 28) B 29) C 30) D
31) A 32) D 33) D 34) A 35) C 36) C 37) B 38) 39) 40)
二、填空題:
(1) p=(double*)malloc(sizeof(double))
(2) 81
(3) 4
(4) 3*sizeof(double)
(5) 16
(6) 1000 10
(7) c
(8) Malloc (11) 或malloc(sizeof(char)*11)
(9) 7
(10) (double *)
(11) 9911

