2016年C,C++笔试题总结
题1:下列代码输出什么?考的是char型的变量越界问题。当i=127,a=127;当i=128时,a=-128;当a=129时,a=-127;c=1结束for循环
char a; int i; int c; for(i=0,a=0;i<129;a++,i++) { if(a<128) { c=1; } else { c=2; break; } } printf("%d,%d",a,c);//输出-127,1
题2.主要考察unsigned int 和int的大小;和define 当执行完第一个printa=2, b=-1;打印较大的数-1;此处还有一道题在C语言中,最小的整型数是0;
第二个print后把unsigned int 转化成int a=2,b=-1;打印2.
1)若是把b=-1改为b=1,则打印3 3
2)若是把b=-1改为b=1, MAC_FUN(++a,b)则打印3 4
3)若是把b=-1改为b=1, MAC_FUN(a++,b)则打印3 3
在此体会define的用法特点。
#include<iostream> using namespace std; #define MAX_MA(a,b) ((a)>(b)?(a):(b)) int MAC_FUN(int a, int b) { return ((a)>(b)?(a):(b)); } int main(void) { unsigned int a=1; int b=-1; printf("%d\n",MAX_MA(++a,b)); printf("%d\n",MAC_FUN(a,b)); system("pause"); return 0; }
题3.全局变量和静态变量都存储在静态存储区,为什么不冲突。有的解释说static起到隐藏的作用。
#include<stdio.h> #include<stdlib.h> int fun(void){ static int count = 10; return count--; } int count = 1; int main(void) { printf("global\t\tlocal static\n"); for(; count <= 10; ++count) printf("%d\t\t%d\n", count, fun()); system("pause"); return 0; }
题4.while的循环次数。循环无数次,打印从0到n每次执行完i++后i一直加1,但判断时i=0;
int main(void) { int i=0; do { static int i=0; i++; printf("%d\n",i); }while(i<5); system("pause"); return 0; }
题5.考察格式化输出输入 int x; float y; scanf("%3d%f",&x,&y);输入12345 678则x的值 为123 y的值为45.0000
题6.printf("%s,%5.3s","compeuter","compeuter");输出computer, com 后面的意思是输出5个格,左起空两格,输出3个字母
变量int i =123 printf("%5d",i)输出两个空格后输出123, printf("%-5d",i)输出123后空两格
题7.下列代码的输出是2 1 \n 2 5
int a[5]={1,2,3,4,5}; int *ptr=(int*)(a+1); printf("%d %d\n",*(a+1),*(ptr-1)); int *ptr1=(int*)(&a+1); printf("%d %d\n",*(a+1),*(ptr1-1));
题8.下列程序的输出是1 8
double dArrary[2] = {4, 8}, *p, *q; p = &dArrary[0]; q = p+1; cout<<q-p<<endl; cout<<(int)q-(int)p<<endl;
题9.union的大小是 12 里面struct prefix大小是8
union us { char prefix; struct { int s_addr; int mask; }lp; char val[8]; }; struct prefix { char family; char prefixlen; char val[8]; }; printf("%d %d",sizeof(us),sizeof(prefix));
题10.long输出的是十进制
int a,*p=&a; cout<<long(p)<<endl; cout<<long(&p)<<endl; cout<<&p<<endl;