牛客网试题+答案分析+大牛面试经验(1)

一、选择题

         (1)有以下程序:
							#include 
							char fun(char *c)
							{
								if (*c <= 'Z'&& *c >= 'A') *c -= 'A' - 'a'; return *c;
							}
							main()
							{
								char s[81], *p = s;
								gets_s(s);
								while (*p)
								{
									*p = fun(p);
									putchar(*p);
									p++;
								}
								printf("\n");
							}
				若运行时从键盘上输入OPEN THE DOOR<回车>,程序的输出结果是?

								A、OPEN THE DOOR
								B、oPEN tHE dOOR
								C、open the door
								D、Open The Door
			解析:字符串输入函数gets的功能是从标准输入设备键盘上输入一个字符串。
			首先使指针变量p指向字符串的首字母,while循环语句中对字符串的每个字符进行fun函数操作。
			fun函数的功能是,将字符串中的大写字母变小写字母。将处理结果返回主函数,主函数通过putchar( )字符输出函数进行输出。
			因此**C**选项正确。
			知识点:小写的ASCLL码比大写的ASCLL码大32,所以本题是减去-32,相当于加了32,相当于大写变小写。
					*c -= 'A' - 'a' 
					首先 ‘A ’ - 'a' = - 32
					然后 *c  -= -32 等于 *c = *c +32
					所以这样代码的作用是将大写字母转换成小写字母



					(2)下列属于采用虚电路连接的系统是
								A、分组交换
								B、DDN
								C、帧中继
								D、ATM
								E、SDH
              解析:分组交换可以分为 数据报 和 虚电路 两种方式;
						而ATM、帧中继是应用虚电路;
						虚电路需要建立连接;
						数据报是无连接的;
						答案:ACD


       (3)设栈的顺序存储空间为 S(1:m) ,初始状态为 top=0 。现经过一系列正常的入栈与退栈操作后, top=m+1 ,则栈中的元素个数为( )

								A、不可能
								B、m+1
								C、0
								D、m
               解析:此栈为顺序栈,存储空间为S(1:m),栈顶指针初始状态为top=0,即栈空状态;
               当栈内有一个元素时,top=1,;当处于栈满状态时,top=m。
               由此可见,栈顶指针top的取值范围是[0,m]之间的整数,因此top=m+1是不可能事件。
               另外的知识点:应注意的是,如果用一维数组来作为顺序栈的存储结构,则存储空间为S(0:m-1) ,
               易与题述混淆,此时栈顶指针初始状态为top=-1,即栈空状态;当栈内有一个元素时,top=0,;
               当处于栈满状态时,top=m-1。由此可见,当栈非空时,栈顶指针top与数组下标相对应。
               栈顶指针top的取值范围是[-1,m-1]之间的整数。
               答案:A
             
     
			(4)如何把一个字符串转换成URI(统一资源标识符)?
					A、uri new uri=uri.parse("content://com.changcheng.provider.contactprovider/contact")
					B、uri uri=uri.parse("content://com.changcheng.provider.contactprovider/contact")
					C、android.uri uri=uri.parse("content://com.changcheng.provider.contactprovider/contact")
					D、uri uri=android.uri.parse("content://com.changcheng.provider.contactprovider/contact")
					解析:答案:B
					扩展:
								Uri的使用场景:
								1,调web浏览器  
								Uri myBlogUri = Uri.parse(" http://xxxxx.com ");  
								returnIt = new Intent(Intent.ACTION_VIEW, myBlogUri);  
								2,地图  
								Uri mapUri = Uri.parse("geo:38.899533,-77.036476");  
								returnIt = new Intent(Intent.ACTION_VIEW, mapUri);  
								3,调拨打电话界面  
								Uri telUri = Uri.parse("tel:100861");  
								returnIt = new Intent(Intent.ACTION_DIAL, telUri);  
								4,直接拨打电话  
								Uri callUri = Uri.parse("tel:100861");  
								returnIt = new Intent(Intent.ACTION_CALL, callUri);  
								5,卸载  
								Uri uninstallUri = Uri.fromParts("package", "xxx", null);  
								returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);  
								6,安装  
								Uri installUri = Uri.fromParts("package", "xxx", null);  
								returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);  
								7,播放  
								Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");  
								returnIt = new Intent(Intent.ACTION_VIEW, playUri);  
								8,调用发邮件  
								Uri emailUri = Uri.parse("mailto:[email protected]");  
								returnIt = new Intent(Intent.ACTION_SENDTO, emailUri);  
								9,发邮件  
								returnIt = new Intent(Intent.ACTION_SEND);  
								String[] tos = { "[email protected]" };  
								String[] ccs = { "[email protected]" };  
								returnIt.putExtra(Intent.EXTRA_EMAIL, tos);  
								returnIt.putExtra(Intent.EXTRA_CC, ccs);  
								returnIt.putExtra(Intent.EXTRA_TEXT, "body");  
								returnIt.putExtra(Intent.EXTRA_SUBJECT, "subject");  
								returnIt.setType("message/rfc882");  
								Intent.createChooser(returnIt, "Choose Email Client");  
								10,发短信  
								Uri smsUri = Uri.parse("tel:100861");  
								returnIt = new Intent(Intent.ACTION_VIEW, smsUri);  
								returnIt.putExtra("sms_body", "yyyy");  
								returnIt.setType("vnd.android-dir/mms-sms");  
								11,直接发邮件  
								Uri smsToUri = Uri.parse("smsto://100861");  
								returnIt = new Intent(Intent.ACTION_SENDTO, smsToUri);  
								returnIt.putExtra("sms_body", "yyyy");  
								12,发彩信  
								Uri mmsUri = Uri.parse("content://media/external/images/media/23");  
								returnIt = new Intent(Intent.ACTION_SEND);  
								returnIt.putExtra("sms_body", "yyyy");  
								returnIt.putExtra(Intent.EXTRA_STREAM, mmsUri);  
								returnIt.setType("image/png");

          (5)如果最常用的操作是取第i个结点及其前驱,则采用()存储方式最节省时间。
						A、单链表
						B、双链表
						C、单循环链表
						D、顺序表
						解析:答案:D
						知识点:
							线性表:零个或多个数据元素的有限序列,要点:相同元素;唯一前驱/后继(除首尾),即序列;有限。
							顺序表:采用顺序存储结构的线性表。(存储地址连续)
							链表:采用链式存储结构的线性表。(存储地址可以不连续)
							分清之后就好多了,我们知道,顺序结构长于存取,链式结构长于插删,故答案就出来了
							别被‘前驱’两个字带偏了,因为除了前驱还有访问第i个,双向链表只能遍历,而顺序表可以直接用


 (6)用希尔排序方法对一个数据序列进行排序时,若第1趟排序结果为9,1,4,13,7,8,20,23,15,则该趟排序采用的增量(间隔)可能是 ()

					A、2
					B、3
					C、4
					D、5
					解析:答案:B
					考察知识点:
					希尔排序:设待排序元素序列由n个,首先取gap

你可能感兴趣的:(牛客专题)