1.(函数自己的调用)
解:
在main函数中,调用了fun函数,且fun(p),
在fun函数中,则x=9;-> q-fun(7);q-fun(5)......3-fun(1);
因为 if(x==0||x==1) return 3; 所以fun(1)=3;
通过逐步运算,得到 结果: 7
2.(函数模式:if else类型)
cin>>2 则属于 else if(x<5.0) 注意:定义的x 与 y是 float 类型;
所以: y=1.0/x ,最终y=0.5;
3.(概念题)
C++ 源程序默认扩展名: cpp;
4.
eg:
char *p="hello woorld"
cout<<p<<endl; 这里则输出: hello world
cout<<*p<<endl; 则输出 h;
所以,i=3时,p[i]为 sp, *p[i] 则为 s.
同理 i=1时, *p[i] 为b;
5.
共用体的 长度---在不同类型中,以最长的为主。
long ----4
char-----2
bool-----2
flaot-----4
short-----2
6.(双重循环)
第一重循环: 循环 2 次(其中:for(i=4;i;i-=2)中的i 是指 i!=0)
eg: while(x); x的判断条件就是 x!=0;
第二重循环: 循环 3次;
7.
注意结合方向,*p++ 从右向左结合。且时后缀的方式结合。----*p++ 相当于 (*p,p++)
所以:x[0]=2
x[1]=4;
x[2]=6;
8.
"\t\1026\\"
\t----跳格字符
\102---八进制 十六进制 \x
数字 6
\\ 显示 \
一共四个可见字符。
9.
指针p指向了字符数组s的首地址。
while(*p) ----判断首地址的值是否为0;
调用fun(p) .指针c指向p。
if()--判断大小写字母
‘a'-'A'=32
'a'=97,'A'=65;
所以 *c-=‘a'-'A' ,就是*c-32,将小写字母,变为大写字母。
所以最终:OPEN THE DOOR.
10.
注意定义的变量类型:
int m,n,v;
所以做除法的时候,1/2=0;(若定义v为float 则为0.5).
11.
(逗号表达式)
cout<<(m+=n,n)<<endl;
直接显示出n的值:5
12.
define 的函数形式定义,注意:不可随意添加括号,导致优先性混乱。
且sub(a++,b++)为后缀形式!
#define sub(x,y) (x)*x+y-> (a)*a+b; ->13
13.
判断条件while(num<=2)
所以:第一次输出2(因为num++)
第二次输出3(同理)
所以结果:23
14.
注意(是双重switch语句循环。)
且 switch(y) 该复合语句并没有在结尾加上 break;
所以,在执行完switch后,紧接着执行下一个 语句: case1:.....
所以:1,2
15.(注意:对数组元素的引用,其实就是解引用);
int a[12]={0},*p[3],i;
for(i=0;i<3;i++) p[i]=&a[i*4]; ----这一步首先要看懂第一步,int *p[3], 这个数组里的每一个成员都是指针类型,可以指向地址。
所以 p[i]=&a[i*4],就是 p这个数组里面每一个元素的指向。
所以,引用数组元素 要加 引用符号:*
所以,p[0],是错误的引用。
16.
首先要懂:凡是定义了字符串,则系统会默认为该字符串增加结束字符 '\0'.
且 char *x1="abcedf" x1是首先指向该字符串的首地址的,同理于x2。
当 x1++ ,则,字符串变为“bcdef'\0'”,当x2++,字符串变为“b'\0'”
所以,在字符串比较函数 strcmp中,x1中的b和x2中的b一样,但是x1中的c大于结束字符。
所以返回大于0 的值。
所以结果:1.
17.
注意循环条件 。while(1) 这个循环条件是是会一直循环下去的,除非遇到 else 的break;
按照 程序中的算法即可。
所以结果:1.6
18.
直接按照 f函数中的运算即可: x=1*1;
x=1*2=2......
所以结果:24.
19.(一下为修改过的正解)
A.形参与实参的类型不一样,因该以形参的值为主。
B.函数与返回值类型不一样,以函数的类型为主。
C.形参类型说明可以在函数体内,以形参类型为主
D.return 语句后面值可以为表达式。
20.(一下为修改过的正解)
A.任何一个对象只可以属于一个具体的类。
B.对象是类的一个实例。
C.一个类可以有多个对象。
D.类与对象的关系和数据类型和变量的关系相似。