您的位置:首页 > 编程语言 > C语言/C++

c语言面试题12/8

2017-12-08 18:22 337 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: