C语言刷题

 第1套 除了字符串前导和尾部的*号之外,将串中其他*号全部删除。

/*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,
将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时
不得使用c语言提供的字符串函数。
例如:字符串中的内容为:****A*BC*DEF*G******** ,删除后,字符串中的内容应当是:****ABCDEFG********.
在编写函数时,不得使用C语言提供的字符串函数。*/

//我的解法
void fun_1( char* a,char* h,char* p )
{
	char* ps = h;
	char* pe;
	pe=ps+1;
	while(pe!=p+1)
	{
		if(*pe!='*')
		{
			ps++;
			*ps=*pe;
			*pe='*';
		}
		pe++;
	}
	while(*(pe+1))
	{
		pe++;
	}
	while(p!=ps)
	{
		p--;
		pe--;
	}
	*(pe+1)='\0';	
}

//答案解法
void fun_1_2(char* a,char* h,char* p)
{
	char *q,*k;
	q=h;
	while(q<p)
	{
		if(*q=='*')
		{
			k=q;
			while(*k)
			{
				*k=*(k+1);
				k++;
			}
			p--;
		}
		else
			q++;
	}
}

void main_1()
{
	
	char a[]="****A*BC*DEF*G********";
	printf("%c %C\n",a[4],a[13]);

    fun_1(a,&a[4],&a[13]);

	printf("%s\n",a);

}

  第2套 根据以下公式求Π的值

/*根据以下公式求Π的值
    请编写一个函数fun,它的功能是:根据以下公式求Π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
    Π/2 = 1 + 1/3 + (1*2)/(3*5) + (1*2*3)/(3*5*7)+ (1*2*3*4)/(3*5*7*9) + ..... + (1*2*...*n)/(3*5*...*(2n+1))
    程序运行后,如果输入精度0.0005,则程序输出为3.140578    */

//我的解法
double fun_2( double eps )
{	
	double k = 1;
	int i = 1;
	double sum = 0.0;
	double x = 1;
	double y = 1;
	while(k >= eps)
	{	
		sum+=k;
		x *= i;
		y *= 2*i+1;
		k = x/y;
		i++;
	}
	return sum*2;
		
}

//答案的解法
double fun_2_2( double eps)
{
	double pi = 0.0,t=1,up=1.0,dow=1.0,n=1.0;
	while(t>=eps)
	{
		pi+=t;
		up*=n;
		dow*=2*n+1;
		t=up/dow;
		n++;
	}
	return 2*pi;
}

void main_2()
{
	double i = 0;
	double k = 0;
	scanf("%lf",&i);
	k = fun_2(i);

	printf("%lf\n",k);
}

  第3套 比较两个字符串的长度

/*请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串*/

//我的解法
char* fun_3( char* s,char* t )
{	
	char *p,*q;
	p=s;
	q=t;
	while(*p&&*q)
	{
		p++;
		q++;
	}
	if(*q=='\0'||(*p=='\0'&&*q=='\0'))
		return s;
	else
		return t;
		
}

//答案解法
char *fun_3_2(char *s,char *t)
{
	int i=0,j=0;
	char *p=s,*q=t;
	while(*(p++)) i++;
	while(*(q++)) j++;
	if(i>=j) return s;
	else return t;
}


int main_3(){
	char a[50]={0};
	char b[50]={0};
	char* p;
	scanf("%s\n%s",a,b);

	p = fun_3(a,b);

	printf("%s\n",p);

	return 0;
}

第4套  若多于n个,则删除多余的*号

/*若多于n个,则删除多余的*号
规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面连续的*号不得多于n个:若多于n个,则删除多余的*号;若少于
或等于n个,则什么也不做,字符串中间和尾部的*号不删除 */

//我的解法
void fun_4( char* a,int n )
{	
	char *p=a;
	int i=0;
	while(*(p++)=='*')
	{
		i++;
	}

	if(i>n)
	{	
		i=i-n;
		while(*(a+i))
		{
			*a=*(a+i);
			a++;
		}
	}

}

//答案解法
void fun_4_2(char* a,int n)
{
	char* p,b[81];
	int i=0,j=0;
	p=a;
	while(*p=='*')	//统计前导*的个数
	{
		i++;
		p++;
	}
	if(i>n)
	{
		p=a+(i-n);	//设置新字符的起点
		while(*p)	//将结果复制到数组b
		{
			b[j]=*p;
			p++;
			j++;
		}
		b[j]='\0';	//设置字符串结束标志
		j=0;
		while(b[j]!='\0')//将b数组的内容复制到a数组
		{
			a[j]=b[j];
			j++;
		}
		a[j]='\0';
	}
}



