1、有一百个整数,其中有负数,找出连续三个数之和最大的部分.
示例:
输入:2 ,-8 ,3,-2 ,4,-10
输出: 5 ({3, -2, 4})
解:
#include<stdio.h>
int main(void)
{
int i=0,max=0,index=0;
//int a[6]={2 ,-8 ,3,-2 ,4,-10};
//int b[4]={};
int a[100]={};
int b[98]={};
printf("请输入100个整数\n");
for(i=0;i<100;i++)
{
printf("第%d个为:\n",i+1);
scanf("%d",a+i);
}
//for(i=2;i<6;i++)
for(i=2;i<100;i++)
b[i-2]=a[i]+a[i-1]+a[i-2];
max=b[0];
index=3;
//for(i=1;i<4;i++)
for(i=1;i<98;i++)
{
if(b[i]>max)
{
max=b[i];
index=i+3;
}
}
printf("%d({%d,%d,%d})\n",index,a[index-3],a[index-2],a[index-1]);
return 0;
}
2、用<<,>>,|,&实现一个unsigned short型变量(2个字节)的高低位交换!!
例如:0x1234 交换后 0x3412
函数原型:void func(unsigned short *a)
解:
#include<stdio.h>
void func(unsigned short * a);
void func(unsigned short * a)
{
unsigned short temp=0;
temp=(0xff & *a)<<8;
*a=((0xff<<8)& *a)>>8;
*a=*a+temp;
}
int main(void)
{
unsigned short test=0x1234;
func(&test);
printf("0x%x\n",test);
return 0;
}
3、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa55。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
解:
int * p1=(int *)0x67a9
*p1=0xaa55
4、
解:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
int month=0,i=0,num=1;
printf("请输入月份:\n");
scanf("%d",&month);
if(month<0)
{
printf("公司员工人数为0\n");
return 0;
}
int *p=(int *)malloc(month*sizeof(int));
if(p==NULL)
{
printf("error\n");
return -1;
}
for(i=0;i<month;i++)
{
if(i<3)
p[i]=0;
else if(i==3)
p[i]=1;
else
p[i]=p[i-1]+p[i-3];
}
while(month--)
num=num+p[month];
printf("员工总人数为:%d\n",num);
if(p!=NULL)
{
free(p);
p=NULL;
}
}
5、
解:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int num=0,i=0,max=0;
scanf("%d",&num);
int *p1=(int*)malloc(num*sizeof(int));
if(p1==NULL)
{
printf("error");
return -1;
}
for(i=0;i<num;i++)
{
scanf("%d",p1+i);
}
max=p1[0];
for(i=1;i<num;i++)
{
if(p1[i]>max)
max=p1[i];
}
int *p2=(int *)malloc(max*sizeof(int));
if(p2==NULL)
{
printf("error");
return -1;
}
for(i=0;i<max;i++)
{
if(i==0)
p2[i]=1;
else if(i==1)
p2[i]=2;
else
p2[i]=p2[i-1]+p2[i-2];
}
for(i=0;i<num;i++)
printf("%d\n",*(p2+p1[i]-1)%32767);
if(p1!=NULL)
{
free(p1);
p1=NULL;
}
if(p2!=NULL)
{
free(p2);
p2=NULL;
}
return 0;
}