ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:26.76KB ,
资源ID:6991063      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6991063.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言习题集100题+.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言习题集100题+.docx

1、C语言习题集100题+1. i=2;printf(%d,i+);打印出来的数字为?答案:2解:i+和+i均为自增表达式,执行完后,i都会加1,均会有i+=1,也就是i=2+1=3的效果。不过,两个表达式的值不同。i+表达式的值为自增1之前i的值。这里也就是2。+i为只增1之后的i的值,也就是3。因此,i=2;printf(%d,i+);打印出来的数字为2;i=2;printf(%d,+i);打印出来的数字为3。2. unsigned char i=0;i-;i为?答案:255 unsigned char的为1个字节,数据范围从0255。i=0已经位于数据范围的下边界,如果再-1,会发生负溢出,

2、溢出至255。如果i=255,再加1,则会发生正溢出,溢出至0。类似的情况参考下表表1类型说明符数的范围字节数字符型signed char-128127 即-27(27-1)1无符号字符型unsigned char0255 即0(28-1)1短整量short int-3276832767 即-215(215-1)2无符号短整型unsigned short 065535 即0(216-1)2长整型整型long 或int-21474836482147483647 即-231(231-1)4无符号长整型无符号整型unsigned longunsigned int04294967295 即0(232-

3、1)43. signed char i=0;i-;此时i为?答案:-1解:参考表1signed char数据范围从-128127。当i=0,i自减1,不会发生溢出。因此,i=0-1=-14. int i;for(i=0;i100;i-);循环次数为?1005. int i;for(i=0;i100;i+);循环结束后,i=?100解:参考表1int的范围为-21亿+21亿因此,i在0100的范围内的自增1操作,不会发生溢出。循环次数计算考虑i的值的变化,i从0变到99,都满足i100循环执行条件。当i=99+1的时候,条件被打破,循环推出。因此,循环推出后i=100如果没有溢出,则通过以下公式