int main_4(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	char a[]="****A*BC*DEF*G********";
	int n=0;
	scanf("%d",&n);

	fun_4(a,n);

	printf("%s\n",a);

	return 0;
}

第5套  计算n门课程的平均分

/*计算n门课程的平均分,计算结果作为函数值返回
请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回 */

//我的解法
float fun_5( float* a,int n )
{	
	float sum=0.0;
	int i=n;
	while(i--)
	{
		sum+=*(a++);
	}
	
	return sum/n;

}

//答案解法
float fun_5_2( float* a,int n )
{
	float ave=0.0;
	int i;
	for(i=0;i<n;i++)
	{
		ave+=a[i];
	}
	ave/=n;
	return ave;
}

int main_5(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	
	float a[10]={90.5,72,80,61.5,55};

	float ave = fun_5(a,5);

	printf("%.2f\n",ave);

	return 0;
}

 第6套  求出该学生的平均分放在记录的ave成员中

/*求出该学生的平均分放在记录的ave成员中。某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成员已在主函数中给出。

请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。 */

typedef struct student_6
{
	int id;		//学号
	float s[8];	//8门课程的分数
	float ave;	//平均分
}stu_6;

void fun_6( stu_6* p )
{	
	int i=0;
	for(i=0;i<8;i++)
	{
		p->ave+=p->s[i]/8;
	}

}

int main_6(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);

	float score[8]={85.5,76,69.5,85,91,72,64.5,87.5};
	int i = 0;
	stu_6 student;
	student.id = 37;
	for(i=0;i<8;i++)
	{
		student.s[i]=score[i];
	}
	student.ave=0.0;
	fun_6(&student);

	printf("%.3f\n",student.ave);

	return 0;
}

  第7套  把高于平均分的学生数据放在h所指的数组中

/*把高于平均分的学生数据放在h所指的数组中
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,

请编写函数fun,它的功能是:把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。 */

typedef struct stu_7
{
	int id;	//学号
	double s;//成绩
}stu_7;

double fun_7( stu_7* a,stu_7* b,int* n )
{	
	int i = 0;
	double ave = 0.0;	
	*n = 0;
	for(i=0;i<5;i++)
	{
		ave+=a[i].s/5;
	}

	for(i=0;i<5;i++)
		if(a[i].s>=ave)
		{
			b[*n]=a[i];
			(*n)++;
		}
	
		return ave;
}

int main_7(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	int i =0;
	double score[5]={85.5,76,69.5,85,91};
	stu_7 h[5];
	double ave = 0.0;
	int n=0;
	stu_7 s[5];
	for(i=0;i<5;i++)
	{
		s[i].id=i;
		s[i].s=score[i];
	}
	ave = fun_7(s,h,&n);
	
	printf("高于等于平均分的人数:%d\n平均分:%lf\n",n,ave);
	printf("成绩高于等于平均分的学生信息:\n\n");
	printf("学号\t成绩\n");
	for(i=0;i<n;i++)
	{
		printf("%d\t%.2lf\n",h[i].id,h[i].s);
	}

	return 0; 
}

   第8套  按分数的高低排列学生的记录

/*按分数的高低排列学生的记录
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的
功能是:按分数的高低排列学生的记录,高分在前。*/

typedef struct stu_8
{
	int id;	//学号
	double s;//成绩
}stu_8;

void fun_8( stu_8* a )
{	
	stu_8 temp;
	int i=0,j=0;
	for(i=0;i<5;i++)
		for(j=i+1;j<5;j++)
			if(a[i].s<a[j].s)
			{
				temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}

}

int main_8(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	int i =0;
	double score[5]={85.5,76,69.5,85,91};
	stu_8 s[5];
	for(i=0;i<5;i++)
	{
		s[i].id=i;
		s[i].s=score[i];
	}

	
	printf("排列之前:\n");
	for(i=0;i<5;i++)
	{
		printf("%d\t%.2lf\n",s[i].id,s[i].s);
	}

	fun_8(s);

	printf("排列之后:\n");
	for(i=0;i<5;i++)
	{
		printf("%d\t%.2lf\n",s[i].id,s[i].s);
	}

	return 0;
}

   第9套  将两个两位数的正整数a、b合并成一个整数

