【牛客网】每天刷题--第二天
目录
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就是修饰指针本身,即指针本身是常量。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
