1.一个数组有N个元素,使用冒泡排序对其进行排序输出
#include<stdio.h>
int func(int arr[],int n)
{
int i = 0,j = 0,temp = 0;
for(i = 0;i < n-1;i++)
{
for(j = 0;j < n-1-i;j++)
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(i = 0;i< n;i++)
{
printf("%d%c",arr[i],((i==(n-1))?'\n':' '));
}
}
int main(void)
{
int i =0;
int n = 0;
printf("请输入要输入的数的个数:\n");
scanf("%d",&n);
int *arr = (int *)malloc(n * sizeof(int));//malloc申请内存空间
printf("请输入要输入的数:\n");
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
func(arr,n);
return 0;
}
2.给出三个正整数a,b,c,你可以在它们之间插入加号或者乘号以及括号将其变成一个表达式
#include<stdio.h>
int main(void)
{
int a=0,b=0,c=0,max=0,min=0,temp=0,ret=0;
printf("请从键盘上输入三个数a,b,c:");
scanf("%d%d%d",&a,&b,&c);
if(a>b&&b>c)
{
max = a;
min = c;
temp = b;
}
if(a>b&&a<c)
{
max = c;
min = b;
temp = a;
}
if(a<b&&b<c)
{
max = c;
min = a;
temp = b;
}
if(a<b&&a>c)
{
max = b;
min = c;
temp = a;
}
ret = (max * temp) + min;
printf("最大结果为:%d",ret);
return 0;
}
3.如输入:Z2009-AShanghaiZ
则输出:lenth = 8;
事例说明:从A到Z的子串为SHanghai,其长度是8.
#include <stdio.h>
int func1(char arr[])
{
char *find_A = arr;//存储头指针,用于指向A
char *find_Z = arr;//存储头指针,用于指向B
while (*find_A++ != 'A');//指向A字符后一位
while (*find_Z++ != 'Z');//指向Z字符后一位
return (find_Z - 1 - find_A);
}
int main(void)
{
char arr[] = "abzd1-Axi'anZdef";
printf("%d", func1(arr));
return 0;
}
4.下面是某语言的计算字符串Hash值的算法如下,如果字符‘a’、‘b’对应的ascii的值对应十进制是97、98,
请回答控制台打印出的数值是多少_
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;
}
1—97.
2—25185.
25185.
5.实现整数n(n<=10)的算式:n!+(n-1)!+(n-2)!…+3!+2!+1!
输入 n = 3:结果 3!+2!+1! = 11
函数原型:int jiecheng_sum(int n)
#include<stdio.h>
int jiecheng_sum(int n)
{
int i =0,j=0,ret=1,count=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
ret=i*ret;
}
count=count + ret;
}
return count;
}
int main(void)
{
printf("经过计算阶乘为%d",jiecheng_sum(int 3));
return 0;
}