1.
题目:
以下程序段的执行结果是()。
double x;x=218.82631;
printf("%-6.2e\n",x);
A.输出格式描述符的域宽不够,不能输出
B.输出为21.38e+01
C.输出为2.19e+02
D.输出为-2.14e2
答案:
C。
%:表示格式说明的起始符号,也是转义符号,有一题 printf(“%%%%”)输出几个?答案输出%% 两个
-:有-表示左对齐输出,如省略表示右对齐输出
0:有0表示指定空位填0,如省略表示指定空位不填
m.n m指域宽,即对应的输出项在输出设备上所占的字符数。
n指精度。用于说明输出的实型数的小数位数。没有指定n时,隐含的精度为n=6位
e格式表示以指数形式输出实数
那么这题的意思是以左对齐、指数形式、总长度m =6、小数n=2两位 输出
如果实际长度大于域宽,则以实际长度为准
2.
题目:
某32位系统下, C++程序如下所示,sizeof 的值应为?
char str[] = “http://www.renren.com” (长度为21)
char *p = str ;
sizeof (str ) = ?(1)
sizeof ( p ) = ?(2)
void Foo ( char str[100]){
sizeof( str ) = ?(3)
}
void *p = malloc( 100 );
sizeof ( p ) = ?(4)
A.22, 22, 100, 100
B.4, 4, 4, 4
C.22, 4, 4, 4
D.22, 4, 100, 4
答案:
C.
第一个长度为21,加上\0为22,第二个在32位操作系统中,指针大小为4,第三个,数组在作为函数的形参时,自动退化为同类型的指针,第四个指向开辟的内存的指针,大小仍然为4
数组长度就是你定义数组时方括号中数字的大小。
字符串长度就是字符的个数。
字符串所占空间大小就是字符串长度+1(1个结束符的长度);
作为函数的形参传递时数组退化为指针
char c[10]={'x','y','z'},d[]={'x','y','z'}; 不以‘\0’作为结束标志的,它就没有串结束标志, 字符数组的长度,就是数组的长度
sizeof(c)=10,sizeof(d)=3