C的练习

现在学习C是因为在学习性能测试,要写脚本,而使用的工具是Loadrunning,所以这些实现是在LR里面实现的,但是核心代码还是一样的;写这篇文章主要是记录自己在学习性能的过程中,学到什么,掌握了多少;

1.求给定数组的中位数(数组长度可能是单数,也可能是双数)
Action()
{
//求一个数组的中位数
//int a[] = {40,23,24,67,32,68,49,33,29};
//int a[] = {40,23,24,67,32,68,49,33,29,10};
int a[] = {55,37,82,98,6,32,53,89,9,2};
int len = sizeof(a)/sizeof(int);
int i,j;
int tmp;//存放临时值

//先对数组排序
for (i=1;i<len;i++) {//外部循环
for(j=0;j<len-1;j++){//内部循环
if(a[j]>a[j+1]){//将小的数放在前面,实现从小到大排序
tmp = a[j+1];
a[j+1] = a[j];
a[j] = tmp;
}
}
}
for(i=0;i<len;i++)//输出排序后的数组
lr_output_message("%d ",a[i]);

if(len%2 == 0)//求排序后数组的中位数
lr_output_message("%lf ",(float)(a[len/2-1]+a[len/2])/2);
else
lr_output_message("%d ",a[(len-1)/2]);

return 0;
}


2.求x的阶乘
//求一个数的阶乘
int Factorial(int num){
int result = 1;
int i;
for(i=num;i>=1;i--){//
result = i * result;
}
return result;
}

Action()
{
int x = 8;
lr_output_message("%d! = %d",x,Factorial(x));//输入8的阶乘结果
//lr_output_message("%d ",Factorial(7));
return 0;
}


3.求100~999以内,这样一个三位数,该三位数等于其每位数字的阶乘之和。即:abc= a! + b! + c!
//求一个数的阶乘
int Factorial(int num){
int result = 1;
int i;
for(i=num;i>=1;i--){//
result = i * result;
}
return result;
}

Action()
{
int thnum;//定义一个三位数
int a;//存放三位数的百位数字
int b;//存放三位数的十位数字
int c;//存放三位数的个位数字
int sum;

for (thnum=100;thnum<1000;thnum++) {
a = thnum / 100;
b = (thnum-a*100) / 10;
c = thnum - a*100 - b*10;

sum = Factorial(a)+Factorial(b)+Factorial(c);

if(thnum == sum){
lr_output_message("各位数字阶乘和等于其本身的数字有:%d",thnum);
}
}
return 0;
}


4.求不大于n的所有素数之和
//求n以内的素数
int fun(int n)
{
int i, j;
int sum = 0;
for(i=2;i<=n;i++){
for(j=2;j <= i/2;j++){
if(i%j == 0)
break;
}
if(j>i/2){
lr_output_message("%d",i);
sum = sum + i;
}
}

return sum;
}

Action()
{
int n = 21;
lr_output_message("%d",fun(n));
return 0;
}

posted @ 2017-01-23 14:49  沐霖浠  阅读(223)  评论(0)    收藏  举报