c语言程序设计的基础题目求教,请给解析(多追积分)

1:已知a=13,b=6,a%b的十进制数值为()
2:设x的值为15,n的值为了2,则表达式x%=(n+3)运算后的x的值是()
3:int x=y=4,z=2;x=y==z;则x的值为()
4:若有定义:int a=10,b=9,c=8;接着顺序执行后下列语句是,变量b中的值是()
c=(a-=(b-5));
c=(a%11)+(b=3);
5:int x=2,y=2,z=0;则表达式的x==y>z的值为()
6:若有以下定义和语句int a[4]={0,1,2,3},*p;
p=&a[2];则*--p的值是()
(以上各题请解释所有特殊符号的意思,本人是初学者)
最新回答
噢耶

2024-04-24 02:10:11

1:已知a=13,b=6,a%b的十进制数值为()
a%b,整数%整数,表示求余数,因此13%6=1

2:设x的值为15,n的值为了2,则表达式x%=(n+3)运算后的x的值是()
x%=(n+3)相当于x=x%(n+3),x%=n+3也表示x=x%(n+3),类似的有+=,-=,*=,/=
因此x=x%(n+3),x=15%5,x=0.

3:int x=y=4,z=2;x=y==z;则x的值为()
x=y=4,等号是右结合的,也就是这种情况下要从右向左计算,因此相当于y=4;x=y;
而x=y==z,==的优先级比=高,因此相当于x=(y==z),y=4,z=2所以y==z不成立,所以y==z这个表达式的值是false,也就是0,所以x=0

4:若有定义:int a=10,b=9,c=8;接着顺序执行后下列语句是,变量b中的值是()
c=(a-=(b-5));
c=(a%11)+(b=3);
由上面的几题为基础,
c=(a-=(b-5))相当于c=(a=a-(b-5)),c=(a=10-(9-5)),c=(a=6),所以a=6,c=6,b=9(表达式b-5并没有改变b的值)
c=(a%11)+(b=3)相当于,c=6%11+3=6+3=9,所以a=6,c=9,b=3

5:int x=2,y=2,z=0;则表达式的x==y>z的值为()
x==y>z这个一个复合逻辑表达式,>优先级高于==,所以相当于x==(y>z),y>z成立,所以y>z==1,x==1不成立,所以表达式的值为0

6:若有以下定义和语句int a[4]={0,1,2,3},*p;
p=&a[2];则*--p的值是()
p=&a[2];表示p是a[2]的地址
*--p相当于*(--p),就是先将p减1,也就是a[1]的地址,然后用*操作符取出地址中的值,也就是1
一页

2024-04-24 01:01:43

你的题大部分是关于运算符的,建议多看看C 语言书的相关章节

1. 答案是1. %表示求余数,13%6 , 就相当于13/6 = 2 余 1,13%6 = 1.

2. 答案是0. 根据优先级,先算n+3 = 2+3 =5; 然后 x % = 5,相当于x = x%5;x%5 = 15%5 =0;所以 x =0;

3.答案是0. 求x的值,实际上是算x=y==z, 根据优先级相当于x=( y==z );先算y==z, 运算符 == 是一个逻辑运算的符号,如果两边相等,它的值是1,如果不等就是0;所以(y == z) 就是0; 然后 x = 0, 注意这个式子中的 = 也是一个符合不是等号,叫赋值号, 把 0 赋给 x, 最终 x 值为 0.

4.答案是3. 可以不用管第一句,关键是b =3,因为是赋值,所以这句话完后b 就等于3了,其他的东西对b 的值没影响。

5.答案是0. 这道题只有两种答案1 或者0;前面我们提到==是逻辑运算符,>也是逻辑运算符,根据优先级相当于 x==( y>z ),明显y>z,所以(y>z)的值是1;
所以答案就相当于 x==1, 但x不等于1,所以(x==1)这个式子的值就是0.

