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;

  

posted @ 2015-11-09 22:33  Lucky-小王子  阅读(233)  评论(0编辑  收藏  举报