/* 第一题:n为一个整数(小于10万),它加上100后是一,现在小编就来说说关于c语言程序设计练习题及答案?下面内容希望能帮助到你,我们来一起看看吧!

c语言程序设计练习题及答案(C语言程序设计上机程序题)

c语言程序设计练习题及答案

/* 第一题:n为一个整数(小于10万),它加上100后是一

个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

#include<iostream>

#include<cmath>

using namespace std;

int judge(int a)

{

int b=sqrt(a);

if(a==b*b)

return 1;

else

return 0;

}

void main()

{

int i,t;

for(i=-99;i<100000;i )

if

(judge(i 100)&&judge(i 168))

cout<<i<<endl;

}*/

/*第二题:求1000之内的完全数。

说明:完全数就是:除了它本身以外所有因子之和等于其

本身,例如:6=1 2 3。

#include<iostream>

using namespace std;

void main()

{

int a,b,sum=0;

for(a=1;a<=1000;a )

{

for(b=1;b<=a/2;b )

{

if(a%b==0)

sum=sum b;

}

if(sum==a)

cout<<a<<endl;

sum=0;

}

}

*/

/*第三题:求出 [900, 1000]间有偶数个因子(这里因子不

含1和自身)的数有多少个,其中最小的一个?

#include<iostream>

using namespace std;

void main()

{

int a,b,c=0,d=0,min;

for(a=1000;a>=900;a--)

{

for(b=2;b<=a/2;b )

{

if(a%b==0)

c;

}

if(c%2==0)

{

d;

min=a;

}

}

cout<<"min="<<min<<"一共有:"<<d<<endl;

}

*/

/*第四题:编写一个自定义函数:int f( int M, int N) ,f( )的功能是:

对给定的正整数M和N,找出满足方程"7x 4y=M"的正整数解中x是偶数且y

是奇数的解,其中:x,y属于[1,N]的范围。

要求:若M和N不都是正整数,则结束函数并返回-1;只有M和N都是正整数

时,才继续求解操作,用二重循环进行求解:

(1)在函数中输出满足条件的正整数解x和y

(2)并且使函数值返回满足条件的正整数解的组数

#include<iostream>

using namespace std;

int f(int M,int N)

{

int x,y,k=0;

if(M<0||N<0)

{cout<<"请输入正整数";

return -1;}

{for(x=2;(M-7*x>0)&&N>=x;x =2)

{

for(y=1;N>y;y =2)

{

if(M-7*x-4*y==0)

{cout<<"x="<<x<<" y="<<y<<endl;

k;}

}

cout<<"k="<<k;

return k;}}

}

void main()

{

int M,N;

cout<<"请输入整数M:";

cin>>M;

cout<<"请输入整数N:";

cin>>N;

f(M,N);

}

*/

/*第五题:编写一个自定义函数:int f( char x, int N) ,f( )的功

能是:对给定的字符c和整数N,用c代表的符号打印一个N行的图案,每

行开头没有任何空格。比如,当c为"*"且N为5时,打印的图案如本题图

所示。且函数值返回1。

#include<iostream>

using namespace std;

int f(char x,int n)

{

int i,j;

for(i=1;i<=n;i )

{

for(j=1;j<=i;j )

cout<<x;

cout<<endl;

}

return 0;

}

int main()

{

f('*',5);

return 0;

}*/

/*第六题:编写一个自定义函数:int f( int N) ,f( )的功能是:

对给定的正整数N,打印一个N行N列的由"A"、"B"、"C"以及空格" "符

号组成的方阵图案。比如,当N为5时,打印的图案如本题图所示。且

函数值返回1。

#include<iostream>

using namespace std;

int f(int N)

{

int i,j;

char a[100][100];

for(i=0;i<=2*N-1;i )

{

for(j=0;j<=2*N-1;j )

{

if((j==0&&i%2==0)||(i==j&&i%2==0))

a[i][j]='A';

else if(j>i&&i%2==0&&j%2==0)

a[i][j]='B';

else if(j%2!=0||i%2!=0)

a[i][j]='\t';

else

a[i][j]='C';

}

cout<<a[i][j];

}

return 1;

}

void main()

{

f(5);

}

*/

