牛客网刷题——心里没数的题
1.
题目:
以下程序段的执行结果是()。 double x;x=218.82631; printf("%-6.2e ",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,加上 为22,第二个在32位操作系统中,指针大小为4,第三个,数组在作为函数的形参时,自动退化为同类型的指针,第四个指向开辟的内存的指针,大小仍然为4 数组长度就是你定义数组时方括号中数字的大小。 字符串长度就是字符的个数。 字符串所占空间大小就是字符串长度+1(1个结束符的长度); 作为函数的形参传递时数组退化为指针 char c[10]={x,y,z},d[]={x,y,z}; 不以‘ ’作为结束标志的,它就没有串结束标志, 字符数组的长度,就是数组的长度 sizeof(c)=10,sizeof(d)=3