6.答案是1. 这个估计你还没学, int a[4]={0,1,2,3},定义了一个数组, *p定义了一个指针变量p; p=&a[2],表示p指向数组里下标为2的元素,也就是 {0,1,2,3}之中的2; *--p 按优先级是*(--p),所以先--p,变成了&a[1], *表示取该指针所指向的值,所以 *(&a[1]) = 1 . 这个没懂没关系,算是对初学者比较难的了。
赶花期

2024-04-24 01:39:06

1:已知a=13,b=6,a%b的十进制数值为(1) // 13/6=2余1 (&就是取余数的意思)
2:设x的值为15,n的值为了2,则表达式x%=(n+3)运算后的x的值是(0);
//即x=15%(2+3)
3:int x=y=4,z=2;x=y==z;则x的值为(0)
// y=4,z=2; y==z返回值为假,即0; (== 的意思是比较,返回值是一个bool值)

4:若有定义:int a=10,b=9,c=8;接着顺序执行后下列语句是,变量b中的值是(3)
c=(a-=(b-5));
c=(a%11)+(b=3);
// 只看最后(b=3)就够了,只有这句改变了b的值
5:int x=2,y=2,z=0;则表达式的x==y>z的值为(0)
// >号的优先级更高,即先算 y>z值为真-即值为1
//再算 x==1;的得值为假,即最后答案为0

6:若有以下定义和语句int a[4]={0,1,2,3},*p;
p=&a[2];则*--p的值是(1);
//p被赋值为a[2]的地址,则 --p的值是 a[1]的地址,
//它指向的内容就是a[1]即*--p的值是1;
//&是取地址的意思,*是通过地址获取对象的意思
如果再要详细的解释就去看书吧,这边说没意思,这边来就是基础知识
忍不了忘不掉

2024-04-24 01:13:16

1:已知a=13,b=6,a%b的十进制数值为()
%是取余运算符 ,注意两边的操作数必须是整数,13%6 商就是2 余数就是1 ,所以结果为1
2:设x的值为15,n的值为了2,则表达式x%=(n+3)运算后的x的值是()
%=是复合运算符,展开就为x=x%(n+3) ; 15%5 商是3 余数为0
3:int x=y=4,z=2;x=y==z;则x的值为()
x=y是赋值表达式,优先级最低,y==z是判断y是否等于z,如果不等,则表达式值为假(0);否则为真(1); y!=z 所以x的值为0
4:若有定义:int a=10,b=9,c=8;接着顺序执行后下列语句是,变量b中的值是()
c=(a-=(b-5));
c=(a%11)+(b=3);
c=(a=a-(b-5)) 所以a=6;c=6;
c=(a%11)+(b=3) c=6+3=9;b还是等于9,所有表达式中并没有改变b的值;
5:int x=2,y=2,z=0;则表达式的x==y>z的值为()
关系运算符优先级要比等于运算符高,所以先判断y>z; 值为真,所以等于1;
再判断 x==z ??值为假,整个表达式值为0;
6:若有以下定义和语句int a[4]={0,1,2,3},*p;
p=&a[2];则*--p的值是()
p=&a[2] 所以*p=2;
*--p;指针运算符和自减运算符优先级相同,看结合性,是从右到左;所以相当于*(--p) 先减 后取值 结果等于1
少年先疯队队长

2024-04-24 13:34:09

1 %是求余数 ( 1)13除以6余数为1
2 (0)这里先算()里面的n+3=5然后15除以5余数为0赋值给X
3 (0)这里Y不等于Z所以这里为假还有记住==后结果只能为0或1(==就是我们数学中的等于)(=是我们说的给它一个数但可以变的)

4 (3)一开始b=9但是后来c=(a%11)+(b=3);
这里有一个b=3所以最后b=3了记得b它是一个变量

5(0)第五题和第三题差不多
6 (1)这题的*P是一个指针变量
然后将a[2]的地址赋给P
然后又有一个(--P)这里就是P先自减1(也就是退1)所以P现在是a[1]的地址了

*P就是输出它的值
如果是*P--那么结果就是2了
因为P--是先计算后自减
--P则是先自减后计算