准备面试之前刷点笔试题,每天做个几十道题,总结下错题:
- 下面说明不正确的是()。
A. char a[10]=“china”;
B. char a[10],*p=a;p=“china”;
C. char *a;a=“china”;
D. char a[10],*p;p=a=“china”;
正确答案:D。我的答案:C
分析:首先D肯定错了,因为数组初始化好像没这么写过,数组应该也不能这样赋值;其次C为什么是对的,因为初始化的时候a的地址自动初始化成0xcccccccc(VS2017),而且还 能赋值,本来以为指针不分配空间不能赋值的。。。
- 在下列选项中,全部都是C++关键字的选项为( )。
A. while IF Static
B. break char go
C. sizeof case extern
D. switch float integer
正确答案:C。 我的答案:B
分析:记错了,B里面的应该是goto,还有以为sizeof不算关键字,算函数,或者宏之类的,后来看了下是操作符???和加减乘除一样。。。
void main()
{
int a=5,b=0,c=0;
if (a=b+c) printf ("***\n");
else printf("$$$\n");
}
- 阅读上面程序:
以上程序()。
A. 有语法错不能通过编译
B. 可以通过编译但不能通过连接
C. 输出***
D. 输出$$$
正确答案:D。我的答案:C
分析:看错了,应该是D。。。首先写代码的时候很明显两个等于号写成一个不会报错,其次应该是以表达式的值作为判断条件,当然运算结果是0,所以是D。
- 在 C 语言中,能代表逻辑值“真”的是()。
A. True
B. 大于0的数
C. 非0整数
D. 非0的数
正确答案:D。我的答案:C
分析:C++里面也应该是true把,所以A不对,当然C里面好像没有布尔类型。其次C和D不能确定,当然现在确定了,记下来就行了。
- 下面哪些调用转换支持可变长度参数 ()。
A. cdecl
B. stdcall
C. pascal
D. fastcal
正确答案:A。我的答案:B
分析:简直是黑人问号???好像上面两个见过,下面两个都不认识,后来查了一下才知道,问题还挺复杂的,等会再写一篇好好研究下
1 #include "string.h"
2 int main()
3 {
4 char *src = "hello,world";
5 char *dest = NULL;
6 int len = strlen(src);
7 dest = (char *)malloc(len);
8 char *d = dest;
9 char *s = src[len];
10 while (len-- != 0)
11 *d++ = *s--;
12 printf("%s", dest);
13 return 0;
14
15}
- 请找出上面代码中的所有错误。说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。
A. 第7行要为’\0’分配一个空间
B. 第9行改成char * s = &src[len-1]
C. 第12行前要加上*d = ‘\0’
D. 第13行前要加上free(dest)释放空间
正确答案:ABCD。 我的答案:ABC
分析:这个东西感觉就最后稍微有点纠结,前面的都是实际性问题,D选项是规范性问题。说是程序如果全运行完了,系统会自动释放掉程序占用的内存,包括这里malloc申请的;但是实际上,按规范来说,你申请了空间就要自己释放,不然的话再一些项目里面可能会出现问题,一般也不会等到所有程序都运行完的情况,这个养成个好习惯就行了。
10题错了6题,看来还要好好的修炼。