C语言考试题

Python015

C语言考试题,第1张

我来回答下把:

1.1

2.9

解释:t = (a>b)?a:b等价于t = ((a>b)?a:b),这下应该知道了把

3.96 `(和~键是同一个键)

解释:a=9696是那个字符的ACSII码值的十进制表示,它的十六进制表示的ASCII码值为60,你可以对96进行除16取余法得到60,然后你去查看下字符的ASCII码 16进制表示的那个表就会发现,它对应的是这个字符,所以就是他了,别和单引号混淆就好,单引号的ASCII码十六进制表示为27

4.a[0] a[1] a[2]

5.1600

6.文本文件 二进制文件 [这个拿的不是很准]

7.fopen fclose fseek

下面:

1.C

解释:a+=a-=a*=a,首先要知道+=,-=,*=的优先级是相同的,但是他们的结合性是由右向左的,所以,他相当于a+=a-=(a=a*a),你还要知道,这是在同一条语句中多次修改同一个变量的值,这里有结合性,可以保证,但是有的时候并不可以,因为语言中明确规定,求值顺序未定义,一般尽可能不要在同一条语句里多次修改同一个变量的值,有的时候还和编译器有关的,a+=a-=(a=a*a)相当于a+=(a=a-(a=a*a)),在a=(a+(a=a-(a=a*a))),所以为0

2.B

3.D

解释:你定义一个带参数的宏#define ADD(x) (x)+(x)

你要知道,宏替换是机械化的替换,不会很智能化的,也就是

在这里,替换的时候是替换成了这样d=(a+b)+(a+b)*c所以最后就是80了

4. A

解释:这样理解把, char a[5]char *p=a这个是把数组的首地址赋给指针p来初始化指针,你后面再加一句p="abcd"不就是对指针的赋值吗,使指针不再指向数组的首地址,而是指向了字符串的首地址了.相信char *p="abcd"很常见把,呵呵...

5.C

解释:因为k=2,然后执行关系表达式k==0,结果显然判断结果为假,所以不执行循环体

6.C

7.A

指针是不能相加的

8.D

解释:这个应该好好解释下,这个题还好了

struct st{ int nstruct st *next}

static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’},*pp=&a[0]

A p++->n B p->n++ C (*p).n++ D ++p->n

分析:首先你要知道,这是定义了一个结构体数组,这个static struct st a[3]={5,&a[1],7,&a[2],9,‘\0’}写的易读一点就是static struct st a[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},是不是明了了好多.

你做这个题目之前还需要明白一点,即箭头操作符的优先级高于++运算符,然后分析选项

选项A.p++是后缀加,所以执行(p++)->n(即p++->n) 相当于执行p->n,即得到的值是5

选项B. p->n++相当于(p->n)++,由于是后缀加,所以得到的值也是5

选项C.(*p).n++ 就是相当于((*p).n)++,更相当于(p->n)++,所以和上面的是一样的,也是5,为什么它相当于它呢,这就要你看看箭头操作符的由来了,箭头操作符的由来就是为了结合解引用操作符*和点操作符.于一起的.来简化书写,增加可读性

选项D.++p->n 相当于++(p->n),由于是前缀加,所以得到的值为6了

9.C,选择W会格式化

10. B ,数组名其实就相当于一个指针,这里对指针做运算,加1使指针下移

写出运行结果:

1.

10623-9003

2.

6 7 8

填空题:

1.

#include <stdio.h>

#include <math.h>

2. 2

3.break

4.k+1

编程题:

1.代码如下:

#include<stdio.h>

int main()

{

int i,n

long s=1

scanf("%d",&n)

for(i=1i<=ni++)

s*=i

printf("%ld",s)

return 0

}

2.代码如下

#include<stdio.h>

int main()

{

int i,s=0

for(i=1i<=100i++)

s+=i

printf("%d",s)

return 0

}

应该没错把,楼主有什么问题可以发消息给我

main函数

scanf函数,printf函数

-60

6 ,4, 2

&& , || , !

B   66

2   1

6

main

5