4、计算for(i=start;iend;i+)循环次数为(end-1)-start+1=end-start(使用等比数列公式:项数=(an-a0)/delta+1循环结束后i=end如果没有溢出,则通过以下公式计算for(i=start;i=end;i+)循环次数为end-start+1循环结束后i=end+16. unsigned short i;for(i=0;i40000;i+);循环次数为?A.40000 B.无穷大答案:选A参考表1unsigned short范围为065535,该循环不会溢出。等差数列公式an=a0+(n-1)*deltan为项数,也就是循环次数an=39999,a0

5、=0delta=1循环次数=(an-a0)/detla+1=(39999-0)/1+1=400007. signed short i;for(i=0;i40000;i+);循环次数为? A.40000 B.无穷大答案为B参见表1signed short数据范围从-3276832767循环会溢出当i=32767的时候,i+使得i溢出到-32768,因此,i永远不可能达到40000。该循环为死循环。8. float i;for(i=0.0F;i400000.0F;i+=1.0F);循环次数为A.400000 B.无穷大,答案A9.float i;for(i=0.0F;i400000000.0F;i

6、+=1.0F);循环次数为A.400000 B.无穷大,答案B表2类型说明符比特数(字节数)有效数字数的范围单精度float32(4)710-381038双精度double64(8)1610-30810308float有效位数为7,当i=399999的时候,执行i+ 399999 + 1-1加在第6位有效数字上,在7位以内,则不会出现精度不够的情况。如果是i=399999999.0F,同样执行i+=1.0F1是加到第9位有效数字上的,会出现精度不够的情况。具体表现为x+deltax=x也就是i+=1.0F将不再使i能够继续增大此时,i永远不会达到400000000.0F,循环成为死循环。10.

7、 printf函数中,%lf对应哪种数据类型? %lf double%f float%d int%ld long%c char%s char s%x 整数以十六进制显示(小写的abcdef)%X 整数以十六进制显示(大写的ABCDEF)%u unsigned int%o 整数以八进制显示11. a的ASCII码是? 9712. A的ASCII码是? 6513. 0的ASCII码是? 4814. n的ASCII码是? 1015. char s=123;strlen(s)的值为?3strlen是string.h中声明的库函数,用于显示字符串中除0以外的字符个数。16. char s=123;siz

8、eof(s)的值为?sizeof是关键字,用于显示变量或数据类型的字节数。int a; sizeof(a)为4sizeof(int)为4char s=123;sizeof(s)的值为数组元素个数*每个元素的字节数=4*1=4这里数组元素个数应包含末尾的017. 提前退出循环的关键字是?break;int i;for(i=0;i10;i+) if(i=5) break; printf(“%d,”,i);屏幕输出为0,1,2,3,4,18. 提前结束本次循环的关键字是?continue;int i;for(i=0;i10;i+) if(i=5) continue; printf(“%d,”,i);

9、屏幕输出为0,1,2,3,4,6,7,8,9,19. 有一个关键字可以构造出while循环,该关键字是?答案可以是goto,也可以是for以下三个循环的作用是一样的,都是在屏幕上输出0,1,2,3,4,5,6,7,8,9,int i;i=0;while(i10) printf(“%d,”,i); i+;int i;i=0;LOOP:if(i10) printf(“%d,”,i); i+; goto LOOP;int i;for(i=0;i10;i+) printf(“%d,”,i);20. 请用宏定义给unsigned int一个别名UINT#define UINT unsigned int2

10、1. 请用typedef给unsigned int一个别名uinttypedef unsigned int UINT;注意typedef后面有;而且两者在别名和原名的顺序上是相反的。22. 如果要用到printf,需要include哪个头文件?23. 如果需要用到sqrt,需要include哪个头文件?printf, scanf, getchar, putchar 使用之前都得#include sqrt, sin ,cos 使用之前都得#include strlen使用之前都得#include 24. 0x22转化为十进制为_ 340x22=2*161+2*160=3425. 22转化为十六进

11、制 22/16=1 22%16=6 1/16=0 1%16=122转化为16进制为0x16222转化为16进制222/16=13 222%16=1413/16=0 13%16=1314转化为十六进制为E13转化为十六进制为D222转化为16进制为0xDE26. 22转化为二进制数为_(前面的0不要省略,总共写出8位数字)思路:先转化为16进制,再由16进制转化为2进制。22转化为16进制为0x16,0x16转化为二进制为000101100x22转化为二进制为_(前面的0不要省略,总共写出8位数字)0x22转化为二进制为00100010对于十六进制到二进制的转化可以现先在草稿纸上写出如下表格,然

12、后查表表3十进制01234567十六进制01234567二进制00000001001000110100010101100111十进制89101112131415十六进制89ABCDEF二进制1000100110101011110011011110111127. 0x22转化为二进制为_(前面的0不要省略,总共写出8位数字)直接查表0x22=0010001028. int的上限为多少亿?(写出数字即可,不要带单位)int范围 -21亿21亿,见表129. 编译程序程序总共有四部,第一步是?A.预处理 B.链接编译程序程序总共有四部:预处理-编译-汇编-链接30. 预处理指令前通常有什么符号?#d

13、efine#include#ifdef#endif31. void是否为合法的变量名?(填T或F)F32. _123是否是合法的变量名?(填T或F)T合法变量名以下划线_和字母开头,中间可以有数字。不能用关键字。void为关键字,不能作为合法变量名。但是Void可以,因为C语言区分大小写33. char a1000000该数组的定义是否正确?(填T或F)Tsizeof(a)=1000000*sizeof(a0)=10000001024*1024=1M Bytes编译的时候不会报错,运行的时候,会报栈溢出错误。提示,定义函数中的数组有字节限制,最大不能超过1M Bytes35. int a3;请

14、问sizeof(a)=?sizeof(a)=sizeof(a0)*3=4*3=1236. int a34;请问sizeof(a)=?sizeof(a)=sizeof(a00)*(3*4)=4*12=4837. int a3;请问最后一个元素为?(填写ax)int aN;a数组中最后一个元素为aN-1第一个元素为a038. int a34;请问最后一个元素为?(填写axy)int aMN;a的最后一个元素为aM-1N-1a的第一个元素为a0039. 定义在函数体外的变量称之为全局变量。(填写T或F)T40. 局部变量只能在定义该变量的函数内使用。(填写是或否)T#include int i=10

15、;/i为全局变量void print() printf(“i=%d”,i);/正确,全局变量可以被定义在它下面的所有函数引用,这里包括print和main/都可以使用i printf(“j=%d”,j);/正确,局部变量只能在定义它的函数内使用,这里j只能在main中使用int main() int j=5;/j为定义在main中的局部变量,只能在main中使用 printf(“i=%d”,i);/正确,全局变量可以被定义在它下面的所有函数引用,这里包括print和main/都可以使用i printf(“j=%d”,j);/正确,局部变量只能在定义它的函数内使用41. char c=123;p

16、rintf(%cn,c);打印输出为_123这是八进制,先转化成10进制1238=1*82+2*81+3*80=64+16+3=83因65为A的ASCII码,可以推出83为S42. int b=3; int a=(b2?0:1); printf(%dn,a);?:为三目运算符表达式1?表达式2:表达式3如果表达式1为真,这返回表达式2的值,否者返回表达式3的值。b2的值为假,所以需要返回表达式3也就是1因此a=143. int b=3; int a=(b=2?0:1); printf(%dn,a);?:为三目运算符表达式1?表达式2:表达式3因为=的优先级,小于三目运算符,所以先看?前面的常量

17、表达式2,表达式的值就是22不等于0,?前面的表达式为真。因此a=表达式2的值=044. unsigned char i=0xFF; i&=(unsigned char)(15);求i(答案以0x开头)整数常量在C语言中,默认是int型的,因此1在内存中总共占用4字节,32位0000 0000 0000 0000 0000 0000 0000 000115表示1左移5位,后面补00000 0000 0000 0000 0000 0000 0010 0000(unsigned char)(15)将32位转化为8位0010 0000((unsigned char)(15))是按位取反操作1101

18、1111i+=1i=i+1i&=((unsigned char)(15))也就是i&=1101 1111,等价于i=i&11011111=1111 1111 & 1101 1111=1101 1111=0xDF&为按位与操作,有0为0,全1才为145. unsigned char i=0x11;i|=(unsigned char)(15);求i(答案以0x开头)(unsigned char)(15)= 0010 00002|为按位或操作,有1为1,全0才为0i=0x11=000100012i|=(unsigned char)(1(b)?(a):(b),给a,b加括号是为了避免_问题(三个字)优

19、先级如果不使用小括号,#define MAX(a,b) ab?a:bint a=1,b=2,c=3;int d;d=MAX(MAX(a,b),c);/求a,b,c三个数的最大值等价于d=MAX(a,b)c?MAX(a,b):c=ab?a:bc?ab?a:b:c;很可能会出现优先级问题。52. int n=5; int an;该数组定义是否正确?(T或F)F数组定义时候,中应为整形常量表达式。53. 数组名右边的方括号中必须为常量表达式?(T或F)Fint a5=1,2,3,4,5;printf(“%dn”,a4);/这里的4是常量表达式反例:引用数组整形int i=4;printf(“%dn”

20、,ai);/这里i是变量54. float i;for(i=16000000.0F;i1.54&x2. 4567&x3. 5498)y=2;switch case 适用于点对点映射,if else既可以实线点对点映射,也可以将某区间映射到点。58. 最大的float型数的数量级是_ 38查表259. 冒泡法用于_(答案为两个字)排序60. 编译器在编译过程中可以检查源代码的哪一类错误?A. 功能错误 B. 语法错误编译器只能检查出语法错误,比如没有加分号,使用了没有定义的变量名等等。61. 如果源码中有一个死循环,那么能否通过顺利编译?(T或F)死循环不属于语法错误,所以编译器是检测不到的,可

21、以顺利通过编译。62. 升序指的是由小到大?(T或F)升序是由小到大,降序是由大到小63. C程序的每行中只能写一条语句?(T或F)每行可以写多条语句。比如以下情况是允许的int i=0;i+; printf(“%dn”,i);64. 简单变量做实参时,数据传递方式是由实参传给形参,再由形参传回给实参 ?(T或F)简单变量是指的除去数组和指针的情况。int add(int a,int b)/a,b为形式参数这里隐含了a=1,b=2相当于实参被隐含传递给了形参return a+b;int main() int c; c=add(1,2);/1,2为实际参数65. stdlib.h中有个库函数可以

22、用于排序,函数名为_qsort快速排序函数66. 如果头文件是位于工程目录下,#include 后面用哪种方式 A. B. C. A和B均可B67.如果头文件位于编译器安装目录下,#include 后面用哪种方式 A. B. C. A和B均可C告诉编译器,*.h文件位于编译器目录下。“”告诉编译器,*.h文件位于工程目录或编译器目录下。采用 这种方式的时候,编译器会先搜索工程目录有没有*.h文件,如果没有才回去编译器目录下找。因此,对于编译器自带的*.h文件,比如stdio.h,位于编译器目录下,两种方式都是可以的。不过,采用会加快编译速度,因为编译器不会去工程目录搜索*.h而对于自己定义.h

23、文件通常都位于工程目录下,所以只能采用”方式68. 已知main函数中有如下语句int a;a=5;int b=6; 试问在C编译器能否编译通过?(T或F)不能通过。因为声明变量语句中间,不能插入其它语句。可以改为int a=5;int b=6;或int a;int b=6;a=5;69. 如果函数定义在main函数的后面,一般会在main前面添加函数的 A. 函数体 B. 函数声明B函数体就是指的函数定义中的花括号部分。int add(int a,int b);/因为函数定于main函数之后,所以必须在main前面先声明,否则编译器会报错。int main() int c; c=add(1,2); int add(int a,int b)/这里为函数定义,申明和定义的区别在于是否有函数体,也就是花括号部分return a+b;70. 头文件中,通常是存放A. 函数声明 B. 函数体A大家可以自己打开编译器目录下的stdio.h文件71. 逗号表达式的值等于最后那个逗号后的表达式的值?(T或F)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1