C笔试题

来源:互联网 发布:爱奇艺网络电影排行榜 编辑:程序博客网 时间:2024/06/10 06:23

1、有一百个整数,其中有负数,找出连续三个数之和最大的部分.
示例:
输入:2 ,-8 ,3,-2 ,4,-10
输出: 5 ({3, -2, 4})

#include<stdio.h>int func(int p[]){    int i;    int ret[100]={0};    for(i=0;i<100;i++)    {        ret[i] = p[i]+p[i+1]+p[i+2];        i++;    }    for(i=0;i<100;i++)    {        if(ret[i] > ret [i+1])            max = ret[i];        max = ret[i+1];    }    printf("%d\n",max);}int main(){    int p[100] = {0};    int i;    for(i=0;i<100;i++)        scanf(" %d", p[i]);    func(*p[]);    return 0;}

2、用<<,>>,|,&实现一个unsigned short型变量(2个字节)的高低位交换!!
例如:0x1234 交换后 0x3412
函数原型:void func(unsigned short *a)

#include<stdio.h>//拿出低字节部分,拿出高字节部分,交换void func(unsigned short *a){    unsigned short q = 0x00ff;    unsigned short p = 0xff00;    q &= *a;//低    q << = 8;    p &= *a;//高    p >> = 8;    *a = q + p;}int main(){    unsigned short *a;    printf("请输入例如0x1234的数:");    scanf("%x", a);    func(a);    return 0;}

3、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa55。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。