一.单选题
1.
在16位C编译系统上,若定义long a; ,则能给a赋40000的正确语句是( )。
正确答案: D 你的答案: 空 (错误)
a=20000+20000;
a=4000*10;
a=30000+10000;
a=4000L*10L;
解释:长整数常量后面要加L. 没有加L,则默认为int类型,在16位系统下,int是16位的,占2个字节,有效范围是-32768到+32767,A、B、C的选项都会超出这个范围。
2.
判断字符串s1是否小于字符串s2,应当使用()。
正确答案: C 你的答案: D (错误)
if(s1>s2)
if(strcmp(s1,s2))
if(strcmp(s2,s1)>0)
if(strcmp(s2,s1)<0)
解释:
语法/原型:
int strcmp(const char* stri1,const char* str2);
参数 str1 和 str2 是参与比较的两个字符串。
strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不到的字符,或者到达字符串末尾(遇见\0)。
返回值:
如果返回值 < 0,则表示 str1 小于 str2。
如果返回值 > 0,则表示 str2 小于 str1。
如果返回值 = 0,则表示 str1 等于 str2。
3.
结构化程序由三种基本结构组成,三种基本结构组成的算法( )。
正确答案: C 你的答案: A (错误)
可以完成任何复杂的任务
只能完成部分复杂的任务
只能完成符合结构化的任务
只能完成一些简单的任务
4.
阅读程序,下面程序的输出结果是().
假设可执行文件的文件名为prog.exe,运行时键入的命令行为prog-386 net↙
#include <stdio.h>
void main (int argc,char *argv[ ])
{
int i;
for(i=0;i<argc;i++)
printf(“%s",argv[i]);
}
正确答案: D 你的答案: 空 (错误)
-386 net
prog.exe -386 net
prog.exe -386 net
prog -386 net
解释:程序的功能就是将命令行参数输出,因为命令行参数是3.所以输出的结果
应是3个字符串,并且执行文件输入时没有带.exe,所以输出第一个命令行参数就应是prg,
而不是prg.exe。故正确答案是D。
5.
unsigned int a= 0x1234; unsigned char b=*(unsigned char *)&a; 在32位大端模式处理器上变量b等于()?
正确答案: A 你的答案: 空 (错误)
0x00
0x12
0x34
0x1234
解释:
unsigned int a= 0x1234的32位完全表示是0x00001234,在大端(低地址存储高位)处理器上的存储方式为:
由低地址到高地址依次为(假设低地址为0x4000):
0x4000 0x4001 0x4002 0x4003
00 00 12 34
则&a的值为0x4000, char占一个字节,即b最终所取的值为0x4000地址内存储的内容,故为0x00。
若处理器为小端 (低地址存储低位) 模式,则b的值为0x34。
6.
test.c文件中包括如下语句:
#define INT_PTR int*
typede