几道C语言选择题,帮忙确认下答案

17线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是_____
A)每个元素都有一个直接前件和直接后件
B)线性表中至少要有一个元素
C)表中诸元素的排列顺序必须是由小到大或由大到小
D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

18 以下程序的输出的结果是__ _______
int x=3;
main()
{ int i;
for (i=1;i }
ncre()
{ staic int x=1;
x*=x+1;
printf(" %d",x);
}
A) 3 3 B) 2 2 C) 2 6 D) 2 5

19 若以下定义:
struct link
{ int data;
struck link *next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构:
a b
data next data next
┌——┬——┐ ┌——┬——┐
│ 5 │ ┼——→ │ 9 │ \0 │
└——┴——┘ └——┴——┘
↑p
c
data next
┌——┬——┐
│ 7 │ │
└——┴——┘
↑q
指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是: __ _______
A) a.next=c; c.next=b; B) p.next=q; q.next=p.next;
C) q->next=p->next; p->next=&c; D) (*p).next=q; (*q).next=&b;

26 以下程序的输出结果是:__ _______
main()
{ int a=0,i;
for(i=;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
A) 31 B) 13 C) 10 D) 20

37下列程序的输出结果是:__ _______
struct abc
{ int a, b, c, s;};
main()
{ struct abc s〔2〕={{1,2,3},{4,5,6}}; int t;
t=s〔0〕.a+s〔1〕.b;
printf("%d\n",t);
}
A)5
B)6
C)7
D)8

38 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是:__ _______
A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+")
C) fopen("A:\user\abc.txt","rb") C) fopen("A:\\user\\abc.txt","w")

39若有定义: char *st= "how are you "; 下列程序段中正确的是 :__ _______
A)char a〔11〕, *p; strcpy(p=a+1,&st〔4〕);
B)char a〔11〕; strcpy(++a, st);
C)char a〔11〕; strcpy(a, st);
D)char a〔〕, *p; strcpy(p=&a〔1〕,st+2);

40下列程序的运行结果是:__ _______
void fun(int *a, int *b)
{ int *k;
k=a; a=b; b=k;
}
main()
{ int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
printf("%d %d", a, b);
}
A)6 3
B)3 6
C)编译出错
D)0 0

42.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是 :__ _______
A)n=(n*100+0.5)/100.0
B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0
D)n=(n/100+0.5)*100.0

54.对于以下的变量定义,表达式___ __不符合C语言语法。
struct node {
int len;
char *pk;
} x = {2, "right"}, *p = &x;
A)p->pk B)*p.pk C)*p->pk D)*x . pk

17:D
18:有语法错误
19:C
26:i的初始没有给出,有语法错误。
若给出i=0则结果为41,若给出i=1时结果为31.
37:程序有问题,输出值无法预料,本意可能是B
38:B
39:C
40:B
42:A
54:D
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-26
输出结果题,全有错,最多是符号问题,经改正编译通过。

17:D
18:语法错误 ,无法恢复判断
19:C
26:i的初始没有给出,若i=1时结果为A.
改正后代码:
void main()
{ int a=0,i;
for(i=1;i<5;i++)
{

switch(i)
{
case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
printf("%d\n",a);

}
printf("%d\n",a);
}
37:B
源码修正如下:
struct abc
{ int a, b, c, s;};
void main()
{
struct abc s[2] ={{1,2,3},{4,5,6}}; int t;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
38:B
39:C
40:B
源码修正如下:
void fun(int *a, int *b)

{
int *k;
k=a; a=b; b=k;
}
void main()
{
int a=3, b=6, *x=&a, *y=&b;
fun(x,y);
printf("%d %d\n", a, b);
printf("%d %d", *x, *y);
}

42:B //通过m的强制转换n为int
54:B
第2个回答  2008-05-26
17:D
18:有严重语法错误
19:C
26:i的初始没有给出,若i=1时结果为A.
37:B
38:B
39:C
40:B
42:B //整型才忽略小数部分
54:B //因为/和->的优先级高于*
第3个回答  2008-05-26
当然是C