1.若int i=10;执行下列程序后,变量i的正确结果是( D)//需要break 才会跳出,否则一直执行到最后
case 9:i+=1;
case 10:i+=1;
case 11:i+=1;
default:i+=1;
}
A: 10
B: 11
C: 12
D: 13
2.struct st
{int x;
int *y;
}*p;
int dt[4]={10, 20, 30, 40};
struct st aa[4]={50, &dt[0], 60, &dt[1], 70, &dt[2], 80, &dt[3]};
main()
{p=aa;
printf(“%d “, ++p->x);//->的运算级比++的运算级高=++(->)p
printf(“%d “, (++p)->x); //p的指向改变,指向下一位了
printf(“%d\n”, ++(*p->y));
}
51.60.21
执行下列语句后a和b的值分别为( C)。
int a, b, c;
a=b=c=1;
++a|| ++b && ++c; // ||前面条件符合时,后面的不用计算 && 前面的条件不符合时,后面的条件不用计算(短路原则)
A: 错误 1
B: 2 2
C: 2 1
D: 1 1
- 以下程序的输出结果是( D )
main()
{
int x=0,y=0,z=0;
if(x=y+z) //=为赋值符号,故条件为x!=0;
printf("***");
else
printf("###");
}
A: 有语法错误,不能通过编译
B: 输出:***
C: 可以编译,但不能通过连接,所以不能运行
D: 输出:###
5.有以下程序段
int k=0;
while(k=1) k++;
while循环执行的次数是( )。
A: 无限次
B: 有语法错,不能执行
C: 一次也不执行
D: 执行1次
//=为赋值符号,==才为判断关系符
6.对下述程序,正确的判断是(A )
main()
{
int x,y;
scanf("%d,%d",&x,&y);
if(x>y)
x=y;y=x; //有多条语句且下面有else时 要加花括号{}
else
x++;y++;
printf("%d,%d",x,y);
}
A: 有语法错误,不能通过编译
B: 若输入3和4,则输出4和5
C: 若输入4和3,则输出3和4
D: 若输入4和3,则输出4和5
7.main()
{
int i,j,x=0;
for(i=0;i<2;i++) //循环2次
{
x++;
for(j=0;j<=3;j++) //循环4次
{
if(j%2)continue; //2次跳过
x++; //实际加了2次
}
x++;
}
printf (“x=%d\n”, x);
}
一共加了(1+2+1)×2=8次,所以x=8
8.设变量定义为 int a[2]={1,3}, p=&a[0]+1;,则p的值是(B )。//p=&a[0]+1就是a[0]的地址加1,并赋值给p,
这样p指向的就是a[1],所以p的值就是3了
A:2
B:3
C:4
D:&a[0]+1
9.对于以下结构定义,++p->str中的++加在(A)
struct {
int len;
char *str;
} *p;
A:指针str上
B:指针p上
C:str指的内容上
D:以上均不是
->的优先级高于++,该表达式等价于++ (p->str)所以,++作用于p的成员变量str上。
所