c语言面试题12/8

来源:互联网 发布:农村淘宝开业剪彩流程 编辑:程序博客网 时间:2024/06/16 11:12
1、有一百个整数,其中有负数,找出连续三个数之和最大的部分. 
示例: 
输入:2 ,-8 ,3,-2 ,4,-10 

输出: 5 ({3, -2, 4})


#include <stdio.h>


int max_num(int kongjian[], int n)
{
    int secMax = 0, max = kongjian[0]+kongjian[1]+kongjian[2], flag = 1;
    int i = 0; 
int maxi=0;
    for(i = 0; i < n-2; i++)
{
if(kongjian[i]+kongjian[i+1]+kongjian[i+2] > max)
{
            secMax = max;
            max = kongjian[i]+kongjian[i+1]+kongjian[i+2];
maxi=i;
}

    }
printf("连续三个数之和最大的部分为:\n");
printf("%d({%d, %d, %d})\n", max, kongjian[maxi],kongjian[maxi+1],kongjian[maxi+2]);
    return 0;
}


int main(void)
{
    int n = 0, i = 0;
    int kongjian[1000]={0};//申请空间
    printf("请输入想要比较大小的元素个数(1~100):");
    scanf("%d", &n);
    printf("请输入%d个数: \n", n);
    for(i = 0; i < n; i++)
        scanf("%d", kongjian + i);
    max_num(kongjian, n);
    printf("\n");
    return 0;
}


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



#include <stdio.h>


void func(unsigned  short *a)
{
    unsigned short tmp = *a >> 8;
    *a <<= 8;
    *a |= tmp;
}


int main(void)
{
    unsigned short a = 0x1234;
    func(&a);
    printf("0x%x\n", a);
    return 0;
}


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


#include <stdio.h>


int main(void)
{
int *ptr;//申请指针
ptr = (int*)0x67a9;//绝对地址
*ptr=0xaa55;//变量值(不知道为什么变成0xaa55)


    return 0;
}

原创粉丝点击