C语言程序设计问题答疑材料2011年12月
- 格式:doc
- 大小:49.00 KB
- 文档页数:4
问题答疑材料
1、以下程序的输出结果是()
#define ADD(x)(x)+(x)
main(){
int a=4,b=6,c=7,d=ADD(a+b)*c;
printf(“d=%d”,d);
}
A d=70
B d=140
C d=280
D d=80
答:d=ADD(a+b)*c;=(a+b)+(a+b)*c=(4+6)+(4+6)*7=80
2、请问在自己的计算机上运行C语言程序,是否首先要安装C语言编译系统?
答:是的,你可以安装turbo C或者其它的C运行环境。
3、字符串“China”在内存中占用几个字节?
答:一个字符占一个字节,另外在字符串结尾处系统补了一个'\0'表示字符串结束,它也占一个字节,加上5个字符,所以字符串“China”在内存中占用6个字节。
4、语言中结构体与共用体的区别?
答:共用体是构造数据类型,也叫联合体。
它使几个不同类型的变量共占一段内存(相互覆盖),每次只有一个能使用。
结构体则不然, 每个成员都会有存储空间的,可以一起用。
5、int a[2][2]={1,2,3,4};
int *p;
p=a[0];
printf("%d",p[0]);
还有为什么p[0]前面不用*号呢?
答:p=a[0]表示p指向数组a[2][2]包含的一维数组a[0]的首地址,当执行printf("%d",p[0]);时,打印出p[0][0]的值,为1。
实际上可以写成等价表达式printf("%d",*p);因为*p与p[0]是等价的,所以p[0]前不用*。
6、已知在ASCII字符集中,字母A的序号为65,下面程序main(){char c=’A’;int
i=10;c=c+10;i=c%i;printf(“%c,%d\n”,c,i);}的输出结果为( )
选项:
a、75,7
b、75,5
c、K,5
d、因存在非图形字符,无法直接显示出来
答:A的ASCII对应的整形值为65,c=c+10,所以c=75,即为K,同时i=75/10=5
7、判断char型变量c1是否小写字母的正确表达式为
选项:
a、'a'<=c1<='z'
b、(c1>='a')&&(c1<='z')
c、(c1>=a)&&(c1<=z)
d、('a'<=c1)||('z'>=c1)
答:(c1>='a')&&(c1<='z')
8、C语言和C++有什么区别么?
答:C语言是结构化和模块化的面向过程的语言,C++语言是面向对象的程序设计语言。
C++语言是C语言的超集,也就是说C++是C语言的延伸。
区别应该说表现在编程思想上,C是基于过程的,强调的是程序的功能,以函数(功能)为中心。
C++是面向对象的,强调程序的分层、分类,
以抽象为基础,进行对象的定义与展示,即程序设计。
java语言也是一
种面向对象的语言。
9、怎么区分表达式和表达式语句?
答:C中,一个语句的最后面要有分号;,如果没有,就不是语句,所以表达式后面再加上分号,就成了表达式语句.
10、在C语言中运算符的优先级从高到低的排列顺序是什么?
答:按运算符优先级从高到低:单目运算符->双目运算符->三目运算符->赋值运算符->逗号运算符特别在双目运算符中,按运算符优先级从高到
低:算术运算符->移位运算符->关系运算符(其中== 和!=优先级又较低)->逻辑运算符(按位与-〉按位异或-〉按位或-〉逻辑与-〉逻辑或)!
11、设char c[5]={…a‟,‟b‟,‟\0‟,‟c‟,‟\0‟};则printf(“%s”,c);的输出是?
答:输出ab。
‘\0’就表示字符串结束,printf就不输出后面的字符。
12、求1!+2!+3!+。
+10!
#include <stdio.h>
void main(void)
{
float s = 0, t = 1;
int n;
for (n=1; ___; n++) {
___;
___;
}
printf(“1!+2!+3!+。
+10!=%f”, s);
答:#include<stdio.h>
void main()
{
float s=0,t=1;
int n;
for(n=1;n<=10;n++)
{
t=t*n;
s=s+t;
}
printf("1!+2!+3!+……+10!=%e\n",s);
}
13、语言中形参到实参传递是双向的吗?
答:不能。
实参对形参是单向的值传递。
也就是说形参中的值改变不会影响实参的值。
14、以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20;
printf("%d,%d,%d\n",x,y,z); }
答: x=020,以0开头,表示这是一个8进制的数字。
所以x=2*8^1+0*8=16。
y=0x20,以0x开头,表示这是一个16进制的数字。
所以x=2*16^1+0*8=32。
z=20,表示这是一个10进制的数字。
所以x=20
15、以下程序中,while 循环的次数是()。
#include <stdio.h>
void main(void)
{int i = 0;
while (i<10) {
if (i<1) continue;
if (i==5) break;
i++;
}
}
A) 1B) 死循环,不能确定次数C) 6D) 10
答:死循环,不能确定次数
因为i<0为假,所以执行continue,继续判定循环条件,成为死循环。
16、函数的定义不可以嵌套,但函数的调用可以嵌套?
答:C语言中,所有函数的定义都是互相平行和独立的,一个函数的定
义不能包含另一个函数的定义,即不允许函数的嵌套定义,但函数的调
用可以通过一个函数来调用另一个函数来实现,这就形成了函数的嵌套
调用。
17、指针数组和数组指针怎样区分?
答:指针数组,故名思义,就是指针的数组,数组的元素是指针;数组指针,同样,就是指向数组的指针。