关于二级C语言公共基础知识的几道题~~~急~~~~!!

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:03:21
在做二级C语言的那个南开100题~第一套就有好几道不会的~~因为是自学又是刚学的~~所以希望大家帮忙解答时能说的详细些通俗些~~~先谢谢了~~~
1)main()
{
unsigned a=32768;int b;
b=a;
printf("b=%d\n",b);
} 程序执行后的输出结果是:
A)b=32768 B)b=32767 C)b=-32768 D)b=-1
PS:这道题我看到书上是有类似的 说什么b的范围是-32768~32767 具体解释没看太懂

2)void main()
{
int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
} 执行后的输出的结果是:
A.2 B.3 C.4 D.编译时有错,无结果
PS:这道题第一个if成立,不就应该输出d的值么?后面两个else if和else不就不用执行了么?怎么会选B呢?

3)void main()
{
int x,i;
for(i=1;i<=100;i++)
{
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
} 程序的输出结果是:
A.39 81 B.42 84 C.26 68 D.28 70
PS:这道题的那个if(++x%2==0)是先算++还是先算%?应该是先算%

第一题 选D

每种数据类型都有存储范围的,你想象成一个瓶子吧,
这个瓶子只能存10个数,你如果给了11个数就会溢出

第二题 选B

第一个a>b>c其实是一个表达式,是需要顺序计算的,
先计算a>b,因为为真,所以结果为1,接着计算1>c
结果就不用我说了吧,下面的也是类似的

第三题 选D

单目运算符优先级最高,也就是说先计算++,这是一个连着的if
判断,也就是说求的是这么一个i,这个i加1后能被2整除,再加1后
能被3整除,再加1后能被7整除,所以结果i是25和77,x最后等于28和70

第四题 选D

*(p+1)指向的是一个char,不能用%s打印的,这个题我是这样理解的,
不知道对不对

第五题 选C

我觉得就是选C啊

第六题 选C

我觉得他要考的意思是struct ST才是一个结构体类型,ST不是,反正NEW肯定是了

第七题 选B
顺着来就是,首先开始a=1,第一次循环后a=4,b=1 第二次循环a=7,b=2
第三次循环a=10,b=3,第四次 因为a>8,退出循环,b=4,打印b=3

第八题 选A

这里也是分配空间,p和q指向同一个空间,scanf首先给p赋值abc,又给
q赋值def,但p和q指向同一个地址,把abc给覆盖了,所以p也为def

以上是我自己的理解,不知道对不对,同样期待高手

第一题A unsigned 和 int都是4字节32768没有溢出
第二题B if(a>b>c) 是if((a>b)>c)如果 a>b为真就是1,然后1再和c比较,不成立,所以会执行下面的,不会是2
第三题D if(++x%2==0) 等价于:if(((++x)%2)==0) 其他一样
第四题D