最基础的C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:16:36
1:为什么while (!x)语句等同于while(x==0);//例如X==0的时候那上面的语句转换还能等同于么?
//!0 不就等于 1么?
2:main()
{
int a=1,b=10;
do
{b-=a;a++;
}while(b--<0); //为什么执行语句的时候 得到 a=2;b=8;
程序循环了几次。执行的方式
printf("%d%d",a,b); 我改变while语句里判断语的值时,为什么系统
是一样的运行结果;

3:#include<stdio.h>
main()
{
char c='A';
if('0'<=c<='9') printf("YES");//里面的判断逻辑有什么错误 为什么执 语句为形 YES;
else printf("NO");
}
执行语句 非0就执行,0就退出;
但是为什么后面的语句不会执行;

括号里的语句不是判断执行语句
逻辑判断错误;
这样理解可以么?
3:main()
{
int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0
else c+=1;
printf("%d",c); ///

第一题 你的问题我没太看明白 希望把原来问题的代码附上 while(a)系统在编译的时候 是看a的值 是等于 1 或者是什么别的

第二题 按照你的代码 输出的结果 是2 9 程序 进行DO WHILE 循环 只能执行第一次 因为在执行完第一次之后 b的值 并没有达到你预期想要的值 即 <0自然只能执行一次

第三题
判断语句是有错误的 应该是 if(c<='9'&&c>='0')
C语言里面没有你所写的那种式子 必须拆开写
首先 我希望给你解释一下 对于C语言来说 他不认识 什么字符之类的 对于一个变量 如果你是声明成了 char类型的 他都要转换为 这个变量对应的 ASC 码 这段代码的意思就是说 如果 代表A的 ASC码 的数值 介于 代表0和9的ASC码的数值之间 那么就输出YES
否则就输出NO
你可以去查一查ASC码 一般的C语言的书后面都有的

下面的第三题
按照你写的代码
if(b<0) c=0
else c+=1;
根本没有执行

第四题
for语句执行完 第一个循环的 i+=2 j--之后 去拿这两个数 跟i<j匹配

如果能匹配 就运行循环 否则就不循环
这个时候的i j 是上一个循环的 i+2 j-1

希望对你有所帮助

while(x) 实际上是 x=1 所以 while(!x) 就是x==0

1.当x==0时,!x的确是1,而x==0这个表达式不也是1嘛? 再简单点说,当x是0的时候,!x和x==0这两个表达式的值都是1,而当x非0时,两个表达式的值都是0,所以他俩一样?明白了么?

2.执行了一次,b-=a就是b=b-a所以这时候b是9,然后a++,所以a=2,最后在while判断的时候,b又自减一次(b--),变成8. 你改变了什么值我不知道,我只知道你如果把0改成9的话,就会死循环。 这样写还不明白?

3.根本不明白你说的什么。你if的判断表