2019年信计课程研究性学习(做题目)

如题,下面为我的作业

1、编写一链表,实现以下功能:
(1)链表的生成,
(2)求取链表的长度,
(3)在链表的中间第k个位置插入节点,k从键盘输入
(4)在中间第k个位置删除节点,k从键盘输入
(5)打印每个节点的内容

2、任意选作计算机二级考试上机试题40题。
所选题目进来分散,相同类型题目只选一道,单独完成。

第一次做的一部分

#include<iostream>
#include <math.h>
#include <iomanip>
using namespace std;

//编程序求出1-200以内的能被7整除的数的平方和。377986
void a1_1()
{
	int i,n,s=0;
	for(i=1;i<=200;i++)
		if(i%7==0)
			s+=i*i;
	cout<<"1:"<<s<<endl;
}

//编程序求1~99的平方根的和并输出结果。(保留小数点两位)661.46
void b3_1()
{
	int i;
	double s,j;
	for(i=1;i<=99;i++)
	{
		j=sqrt(i);
		s+=j;
	}
	 cout<<"2:"<<setprecision(2)<<s<<endl;
}

//编写程序,求共有几组i、j、k符合算式ijk+kji=1534,其中i、j、k是0~9之间的一位整数 2
void c4_2()
{
	int i,j,k,s=0;
	for(i=0;i<10;i++)
		for(j=0;j<10;j++)
			for(k=0;k<10;k++)
				if(i*100+j*10+k+k*100+j*10+i==1534)
				{
					s++;
					if(i==j||i==k||k==j)
					s--;
				}
	cout<<"3:"<<s<<endl;
}

//编写程序,求在四位数的奇数中,所有各位数字之和是25的倍数的数的和。 1298515
void d10_2()
{
	int n,i,j,k,l,s=0;
	for(n=1001;n<10000;n+=2)
	{
		i=n/1000; j=n%1000/100; k=n%100/10; l=n%10;
		if((i+j+k+l)%25==0)
			s+=n;
	}
	cout<<"4:"<<s<<endl;
} 

//编程序求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500  时程序退出。550
void e13_1()
{
	int n,i,s;
	for(n=10;n<=500;n+=10)
	{
		s+=n;
		if(s>500)
			break;
	}
	cout<<"5:"<<s<<endl;
}

//已知a>b>c,且a+b+c<100,求满足条件 1/(a^2)+1/(b^2)=1/(c^2)的  共有多少组。 2
void f14_2()
{
	int a=3,b=2,c=1,n=0;
	double i,j,k;
	for(c=1;c<33;c++)
		for(b=c+1;a+b+c<100;b++)
		{	
			for(a=b+1;a+b+c<100;a++)
			{
				i=1.0/(a*a);j=1.0/(b*b);k=1.0/(c*c);
				if(i+j==k)
					n++;
			}
			a=b+1;
		}
	cout<<"6:"<<n<<endl;
}

//求在3000以内被17或者23整除的正整数数的个数。 299
void g15_1()
{
	int i,n=0;
	for(i=1;i<3000;i++)
		if(i%17==0||i%23==0)
			n++;
	cout<<"7:"<<n<<endl;
} 

// 一个数如果刚好与它所有的因子之和相等,则称该数为一个"完数",如:6=1+2+3,则6就是一个完数。求出200到500之间所有的完数之和。 496 
void h18_2()
{
	int i,j,k=0,s=0;
	for(i=200;i<500;i++)
	{	
		k=0;
		for(j=1;j<=i/2;j++)
		if(i%j==0)
		k+=j;
	if(i==k)
	s+=k;
	}
	cout<<"8:"<<s<<endl; 
}

//已知一个数列的前3个数为0,0,1,以后每个数为前3个数的和,编程序求此数列的第36个数。 334745777
void i23_1()
{
	int i,n;
	double a[40]={0,0,1};
	for(i=0;i<=32;i++)
	{
		a[i+3]=a[i+2]+a[i+1]+a[i];
	} 
	cout<<"9:"<<a[35]<<endl;
}

//编写程序,计算在0至50的范围内有多少个数,其每位数的乘积大于每位数的和。 23 
void j28_2()
{
	int i,j,k,n=0;
	for(i=12;i<=50;i++)
	{
		j=i%10; k=i/10;
		if(j*k>j+k)
			n++;
	}
	cout<<"10:"<<n<<endl;
}

