1、若有說明int c;則while(c=getchar());是正確的C語句。 ( )
2、int i,*p=&i;是正確的C說明。 ( )
3、7&3+12的值是15。 ( )
4、while 1 i,j; 一定是錯(cuò)誤的C說明。 ( )
5、for( ; ; )S中的語句S必執(zhí)行無窮多次。 ( )
6、unsigned 和void 在C中都是保留的。 ( )
二、單項(xiàng)選擇題(每小題1分,共5分)
1、設(shè)有int i;則表達(dá)式i=1,++i,++i||++i,i的值為 ( )
A.1 B.2 C.3 D.4
2、設(shè)有int i;則表達(dá)式(i=1,i=10)?i++||++i:++i的值為 ( )
A.1 B.2 C.3 D.10
3、設(shè)有int a[ ]={10,11,12},*p=&a[0];則執(zhí)行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( )
A.10,11,12 B.11,12,12 C.10,12,12 D.11,11,12
4、設(shè)有int i, j, k; 則表達(dá)式i=1,j=2,k=3, i&&j&k 的值為 ( )
A.1 B.2 C.3 D.0
5、設(shè)有說明int s[2]={0,1},*p=s; 則下列錯(cuò)誤的C語句是 ( )
A.s+=1; B.p+=1; C.*p++; D.(*P)++;
三、填空題(每小題2分,共10分)
1、char *(*pa)[10];說明pa是______________。
2、表達(dá)式98&&8&&31&1的值為________________。
3、printf("%5.3f\n",123456.12345);輸出為_____________。
4、表達(dá)式~3&(2&3^4)的值為_______________。
5、若有說明int i,j,k;則表達(dá)式i=10,j=20,k=30,k*=i+j的值為_______________。
四、程序分析,給出下列各程序的執(zhí)行結(jié)果(輸出)
1、#include
int f(n)
int n;
{static int s=1;
while(n) s*=n--;
return s;
}
main()
{int i,j;
i=f(3); j=f(5);
printf("\nThe output of 5.1. is:\n\n");
printf("i=%d j=%d \n",i,j);
}
2、#include
trans(m,n)
int m,n;
{int i;
if (m>n){
i=m%n;trans(m/n,/);
}
else i=m;
if (i<10) printf("%d",i);
else printf("%c",'A'+i-10);
}
main( )
{int i;
printf("\nThe output of 5.3 is:\n\n");
printf("\n%d->-",-23);
trans(21,3);
printf("\n%d->",123);
trans(123,16);
}
3、#include
#include
typedef struct node
{
int d;
struct node *next;
}t_node;
create(h)
t_node **h;
{
int i,m=0;t_node *p,*q;
scanf("%d",&i);
while(i)
{
p=(t_node*)malloc(sizeof(t_node));
p->d=i>m?i:m;m=i;p->next=NULL;
if(*h)
{
q->next=p;
q=p;
}
else
{
*h=p;
q=p;
}
scanf("%d",&i);
}
}
void main()
{
t_node *h=NULL,*p;
create(&h);p=h;printf("\nThe output of 4.3 is:\n\n");
while(p)
{printf("%d",p->d);
p=p->next;
}
}
4、#include
main()
{ int m,n,sign,t;
scanf("%d%d",&m,&n);
while(m*n){
if (m>=0&&n>=0||m<=0&&n<=0) sign=0;
else sign=1;
m=m>0?m:-m; n=n>0?n:-n;
t=0;
while(n--) t+=m;
printf("\nThe result is:");
if (sign) printf("-");
printf("%d\n",t);
scanf("%d%d",&m,&n);
}
}
5、#include
int a[10]={1,2,3,4,5,6,7};
rev (m,n)
int *m,n;
{int t;
if(n>1)
{t=*m;*m=*(m+n-1);*(m+n-1)=t;
rev(m+1,n-2);
}
}
main()
{int i;
printf("\nThe output of 5.5 is:\n\n");
rev(a+2,6);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
rev(a,5);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
五、在下面程序中橫線處填上適當(dāng)字句,使其能正確執(zhí)行(6分)
[程序說明] 該程序用于計(jì)算cos x值,依據(jù)公式為:
要求輸入X(以角度計(jì))和誤差值epsil。當(dāng)epsil<=0時(shí)程序停止執(zhí)行。
#include
#define PI 3.141526
double ex(x,epsil)
float x,epsil;
{
double t,s; int n;
s=0.0; t=1.0; n=1;
while ((t>=0.0?t:-t)>epsil){
s+=t;___(1)___;___(2)___;
}
return s;
}
main()
{
float x,epsil;
printf("Input x,epsil:(epsil<=0 to quit)\n");
scanf("%f%f",&x,&epsil);
while(epsil>0.0){
x*=PI/180;
printf("e^%f=%f\n",x,ex(x,epsil));
printf("Input x,epsil:(epsil<=0 to quit)\n");
scanf("%f%f",&x,&epsil);
}
}
六、在下面程序中橫線處填上適當(dāng)字句,使其能正確執(zhí)行(18分)
[程序說明]該程序能計(jì)算兩個(gè)整數(shù)集合A與B的差,其中A與B的元素都以值的遞增次序存放中單鏈表中,A中的同一元素允許在單鏈表中出現(xiàn)多次,A與B的差也以值的遞增次序存于單鏈表內(nèi),但是同一元素不允許出現(xiàn)多次。假定調(diào)用diff前a,b的值已創(chuàng)建。
#include
typedef struct node{
int d;
struct node *next;
}tnode;
void diff(a,b,c)
tnode *a,*b,__(1)__;
{
int last_a; tnode *p;
*c=NULL; last_a=-9999;
while(a&&b){
if(a->d==b->d){
__(2)__;
a=a->next;
__(3)__;
}
else
if (a->d>d->d)
__(4)__;
else {
if (a->d!=last_a){
last_a=a->d;
p=(tnode *)malloc(sizeof(tnode));
p->d=last_a;
p->next=*c;
*c=p;
}
a=a->next;
}
}
while(a){
if(__(5)__){
last_a=a->d;
p->d=last_a;
p->next=*c;
__(6)__;
}
a=a->next;
}
}
void print(h)
tnode *h;
{
while(h){
printf("%d ",h->d);
h=h->next;
}
}
main()
{
tnode *a,*b,*c;
...
diff(a,b,&c);
print(c);
}
注:請北京考生注意!《C語言》將在2001年變更為《計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)》。消息來源:1999年9月19日《北京教育報(bào)》
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |