1、写一个函数找出一个整数数组中第二大的数。
PS1: 66 66 66 66 //无第二大的数字
PS2: 99 99 88 86 // 第二大的数字是88
#include<stdio.h>
void func(int a[],int lenth)
{
int i = 0 ,max = a[0] ; // max 为最大值
for( i=1 ; i<lenth ; i++) //首先求出最大值;
{
if( a[i] > max )
{
max = a[i];
}
}
int temp = 0; //初始化第二大值temp 为 0
for( i=0 ; i<lenth ; i++ )
{
if( a[i]<max && a[i]>temp)
temp = a[i];
}
if( temp == 0 )
printf("无第二大数字\n");
else
printf("第二大数字为:%d",temp);
}
int main(void)
{
int a[4] = {99,99,88,66};
func(a,4);
}
2、一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号。只留下车号的一些特征。
甲说:车牌的前两位数字是相同的,
乙说:车牌的后两位的数字是相同的但与前两位不同
丙说:4位车牌恰好是某个整数的平方
#include <stdio.h>
int main(void)
{
int i=0 , j=0 , k=0 , n=0 ;
int a , b ;
for( i=1 ; i<10 ; i++)
{
j = i ;
for( k=0 ; k<10 ; k++)
{
if( k!=i)
{
n = k ;
a = i*1000 + j*100 + k*10 + n;
for( b=32 ; b<100 ; b++)
{
if( a == b*b )
printf("车牌号为:%d\n",a);
}
}
}
}
}
3、What will print out why!
main (void)
{
char *p1 = "name";
char *p2;
p2 = (char *)malloc(20);
memset(p2,0,20);
while(*p2++ = *p1++);
printf("%s\n", p2);
return 0;
}
main (void)
{
char *p1 = "name";
char *p2;
p2 = (char *)malloc(20); //给p2分配20字节的储存空间
memset(p2,0,20); //将p2置零
while(*p2++ = *p1++); //把指针*p1的值赋给*p2
printf("%s\n", p2); //此时p2指向字符串“name”结尾后一位,值为空
}