//用一元纸币兑换一分、两分和五分的硬币,要求兑换硬币的总数为50枚,问共有多少种换法?(注:在兑换中一分、两分或五分的硬币数可以为0枚) 13
void k32_2()
{
	int i,j,k,n=0,s=0;
	for(k=0;k<21;k++)
		for(j=0;j<=50-k;j++)
			if(k*4+j==50)
				n++;
	cout<<"11:"<<n<<endl;
}

//所谓回文数是从左至右与从右至左读起来都是一样的数字,如:121是一个回文数。编写程序,求出100-900之间的所有回文数的个数。 80 
void l46_2()
{
	int i,n=0;
	for(i=101;i<900;i++)
		if(i%10==i/100)
			n++;
	cout<<"12:"<<n<<endl;
}

//编程序求出100到200之间同时满足除3余2和除5余3条件的数的个数。 6
void m47_1()
{
	int i,n=0;
	for(i=100;i<201;i++)
		if(i%3==2&&i%5==3)
			n++;
	cout<<"13:"<<n<<endl;
}

//百钱百鸡问题。用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,雏鸡三只一钱,编程计算共有几种买法(要求每种鸡至少要买1只)。 3
void n54_2()
{
	int x=1,y=1,n=0;
	for(x=1;x<20;x++)
		for(y=1;y<30;y++)
			if(5*x+3*y+(100-x-y)/3==100&&(100-x-y)%3==0&&x+y<100)
				n++;
	cout<<"14:"<<n<<endl;
}

//若有三个正整数a、b、c满足a^2+b^2=c^2,则a,b,c称为勾股数组,编一程  序,问有多少个三个数均小于100的勾股数组(注意:a,b,c不能为0)。 100
void o56_2()
{
	int i,j,k,z,n=0;
	for(i=1;i<100;i++)
		for(j=1;j<100;j++)
			for(k=1;k<100;k++)
				if(k*k==i*i+j*j)
				{
					n++;
					continue;
				}
	cout<<"15:"<<n<<endl;
}

//编程序求出 2+4+8+16+32+…这样的数之和。如果累加数大于500时,则程序终止并输出结果。 510
void p59_1()
{
	int i=1,s=0;
	do {
		i*=2;
		s+=i;
	} while(s<500);
	cout<<"16:"<<s<<endl;
}

//今有5羊4犬3鸡2兔值钱1496,4羊2犬6鸡3兔值钱1175,3羊1犬7鸡5兔值钱958,2羊3犬5鸡1兔值钱861,求鸡值多少钱? 23
void q60_2()
{
	int x,y,z,k;
	for(x=1;x<1496/5;x++)
		for(y=1;y<=(1175-4*x)/2;y++)
			for(z=1;z<=(1175-4*x-2*y)/6;z++)
			{
				k=(1175-4*x-2*y-6*z)/3;
				if(k<=0)
				break;
				if(5*x+4*y+3*z+2*k==1496&&3*x+y+7*z+5*k==958&&2*x+3*y+5*z+k==861)
					cout<<"17:"<<z<<endl;
			}
}

//编程序求出1~100所有整数的立方和并输出结果。 25502500
void r61_1()
{
	int i,s=0;
	for(i=1;i<101;1++)
	s+=i*i;
	cout<<"18:"<<s<<endl;
}

//"水仙花数"是指这样的数,其各位数字的立方和等于该数本身,如:   153=1^3+5^3+3^3。编写程序求100至400的范围内有多少个水仙花数。 3 
void s64_2()
{
	int x,i,j,k,n=0;
	for(x=100;x<400;x++)
	{
		i=x/100;j=x/10%10;k=x%10;
		if(i*i*i+j*j*j+k*k*k==x)
			n++;
	}
	cout<<"19:"<<n<<endl;
}

//所谓素数是指这样的自然数,除1和它本身外不再有其它因子。编写程序,计算从1981年开始到3000年为止,我们将遇到多少个素数年号。 131
void t76_2()
{
	int i,j,n=0,k=1;
	for(i=1981;i<3000;i++)
		{
			for(j=2;j<=i/2;j++)
				if(i%j=0)
					k=0;
			if(k=1)
				n++;
			k=1; 
		}
	cout<<"20:"<<n<<endl;
}

//编写程序,计算1000以内有多少个这样的数,该数既能被6整除又能被8整除。 42
void u77_1()
{
	int i,n=0;
	for(i=6;i<1000;i++)
		if(i%6==0&&i%8==0)
			n++;
	cout<<"21:"<<n<<endl;
}

