国二c语言笔试题库(专升本会出40分的题) 下载本文

{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 #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 #include main( )

{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 main( )

{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]