1.分析以下程序,執(zhí)行后的輸出結(jié)果是()
int f1(int x,int y)
{return x >y? x:y;
}
int f2(int x,int y)
{return x >y? y:x;
}
main()
{int a=4,b=3,c=5,d,e,f;
d=f1(a,b);d=f1(d,c);
e=f2(a,b);e=f2(e,c);
f=a+b+c-d-e;printf( "%d,%d,%d",d,f,e);
}
A)3,4,5
B)5,3,4
C)5,4,3
D)3,5,4
2.分析下面函數(shù)
swap(int *p1,*p2)
{ int *p;
*p=*p1;*p1=*p2;*p2=*p;
}
則該程序功能為()
A)交換*p1和*p2的值
B)正確,考試大提示:但無法改變*p1和*p2的值
C)交換*p1和*p2的地址
D)可能造成系統(tǒng)故障,因為使用了空指針
3.有以下程序
main()
{
int n[3],i,j;
for(i=0;i <3;i++)n[i]=0;
for(i=0;i <2;i++)
for(j=0;j <2;j++)n[j]=n[i]+1;
printf( "%d\n",n[1]);
}
程序運行后的輸出結(jié)果是()
A)2
B)1
C)0
D)3
4.有如下程序段:
int a=14,b=15,x;
char c=′A′;
x=(a &&b)&&(c<′B′);
執(zhí)行該程序段后,x的值為()
A)1
B)0
C)false
D)true
5.有以下程序
# include
struct NODE
{int num;struct NODE*next;}
main()
{struct NODE*p,*q,*r;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p- >num=10;q->num=20;r->num=30;
p- >next=q;q->next=r;
printf( "%d\n",p->num+q->next->num);
}
程序運行后的輸出結(jié)果是()
A)10
B)20
C)30
D)40
6.設(shè)有如下定義:
structsk
{ inta;
float b;
} data;
int *p;
若要使p指向data中的a域,正確的賦值語句是()
A)p= &a;
B)p=data.a;
C)p= &data.a;
D)*p=data.a;
7.若有如下說明:
unions
{char a[9];
intb;float c;
} t;
則下列敘述正確的是()
A)共用體變量t不能作為函數(shù)的參數(shù)
B)通過引用共用體變量名t可以得到成員的值
C)共用體變量t的地址和它的各成員的地址不同
D)共用體變量t所占的內(nèi)存長度等于它的各成員所占的內(nèi)存長度之和
8.若定義了以下函數(shù):
void sub(......)
{......
*t=(int*)malloc(10*sizeof(int));
......}
其中t是該函數(shù)的形參,要求通過t把動態(tài)分配存儲單元的地址傳回主調(diào)函數(shù),則形參t的正確定義應(yīng)該是()
A)int *t
B)int **t
C)long **t
D)long *t
9.以下對枚舉類型名的定義中正確的是()
A)enum a={one,two,three};
B)enum a {one=9,two=-1,three=200};
C)enum a={ "one","two","four"};
D)enum a { "nine","two","three"};
10.C語言規(guī)定如果調(diào)用fputc函數(shù)輸出成功,則返回值是()
A)1
B)輸出的字符
C)0
D)true
答案:1.C 2.D 3.D 4.A 5.D 6.C 7.A 8.B 9.B 10.B
int f1(int x,int y)
{return x >y? x:y;
}
int f2(int x,int y)
{return x >y? y:x;
}
main()
{int a=4,b=3,c=5,d,e,f;
d=f1(a,b);d=f1(d,c);
e=f2(a,b);e=f2(e,c);
f=a+b+c-d-e;printf( "%d,%d,%d",d,f,e);
}
A)3,4,5
B)5,3,4
C)5,4,3
D)3,5,4
2.分析下面函數(shù)
swap(int *p1,*p2)
{ int *p;
*p=*p1;*p1=*p2;*p2=*p;
}
則該程序功能為()
A)交換*p1和*p2的值
B)正確,考試大提示:但無法改變*p1和*p2的值
C)交換*p1和*p2的地址
D)可能造成系統(tǒng)故障,因為使用了空指針
3.有以下程序
main()
{
int n[3],i,j;
for(i=0;i <3;i++)n[i]=0;
for(i=0;i <2;i++)
for(j=0;j <2;j++)n[j]=n[i]+1;
printf( "%d\n",n[1]);
}
程序運行后的輸出結(jié)果是()
A)2
B)1
C)0
D)3
4.有如下程序段:
int a=14,b=15,x;
char c=′A′;
x=(a &&b)&&(c<′B′);
執(zhí)行該程序段后,x的值為()
A)1
B)0
C)false
D)true
5.有以下程序
# include
struct NODE
{int num;struct NODE*next;}
main()
{struct NODE*p,*q,*r;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p- >num=10;q->num=20;r->num=30;
p- >next=q;q->next=r;
printf( "%d\n",p->num+q->next->num);
}
程序運行后的輸出結(jié)果是()
A)10
B)20
C)30
D)40
6.設(shè)有如下定義:
structsk
{ inta;
float b;
} data;
int *p;
若要使p指向data中的a域,正確的賦值語句是()
A)p= &a;
B)p=data.a;
C)p= &data.a;
D)*p=data.a;
7.若有如下說明:
unions
{char a[9];
intb;float c;
} t;
則下列敘述正確的是()
A)共用體變量t不能作為函數(shù)的參數(shù)
B)通過引用共用體變量名t可以得到成員的值
C)共用體變量t的地址和它的各成員的地址不同
D)共用體變量t所占的內(nèi)存長度等于它的各成員所占的內(nèi)存長度之和
8.若定義了以下函數(shù):
void sub(......)
{......
*t=(int*)malloc(10*sizeof(int));
......}
其中t是該函數(shù)的形參,要求通過t把動態(tài)分配存儲單元的地址傳回主調(diào)函數(shù),則形參t的正確定義應(yīng)該是()
A)int *t
B)int **t
C)long **t
D)long *t
9.以下對枚舉類型名的定義中正確的是()
A)enum a={one,two,three};
B)enum a {one=9,two=-1,three=200};
C)enum a={ "one","two","four"};
D)enum a { "nine","two","three"};
10.C語言規(guī)定如果調(diào)用fputc函數(shù)輸出成功,則返回值是()
A)1
B)輸出的字符
C)0
D)true
答案:1.C 2.D 3.D 4.A 5.D 6.C 7.A 8.B 9.B 10.B