/*将两个两位数的正整数a、b合并成一个整数
函数fun的功能是:将两个两位数的正整数a,b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位置上。

例如:当a=45,b=12.调用函数后,c=2415. */

//我的解法
void fun_9( int a,int b,long *c )
{	
	*c+=a%10;
	*c+=(b%10)*10;
	*c+=(a/10%10)*100;
	*c+=(b/10%10)*1000;

}

//答案解法
void fun_9_2(int a,int b,long *c)
{
	int qw,bw,sw,gw;
	bw=a/10;
	gw=a%10;
	sw=b/10;
	qw=b%10;
	*c=qw*1000+bw*100+sw*10+gw;
}

int main_9(){
	int a =0,b = 0;
	long c = 0;
	scanf("%d %d",&a,&b);
	fun_9( a, b, &c);
	
	printf("%ld\n",c);
	return 0;
}

第10套  函数返回指定学号的学生数据

/*函数返回指定学号的学生数据
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,

请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空号,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)*/

typedef struct stu_10
{
	char id[10];
	float s;
}stu_10;

//我的解法
stu_10 fun_10( stu_10* a,char* b )
{	
	int i = 0;
	stu_10 result={"",-1};
	result.s=-1;
	for(i=0;i<5;i++)
	{
		if(!strcmp(a[i].id,b))
			return a[i];
	}
	return result;
}

//答案解法
stu_10 fun_10_2( stu_10* a,char* b )
{
	int i;
	stu_10 t;
	for(i=0;i<5;i++)
		if(strcmp(a[i].id,b)==0)
			return a[i];

	strcpy(t.id,"");
	t.s=-1;

	return t;
}


int main_10(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	int i =0;
	float score[5]={85.5,76,69.5,85,91};
	stu_10 s[5]={"1001",85.5,"1002",76,"1003",69.5,"1004",85,"1005",91};
	stu_10 result;
	for(i=0;i<5;i++)
	{
		printf("%s\t%.2f\n",s[i].id,s[i].s);
	}
	
	printf("----------------------\n");
	result = fun_10( s, "1002");
	
	printf("%s\t%.2f\n",result.id,result.s);
	return 0;
}

 第11套  把指定分数范围内的学生数据放在h所指的而数组中

 /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,

请编写函数fun,它的功能是:把指定分数范围内的学生数据放在h所指的而数组中,分数范围内的学生人数由函数值返回。

例如:输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在high中。*/

typedef struct stu_11
{
	char id[10];
	float s;
}stu_11;

//我的解法
int fun_11( stu_11* s,stu_11* h,float low,float high )
{	
	int i = 0;
	int j = 0;
	while(i<9)
	{
		if(s[i].s>=low && s[i].s<=high)
			h[j++] = s[i];
		i++;
	}
	return j;
}

int main_11(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	int i = 0,j = 0;
	float low,high;
	stu_11 s[9]={"1001",97,"1002",87,"1003",88,"1004",99,"1005",85.5,"1006",76,"1007",69.5,"1008",85,"1009",91}; 
	stu_11 h[9]={0};
	scanf("%f %f",&low,&high);
	j = fun_11(s,h,low,high);
	while(i<j)
	{
		printf("%s\t%.2f\n",h[i].id,h[i].s);
		i++;
	}
	return 0;
}

  第12套  求出平均分

/*N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

请编写函数fun,它的功能是:求出平均分,由函数值返回。

例如:若学生的成绩是85,7669,85,91,72,64,87;则平均分应当是:78.625。*/

typedef struct stu_12
{
	int id;	//学号
	int s;	//成绩
	struct stu_12* next;
}stu_12,*stu_12_list;

//我的解法
double fun_12( stu_12* h )
{	
	stu_12* p;
	int n=0;
	double ave = 0.0;
	p=h->next;
	while(p)
	{	
		n++;
		ave += p->s;
		p = p->next;
	}
	ave /= n;
	return ave;
}

//答案解法
double fun_12_2( stu_12* h )
{
	double ave = 0.0;
	int n = 0;
	stu_12 *p;
	p=h->next;
	while(p!=0)
	{
		ave+=p->s;
		n++;
		p=p->next;
	}
	ave/=n;
	return ave;
}


