




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
校园网.新视野教育全国计算机等级考试二级C语言教程课后习题解析新视野教育二级C语言教程课后习题详解(以修订版教材为准)第一章 C语言的基础知识第二节 熟悉Visual C+1. C语言源程序名的后缀是 BA).exe B).c C).obj D).cp*C语言源程序的拓展名为.C 2. 下列叙述中错误的是 DA)计算机不能直接执行用C语言编写的源程序B)C程序经C编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行*后缀为.obj的目标文件不能直接运行3. 用C语言编写的代码程序 BA)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行第三节标识符1. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是 BA)大写字母 B)连接符 C)数字字符 D)下划线*标识符的命名中不能出现连接符2. 以下选项中不合法的标识符是 CA)print B)FOR C)&a D)_00*标识符中不能出现“&”3. 以下叙述中错误的是 AA)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识*用户自定义标识符不允许使用关键字4. 可在C程序中用作用户标识符的一组标识符是 AA)and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Bigl* B答案出现了连接符、C答案出现小数点、D答案出现关键字5. 以下不合法的用户标识符是 CA)j2_KEY B)Double C)4d D)_8_ *开头第一个字符不能为数字6. 以下不能定义为用户标识符的是 DA)MainB)_0C)_intD)sizeof*sizeof为关键字7. 下列选项中,不能用作标识符的是 DA)_1234_B)_1_2C)int_2_ D)2_int_*开头第一个字符不能为数字8. 以下4组用户定义标识符中,全部合法的一组是 AA)_main B)If C)txtD)intenclude -max REAL k_2sin turbo 3COM _001* B答案出现连接符、C答案出现数字开头、D答案出现关键字第五节 整数和实数1以下选项中正确的整型常量是 CA)10110BB)0386C)0Xffa D)x2a22以下关于long、int和short类型数据占用内存大小的叙述中正确的是 DA)均占4个字节 B)根据数据的大小来决定所占内存的字节数C)由用户自己定义 D)由C语言编译系统决定3以下选项中不属于C语言的类型的是 DA)signed short int B)unsigned long intC)unsigned int D)long short4以下选项中合法的实型常数是CA)5E2.0 B)E3C).2E0 D)1.3E5以下选项中,不能作为合法常量的是 BA)1.234e04B)1.234e0.4C)1.234e4D)1.234e06以下选项中可作为C语言合法常量的是 AA)80.B)080C)8e1.0D)80.0e7以下符合C语言语法的实型常量是 CA)1.2E0.5 B)3.14.15 9EC).5E3D)E158以下不合法的数值常量是 CA)011 B)lel C)8.0E0.5 D)0xabcd 9以下选项中,合法的一组C语言数值常量是 BA)028 B)12. C).177 D)0x8A5e-3 OXa23 4c1.5 10,0000xf 4.5e0 Oabc 3.e510下列定义变量的语句错误的是 DA)int _int ;B)double int_;C)long For;D)float US$;第六节 算术表达式与赋值表达式习题1表达式3.65/2+1.2+5%2的值是 DA)4.3 B)4.8 C)3.3 D)3.8*3.6-2+1.2+1=3.82设有定义:float x=123.4567;,则执行以下语句后输出的结果是 _。123.460000printf(%fn,(int)(x*100+0.5)/100.0);*(int)12346.17/100.0=12346/100.0=123.46 格式控制为“%f”3设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式 h 计算结果不相符的是 BA)(a+b)*h/2 B)(1/2)*(a+b)*hC)(a+b)*h*1/2 D)h/2*(a+b)*因为1/2=0,故B答案结果不相符第七节 自加自减运算符、逗号表达式习题1设变量已正确定义为整型,则表达式n=i=2,+i,i+的值为_。3*表达式3的值为整个表达式的值2设有定义:int k=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是 AA)k+ B)k+=1 C)+k D)k+1*执行k+,表达式的值为k自加之前的值03有以下程序 Bmain() char a1=M, a2=m; printf(%cn, (a1, a2) ); 以下叙述中正确的是A)程序输出大写字母M B)程序输出小写字母mC)格式说明符不足,编译出错D)程序运行时产生出错信息*逗号表达式的值为最后一个表达式的值4有以下程序:Bmain( )int a=0,b=0;a =10; /*给a赋值b=20; 给b赋值 */printf(a+b=%dn,a+b); /*输出计算结果*/程序运行后的结果是A)a+b=30 B)a+b=10 C)30 D)程序出错*本题要注意的是注释部分应该包括: /*给a赋值 b=20; 给b赋值 */,也就是说“b=20;”也被系统作为注释处理第八节 字 符1以下选项中不属于字符常量的是( )。BA)C B)C C)0 D)0722已知字母A的ASC代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是( )。BA)kk=A&kk=Akk=a&(kk+32)=65 & kk913已知字符A的ASC代码值是65,字符变量c1的值是A,c2的值是D。执行语句printf(%d,%d,c1,c2-2);后,输出结果是( )。CA)A,B B)A,68 C)65,66D)65,684、以下不合法的字符型常量是 BA)x13B)018C)65 D)n5已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是( )。DA)c=cZ + z B)c=c+32C)c=cA + a D)c=A+ ca第九节 位运算1变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是 AA)abB)a|bC) a&bD)a42有以下程序 #include main() int a=1,b=2,c=3,x; x=(ab)&c; printf(%dn,x);程序的运行结果是 DA)0B)1C)2D)33有以下程序main()unsigned char a=2,b=4,c=5,d; d=a|b; d&=c; printf(%dn,d); 程序运行后的输出结果是 BA)3 B)4C)5D)64若变量已正确定义,则以下语句的输出结果是( )。 Bs=32; s=32; printf(%d,s);A)1B)0C)1D)32*两个相同的数进行按位异或,结果为05设有以下语句 int a=1,b=2,c; c=a(b2); 执行后,c的值为 DA)6 B) 7 C) 8 D) 9 第二章 数据输出与输入第二节 数据输出1有以下程序段 char ch; int k; ch=a; k=12; printf(%c,%d,ch,ch,k);printf(k=%dn,k); 已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是 DA)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=122、有以下程序段:main() int x,y,z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%dn”,x,y,z);程序运行后的输出结果是 CA) 2,3,3 B) 2,3,2 C) 2,3,1 D) 2,2,1 *分析过程见教材25页例33有以下程序,其中%u表示按无符号整数输出main()unsigned short x=0xFFFF;/* x的初值为十六进制数 */printf(%un,x);程序运行后的输出结果是 BA)-1 B)65535 C)32767 D)0XFFFF4以下叙述中不正确的是 AA)调用printf函数时,必须要有输出项B)使用putchar函数时,必须在之前包含头文件stdio.hC)在C语言中,整数可以以十进制、八进制或十六进制的形式输出D)使用putchar函数可以不要输出项5设有以下程序main()int c=35; printf(%d, c&c);程序运行后的输出结果是 CA)0 B)70 C)35 D)53*两个相同的数进行按位与时,结果等于本身6以下程序运行后的输出结果是_。88 main() int x=0210; printf(%Xn,x); *将八进制数转为十六进制数输出第三节 数据输入1以下程序运行时若从键盘输入:10 20 30。输出结果是_。A#include main() int i=0,j=0,k=0;scanf(%d%*d%d,&i,&j,&k);printf(%d,%d,%d,i,j,k);A)10,30,0 B)10,20,30 C)0,0,0 D)程序出错*注意%*d为跳过输入的数据2已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33。输出结果是 B#include stdio.hmain() char a,b; a=getchar(); scanf(%d,&b); a=a-A+0; b=b*2; printf(%c %c,a,b);A)程序段有语法错 B)1 B C)1 65 D)1 b* a=a-A+0; 即a=66-65+48 b=b*2; 即b=33*2 得出结果后找到对应的字符输出3有以下程序 main() int m=0256,n=256; printf(%o %on,m,n);程序运行后的输出结果是()。A)0256 0400B)0256 256C)256 400D)400 400 * m为八进制数 n为十进制数 %O指输出八进制数 输出是不带前导4有以下程序main() int a=666, b=888; printf(%dn,a,b);程序运行后的输出结果是()。BA)错误信息 B)666 C)888 D)666,888 * %d只与输出列表中的变量a对应,注意区别printf(“%dn”,(a,b);5设有以下程序main( ) int x=102,y=012; printf(%2d,%dn,x,y); 执行后输出结果是CA)10,01 B)02,12 C)102,10 D)02,10*%d为输出十进制整数,所以要将八进制转为十进制6执行以下程序时输入1234567,则输出结果是_。12 34#include main() int a=1,b;scanf(%2d%2d,&a,&b);printf(%d %dn,a,b);第三章 选择结构第一节 关系运算与逻辑运算1已知字母A的ASC代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是 BA) kk=A&kk=Akk=a&(kk+32)=z D) isalpha(kk)&(kk=2&c=2&c=2&c=k B)-k+ C)k%int(f) D)k=f=m*强制类型转换的格式必须为:(类型名)表达式6设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是AA)(!a=1)&(!b=0)B)(!a=1)|(!b=0)C)a & b D)a|(b+b)&(c-a)第二节 if语句1若变量已正确定义,有以下程序段 int a=3,b=5,c=7; if(ab) a=b; c=a; if(c!=a) c=b; printf(%d,%d,%dn,a,b,c); 其输出结果是 BA)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7*if表达式后的语句只能是一个语句或者一个复合语句2当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是 DA)k%2 B)k%2=1 C)(k%2)!=0 D)!k%2=1*前三个是对k%2后的结果进行判断,而D答案是对k进行逻辑非后再除二取余3下列条件语句中,功能与其他语句不同的是 DA) if(a) printf(%dn,x); else printf(%dn,y); B) if(a=0) printf(%dn,y); else printf(%dn,x);C) if (a!=0) printf(%dn,x); else printf(%dn,y);D) if(a=0) printf(%dn,x); else printf(%dn,y); *前三个都是当a不等于0时输出x,a等于0时输出y,D答案相反4设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是 CA)if(x+) ; B)if(xy&y!=0); C)if(xy)x- - D)if(ybc)printf(%dn,d); else if(c-1=d)=1)printf(%dn,d+1); elseprintf(%dn,d+2)执行后输出结果是 DA)2 B)3 C)4 D)编译时有错,无结果* 无语句结束标志“;”第四节 条件表达式、switch语句、goto语句1以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是 AA)if(ab) &(bc) ) k=1; B)if(ab) |(bc) ) k=1; else k=0; else k=0;C)if(ab) k=1; else if(bc) k=1; else k=0;2下列叙述中正确的是 DA)break语句只能用于switchB)在switch语句中必须使用defaultC)break语句必须与switch语句中的case配对使用D)在switch语句中,不一定使用break语句*break还能用于循环体中3有以下程序段 int k=0,a=1,b=2,c=3;k=ac?c:k;执行该程序段后,k 的值是 BA)3 B)2 C)1 D)04有以下程序#include main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(a=%d,b=%dn,a,b); 程序的运行结果是 DA)a=1,b=0 B)a=2,b=2C)a=1,b=1 D)a=2,b=1* 考点:switch后有无break5以下程序的输出结果是 Cmain( ) int a=5,b=4,c=6,d;printf(%dn,d=ab?(ac?a:c):(b);A)5B) 4 C) 6 D) 不确定第四章 循环结构第一节 while语句习题1有以下程序main()int y=10;while(y-); printf(y=%dn,y);程序执行后的输出结果是 BA) y=0 B)y=-1 C)y=1 D)while构成无限循环* 此题考点为循环体语句为空语句,当y表达式的值为0时结束循环,故y的值为-12有以下程序main() int k=5;while(-k) printf(%d,k-=3); printf(n);执行后的输出结果是 AA)1 B)2C)4D)死循环* k=5时,执行-k后, k=4,表达式的值为4,为真,执行输出语句k-=3,k=1,输出1再次执行-k表达式,k=0,表达式的值为0,结束循环第二节 do-while语句1若变量已正确定义,有以下程序段 i=0;do printf(%d,i);while(i+);printf(%dn,i)其输出结果是 BA)0,0 B)0,1 C)1,1 D)程序进入无限循环* 执行第一个输出语句时,输出i的值为0;执行while语句,循环体语句为空,i+表达式的值为0是i的值为1,执行最后一个输出语句时输出i的值为12有以下程序段 int n,t=1,s=0; scanf(%d,&n); do s=s+t; t=t-2; while (t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是 DA)任意正奇数 B)任意负偶数 C)任意正偶数 D)任意负奇数3以下程序的功能是:将输入的正整数按逆序输出。例如,若输入135,则输出531,请填空。n/=10 #include main() int n,s; printf(Enter a number:); scanf(%d,&n); printf(Output: ); do s=n%10; printf(%d,s); _; while(n!=0); printf(n);*答案:n=n/10分析:假如输入的值为135,那么n=135(1) n=135,do:s=n%10,那么s的值为5,输出s的值为5。接着我们要输出3才能将n逆序输出。在学习%和/的时候总结过:135/10=13,135%10=5,因此我们试着将后面的空填上n=n/10,那么n的值为13,判断(n!=0)为真。(2) n=13,do:s=n%10,那么s的值为3,输出s的值为3。执行n=n/10后n的值为1,判断(n!=0)为真。(3) n=1,do:s=n%10,那么s的值为1,输出s的值为1。执行n=n/10后n的值为0,判断(n!=0)为假,结束循环。(4) 已经得到逆序的结构为:531,说明我们所要填的空就是n=n/10。4有以下程序main()int k=5,n=0;doswitch(k)case 1: case 3:n+=1; break;default :n=0;k-;case 2: case 4:n+=2;k-;break;printf(“%d”,n);while(k0&n5);程序运行后的输出结果是 A)235 B)0235 C)02356 D)2345*本题注意的是在循环第一次进入switch语句的时候是执行的default后面的语句块,由于没有break,所以还会执行case2:case4:后面的语句。第三节 for语句1有以下程序 #include main() int x=8; for( ; x0; x-) if(x%3) printf(%d, ,x-); continue; printf(%d, ,-x); 程序的运行结果是 DA)7,4,2 B)8,7,5,2C)9,7,6,4D)8,5,4,2* 考点:for循环、if语句、continue分析:(1) x=8,x0为真,判断:x%3的值2为真,执行输出语句,输出x的值为8,x为7。遇到后面的continue语句结束本论循环,接着执行for结构中的表达式3,x后x的值为6。(2) x=6,x0为真,判断:x%3的值0为假,执行if后面的语句,输出x的值为5,x为5。接着执行for结构中的表达式3,x后x的值为4。(3) x=4,x0为真,判断:x%3的值1为真,执行输出语句,输出x的值为4,x为3。遇到后面的continue语句结束本论循环,接着执行for结构中的表达式3,x后x的值为2。(4) x=2,x0为真,判断:x%3的值2为真,执行输出语句,输出x的值为2,x为1。遇到后面的continue语句结束本论循环,接着执行for结构中的表达式3,x后x的值为0。(5) x=0,x0为假,结束循环。(6) 最终输出的结果为:8,5,4,22以下不构成无限循环的语句或者语句组是 AA)n=0; B)n=0; do+n;while(n=0); while(1)n+; C)n=10; D)for(n=0,i=1; ;i+) n+=i; while(n); n-;* 构成死循环的情况:1、表达式的值永远为真; 2、缺省表达式2.第四节 循环结构的嵌套1有以下程序 main( ) int i,n=0; for(i=2;i5;i+) do if(i%3) continue; n+; while(!i); n+; printf(n=%dn,n); 程序执行后的输出结果是 DA)n=5 B)n=2 C)n=3 D)n=4* 执行过程:(1)、n=0,i=2时,i5为真,i%3为真,执行continue,结束本次循环,!i为假,执行最后n+,n=1,执行i+(2)、2有以下程序 main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(x=%dn,x); 程序执行后的输出结果是 BA)x=4 B)x=8 C)x=6 D)x=12* 程序执行过程:(1)、x=0,i=0时,i2为真,执行x+,x=1 j=0,j=3为真,j%2为假,执行x+,x=2,再执行j+ j=1,j=3为真,j%2为真,执行continue,再执行j+ j=2,j=3为真,j%2为假,执行x+,x=3,再执行j+ j=3,j=3为真,j%2为真,执行continue,再执行j+ j=4,j=3为假,结束内层循环,执行最后一个x+,x=4,再执行i+(2)、x=4,i=1时,i2为真,执行x+,x=5 j=0,j=3为真,j%2为假,执行x+,x=6,再执行j+ j=1,j=3为真,j%2为真,执行continue,再执行j+ j=2,j=3为真,j%2为假,执行x+,x=7,再执行j+ j=3,j=3为真,j%2为真,执行continue,再执行j+ j=4,j=3为假,结束内层循环,执行最后一个x+,x=8,再执行i+ (3)、x=8,i=2时,i2为假,结束循环,输出x3下面程序的功能是输出以下形式的金字塔图案* * * * main( ) int i,j; for(i=1;i=4;i+) for(j=1;j=4-i;j+) printf( ); for(j=1;j=_;j+) printf(*); printf(n); 在下划线处应填入的是 BA)i B)2*i-1 C)2*i+1 D)i+2*分析:通过观察可以知道:第一行只有一个*号,却在*的前面有三个空格。第二行有三个*号,*号前面有两个空格。第三行有五个*号,在*号前面仅仅有一个空格。第四行有七个*号,没有空格。从中可以得到如下规律:用i代表行数,共有4行:i=1时,有4-i个空格,有2*i-1个*号i=2时,有4-i个空格,有2*i-1个*号i=3时,有4-i个空格,有2*i-1个*号i=4时,有4-i个空格,有2*i-1个*号结合程序即可得到正确结果。第五节 break和continue语句在循环中的应用1以下叙述中正确的是 CA)break语句只能用于switch语句体中B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环C)break 语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同第六节 循环结构的分析方法1以下程序段中的变量已正确定义 for(i=0;j4;i+,i+) for(k=1;k3;k+); printf(*); 程序段的输出结果是( ) DA)*B)*C)*D)* 循环体为空语句第五章 函 数第一节 函数的定义、库函数1在C语言中,函数返回值的类型最终取决于AA)函数定义时在函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主函数所传递的实参类型D)函数定义时形参的类型第二节 函数的调用与函数说明1有以下程序 #include int f(int x) int y; if(x=0|x=1) return (3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(%dn,z); 程序的运行结果是 CA)0 B)9 C)6 D)8 *解析:将f(3)的值的赋值给变量z,当执行到f函数时将3的值传递给变量x,则x得到的值为3,执行函数中的语句,则x=0|x=1表达式的值为假值,则不返回3值,执行后面的语句y=x*x-f(1) .先执行f(1)函数,则将1的值传递给变量x ,所以变量x得到的值为1,执行后面的语句x=0|x=1表达式的值为真值,返回3值,最后计算y=3*3-3=6,所以最后的答案为6,选择答案C。2以下叙述中错误的是 CA)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以在函数内部定义函数D)调用sin函数需要包含头文件math.h* 函数不可以嵌套定义3若程序中定义了以下函数double myadd(double a, double b) return (a+b);并将其放在调用语句之后,则在调用之前应进行函数声明,以下选项中错误的是 AA)double myadd(double a, b); B)double myadd(double, double);C)double myadd(double b, double a); D)double myadd(double x, double y);* 参数名可以缺省,类型名不能缺省第三节 函数的数据传递1有以下程序 void f(int v , int w) int t; t=v;v=w;w=t; main( ) int x=1,y=3,z=2; if(xy) f(x,y); else if(yz) f(y,z); else f(x,z); printf(%d,%d,%dn,x,y,z); 执行后输出结果是 CA)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1* 分析:f函数的功能是:交换两个变量的值,但是变量v和w为普通变量,所以只是在f函数中改变了变量的值,但是在主函数中并没有改变实参的值。所以变量x、y、z的并没有改变。所以主函数中x、y、z的值还是原来变量的值,即1,3,2.故选答案C。2以下程序的输出结果是_。 1 3#include void fun(int x) if(x/20) fun(x/2); printf(%d ,x); main() fun(3); printf(n);* 分析:先执行fun(3)把x/2的值为1,真值,执行fun(1),再次调用fun函数,则输出的x的值,即1。输出结束,fun(1),函数结束,则执行后面的这一条printf函数,即输出3的值。最后的结果为:13.第六章 指 针第一节 变量的地址和指针1以下叙述中错误的是 CA)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL2以下定义语句中正确的是 DA) int a=b=0 ; B) char A=65+1,b=b; C) float a=1,*b=&a,*c=&b ; D) double a=0.0;b=1.1;* A答案b未定义、C答案c是一级指针、D答案分号是C语言语句的结束标志3设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是DA) float *p=1024; B) int *p=(float x);C) float p=&x; D) float *P=&x;* 分析:A答案float *p=1024,将一个常量1024赋值给指针,赋值号两边的类型错误。B答案int *p=(float x);将一个float类型的变量x赋值给指针变量p是错误的。C答案float p=&x;将x的地址赋值给变量p是错误的。D答案float *p=&x;将变量x的地址赋值给指针p,因此是正确的。第二节 指针变量赋值及运算1设有定义:int n=0,*p=&n,*q=&p;,则以下选项中,正确的赋值语句是 DA)p=1;B)*q=2; C)q=p;D)*p=5;* 分析:int n=0,*p=&n,*q=&p;定义了一个普通变量n赋初始值为0,一个一维指针p指向了n的地址,一个二维指针q指向了p的地址。A答案p=1,将常量1赋值给一维指针是错误的,类型不一致。B答案*q=2,因为q是二维指针,因此*q可以理解为一维的指针,将2赋值给*q类型不一致。C答案q=p,q和q的类型不一致,因此不能直接赋值。D答案*p=5,p是一维指针,*p就相当于一个普通变量,因此可以将5赋值给*p。2有以下程序main()int a=1,b=3,c=5; int *p1=&a, *p2=&b, *p=&c; *p=*p1*(*p2);printf(%dn,c);执行后的输出结果是 CA)1 B)2 C)3 D)4* 分析:int a=1,b=3,c=5;int *p1=&a,*p2=&b,*p=&c;p1指向了a的地址,p2指向了b的地址,p指向了c的地址。 *p=*p1*(*p2);计算*p1和*p2的乘积,注意中间的*号表示乘号。即*p=1*3值为3,由于p指向了c的地址,*p的值为3那么c的值为3。3设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是 AA)*p=*q; B)p=q; C)*p=&n1; D)p=*q;* 分析:int n1=0,n2,*p=&n2,*q=&n1;首先定义了两个整型变量n1和n2,并为n1赋值为0,定义了两个指针变脸p和q,p指向了n2的地址,q指向了n1的地址。可以用“间接访问运算符”来引用相应的存储单元,因此*p就是n2的值,*q就是n1的值。与n2=n1等价的就是*p=*q,故选择A答案。4有以下程序 #include main() int n,*p=NULL;*p=&n; printf(Input n: ); scanf(%d,&p); p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生管理证书考试内容整体规划试题及答案
- 光电工程师证书考试难易程度分析试题及答案
- 网络规划设计师职业资格与试题及答案
- 2025版高考英语一轮复习Module6FilmsandTVProgrammes练习含解析外研版必修2
- 西医临床心理健康教育试题及答案
- 广西2025版高考生物一轮复习考点规范练28植物的激素调节含解析新人教版
- 2024-2025学年高中生物第2章组成细胞的分子第5节细胞中的无机物学案新人教版必修1
- 全国版2025版中考化学复习主题训练三物质的化学变化作业含解析
- 药剂实验室安全管理问题及答案
- 职业道德测评试题及答案
- (高清版)JTGT 5440-2018 公路隧道加固技术规范
- CHT 9016-2012 三维地理信息模型生产规范(正式版)
- 经济学说史考试重点PDF
- MOOC 太极拳初级-浙江大学 中国大学慕课答案
- Q-GDW 1202-2015国家电网公司应急指挥中心建设规范
- MOOC 大学生创新创业基础-福建农林大学 中国大学慕课答案
- 《用户需求分析》课件
- 物业客服沟通技巧培训课件
- 智慧工地管理措施
- 医疗试剂运输方案
- 阿尔及利亚医疗器械法规概述
评论
0/150
提交评论