#ifndef __ZUOYE_H_
#define __ZUOYE_H_
void paixu_maopao(int len,int *str);
int get_way_to_max(int num1,int num2,int num3) ;
void jiecheng_sum(int n);
int find_data_bewteen_A_Z(char *str);
int abc(int *arr,int len);
#endif
//zuoye.c
void paixu_maopao(int len,int *str)//直接显示排序后的结果
{
int i=0,j=0,tmp;
for (i = 0; i < len; i++)
{
for (j = i + 1; j < len; j++)
{
if (str[i] > str[j])
{
tmp=str[i];
str[i]=str[j];
str[j]=tmp;
}
}
}
for(i=0;i<len;i++)
printf("%d ",str[i]);
printf("\n");
}
void jiecheng_sum(int n) //输入n阶乘结果直接打印n!+(n-1)!+....+2!+1!=...
{
if(n<=0)
printf("请输入大于0的整数!\n");
int i=0,j=0,sum=0,ret=0;
for(i=0;i<n;i++)
{
sum=1;
for(j=1;j<=n-i;j++)
sum*=j;
ret+=sum;
}
for(i=n;i>1;i--)
printf("%d!+",i);
printf("1!=%d\n",ret);
}
int get_way_to_max(int num1,int num2,int num3) //返回最大值的计算方式的最大值
{
int a=0,b=0,c=0,d=0,max;
a=num1+num2*num3;
b=num1*(num2+num3);
c=num1*num2*num3;
d=(num1+num2)*num3;
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
if(max<d)
max=d;
return max;
}
int find_data_bewteen_A_Z(char *str)//计算A与Z之间的字符个数直接返回个数的数值否则返回-1
{
int i=0,j=0,k=0,flag=0,flag1=0,flag2=0;
while(str[i++]!=0);//计算字符串长度
i=i-1;
for(j=0;j<i;j++)
{
if(str[j]=='A')//第一次遇到A
{
flag1=1;//标志位置1
break;
}
}
while(str[j++]!=0)//从A开始计算直到碰到Z或结束
{
if(str[j]!='Z')
k++; //用于计数
else{flag2=1;} //标志位置1
}
flag=(flag1&flag2);
if(flag==1)//只有满足2个条件才能通过否则都是-1
return k;
else {return -1;}
}
/*****debug****
void main(void)
{
char *p="ZBCDEABCDEZ";
char *pp="ZBCDEA";
char *ppp="SWERTFG";
int ret=find_data_bewteen_A_Z(p);
int ret1=find_data_bewteen_A_Z(pp);
int ret2=find_data_bewteen_A_Z(ppp);
printf("%d\n %d\n %d\n",ret,ret1,ret2);//输出4 -1 -1
}
*/
int abc(int *arr,int len)
{
int i=0,j=0,max=0,ret=0,tmp=0,flag=0;
for(i=0;i<len;i++)
for(j=i+1;j<len;j++)
{
if(arr[i]<=arr[j])
{
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
max=arr[0];
for(i=0;i<len;i++)
{
if(arr[i]<max)
return arr[i];
}
flag=0;
if(flag==0)
return -1;
}
/*****debug*****
void main()
{
int a[5]={1,2,3,4,5};
int b[5]={1,1,1,1,1};
printf("%d\n%d\n",abc(a,5),abc(b,5));//输出4和-1
}
*/
2、下面是某语言的计算字符串Hash值的算法如下,如果字符‘a’、‘b’对应的ascii的值对应十进制是97、98,
请回答控制台打印出的数值是多少
1---97.
2---25185.
25185.
typedef unsigned long uintptr_t;
uintptr_t NXStrHash (const void *data)
{
uintptr_t hash = 0;
unsigned char *s = (unsigned char *)data;
if (s)for (; ; )
{
if (*s == '\0')break;
hash ^= (uintptr_t)*s++;
printf("1---%ld.\n", hash);
if (*s == '\0')break;
hash ^= (uintptr_t)*s++<<8;
printf("2---%ld.\n", hash);
if (*s == '\0')break;
hash ^= (uintptr_t)*s++<<16;
printf("3---%ld.\n", hash);
if (*s == '\0')break;
hash ^= (uintptr_t)*s++<<24;
printf("4---%ld.\n", hash);
}
return hash;
};
int main(void)
{
uintptr_t hash_value = NXStrHash("ab");
printf("%ld.\n", hash_value);
return 0;
}