欢迎光临散文网 会员登陆 & 注册

C语言程序设计上机程序题

2022-03-21 09:34 作者:答案鬼  | 我要投稿

/*  第一题: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%10;

 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%13==0&&i%17==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%10;

 c=c*10+a;

 b=b/10;

}

if(d==c)

 cout<<"yes";

else

 cout<<"NO";

}

*/




C语言程序设计上机程序题的评论 (共 条)

分享到微博请遵守国家法律