int main_12(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	int i = 0;
	stu_12 *L,*h,*r;
	double ave = 0.0;
	int score[8] = {85,76,69,85,91,72,64,87};
	L = (stu_12 *)malloc(sizeof(stu_12));
	h = L;
	r = L;
	h->next = NULL;
	while(i<8)
	{
		L = (stu_12 *)malloc(sizeof(stu_12));
		h->next = L;
		h=L;
		h->next = NULL;
		h->id = i;
		h->s = score[i];
		i++;
	}

	ave = fun_12(r);
	printf("%.3lf\n",ave);
	return 0;
}

 第13套  求出W的低n-1位的数作为函数值返回

/*请编写一个函数unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出W的低n-1位的数作为函数值返回。
例如w的值为5923,则函数返回923;w的值为923,则函数返回23。*/

//我的解法
unsigned fun_13( unsigned w )
{	
	int i = 0,sum = 1;
	unsigned n = w;
	while(n)
	{
		i++;
		n/=10;
	}
	if(i>=2)
	{
		i=i-1;
		while(i)
		{
			sum*=10;
			i--;
		}
			
		return w%sum;
	}
	return 0;
}



//我的解法二

//快速幂
unsigned fastPower_13(unsigned base, unsigned power) {//这里写为函数形式,也可直接放入主函数中
    unsigned result = 1;
    while (power > 0) {
        if (power % 2 == 1) {//判断奇偶
            result = result * base;
        }
        power = power / 2;//指数减半,整型变量不保留小数,奇数也可直接除
        base = (base * base) ;//底数平方
    }
    return result;
}

unsigned fun_13_1( unsigned w )
{	
	int i = 0;
	unsigned n = w;
	while(n)
	{
		i++;
		n/=10;
	}
	printf("%d\n",i);
	if(i>=2)
	{
		i=i-1;
		i = fastPower_13(10,i);
		return w%i;
	}
	return 0;
		
}


//答案解法
unsigned fun_13_2( unsigned w )
{	
	int t = w,n = 0,k,p = 1,num = 0,x;
	
	while(t>0)
	{
		t/=10;
		n++;
	}
	for(k=0,x=w;k<n-1;k++)
	{
		t = x%10;
		x /= 10;
		num += p*t;
		p = 10*p;
	}

	return num;
}

		
int main_13(){
	unsigned w= 0,i=0;
	scanf("%u",&w);
	i = fun_13(w);
	printf("%u\n",i);
	return 0;
}

第14套  求出数组的最大元素在数组中的下标

/*请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最大元素在数组中的下标,用k返回
例如:输入如下整数:876 675 896 101 301 401 980 431 451 777,则输出结果为6,980*/

int fun_14(int *s,int t,int *k)
{	
	int max = 0;
	int i = 0;
	*k = 0;
	for(i=1;i<t;i++)
	{
		if(s[*k]<s[i])
			*k = i;
	}
		
	return *k;
		
}

int main_14(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	int s[]={876,675,896, 101, 301, 401, 980, 431, 451, 777};
	int t = sizeof(s)/sizeof(s[0]);
	int k = 0;
	fun_14(s,t,&k);
	printf("%d %d\n",k,s[k]);
	return 0;
}

 第15套  将一个数字字符串转换为一个整数

 /*将一个数字字符串转换为一个整数
请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提高的将字符串转换为整数的函数)。

例如:若输入字符串"-1234",则函数把它转换为整数值 -1234。*/

//我的解法
long fun_15(char *p)
{
	long k = 0;
	int flag = 1;
	if(*p=='-')
	{
		flag=-1;
		p++;
	}
	
	while(*p)
	{
		k *= 10;
		k += (*p-48);
		p++;
	}

	k *= flag;

	return k;
}

//答案解法
long fun_15_2(char *p)
{
	char *q;
	long t = 0;
	q=p;
	while(*q!='\0')
	{
		if(*q!='-')
		{
			t=t*10+(*q-'0');
			q++;
		}
		else
			q++;
	}

	if(*p=='-')
		return -t;	//判断正负号
	else
		return t;
}


int main_15(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);

	char p[]="-1234";
	long k = 0;

	printf("%s\n",p);
	k = fun_15( p );
	printf("%ld\n",k);

	return 0;
}

  第16套  求出1到m之内能被7或11整除的所有整数

/*求出1到m之内能被7或11整除的所有整数
    请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传送给m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49*/ 

