{int t;
t=(x>y?x:y); return(t>z?t:z); }
C) main()
{int a,b,c,max;
scanf(“%d,%d,%d”,&a,&b,&c); if(a>b>c) max=a; if(b>c>a) max=b; if(c>a>b) max=c;
printf(“%d\\n”,max); }
D) main()
{int a,b,c,max;
scanf(“%d,%d,%d”,&a,&b,&c); max=a>b?a:b; if(c>max) max=c;
printf(“%d\\n”,max); }
15.以下for语句构成的循环执行了( #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) 4 B) 6 C) 8 16.以下程序的输出结果是( )。 #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 17.以下程序的输出结果是( )。 #define SUB(x, y) (x)*y
)次。 D) 9 D) 15 main()
{int a=3, b=4;
printf(“%d\\n”, SUB(a++, b++)); }
A) 12 B) 15 C) 16 D) 20 18.设有以下宏定义: #define N 3
#define Y(n) ((N+1)*n)
则执行语句:z=2*(N+Y(5+1));后,z的值为( )。
A) 出错 B) 42 C) 48 D) 54 二 填空题
1.以下程序的输出结果是 7 。 #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); }
2.以下程序的输出结果为 10.000000 。 #include
#define POWER(x, y) pow(x, y)*y #define ONE 1
#define SELEVE_ADD(x) ++x main() {int x=2;
printf(“%f\\n”, POWER(SELEVE_ADD(x), ONE+1)); }
3.填空补充以下程序:
#define PRICE 30 main()
{ int num ,total ; num=0;
total=num*PRICE;
printf(“total=%d, num=%d\\n”, total,num ); }
4.下面程序的输出结果是 5 。 #define CIR(r) r*r main()
{int a=1, b=2, t; t=CIR(a+b); printf(“%d\\n”, t); }
第十章 指 针
一 单项选择题
1.以下程序的输出结果是( )。 main( )
{char a[10]={'1','2','3','4','5','6','7','8','9',0},*p; int i; i=8; p=a+i;
printf(\,p-3); }
A) 6 B) 6789 C) ‘6’ D) 789 2.以下程序的运行结果是( )。 #include \main( )
{int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a+5,*q=NULL; *q=*(p+5);
printf(\ %d\\n\; }
A) 运行后报错 B) 6 6 C) 6 11 D) 5 5 3.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是( )。
int t[3][3],*pt[3],k;
for(k=0; k<3; k++) pt[k]=&t[k][0];
A) t[2][0] B) t[2][2] C) t[l][2] D) t[2][l]
4.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是( )。 main( )
{int a[10]={6,7,2,9,1,10,5,8,4,3}, *p=a, i; for(i=0; i<10; i++, p++) if(________) *a=*p; printf(\,*a); }
A) p>a B) *p>a[0] C) *p>*a[0] D) *p[0]> *a[0] 5.以下程序的输出结果是( )。 #include
{char *a=\ int k;
fun (a); puts(a); }
fun(char *s)
{int x, y; char c;
for(x=0, y=strlen(s)-1; x A) ihgfedcba B) abcdefghi C) abcdedeba D) ihgfefghi 6.以下程序的输出结果是( )。 main( ) {char *s=\;int v[4]={0,0,0,0},k,i; for(k=0;s[k];k++) {switch(s[k]) {case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } v[i]++; } for(k=0;k<4;k++) printf(\,v[k]); } A) 4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8 7.以下程序的输出结果是( )。 #include {char *p1,*p2,str[50]=\; p1=\;p2=\; strcpy(str+1,p2+1);strcpy(str+3,p1+3); printf(\,str);str+1表示数组第二个数据B,p2+1指向f,即把fgh复制到BCD的位置,同时复制‘\\0’ } A) AfghdEFG B) Abfhd C) Afghd D) Afgd 8.若有以下定义和语句: double r=99,*p=&r; *p=r; 则以下正确的叙述是( )。 A) 以上两处的*p含义相同,都说明给指针变量p赋值 B) 在\,*p=&r; \中,把r的地址赋给了p所指的存储单元 C) 语句\把变量r的值赋给指针变量p D) 语句\取变量r的值放回r中 9.若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a, i; 其中0≤ i ≤9, 则对a数组元素不正确的引用是( )。 A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))=*a[i]