c语言问题

有以下程序main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}程序运行后的输出结果是A:6,1B:2... 有以下程序
main()
{
int a,b,d=25;
a=d/10%9;b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是

A:6,1
B:2,1
C:6,0
D:2,0

请解释一下为什么选B
展开
 我来答
♂凡鸟♂fcb78ab
2011-01-01 · TA获得超过3711个赞
知道小有建树答主
回答量:586
采纳率:100%
帮助的人:610万
展开全部
a=d/10%9
也就是25/10%9
a是整数,所以除法默认整除
25整除10等于2,2用9取余等于2
所以a=2

b=a&&(-1)
也就是b等于a和-1进行与运算
a非零,-1非零,与是布尔运算,布尔运算非零为1
所以b为1
mao668316
2011-01-01 · TA获得超过247个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:180万
展开全部
首先d的初值为25,d/10=2(因为“/”运算符当操作数均为整型数时表示取整,即进行除法运算后丢掉小数部分)然后2%9=2(%表示取余数),所以a=d/10%9=2;
因为第一步已经算出a = 2,所以b=a&&(-1) = 1(&&表示逻辑与运算,即当两操作数均为非零时,表达式的真,计算机中用二进制数1表示为真)所以b=1.
仅供参考哈!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
__一只想飞的猫
2011-01-01 · TA获得超过400个赞
知道小有建树答主
回答量:234
采纳率:0%
帮助的人:0
展开全部
这是运算符的优先级问题,自己看书吧!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whdbsa
2011-01-01 · TA获得超过828个赞
知道小有建树答主
回答量:687
采纳率:0%
帮助的人:541万
展开全部
t是上一行定义的字符型的指针数组,newstr是一个长度为80位的数组,t=newst就是将newst[80]这个数组里面的内容赋给t,因为数组赋值只能是把数组在堆栈中地址的第一位赋给他,所以要用指针数组形式赋值。
/*char *fun(char *p, char c_begin, char c_end)//函数定义
{
char *t;
t=newstr;
while(*(p++)!=c_begin);//P如果不匹配第一个字符就继续执行以下部分并且自加一,寻下一位
p--;
while(*p!=c_end)//一直寻到和第二个字符匹配时才跳出循环
*(t++)=*(p++);//将匹配的部分赋给指针数组t
*(t++)=*(p++);
*t='\0';
return newstr */返回给t得到你的要求
上面这一部分就是你的函数要求(输入一个字符串后再输入2个字符,输出此字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符)

void main()//主函数部分
{
char str[80],c_begin,c_end;//定义数组来装这个字符串
char *fun(char *p,char c_begin,char c_end);//函数调用
scanf("%s",str);//输入字符串
getchar();
c_begin=getchar();
getchar();
c_end=getchar();
puts(fun(str,c_begin,c_end));//得到满足要求的字符串
}
楼主,我解释的这么清楚你都不知道的话我就太伤心了,你也可以去看看C语言基础书了!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式