如题,下面为我的作业
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;
}
}
到此为止,四十道题目就写完了。暂时还有几个题目未完成,还有链表的操作没有做。等下补上。