//我的解法(优化版本)
//得到的数组a顺序排列
void fun_16(int m,int *a,int *n)
{
	int i = 7;
	int j = 14,k = 11;
	*n = 0;
	while(i<=m)
	{
		*a=i;
		a++;
		(*n)++;
		if(j<k)
		{
			i = j;
			j += 7;
		}
		else if(j>k)
		{
			i = k;
			k += 11;
		}
		else
		{
			i = j;
			j+=7;
			k+=11;
		}
	}
}
//我的解法(得到的数组是乱序的且存在重复值)
/*void fun_16_1(int m,int *a,int *n)
{

	int j = 7,k = 11;
	*n = 0;
	while(j<=m||k<=m)
	{
		if(j<=m)
		{
			*a=j;
			a++;
			(*n)++;
			j+=7;
		}
		if(k<=m)
		{
			*a=k;
			a++;
			(*n)++;
			k+=11;
		}
	}
}
*/

//答案解法
void fun_16_2(int m,int *a,int *n)
{
	int i;
	for(i=1,*n=0;i<=m;i++)
		if(i%7==0||i%11==0)
			a[(*n)++]=i;
}

int main_16(){
	//srand(time(NULL));
	//printf("运行时间:%f\n",(double)clock() / CLOCKS_PER_SEC);
	int a[100]={0};
	int n = 0; //n记录数组中元素的个数
	int m = 0;
	int i = 0;
	scanf("%d",&m);
	fun_16( m,a,&n );
	for(i=0;i<n;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");
	
	return 0;
}

   第17套  找出一维整型数组元素中最大的值和它所在的下标  

/*找出一维整型数组元素中最大的值和它所在的下标    

请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标.*/ 

void fun_17(int a[],int n,int *max,int *d)
{
	int i = 0;
	*max = a[0];
	*d = 0;
	for(i=1;i<n;i++)
	{
		if(*max<a[i])
		{
			*max = a[i];
			*d = i;
		}
	}
}

int main_17(){
	int x[6]={876,675,896,101,301,401};
	int max = 0,index = 0;
	fun_17( x,6,&max,&index );
	printf("%d %d\n",index,max);
	return 0;
}

   第18套  将s所指向字符串中下标为偶数的字符删除

/*将s所指向字符串中下标为偶数的字符删除
    函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成
的新串放在t所指数组中。
    例如:当s所指字符串中的内容为:"ABCDEFGHIJK"
               在t所指数组中的内容应是:"BDFHJ"*/ 

void fun_18(char *s,char t[])
{
	int i = 0,n = 0;
	while(*s)
	{
		if(i%2!=0)
			t[n++] = *s;
			
		i++;
		s++;
	}
	t[n]='\0';
}

void fun_18_1(char *s,char t[])
{
	int i = 0;
	while(*s++)
	{
		*t++ = *s++;
	}
	*t='\0';
}

int main_18(){
	char s[]="ABCDEFGHIJ"; 
	char t[30];
	fun_18_1(s,t);
	printf("%s\n",t);
	return 0;
}

   第19套  计算......每相邻两个元素之平均值的平方根之和

/*计算......每相邻两个元素之平均值的平方根之和
    请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之
平均值的平方根之和。
    例如:给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0.
输出应为:s=35.951014.*/

double fun_19(double x[9])
{
	double k,sum=0.0;
	int i = 0;
	for(i=1;i<9;i++)
	{
		k = (x[i-1]+x[i])/2;
		sum += sqrt(k);
	}
	return sum;
}


int main_19(){
	double x[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0}; 
	double sum;
	sum = fun_19(x);
	printf("%lf\n",sum);
	return 0;
}

    第20套  计算并输出下列多项式的值

/*计算并输出下列多项式的值
    请编写函数fun,其功能是:计算并输出下列多项式的值:
    s=(1-1/2)+(1/3-1/4)+......+(1/(2*n-1)-1/(2*n))
    例如,在主函数中从键盘给n输入8后,输出为:s=0.662872.*/ 

//我的解法1
double fun_20(int n)
{	
	int i = 0;
	double s=0.0;
	for(i=1;i<=n;i++)
	{
		s += 1.0/(2*i-1)-1.0/(2*i);
	}
	return s;
}

//我的解法2
double fun_20_1(int n)
{	
	int i = 0,f = 1;
	double s=0.0;
	for(i=1;i<=2*n;i++)
	{
		s += f*1.0/i;
		f *= -1;
	}
	return s;
}


int main_20(){
	int n = 0;
	double ret;
	scanf("%d",&n);
	ret = fun_20(n);
	printf("%lf\n",ret);
	return 0;
}

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值