/*第七题:根据下列要求和提示,编写一个函数f(N)判断某数N是

否为"完全数",N由主函数给出;如果N是"完全数"则函数值返回1,

N不是"完全数"则函数值返回0。"完全数"定义如下:如果一个数恰

好等于它的因子之和(因子包括1,不包括数本身),则称该数为

"完全数"。如:6的因子是1、2、3,而6=1 2 3,则6是个"完全数"。

#include<iostream>

using namespace std;

int f(int N);

void main()

{

int N;

cin>>N;

if(f(N)==1)

cout<<N<<"是完全数"<<endl;

else

cout<<N<<"不是完全数"<<endl;

}

int f(int N)

{

int a,sum=0;

for(a=1;a<=N/2;a )

{

if(N%a==0)

sum =a;

}

if(N==sum)

return 1;

else

return 0;

}

*/

/*第八题:编写程序,求e的值,e≈1 1/1! 1/2! 1/3! 1/4! ...,

最后一项的值小于1e-6。

#include<iostream>

using namespace std;

int jiecheng(int N)

{

int i,c=1;

for(i=1;i<=N;i )

c=c*i;

return c;

}

void main()

{

double e=1.0;

int t;

for(t=1;(jiecheng(t))<=100000000;t )

e=e 1.0/jiecheng(t);

cout<<e<<endl;

}*/

/*第九题:有十进制数字a,b,c,d和e,求满足式子:abcd*e=dcba

(a非0,e非0非1)的四位数中:

(1)共有多少个?

(2)最小的abcd;

(3)与之相对应的e。

#include<iostream>

using namespace std;

int f(int n)

{int m,sum=0;

while(n)

{

m=n;

sum=sum*10 m;

n=n/10;

}

return sum;

}

void main()

{ int i,j=0,k;

for(i=4999;i>=1000;i--)

{

if(f(i)/i*i==f(i)&&f(i)>i)

{

j ;

k=i;

}

}

cout<<j<<endl;

cout<<k<<endl;

cout<<f(k)/k;

}

*/

/*第十题:有一个7层灯塔,每层所点灯数都等于该层上一层

的两

倍,灯的总数是381盏,求:塔底灯数?第几层的灯数为48?

#include<iostream>

using namespace std;

int f(int n)

{

if(n==1)

return 1;

else

return 2*f(n-1);

}

void main()

{ int i,x,sum=0;

for(x=1;x<100;x )

{

for(i=1;i<=7; i)

{sum =x*f(i);}

if(sum!=381)

sum=0;

else

cout<<"x="<<x<<endl;

}

}

*/

/*第十一题:有3个红球,5个白球,6个黑球,从中任意取出

8个球,

且其中必须有白球,请求出共有多少种取法?

#include<iostream>

using namespace std;

int main()

{

int x,y,sum=0;

for(x=1;x<=5;x )

{

for(y=0;y<=3;y )

{ if((8-x-y)<=6)

sum ;

}

}

cout<<sum;

return 0;

}

*/

/*第十二题:求数列1,3,3,3,5,5,5,5,5,7,7,7

,7,7,7,7……。求:

第40项的值;值为17的第1个数是数列中第几项?

#include<iostream>

using namespace std;

void main()

{

int i,sum=0;

for(i=1;sum<=40;i =2)

sum =i;

i-=2;

cout<<i<<endl;

sum=0;

for(i=1;i<17;i =2)

sum =i;

cout<<sum 1<<endl;

}

*/

/*第十三题:计算p的近似值,直到最后一项的绝对值小于

10-8为止,近似公式为

#include<iostream>

using namespace std;

int f(int N)

{

if(N%2==0)

return (-1);

else

return 1;

}

void main()

{

int i,c=0;double p=0;

for(i=1;i<100000000;i =2)

{

c=c 1;

p =1.0/i*f(c);

}

cout<<p<<endl;

}

*/