//编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是18的倍数,且D=6 ,A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。 10
void v120_2()
{
	int i,x,y,z,n=0;
	for(i=1006;i<9999;i+=10)
		if(i%18==0&&i/1000+i/100%10==i%100/10+i/100%10)
			n++;
	cout<<"22:"<<n<<endl;	
}

//编写程序,统计1000~9999之间的所有满足以下条件的四位数的个数。该四位数是一个完全平方数,其第1位与第3位数字之和为10,第2位与第4位数字之积为12    2
void w148_2()
{
	int i,j,n=0;
	for(i=32;i<100;i++)
	{
		j=i*i;
		if(j/1000+j%100/10==10&&(j/100%10)*(j%10)==12)
			n++;
	}
	cout<<"23:"<<n<<endl;
}

//已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求[1,100]之间第10个能被其因子数目整除的正整数。 56
void x201_1()
{
	int i,j,k=0,n=0;
	for(i=2;i<100;i++) 
		{
			for(j=1;j<=i;j++)
				if(i%j==0)
					k++;
			if(i%k==0&&k>1)
				n++;
			if(n==9)
			{
				cout<<"24:"<<i<<endl;
				break;
			}
			k=0;
		}
}

//已知A<B,且A,B为正整数, 求满足个条件A×B=716699且A+B最小的A值。 563
void y203_3()
{
	int x,y,z=100000,n;
	for(y=200;y<2000;y++)
	{
		for(x=1;x<y;x++)
			if(x*y==716699&&z>x+y)
				n=x;	
		z=x+y;
	}
	cout<<"25:"<<n<<endl;
}

//求[351,432]之间所有既不能被3整除,又不能被8整除的正整数的个数。  47 
void z207_1()
{
	int i,n=0;
		for(i=351;i<433;i++)
			if(i%3!=0&&i%8!=0)
				n++;
	cout<<"21:"<<n<<endl;
}

//有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13....(注:该数列从第二项开始,其分子是前一项的分子与分母的和,而其分母是前一项的分子),求出这个序列前24项的和。要求:按四舍五入的方式精确到小数点后第二位。39.13 
void a213_1()
{
	double s=0.0,i=2.0,j=1.0,z;
	int n=0;
	for(n=1;n<=24;n++)
	{
		s+=i/j;
		z=j;
		j=i;
		i+=z;
	}
	cout<<"27:"<<setprecision(4)<<s<<endl;
}
//求[444,666]范围内最大的素数是多少?  661
void b210_1()
{
	int i,j,k=0;
	for(i=666;i>443;i--)
	{
		for(j=2;j<=i/2;j++)
			if(i%j==0)
				k=1;
		if(k==0)
		{
			cout<<"28:"<<i<<endl;
			break;
		}
		k=0;
	}
}

这只是我做的第一部分,以后还会补齐。

第二次做

void c222_1()
{
		int i=45600,n=0;
		double s=45600.0;
	while(s<i*4)
	{
		s=s+s*0.08;
		n++;
	}
	cout<<"29:"<<n<<endl;
}

//设有6个十进制数字a,b,c,d,f,e,求满足abcdf×e=fdcba条件的五位数abcdf(a≠0,e≠0,e≠1)的个数。 2
void d227_3()
{
	int a,b,c,d,f,e,n=0;
	for(a=1;a<10;a++)
		for(b=0;b<10;b++)
			for(c=0;c<10;c++)
				for(d=0;d<10;d++)
					for(f=0;f<10;f++)
						for(e=2;e<10;e++)
							{
								if((f*e)%10==a)
									if((a*10000+b*1000+c*100+d*10+f)*e==f*10000+c*1000+b*100+b*10+a)
										n++;
							}
	cout<<"30:"<<n<<endl;
}

//求方程8x-5y=3,在|x|<=150, |y|<=200内的整数解。试问这样的整数解中|x|+|y|的最大值是多少? 323
void e232_2()
{
	int x,y,s=0;
	for(x=-150;x<151;x++)
		for(y=-200;y<201;y++)
			if(8*x-5*y==3)
				if(s<(abs(x)+abs(y)))
					s=abs(x)+abs(y);
	cout<<"31:"<<s<<endl;
}

