1.以下程序的输出结果是
void main()
{
char w[ ] [10]={"ABCD","EFGH","IJKL","MNOP"},k;
for (k=1;k<3;k++) printf("%s\n",w[k]);
}
解析:
EFGH
I J K L
对于二维数组w[][10]
w[]就相当于其二维数组的名字
格式化%s输出遇到\0停止
所以w[1] w[2]为
EFGH
I J K L
2.下列关于继承的描述中,正确的是
- 继承不是类之间的一种关系
- C++语言仅支持单一继承
- 继承会增加程序的冗余性
- 继承是面向对象方法中一个很重要的特性
解析:
面向对象的三大特性:封装 继承 多态
3.for(表达式1;;表达式3)可理解为 for(表达式1;1;表达式3)。请问这句话的说法是正确的吗?
解析:正确
在C中0为假,!=0 为真
for循环不能没有退出判断,如果缺省则默认为true
4.对定义:
void (*f)(int *, int *);
描述正确的是
- 定义了函数的指针f,f所指函数返回指针
- 声明了一个返回值为指针的函数f
- 声明了一个无返回值的函数f
- 定义了函数的指针f,f所指函数无返回值
解析:
- 指向函数的指针
int (*a)(int,int);
指向函数的指针,其指向函数的起始地址
- 函数的返回值为指针
int * a(int,int);
定义函数a其返回值为地址
5.以下叙述中正确的是
- 在语句char str[] = “string!”;中,数组str的大小等于字符串的长度
- 语句 char str[10] = “string!”; 和 char str[10] = {“string!”}; 并不等价
- 对于一维字符数组,不能使用字符串常量来赋初值
- 对于字符串常量 “string!”,系统已自动在最后加入了"\0"字符,表示串结尾
解析:字符串在内存中以字符数组形式存储
为了方便统计实际字符串长度,系统会默认在字符串末尾加\0
6.C 语言源程序文件的缺省扩展名为
解析:C
文件扩展名为.c的为c编译器下
文件扩展名为.cpp的为c++编译器下
.obj为编译后生成目标文件扩展名
.exe为可执行文件是编译,链接后生成的
7.下面的程序的输出是什么?
#include<stdio.h>
int main(void)
{
int n;
char y[10] = "ntse";
char *x = y;
n = strlen(x);
*x = x[n];
x++;
printf("x=%s\n",x);
printf("y=%s\n",y);
return 0;
}
解析:x=tse,y=
*是取值运算符,在
*x = x[n]
是将x[4]的值赋给y数组的首元素
y数组也就变成了 /0tse,printf输出是遇到\0结束
而x++使x指向第二个元素
所以输出
x=tse,y=
8.以下代码最后一次打印结果是
void fun(int iinputnum)
{
static int icount=1;
icount=icount+iinputnum;
print( “ \n icount =%d ” ,icount+iinputnum);
}
for(i=1;i<3;i++) fun(i);
解析:iCount=6
静态局部变量是存储在静态存储区
生命域是从程序开始到结束
icount的值依次是 1 2 4
最后与传入参数相加 4+2 = 6
9.有以下程序
#include <stdio.h>
main()
{
int a=2, c=5;
printf( "a=%%d,b=%%d\n", a,c );
}
则程序的输出结果是
解析:
a=%d,b=%d
C 语言中用 “%%” 打印输出字符 “%”, 所以 %%d, 输出为 %d 两个普通字符 , 而不是格式控制符 “%d” 的含义
#include<stdio.h>
int main()
{
unsigned char i=7;
int j=0;
for(;i>0;i-=3)
{
++j;
}
printf("%d\n",j);
return 0;
}
请问该程序的输出是多少?
解析:
173
unsigned char 8位数据位,范围0-255,
所以-2(11111110)时,溢出变成254;
同理-1(11111111)时,溢出变成255;
最后减到0时,不满足循环条件,for停止。
刚好173次。
7 4 1 ==> 共(7-1)/3+1=3次(1-3=-2,即254,继续循环)
254 251 … 5 2 ==> 共(254-2)/3+1=85次(2-3=-1,即255,继续循环)
255 252 … 6 3 ==> 共(255-5)/3+1=85次(3-3=0,退出循环)
所以总共173次。