【牛客网】每天刷题--第二天

 

目录

1.假定有语句“ int b[10], *pb; ”,则不正确的赋值为 ( )。

2.下方代码运行后的结果是

3. 在上下文和头文件均正常的情况下,程序输出结果为A,正确还是错误?

4.若二维数组a有m列,则在a[i][j]前的元素个数为

5.设a为int型变量,执行下列赋值语句后,a的取值分别是( )

a=125.534;   a=(int)125.521%4;    a=5<<2;

 6.阅读以下程序,当输入数据的形式为12a345b789↙,正确的输出结果为()

 7.下列说明中 const char *ptr;ptr应该是()


 

1.假定有语句“ int b[10], *pb; ”,则不正确的赋值为 ( )。

//对指针类型仍然可以使用 int -> 指针的转换char *p1 = 1; //可行
char *p2 = 1.0; //不可行
int a1 = 1;
const int a2 = 1;
float b1 = 1.0;
char *p3 = a1; //或 a2 或 b1; 都会报错char *p4 = "abc";char *p5 = p4 + 10; //可行
char *p6 = p4 + a1; //可行
int *p7 = &a1; //可行//综上所述,上述仅有整形常量到指针、由已有指针推断和已有变量推断三种形式是可行的,其他的都不行

2.下方代码运行后的结果是

#include
int main() {
    int a[3][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};
    int(*p)[4] = a, i, j, k = 0;
    for (i = 0; i < 3; i++)
        for (j = 0; j < 2; j++)
            k = k + *(*(p + i) + j);
    printf("%d", k);
    return 0;
}
 

答案:60

解析:

int (*p)[4]= a;说明 p是一个指针数组,长度为4,存储的是二维数组每行的地址。

p指向a的首地址 &a[0][0].

*(p+i) 相当于p[i],p[i]存储的是二维数组a的i行的数据地址。即p[i]=&a[i][0];

*(p+i)+j 存储的是a[i][j]的地址。*(*(p+i)+j)即是a[i][j]的值。

根据i j循环。i<3,j<2,即是取二维数组三行的前两列的值的总和。

1+3+9+11+17+19=60

 

3. 在上下文和头文件均正常的情况下,程序输出结果为A,正确还是错误?

int i = 20;
switch(i / 10){ case 2:printf("A"); case 1:printf("B"); } 

答案:错误

解析: 要结束case语句,后面要接一个break;

4.若二维数组a有m列,则在a[i][j]前的元素个数为

答案:i*m+j

解析:

对于元素a[i][j],其前面有i行,本行前面有j列(注意:行、列均是从0开

始),所以其前元素的个数为i*m+j。

 

5.设a为int型变量,执行下列赋值语句后,a的取值分别是( )

a=125.534;   a=(int)125.521%4;    a=5<<2;

答案:125,1,20

解析:

a=5<<2在C语言中表示将5的二进制数向左移2位,并将左移后的结果赋值给变量a。
详细过程如下:(以8位二进制表示)
5的二进制为:0000 0101
左移2位后变为:0001 0100(末尾补0),对应的十进制数为20,所以a=20
更一般的是,左移x位,相当于乘以2^x,如:
a = x<

 6.阅读以下程序,当输入数据的形式为12a345b789↙,正确的输出结果为()

答案:2,345,1,a

解析:

void main ()

{

char c1,c2;

int a1,a2;

c1 = getchar ();//读取第一个输入,c1='1'

scanf (“%3d”,&a1);//读取最多三个输入,转换合法的十进制数。 读到a发现不是0~9,于是 a1=2

c2=getchar();//读入一个字符,c2='a'

scanf (“%3d”,&a2);//读入三个字符,转为整型,a2=345

printf (“%d, %d, %c, %c\n”, a1, a2, c1, c2);

//输出各个值,为2,345,1,a

}

 7.下列说明中 const char *ptr;ptr应该是()

答案:指向字符常量的指针,指向字符串常量的指针。

解析:

如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部