//若两素数之差为2 ,则称两素数为双胞胎数,问[31,600]之间有多少对双胞胎数。 21
void f233_3()
{
	int i,j,k=1,n=0,x=1,y=1,z=1,l=0;
	for(i=31;i<601;i++)
	{
		for(j=2;j<=i/2;j++)
			if(i%j==0)
				k=0;
		if(k==1)
			y=i;
		if(y-x==2)
			n++;
		x=y;
		k=1;
	}
	cout<<"32:"<<n<<endl;
}

//若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数。求[1,500]之间有多少个多因子完备数。 5
void g234_1()
{
	int i,j,s=0,n=1;
	for(i=2;i<501;i++)
	{
		s=0;
		for(j=1;j<=i/2;j++)
			if(i%j==0)
				s+=j;
		if(s%i==0)
			n++;
	}
	cout<<"33:"<<n<<endl;
}

//一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 39 
void h236_3()
{
	int i,j,k,l,n=0,z=1;
	for(i=100;i<1000;i++)
	{
		k=i%100;
		l=i%10;
		if(k>10&&l!=0&&l!=1)
		{
			for(j=2;j<=k/2;j++)
				if(k%j==0)
					z=0;
			for(j=2;j<=l/2;j++)
				if(l%j==0)
					z=0;
			if(z==1)
				n++;
			z=1;
		}
	}
	cout<<"34:"<<n<<endl;
}

//梅森尼数是指能使2^n-1为素数的数n,求[1,21]范围内有多少个梅森尼数? 7
void i244_2()
{
	int n,i=1,k=1,m,x=0;
	for(n=2;n<22;n++)
	{
		for(m=1;m<=n;m++)
			i=2*i;
		i=i-1;
		for(m=2;m<=i/2;m++)
			if(i%m==0)
				k=0;
		if(k==1)
			x++;
		k=1;
		i=1;
	}
	cout<<"35:"<<x<<endl;
}

//某些分子和分母都是二位正整数的真分数具有下列特点:如果将该分数的分子个位数和分母十位数同时去掉,所得结果正好等于原分数约分后的结果,例如16/64=1/4,求满足上述条件的所有真分数个数。 48
//void j247_2()
//{
//	int a,b,c,d,n=0;
//	double x=0.0,y=0.0;
//	for(a=10;a<100;a++)
//		for(b=10;b<100;b++)
//		{
//			c=a/10;  d=b%10;
//			x=a*1.0/b;   y=c*1.0/d;
//			if(x==y)
//				n++;
//		}
//	cout<<"36:"<<n<<endl;	
//}

//所谓"同构数"是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[1,1000]之间所有同构数之和。 1113
void k293_3()
{
	int i,j,k,s=0;
	for(i=2;i<1001;i++)
	{
		j=i*i;
		if(i==j%10||i==j%100||i==j%1000)
			s+=i;
	}
	cout<<"37:"<<s<<endl;
}

6月24日 :对c4—2()进行了修改,因为过程错误。
全部加了斜杠的题目是未完成的题目。

第三次

//求[300,400]之间最小的一个有奇数个不同因子的整数。  324
void l279_1()
{
	int i,j,k=0;
	for(i=300;i<401;i++)
	{
		for(j=2;j<=i/2;j++)
			if(i%j==0)
				k++;	
	if(k%2==1&&k>1)
	{
		cout<<"38:"<<i<<endl;
		break;
	}
	k=0;	
	}
}

//在[200,900]范围内同时满足以下两个条件的十进制数: ⑴其个位数字与十位数字之和除以10所得的余数是百位数字;⑵该数是素数;问有多少个这样的数? 14
void j280_2()
{
	int i,x,y,z,k,s=0,n=0;
	for(i=200;i<901;i++)
	{
		x=i/100;y=i%100/10;z=i%10;
		for(k=2;k<=i/2;k++)
			if(i%k==0)
				s++;
		if(s==0)
			if((y+z)%10==x)
				n++;
		s=0;
	}
	cout<<"39:"<<n<<endl;
}

//若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是"四位双平方数"。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是"四位双平方数"。求所有"四位双平方数"中最大的一个"四位双平方数"。 9025 
void k277_2()
{
	int i,j,x,y=1,n;
	for(i=99;i>31;i--)
	{
		j=i*i;
		x=j/1000+(j%1000)/100+j%100/10+j%10;
		for(n=2;n<7;n++)
			if(x==n*n)
			{
				cout<<"40:"<<j<<endl;
				y++;
			}
		if(y!=1)
		break;
	}
}

到此为止,四十道题目就写完了。暂时还有几个题目未完成,还有链表的操作没有做。等下补上。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值