c语言题中的一些陷阱
2016-03-06 04:47
369 查看
1、求下列两个数组的长度关系
characX[] = "abcdefg"; char acY[] ={ 'a', 'b','c', 'd', 'e', 'f', 'g' };
解析:对于字符串来说,字符串结尾默认为‘\0’,所以acX[]的长度为8,而第二个数组的大小长度为7,而且因为没有用‘\0’结尾,所以在屏幕上输出的值是不确定的.
2、求下列程序的输出结果
void example(characHello[]) { printf("%d\n", sizeof(acHello));return;}int main(){characHello[] = "hello,bit"; example(acHello);
system("pause"); return0;}解析:函数传参时有两种方式,一种是值传递,一种是址传递对于数组来说传递的是首元素的地址。Sizeof(类型)是求内存大小的函数,比如sizeof(int)=4,sizeof(char)=1;.一个指针变量占有4个字节sizeof(*p)=4。
3、以下叙述不正确的是(D)
A)、在不同的函数中可以使用相同变量的名字B)、函数中的形式参数是在栈中保存C)、在一个函数内定义的变量只在本函数范围内有效D)、在一个复合语句中定义的变量在本函数范围内有效(复合语句指的是函数中的成对括弧构成的代码)
4、设有如下定义
unsignedlongpulArray[] = { 6, 7, 8, 9, 10 };
unsignedlong*pulPtr;
pulPtr =pulArray;
*(pulPtr +3) += 3;
printf("%d,%d\n", *pulPtr, *(pulPtr + 3));
求程序输出的结果
5、求输出结果
void example()
{
inti;
characNew[20];
for(i = 0; i < 5; i++)
{
acNew[i]= '0';
}
printf("%d\n", strlen(acNew));
return;
}
int main()
{
example();
system("pause");
return0;
}
6、全局变量只能在一个被.C包含的头文件中
解析:会发生变量重定义。
当一个程序要引入一个文件时 <> 表示只在当前库中寻找,找不到就会出错。 “” 表示先在当前库中寻找,找不到再在系统目录中找。
“”比<>的范围要大。
7、有以下程序求输出结果
int main()
{
union
{
shortk;
chari[2];
}*s,a;
s =&a;
s->i[0]= 0x39;
s->i[1]= 0x38;
printf("%x\n", a.k);
system("pause");
return0;
}
8、设有以下宏定义
#defineN4
#defineY(n)((N+2)*n)
求z = 2 * (N+ Y(5 + 1))的结果
9、int main()
{
unsignedchar a = 200;
unsignedchar b = 100;
unsignedchar c = 0;
c = a +b;
printf("%d %d\n", a + b, c);
system("pause");
return 0;
}
求程序的执行结果()300 44
10、求输出结果
int main()
{
char c;
unsignedchar uc;
unsignedshort us;
c = 128;
uc = 128;
us = c +uc;
printf("0x%x", us);
us =(unsigned char)c + uc;
printf("0x%x", us);
us = c +(char)uc;
printf("0x%x\n",us);
system("pause");
return 0;
}
12、unsignedshort*sum(unsignedchara,unsignedcharb)
{
unsignedshorts = 0;
s = a+ b;
return&s;
}
int main()
{
unsignedshort*p = NULL;
unsignedchara = 1, b = 2;
p = sum(a,b);
printf("%u+%u", a, b);
printf("=%u\n", *p);
system("pause");
return0;
}
求程序执行结果()
characX[] = "abcdefg"; char acY[] ={ 'a', 'b','c', 'd', 'e', 'f', 'g' };
解析:对于字符串来说,字符串结尾默认为‘\0’,所以acX[]的长度为8,而第二个数组的大小长度为7,而且因为没有用‘\0’结尾,所以在屏幕上输出的值是不确定的.
2、求下列程序的输出结果
void example(characHello[]) { printf("%d\n", sizeof(acHello));return;}int main(){characHello[] = "hello,bit"; example(acHello);
system("pause"); return0;}解析:函数传参时有两种方式,一种是值传递,一种是址传递对于数组来说传递的是首元素的地址。Sizeof(类型)是求内存大小的函数,比如sizeof(int)=4,sizeof(char)=1;.一个指针变量占有4个字节sizeof(*p)=4。
3、以下叙述不正确的是(D)
A)、在不同的函数中可以使用相同变量的名字B)、函数中的形式参数是在栈中保存C)、在一个函数内定义的变量只在本函数范围内有效D)、在一个复合语句中定义的变量在本函数范围内有效(复合语句指的是函数中的成对括弧构成的代码)
4、设有如下定义
unsignedlongpulArray[] = { 6, 7, 8, 9, 10 };
unsignedlong*pulPtr;
pulPtr =pulArray;
*(pulPtr +3) += 3;
printf("%d,%d\n", *pulPtr, *(pulPtr + 3));
求程序输出的结果
5、求输出结果
void example()
{
inti;
characNew[20];
for(i = 0; i < 5; i++)
{
acNew[i]= '0';
}
printf("%d\n", strlen(acNew));
return;
}
int main()
{
example();
system("pause");
return0;
}
6、全局变量只能在一个被.C包含的头文件中
解析:会发生变量重定义。
当一个程序要引入一个文件时 <> 表示只在当前库中寻找,找不到就会出错。 “” 表示先在当前库中寻找,找不到再在系统目录中找。
“”比<>的范围要大。
7、有以下程序求输出结果
int main()
{
union
{
shortk;
chari[2];
}*s,a;
s =&a;
s->i[0]= 0x39;
s->i[1]= 0x38;
printf("%x\n", a.k);
system("pause");
return0;
}
8、设有以下宏定义
#defineN4
#defineY(n)((N+2)*n)
求z = 2 * (N+ Y(5 + 1))的结果
9、int main()
{
unsignedchar a = 200;
unsignedchar b = 100;
unsignedchar c = 0;
c = a +b;
printf("%d %d\n", a + b, c);
system("pause");
return 0;
}
求程序的执行结果()300 44
10、求输出结果
int main()
{
char c;
unsignedchar uc;
unsignedshort us;
c = 128;
uc = 128;
us = c +uc;
printf("0x%x", us);
us =(unsigned char)c + uc;
printf("0x%x", us);
us = c +(char)uc;
printf("0x%x\n",us);
system("pause");
return 0;
}
12、unsignedshort*sum(unsignedchara,unsignedcharb)
{
unsignedshorts = 0;
s = a+ b;
return&s;
}
int main()
{
unsignedshort*p = NULL;
unsignedchara = 1, b = 2;
p = sum(a,b);
printf("%u+%u", a, b);
printf("=%u\n", *p);
system("pause");
return0;
}
求程序执行结果()
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- centos 手动安装网卡驱动
- Windows7下获得System权限问题解决方法
- Lua和C语言的交互详解
- 安装软件 Nullsoft Install System 2.27汉化版 下载
- C#实现将数组内元素打乱顺序的方法
- jQuery删除一个元素后淡出效果展示删除过程的方法
- C#编程自学之开篇介绍
- jQuery拖动元素并对元素进行重新排序
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法