//第十四题:用牛顿迭代法求方程3x3-4x2-5x 13=0在x=1

附近的根,要求精度为10-6。

/*

#include<iostream>

#include<iomanip>

using namespace std;

double y(double x)

{

double y;

y=3*x*x*x-4*x*x-5*x 13;

return y;

}

double k(double x)

{

double y;

y=9*x*x-8*x-5;

return y;

}

void main()

{

double x=1.0;

while(1)

{

int a=(x-y(x)/k(x))*1000000;

int b=x*1000000;

if(a==b)

{

cout<<setprecision(7)<<x;

break;

}

else

x=x-y(x)/k(x);

}

}

*/

/*第十五题:编写一个自定义函数:int f( int M, int N)

,函数f的功能是:对给定的正整数M和N,

找出满足方程"5x 6y=M"的正整数解中x和y都是偶数的

解。要求:若M和N不都是正整数,

则结束函数并返回-1;只有M和N都是正整数时,且

x,y∈[1,N], 才继续求解操作,

并用二重循环进行求解:(1)在函数中输出满足条件的

正整数解x和y,

(2)使函数值返回满足条件的正整数解的组数。

#include<iostream>

using namespace std;

int f(int M,int N)

{

int x,y,k=0;

if(M<0||N<0)

{

cout<<"请输入正整数";

return -1;

}

{

for(x=2;(M-5*x>0)&&N>=x;x =2)

{

for(y=2;N>y;y =2)

{

if(M-5*x-6*y==0)

{

cout<<"x="<<x<<" y="<<y<<endl;

k;

}

}

}

cout<<"k="<<k;

return k;

}

}

void main()

{

int M,N;

cout<<"请输入整数M:";

cin>>M;

cout<<"请输入整数N:";

cin>>N;

f(M,N);

}

*/

/*第十六题:求s=2 22 222 ... 222...2的和,即第n

个加数是一个n位的整数,

且各数位上的数字均为2,例如当n=4时,s=2 22

222 2222。

要求设计一个函数int f(int n)求每一个加数,在main()中用累

加求和方式求出总和。

#include<iostream>

using namespace std;

int f(int N)

{

int i,p=0;

for(i=1;i<=N;i )

p=p*10 2;

return p;

}

int main()

{

int s=0,i,n;

cout<<"input n:";

cin>>n;

for(i=1;i<=n;i )

s=s f(i);

cout<<"2 22 222''''''="<<s<<endl;

return 0;

}

*/

//第十七题:所有能被13整除又能被17整除且

末位不是偶数的三位数有几个?最大的一个?

//如何处理多个数中输出最大的

/*

#include<iostream>

using namespace std;

int main()

{

int i=100,j=0,a;

for(;i<=999;i )

{

if(i==0&&i==0&&i%2!=0)

{ a=i;

j ;}

}

cout<<a<<" "<<j<<endl;

return 0;

}

*/

//第十八题:基本解决,有两个疑问,为何不能执行

,为何写1.0

/*

#include<iostream>

using namespace std;

double f(int n)

{

if(n==1)

return 1.0;

else if(n==2)

return 2.0;

else

return f(n-1) f(n-2);

}

void main()

{

double sum=0;

int i;

for(i=1;i<=20;i )

sum =f(i)/f(i 1);

cout<<sum<<endl;

cout<<f(i)/f(i 1);

}*/

*/

/*第二十题:从键盘上输入一个正整数,判别它是否为

一回文数。如:123321

#include<iostream>

using namespace std;

void main()

{

int a,b,c=0,d;

cout<<"请输入正整数"<<endl;

cin>>d;

b=d;

while(b)

{

a=b;

c=c*10 a;

b=b/10;

}

if(d==c)

cout<<"yes";

else

cout<<"NO";

}

*/

,