A. 在c语言中,若有下列定义:char a[]=”123456”;
经过赋值,实际上通过编译程序生成的数组a[7]={ '1','2','3','4','5','6',0 }; b[6]={ '1','2','3','4','5','6' };
因为双引号引起来的字符串默认最后多一个字符串结束符0
所以A不对
B也不对
C也不对,因为b数组中没有字符串结尾标志的0,b中存放的是不合格的字符串,也叫非法字符串
D是对的
B. C语言的数组问题,若有定义:int a[2][3];以下选项中对a数组元素正确引用的是 A.a[2][!1] B.a[2][3]
选D。
一个二维数组可以被认为是一个带有 x 行和 y 列的表格。下面是一个二维数组,包含 2 行和 3列:
(2)在c语言若有定义扩展阅读:
数组使用规则:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
网络-数组
C. 在c语言中,若有定义:int a=5,b=2,c=1;则表达式a-b<c | |b = =c的值
先计算 a-b<c 即 5-2<1 不成立 值为假。
然后计算b==c 即 2==1 不成立, 值为假。
||两侧都是假。 结果为假。 即0.
D. 在C语言中,若有定义:static int x[2][3]={2,3,4,5,6,7},则表达式*x[1]的值为多少
答案该是5。
int x[2][3]表示2行3列
2 3 4
5 6 7
X[0]就表示第0行第0列的数
X[1]表示 第1行第0列的数
(4)在c语言若有定义扩展阅读
C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。
相同优先级运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。
而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)
合理使用优先级可以极大简化表达式。
E. 在C语言中,若有定义:int a=8,b=5,c;执行语句c=a/b+0.4;后,c的值为多少
c=1,因为a/b默认是取整计算!即5/8=1,c=1+0.4=1。计算过程中小数点之后的全部舍去。不是按四舍五入计算!
int类型在内存中占用了4个字节,也就是32位。int类型是有符号的,因此,32位并不会全部用来存储数据,使用最高位来存储符号,最高位是0,提示数据是正数,最高位是1,表示数据是负数,使用其他的31位来存储数据。
(5)在c语言若有定义扩展阅读:
C语言没有规定各种整数类型的表示范围,也就是说,没有规定各种整数的二进制编码长度,对于int和long,只规定了long类型的表示范围不小于int,但也允许它们的表示范围相同。具体C语言会对整型和长整型规定表示方式和表示范围。
标准函数INT(X)其基本功能是得到一个不大于X的最大整数,如INT(3.59)=3,INT(-2.01)=-3。INT函数是一个用途很广的函数,在教学中能有目的的分列其使用技巧。
F. C语言问题:若有定义
结果应该是:A
*(p++)->s 可以理解为 *((p++)->s)
而p++是先取值,所以取的是第一个结构体,s是一个char[].
所以 *((p++)->s) 是取第一个结构的s的第一个字母。
白写了半天,你采纳的是错的。
按照采纳的说法 *(p++)->s 应该解释为 (*(p++))->s
这时是不能使用 -> 操作符的,因为前边(*(p++))不是一个指针。
G. 在c语言中,若有定义:int a=5,b=4,c=3,x;x=a>b>c;则输出x的值为什么为0
a>b为true,然而C中没有true,只有-1,false为0。-1>c为false,自然就是0了。