求下列代码的输出结果
#include <iostream.h>union pw
{
int i ;
char ch[ 2 ] ;
}a;
void main()
{
a.ch[ 0 ] = 13 ;
a.ch[ 1 ] = 0 ;
cout << “size=” << sizeof(a) << ‘\n’ << “a.i=” << a.i ;
}
<2>
#include <iostream.h>
#define LETTER 0
void main()
{
char str[ 20 ] = ”C Language” , c ;
int i = 0 ;
while ( (c = str[ i ] ) != ’\0’ ) {
i ++ ;
#if LETTER
if ( c >= ’a’ && c <= ’z’ )
c = c – 32 ;
#else
if ( c >= ’A’ && c<= ’Z’ )
c = c + 32 ;
#endif
cout << c ;
}
} 第一个代码片段输出结果为:
size=4
a.i=13
在这个代码片段中,定义了一个union类型的变量a,包含一个int类型的成员i和一个char数组类型的成员ch。在主函数中,将ch数组的第一个元素赋值为13,第二个元素赋值为0。然后输出了a的大小和a.i的值。由于union类型的大小等于其最大成员的大小,而int类型通常占4个字节,因此输出的大小为4。而a.i的值为13,这是因为union类型的所有成员共用同一块内存,因此ch数组的值也会影响i的值。
第二个代码片段输出结果为:
c l a n g u a g e
在这个代码片段中,定义了一个字符串数组str和一个字符变量c,然后使用while循环遍历字符串数组中的每个字符。在遍历过程中,根据条件编译指令#if LETTER的取值,对于小写字母进行大小写转换。由于条件编译指令中LETTER的取值为0,因此最终输出的结果为将字符串中的大写字母转换为小写字母。 代码1输出结果:
这段代码存在一些语法错误,可能无法通过编译。首先,在C++中应该使用iostream而不是iostream.h。另外,在C++中main函数的返回值应该是int类型而不是void类型。此外,字符串需要使用双引号"而不是奇怪的引号‘。
如果我们修正了这些问题,那么这段代码将会输出以下结果:
size=2
a.i=13
代码2输出结果:
这段代码中有一些条件编译的内容,根据当前的定义,LETTER被定义为0。因此,在这个条件下,代码会将字符串中的大写字母转换为小写字母并输出。修正了一些缩进和代码格式问题之后,代码应该会输出以下结果:
c language
希望这些解释对你有所帮助。如果还有其他问题,请随时提问。
页:
[1]