南京大学计算机基础教学部全国计算机等级考试二级C语言7~12章内容复习PPT格式课件下载.ppt
《南京大学计算机基础教学部全国计算机等级考试二级C语言7~12章内容复习PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《南京大学计算机基础教学部全国计算机等级考试二级C语言7~12章内容复习PPT格式课件下载.ppt(59页珍藏版)》请在冰豆网上搜索。
![南京大学计算机基础教学部全国计算机等级考试二级C语言7~12章内容复习PPT格式课件下载.ppt](https://file1.bdocx.com/fileroot1/2022-10/6/4ce49c9e-ce67-4c5c-8ad3-b7da8d6318f9/4ce49c9e-ce67-4c5c-8ad3-b7da8d6318f91.gif)
w.num、w.name、w.c、w.s其中s又是一个无名结构型的成员项,它的3个成员为:
s.day、s.mont、s.year故访问year成员的形式应为:
w.s.year,D,3,YoursitehereYoursitehere,2、有以下程序#includemain()inta=2,b=2,c=2;
prntf(“%dn”,a/a程序运行后的输出是A.0B.1C.2D.3,解析:
A,4,2022/10/20Yoursitehere,位逻辑运算符的运算优先级都不相同:
&
|高低除(单目运算符,第二优先级)外的位逻辑运算符的运算优先级都低于关系运算符。
运算规则如下:
移位运算符的运算优先级相同,低于算术运算符,高于关系运算符。
5,YoursitehereYoursitehere,3、有以下程序#include#definePT3.5;
#defineS(x)PT*x*x;
mian()inta=1,b=2;
printf(“%4.1fn”,S(a+b);
程序运行后输出的结果是A.14.0B.31.5C.7.5D.程序有错无输出结果,解析:
宏展开时只是简单的将宏名所代表的“文本”按原样替换宏名,而不管替换“文本”是什么形式,替换后由编译程序去解释其正确性。
如本题中的“3.5;
”与“PT*x*x;
”后的分号将作为替换内容!
3.5;
*a+b*a+b;
D,6,2022/10/20Yoursitehere,4、有以下程序#includestructordintx,y;
dt2=1,2,3,4;
main()structord*p=dt;
printf(“%d,”,+p-x);
printf(“%dn”,+p-y);
程序的运行结果是A.1,2B.2,3C.3,4D.4,1,这是一个整体,访问的是dt0.x+p-x等价于+(p-x),解析:
B,7,2022/10/20Yoursitehere,#includestructordintx,y;
printf(“%d,”,p+-x);
先取p-x的内容,然后再使p的内容加1,使其指向dt1。
但若把上述题目改成为:
程序的运行结果是:
1,5,8,YoursitehereYoursitehere,5、设有宏定义:
#includeIsDIV(k,n)(k%n=1)?
1:
0)且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&
IsDIV(m,7)为真时所要表达的是A.判断m是否能被5或者7整除B.判断m是否能被5和7整除C.判断m被5或者7整除是否余1D.判断m被5和7整除是否余1,(m%5=1)?
0)&
(m%7=1)?
0),替换成,解析:
要使该表达式为真则&
两边的表达式都必须为真。
即m%5=1m%7=1都成立。
D,9,YoursitehereYoursitehere,6、有以下程序#includemain()inta=5,b=1,t;
t=(a2|b);
printf(“%dn”,t);
程序运行后的输出结果是A.21B.11C.6D.1,解析:
A,10,YoursitehereYoursitehere,7、有以下程序#includemain()FILE*f;
f=fopen(“filea.txt”,“w”);
fprintf(f,“abc”);
fclose(f);
若文本文件filea.txt中原有内容为:
hello,则运行上面的程序后,文件filea.txt中的内容为A.helloabcB.abcloC.abcD.abchello,解析:
以“w”存取方式打开文件时总是先删除指定文件(若文件存在),然后再建立该文件(空文件),打开后,文件读写位置指针被定位于文件的开始,C,11,YoursitehereYoursitehere,8、以下程序运行后的输出结果是#includemain()intk=1,s=0;
doif(k,skk&
2(0010)0000010000010001000010此时判断(k&
2)!
=0为真,执行continue,即直接去判断while后的循环条件(k10),结果为假,结束循环。
S=1,12,YoursitehereYoursitehere,9、以下程序用来判断指定文件是否能正常打开,请填空#includemain()FILE*fp;
if(fp=fopen(“test.txt”,”r”)=)printf(“未能打开文件!
n”);
elseprintf(“文件打开成功!
n”);
当文件成功打开,fopen函数将返回FILE型的指针(一定是一个非0值),当打开文件不成功时,fopen函数将返回NULL即0。
NULL或0,13,YoursitehereYoursitehere,10、下列程序的运行结果为#include#includestructAinta;
charb10;
doublec;
voidf(structA*t);
main()structAa=1001,“ZhangDa”,1098.0;
f(,1001,ChangRong,1098.0,解析:
14,YoursitehereYoursitehere,11、以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空。
#includestructnodeintdata;
structnode*next;
typedefstructnodeNODETYPE;
main()NODETYPEa,b,c,*h,*p;
a.data=10;
b.data=20;
c.data=30;
h=;
p=p-next,解析:
15,YoursitehereYoursitehere,12、有以下程序#include#definef(x)x*x*xmain()inta=3,s,t;
s=f(a+1);
t=f(a+1);
printf(“%d,%d”,s,t);
程序运行后的输出结果是A.10,64B.10,10C.64,10D.64,64,解析:
s=f(a+1);
s=a+1*a+1*a+1;
s=3+1*3+1*3+1;
计算后s的内容为10,t=f(a+1);
t=(a+1)*(a+1)*(a+1);
t=(3+1)*(3+1)*(3+1);
计算后t的内容为64,A,替换成,替换成,16,2022/10/20Yoursitehere,Yoursitehere,13、下面结构体的定义语句中,错误的是A.structordintx;
inty;
intz;
structorda;
B.structordintx;
C.structordintx;
a;
D.structintx;
定义了structord类型及structord型变量a,定义了structord类型,但在定义结构类型的同时只要在最后的给出及变量名。
(错误),定义了structord类型及structord型变量a,定义了无名结构类型及其结构型变量a,B,17,YoursitehereYoursitehere,14、有以下程序#include#includestructAinta;
structAf(structAt);
main()structAa=1001,ZhangDa,1098.0;
a=f(a);
printf(%d,%s,%6.1fn,a.a,a.b,a.c);
structAf(structAt)t.a=1002;
strcpy(t.b,ChangRong);
t.c=1200.0;
returnt;
程序运行后的输出结果是A.1001,ZhangDa,1098.0B.1002,ZhangDa,1200.0C.1001,ChangRong,1098.0D.1002,ChangRong,1200.0,D,解析:
18,2022/10/20Yoursitehere,解析:
f函数中形参t,main函数中变量a,执行f函数后的形参t,接收f函数返值后的main函数中变量a,19,B.文件由结构序列组成,可以构成二进制文件或文本文件ehereYoursitehere,15、下列关于C语言文件的叙述中正确的是,A.文件由一系列数据一次排列组成,只能构成二进制文件,C.文件由数据序列组成,可以构成二进制文本或文本文件,D.文件由字符序列组成,其类型只能是文本文件,还可以是文本文件,C语言文件是流式文件,是字符或字节的序列,组成时没有格式结构,还可以是二进制文件,正确的概念,C,20,YoursitehereYoursitehere,16、设有定义sturctpersonintID;
charname12;
p;
请将scanf(“%d”,);
语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。
&
p.ID,但若把问题改成:
请将scanf(“%s”,);
语句补充完整,将一个字符串读入到结构体变量p的成员name中。
p.name,若把问题再改成:
请将scanf(“%c”,);
语句补充完整,将一个字符读入到结构体变量p的成员name2中。
p.name2,21,YoursitehereYoursitehere,17、有以下程序#includetypedefstructintnum;
doubles;
REC;
voidfun1(RECx)x.num=23;
x.s=88.5;
main()RECa=16,90.5;
fun1(a);
printf(“%dn”,a.num);
程序运行后的输出结果是,两个函数间传递结构变量,被调函数中对结构型形参成员的任何修改都不会影响对应的实参成员的值。
main中的a:
fun1中的x:
fun1对x修改,16,22,YoursitehereYoursitehere,18、以下叙述中错误的是A.程序中凡是有#开始的语句行都是预处理命令行B.预处理命令行的最后不能以分号表示结束C.#defineMAX是合法的预处理命令行D.C程序对预处理命令行的处理是在程序的执行过程中进行的,预处理命令行总是以#开始(正确),预处理命令行总是以回车换行结束(正确),宏名后可以为空,此时宏名表示一个空格(正确),预处理命令行是在编译前处理的(错误),D,23,YoursitehereYoursitehere,19、以下结构类型说明和变量定义中正确的是A.typedefstructintn;
charc;
RECt1,t2;
B.structREC;
intn;
C.typedefstructREC;
intn=0;
charc=A;
t1,t2;
D.structintn;
这里REC是类型名,可以用来定义变量(正确),这里“structREC;
”语法错(多了一个分号)(错误),这里“typedefstructREC;
”语法错,多了一个分号(错误)