第六章
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网络空间、营销软件、网站建设、灌云网站维护、网站推广。
指针变量的本质是用来放地址,而一般的变量是放数值的。
int *p 中 *p和p的差别:
*p可以当做变量来用;*的作用是取后面地址p里面的数值
p是当作地址来使用。
*p++ 和 (*p)++的之间的差别:改错题目中很重要
*p++是 地址会变化。
(*p)++ 是数值会要变化。
三名主义:(考试的重点)
数组名:表示第一个元素的地址。数组名不可以自加,
他是地址常量名。(考了很多次)
函数名:表示该函数的入口地址。
字符串常量名:表示第一个字符的地址。
第七章
1一维数组的重要概念:
对a[10]这个数组的讨论。
1、a表示数组名,是第一个元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者
是a=a+2赋值的都是错误的。
3、a是一维数组名,所以它是列指针,也就是
说a+1是跳一列。
对a[3][3]的讨论。
1、a表示数组名,是第一个元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出现a++,或者
是a=a+2赋值的都是错误的。
3、a是二维数组名,所以它是行指针,也就
是说a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量,不可以对
它进行赋值操作,同时它们都是列指针,a[0]+1,
a[1]+1,a[2]+1都是跳一列。
5、注意a和a[0] 、a[1]、a[2]是不同的,它们的
基类型是不同的。前者是一行元素,后三者是一列元素。
二维数组做题目的技巧:
如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。
步骤一:把他们写成:
第一列 第二列 第三列
a[0]à 1 2 3 -第一行
a[1]à 4 5 6—第二行
a[2]à 7 8 9-第三行
步骤二:这样作题目间很简单:
*(a[0]+1)我们就知道是第一行的第一个元素往后
面跳一列,那么这里就是a[0][1]元素,所以是1。
*(a[1]+2)我们就知道是第二行的第一个元素往后面
跳二列。那么这里就是a[1][2]元素,所以是6。
一定记住:只要是二维数组的题目,一定是写成如
上的格式,再去做题目,这样会比较简单。
数组的初始化,一维和二维的,一维可以不写,
二维第二个一定要写
int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。
但int a[4][]={2,3,4}非法。
二维数组中的行指针
int a[1][2];
其中a现在就是一个行指针,a+1跳一行数组元素。
搭配(*)p[2]指针
a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组
元素。搭配*p[2]指针数组使用
还有记住脱衣服法则:
a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再
可以变成 *(*(a+2)+3)
1、顺序、分支、循环等基本语句;
2、char、int、double、float等基本数据类型;
3、带参数宏定义和函数的区别;
4、指针和数组的区别,尤其注意下指针数组和数组指针;
5、函数指针和指针函数;
6、结构体和联合体以及自定义类型typedef的应用;
7、printf、scanf、getchar、putchar、fopen、fclose、fgetc、fputc等基本库函数的应用;
8、malloc、calloc、realloc、free等内存管理函数的应用;
9、函数的声明和定义;
10、注意C语言的基本单位是函数;
还有很多,因为篇幅限制不能一一例举,但上面提到的10点都是很多考试和面试中经常出现的。
有时间可以看看这三本书《C和指针》、《C陷阱和缺陷》、《C专家编程》,C语言的大部分问题都可以在这三本书中找到答案,熟练掌握着三本书的内容再加上一些实际项目将没有人可以轻易用C语言的问题为难你。
主要是笔试和上机:
理论先行
虽是上机考试,仍需以理论知识为基础,所以必须将C语言教材从头到尾学习一遍(应选择权威教材),如谭浩强的C程序设计(没有的可以到 下载),对C语言的基本概况做到心中有数。
学完教材后,选取一些有代表性的编程范例,如经典百例或南开百题( ),将其语句逐条理解透彻。同时还须注意一点,看的懂未必等于自己就会编写,应当自己尝试默写,从而找出知识薄弱点、思维盲点。
要养成一些良好习惯,比如,代码书写格式使用规范的锯齿形,尽量使用完整表达。如果采用简化方式,虽然不一定影响运算结果,但有的考试评分标准是按答题要点给分,所以还是不省为妙。
以下是学习C语言过程中容易出现的问题:
1.函数、变量使用前未定义。
2.混淆“=”和“= =”。
3.语句后或预定义的函数名后漏掉分号。
4.将else拼写成esle、continue拼写成contiune。
5.括号搭配错误。
6.首地址理解为1。
7. p++与++p区别不清。
8. break、continue运用不当。
9.误将单引号用于字符串常量,将双引号用于字符常量。
10. else分句中嵌套条件语句时,漏掉了“if”。
上机实践
虽然考点、培训点一般都提供模拟上机,但毕竟时间、地点受到限制,不能保证充分的练习时间,因此很多考生都希望能在自家电脑上进行操作实践,下面具体谈谈如何实现在个人电脑上进行练习的方法。
一、简易环境练习
系统要求:Windows系统
需用软件:Turbo C 2.0 ( )
TC软件虽然不是标准的Windows程序,但在Windows环境下依然可以使用。为使软件处于理想运行状态,运行tc.exe后需要做一些设置:
1.按“汉”按钮,否则会出现部分乱码。
2.点击属性按钮,在程序选项卡的“工作目录”栏中根据上一命令行填入程序所在目录,“运行”栏选择最大化,选择“退出时关闭”。
设置好后即可依照练习册输入习题,进行编译调试。编程中用到的处理数据一般需自建。为了提高效率,可从网上下载习题。这里应留意一些下载习题中的问题,比如遗漏字符、录入错误等,还有一些不易发现的情况,像双引号的字体不标准、文件扩展名前的句号成了逗号、甚至一些看似无内容的空行中包含着某些ASCII码,都会影响编程结果。
二、全真环境练习
系统要求:DOS系统
需用软件:Turbo C 2.0、UCDOS、上机模拟软件
经过基础阶段学习后,再来进行针对等级考试的练习,这就需要用到模拟软件了。市面上模拟软件很容易买到,其操作界面与正式考试完全一样,还往往汇集了丰富的题库和答案、源程序、输入数据,并可进行自我评分。有的还提供笔试题知识点查询,介绍考试技巧等。
使用模拟软件前,应先安装UCDOS(这与真实考试要求一样,须选5.0以上版本,而且最好采用正式版,否则可能影响软件使用)。通常情况下在Windows环境下是无法使用模拟软件的,经过一些专业设置后虽可实现,但仅限于Windows 9X操作系统,而且设置不当易使系统崩溃,所以笔者建议还是在纯DOS环境下使用为妥。
C语言基础知识点集锦
【知识点1】C程序
C语言程序结构有三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)
【知识点2】main函数
每个C语言程序中main 函数是有且只有一个。读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
【知识点3】存储形式
计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为 0 或者1构成。 byte 是指字节, 一个字节 = 八个位。数据存放的位置就是它的地址。
【知识点4】注释
是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
【知识点5】书写格式
每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。
【知识点6】标识符
合法的用户标识符考查:
合法的要求是由字母,数字,下划线组成。有其它元素就错了。
并且第一个必须为字母或则是下划线。第一个为数字就错了。
C语言标识符分如下3类
(1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。
(2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。
(3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。
关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If 是可以做为用户标识符。因为If 中的第一个字母大写了,所以不是关键字。
【知识点7】实型数据
实型数据的.合法形式:小数形式和指数形式。掌握判定指数形式合法性。
2.333e-1 就是合法的,且数据是2.333×10-1。
【知识点8】字符
字符数据的合法形式::
1 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
0 的ASCII 数值表示为48,a 的ASCII 数值是97,A的ASCII 数值是65。
字符型和整数是近亲:
char a = 65 ;
printf(“%c”, a); 得到的输出结果:a
printf(“%d”, a); 得到的输出结果:65
一般考试表示单个字符错误的形式:65 "1"
字符是可以进行算术运算的,记住: 0-0=48
大写字母和小写字母转换的方法: A+32=a 相互之间一般是相差32。
【知识点9】整型数据
整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节:
考试时候一般会说,在16 位编译系统,或者是32 位系统。碰到这种情况,不要去管,
一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节就可以了。
【知识点10】转义字符
转义字符的考查:
在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x 必须存在。
在程序中 int a = 06d, 是一个八进制的形式。
在转义字符中, ’x6d’ 才是合法的,0 不能写,并且x 是小写。
‘141’ 是合法的, 0 是不能写的。
‘108’是非法的,因为不可以出现8。
【知识点11】算术运算
算术运算符一共有+、—、*、/、%这五个。%符号两边要求是整数。不是整数就错了。
三种取整丢小数的情况:不是四舍五入是舍掉小数部分。
1、int a =1.6;
2、(int)a;
3、1/2; 3/2;
【知识点12】强制类型转换
将一个运算对象转换成指定类型,格式为(类型名)表达式
一定是 (int)a 不是 int(a),注意类型上一定有括号的。
注意(int)(a+b) 和(int)a+b 的区别。前是把a+b 转型,后是把a 转型再加b。
【知识点13】赋值
是表达式就一定有数值。
赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。
复合赋值运算符:注意:a*=m+2 是 a=a*(m+2)
自加、自减表达式:假设a=5,++a(表达式的值为6), a++(表达式的值为5);
j=a++;等价于j=a;a=a+1; 而j=++a;等价于a=a+1;j=a;。
考试口诀:++在前先加后用,++在后先用后加。
【知识点14】逗号运算
逗号表达式:优先级别最低; 表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4。
【知识点15】数制转换
一定要记住二进制 如何转换成十进制。
八进制是没有8 的,逢8 进1,018 的数值是非法的。
1、函数如何定义,函数有什么分类,函数的基本语法知识,函数编写常见的错误。
2、记住一些常用的函数,其他的函数需要用到的时候查表就ok了。
c语言的函数知识其实不难(个人认为),难点在c语言的指针(指针是c语言的灵魂,学不好等于没学c语言)指针和数组、指针和函数、指针和结构体、动态内存分配等混合内容知识比较难,并且c语言循环控制一定要会。楼上所说的链表,需要学习数据结构这门课。
希望能帮助到楼主
您好,SA团队给出的答案(直接给你试题看看吧,这样比较详细)2009年9月全国计算机等级考试笔试试卷
二级公共基础知识和C语言程序设计
(考试时间90分钟,满分100分)
一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题1分,70分)
(1)下列数据结构中,属于非线性结构的是( )。
A)循环队列 B)带链队列
C)二叉树 D)带链栈
(2)下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
A)循环队列 B)栈
C)队列 D)二叉树
(3)对于循环队列,下列叙述中正确的是( )。
A)队头指针是固定不变的
B)队头指针一定大于队尾指针
C)队头指针一定小于队尾指针
D)队头指针可以大于队尾指针,也可以小于队尾指针
(4)算法的空间复杂度是指( )。
A)算法在执行过程中所需要的计算机存储空间
B)算法所处理的数据量
C)算法程序中的语句或指令条数
D)算法在执行过程中所需要的临时工作单元数
(5)软件设计中划分模块的一个准则是( )。
A)低内聚低耦合B)高内聚低耦合
C)低内聚高耦合D)高内聚高耦合
(6)下列选项中不属于结构化程序设计原则的是( )。
A)可封装 B)自顶向下 C)模块化 D)逐步求精
(7)软件详细设计产生的图如下:
begin
1
该图是( )。
A)N-S图 B)PAD图
C)程序流程图D)E-R图
(8)数据库管理系统是( )。
A)操作系统的一部分B)在操作系统支持下的系统软件
C)一种编译系统D)一种操作系统
(9)在E-R图中,用来表示实体联系的图形是( )。
A)椭圆形 B)矩形 C)菱形 D)三角形
(10)有三个关系R,S和T如下:
2
R S T
A
B
C
A
B
C
A
B
C
a
1
2
d
3
2
a
1
2
b
2
1
b
2
1
c
3
1
c
3
1
d
3
2
其中关系T由关系R和S通过某种操作得到,该操作为( )。
A)选择 B)投影 C)交 D)并
(11)以下叙述中正确的是( )。
A)程序设计的任务就是编写程序代码并上机调试
B)程序设计的任务就是确定所用数据结构
C)程序设计的任务就是确定所用算法
D)以上三种说法都不完整
(12)以下选项中,能用作用户标识符的是( )。
A)void B)8_8 C)_0_ D)unsigned
(13)阅读以下程序
# include stdio.h
main()
{ int case; float printF;
printf ("请输入2个数:");
scanf ("%d %f", case, printF);
printf ("%d %f\n", case, printF);
}
该程序在编译时产生错误,其出错原因是( )。
A)定义语句出错,case是关键字,不能用作用户自定义标识符
B)定义语句出错,printF不能用作用户自定义标识符
C)定义语句无错,scanf不能作为输入函数使用
D)定义语句无错,printf不能输出case的值
(14)表达式:(int)((double)9/2)-(9)%2的值是( )。
A)0 B)3 C)4 D)5
(15)若有定义语句:int x=10;,则表达式x-=x+x的值为( )。
A)-20 B)-10 C)0 D)10
(16)有以下程序
# include stdio.h
main()
{ int a=l, b=0;
printf ("%d,", b=a+b);
printf ("%d\n", a=2*b);
}
程序运行后的输出结果是( )。
A)0,0 B)1,0 C)3,2 D)1,2
(17)设有定义:int a=l, b=2, c=3;,以下语句中执行效果与其它三个不同的是( )。
A)if(ab)c=a,a=b,b=c; B)if(ab){c=a,a=b,b=c;}
C)if(ab)c=a;a-b;b=c; D)if(ab){c=a;a-b;b=c;}
(18)有以下程序
# include stdio.h
3
main()
{ int c=0, k,
for(k=1; k3; k++)
switch (k)
{ default: c+=k;
case 2: c++; break;
case 4: c+=2; break;
}
printf("%d\n", c);
}
程序运行后的输出结果是( )。
A)3 B)5 C)7 D)9
(19)以下程序段中,与语句:k=ab?(bc ? 1 : 0) : 0;功能相同的是( )。
A)if((ab) (bc)) k=l; B)if((ab)||(bc))k=l;
else k=0; else k=0;
C)if(a=b)k=0; D)if(ab) k=l;
else if(b=c)k=1; else if(bc)k=1;
else k=0;
(20)有以下程序
# include stdio.h
main()
{ char s[]={"012xy"}; int i, n=0;
for (i=0; s[i]!=0; i++)
if(S[i]='a' s[i]='z') n++;
printf("%d\n",n);
}
程序运行后的输出结果是( )。
A)0 B)2 C)3 D)5
(21)有以下程序
# include stdio.h
main()
{ int n=2,k=0;
while (k++ n++2);
printf("%d %d\n",k,n);
}
程序运行后的输出结果是( )。
A)0 2 B)1 3 C)5 7 D)l 2
(22)有以下定义语句,编译时会出现编译错误的是( )。
A)char a='a'; B)char a='\n'; C)char a='aa'; D)char a='\x2d';
(23)有以下程序
# include stdio.h
main()
{ char c1,c2;
c1='A'+'8'-'4';
c2='A'+'8'-'5';
printf("%c,%d\n",c1,c2);
4
}
已知字母A的ASCII码为65,程序运行后的输出结果是( )。
A)E,68 B)D,69 C)E,D D)输出无定值
(24)有以下程序
# include stdio.h
void fun (int p)
{ int d=2;
p=d++; printf("%d",p);}
main()
{ int a=1;
fun(a); printf("%d\n",a);}
程序运行后的输出结果是( )。
A)32 B)12 C)21 D)22
(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。
# define MIN -2147483647
int findmax (int x[],int n)
{ int i,max;
for(i=0;in;i++)
{ max=MIN;
if(maxx[i]) max=x[i];}
return max;
}
造成错误的原因是( )。
A)定义语句int i,max;中max未赋初值
B)赋值语句max=MIN;中,不应给max赋MIN值
C)语句if(maxX[i])max=X[i];中判断条件设置错误
D)赋值语句max=MIN;放错了位置
(26)有以下程序
# include stdio.h
main()
{ int m=1, n=2, *p=m, *q=n, *r;
r=p; p=q; q=r;
printf("%d,%d,%d,%d\n",m,n,*p,*q);
}
程序运行后的输出结果是( )。
A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2
(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i4,则错误的赋值是( )。
A)p=a B)q[i]=a[i] C)p=a[i] D)p=a[2][1]
(28)有以下程序
# include stdio.h
# include string.h
main()
{ char str[][20]={"One*World","One*Dream!"},*p=str[1];
printf("%d,",strlen(p));printf("%s\n",p);
}
5
程序运行后的输出结果是( )。
A)9,One*World B)9,One*Dream! C)10,One*Dream! D)10,One*World
(29)有以下程序
# include stdio.h
main()
{ int a[]={2, 3, 5, 4}, i;
for(i=0;i4;i++)
switch(i%2)
{ case 0 : switch(a[i]%2)
{case 0 : a[i]++;break;brcase 1 : a[i]--;br}break;
case 1 : a[i]=0;
}
for(i=0;i4;i++)printf("%d",a[i]);printf("\n");
}
程序运行后的输出结果是( )。
A)3 3 4 4 B)2 0 5 0 C)3 0 4 0 D)0 3 0 4
(30)有以下程序
# include stdio.h
# include string.h
main()
{ char a[10]="abcd";
printf("%d,%d\n",strlen(a),sizeof(a));
}
程序运行后的输出结果是( )。
A)7,4 B)4,10 C)8,8 D)10,10
(31)下面是有关C语言字符数组的描述,其中错误的是( )。
A)不可以用赋值语句给字符数组名赋字符串
B)可以用输入语句把字符串整体输入给字符数组
C)字符数组中的内容不一定是字符串
D)字符数组只能存放字符串
(32)下列函数的功能是( )。
fun(char *a,char *b)
{ while((*b=*a)!='\0') {a++; b++;} }
A)将a所指字符串赋给b所指空间
B)使指针b指向a所指字符串
C)将a所指字符串和b所指字符串进行比较
D)检查a和b所指字符串中是否有'\0'
(33)设有以下函数:
void fun(int n,char *s) {……}
则下面对函数指针的定义和赋值均正确的是( )。
A)void (*pf)(); pf=fun; B)void *pf(); pf=fun;
C)void *pr(); *pf=fun; D)void(*pf)(int,char);pf=fun;
(34)有以下程序
# include stdio.h
6
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a);printf("%d\n",s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序运行后的输出结果是( )。
A)7 B)8 C)9 D)10
(35)有以下程序
# include stdio.h
# define f(x) x*x*x
main()
{ int a=3,s,t;
s=f(a+1);t=f((a+1));
printf("%d,%d\n",s,t);
}
程序运行后的输出结果是( )。
A)10,64 B)10,10 C)64,10 D)64,64
(36)下面结构体的定义语句中,错误的是( )。
A)struct ord {int x; int y; int z;}; struct ord a;
B)struct ord {int x; int y; int z;} struct ord a;
C)struct ord {int x; int y; int z;}a;
D)struct {int x; int y; int z;} a;
(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是( )。
A)char str[]="string";c=str; B)scanf("%s",c);
C)c=getchar(); D)*c=*string";
(38)有以下程序
# include stdio.h
# include string.h
Struct A
{ int a; char b[10]; double c;};
struct A f(struct A t);
main()
{ struct A a={1001,"ZhangDa",1098.0};
a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
struct A f(Struct A t)
{ t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;return t;}
程序运行后的输出结果是( )。
A)1001,ZhangDa,1098.0 B)1002,ZhangDa,1202.0
C)1001,ChangRong,1098.0 D)1002,ChangRong,1202.0
(39)若有以下程序段
7
int r=8;
printf("%d\n",r1);
输出结果是( )。
A)16 B)8 C)4 D)2
(40)下列关于C语言文件的叙述中正确的是( )。
A)文件由一系列数据依次排列组成,只能构成二进制文件
B)文件由结构序列组成,可以构成二进制文件或文本文件
C)文件由数据序列组成,可以构成二进制文件或文本文件
D)文件由字符序列组成,其类型只能是文本文件
二、填空题(每空2分,共30分)
(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。
(2)程序流程图中的菱形框表示的是【2】。
(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中【3】阶段产生“软件需求规格说明书”。
(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为【4】。
(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是【5】。
(6)若有定义语句:int a=5;,则表达式:a++的值是【6】。
(7)若有语句double x=17; int y;,当执行y=(int)(x/5)%2;之后y的值为【7】。
(8)以下程序运行后的输出结果是【8】。
# include stdio.h
main()
{ int x=20;
printf("%d",0x20);
printf("%d\n",0x x20); }
(9)以下程序运行后的输出结果是【9】。
# include stdio.h
main()
{ int a=1,b=7;
do {
b=b/2; a+=b;
} while (b1);
printf ("%d\n",a); }
(10)有以下程序
# include stdio.h
main()
{ int f,fl,f2,i;
f1=0; f2=1;
printf("%d %d",fl,f2);
for(i=3;i=5;i++)
{ f=fl+f2; printf("%d",f);
f1=f2; f2=f;
}
printf("\n");
}
程序运行后的输出结果是【10】。
8
(11)有以下程序
# include stdio.h
int a=5;
void fun(int b)
{ int a=10;
a+=b; printf("%d",a);
}
main()
{ int c=20;
fun(c); a+=c; printf("%d\n",a);
}
程序运行后的输出结果是【11】。
(12)设有定义:
struct person
{ int ID; char name[12];}p;
请将scanf("%d", 【12】); 语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。
(13)有以下程序
# include stdio.h
main()
{ char a[20]="How are you?",b[20];
scanf("%s",b); printf("%s %s\n",a,b);
}
程序运行时从键盘输入:How are you?回车
则输出结果为【13】。
(14)有以下程序
# include stdio.h
typedef struct
{ int num; double s; } REC;
void funl(REC x) {x.num=23; x.s=88.5;}
main()
{ REC a={16,90.0};
funl (a);
printf("%d\n",a.num);
}
程序运行后的输出结果是【14】。
(15)有以下程序
# include stdio.h
fun(int x)
{ if(x/20) fun(x/2);
printf("%d", x);
}
main()
{ fun(6); printf("\n"); }
程序运行后的输出结果是【15】。