高级语言程序设计课程部分习题参考答案

声明,本份参考答案确实只是参考答案,可能很多题目都有更加完善简洁的答案。

 

1.     输出图形

代码:

#include<iostream>

using namespacestd;

 

int main(){

         int n=1,t;

         while(n<6){

                  for(t=0;t<n;t++){

                          cout<<"*";

                  }

                  cout<<endl;

                  n++;

         }      

}

 
--------------------------------------------------------------------------

5.创建程序,功能为猜数字小游戏,规则:系统随机生成100以内数字,用户有8次猜数字的机会,每猜错一次,系统会给出一些提示。猜对,游戏胜利!错误,游戏失败!

分析:本题主要难点在于随机数的确定。若只用rand()函数,则得到的随机数为伪随机数,即执行同一个程序得到随机数始找为一个固定的值。使用srand()函数可以解决这个问题,该函数可以根据不同的“种子”(参数)来获得不同的随机数,通常通过调用time()函数来用系统时间做种子。

代码:

#include<iostream>

#include<cstdlib>              //rand()srand()的头文件

#include<ctime>                         //time()的头文件

using namespacestd;

 

int main(){

         srand(time(NULL));         //以系统时间为种子,设置随机数

         int n = rand()%100;          //随机数可能很大,这里只取后两位

         int m=0,t=8;

         while(m!=n){

                  cout<<"你还有"<<t<<"此机会,请输入你猜的数字"<<endl;

                  cin>>m;

                  if(m>n){

                          cout<<"大了\n"<<endl;

                  }else if(m<n){

                          cout<<"小了\n"<<endl;

                  }else if(m==n){

                          cout<<"恭喜,你猜对了"<<endl;

                  }

                  t--;

                 

                  if(t==0){

                          printf("对不起,游戏结束,正确答案是%d",n);

                          return 0;

                  }

         }

        

}

 --------------------------------------------------------------------------

7. 编写程序,要求:输入圆形半径,计算圆形的面积和周长,其中,要求使用符号常量PI。运行程序,输入半径5,输入结果图(略)

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       constdouble pi = 4.0*atan(1.0);        //定义π值

       floatr,l,s;

       cout<<"Pleaseinput tne number:";

       cin>>r;

      

       cout<<"圆形半径:"<<r<<endl;

       cout<<"圆形周长:"<<2*pi*r<<endl;

       cout<<"圆形面积:"<<pi*pow(r,2)<<endl;

}

 --------------------------------------------------------------------------

9. 编写程序,要求:输入一个三位整数,分别输出这个数字的百位、十位、个位。例如:运行程序,输入456,输出结果如图(略)

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       inta,b,c,n;

       cout<<"请输入一个三位数:";

        cin>>n;

        

        a=n%10;

        b=n/10%10;

        c=n/100%10;

        

        cout<<"\n三位数:"<<n<<endl;

        cout<<"百位:"<<c<<endl;

        cout<<"十位:"<<b<<endl;

        cout<<"个位:"<<a<<endl;

}

-------------------------------------------------------------------------- 

10. 输出6位整数中的所有回文数。若一个整数等于它自身的反序数,则称该整数为回文数。例如,123321是回文数

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       inta,b,c;

       for(inti=100000;i<1000000;i++){

              a=i%10;

              b=i/10%10;

              c=i/100%10;

              if(a*100+b*10+c==i/1000){

                     cout<<i<<"\t";

              }

       }

}

 --------------------------------------------------------------------------

12. 编写程序,求解鸡兔同笼问题,已知鸡和兔总头数为a,总脚数为b,求鸡兔各多少只?(其中:ab由键盘输入)

提示:假设鸡有x只,兔有y只,由题分析可得:

所以,求解可得:

例如,运行程序,分别输入822,结果图(略)

 

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       intx,y,a,b;

       cout<<"请输入鸡和兔的总头数,按回车键结束:";

       cin>>a;

       cout<<"请输入鸡和兔的总脚数,按回车键结束:";

       cin>>b;

        

        x=2*a-b/2;

        y=b/2-a;

        

        if(b%2==1 || a<0 || b<0){

             cout<<"Noanswer"<<endl;

        }else{

             cout<<"计算结果:\n鸡:"<<x

               <<"\n"<<"兔:"<<y<<endl;

        }

}
--------------------------------------------------------------------------

13. 有一堆机器零件(零件个数小于100),3个为一组则剩下2个,5个为一组则剩下1个,7个为一组则剩下6个,求这堆零件一共有多少个?

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       intn;

       for(n=1;n<100;n++){

              if(n%3== 2){

                     if(n%5== 1){

                            if(n%7== 6){

                                   cout<<"答:这堆零件一共有"<<n<<"个。";

                            }

                     }

              }

       }

}
--------------------------------------------------------------------------

15.编写程序,实现温度换算,输入摄氏温度C,输出对应的华氏温度F

公式:F=(C*9/5)+32.

例如运行程序,输入37.2,输出效果图:

#include<iostream>

using namespace std;

 

int main(){

       floatc;

       cout<<"请输入摄氏温度:";

       cin>>c;

       printf("摄氏温度:%f = 华氏温度:%f",c,(c*9/5)+32);

}
-------------------------------------------------------------------

16.

#include<iostream>

using namespace std;

 

int main(){

       intn;

       cout<<"请输入工资金额:";

       cin>>n;

       cout<<"工资金额:"<<n<<endl;

      

       inta[6]={0},v[6]={100,50,20,10,5,1};

       for(inti=0;i<6;i++){

              a[i]=n/v[i];

              n%=v[i];

       }

      

       for(inti=0;i<6;i++){

              cout<<v[i]<<"\t"<<a[i]<<"\n";

       }

}

 --------------------------------------------------------------------------

17.
#include<cstdio>

#include<iostream>

#include<string.h>

using namespace std;

 

int main(){

       inta=3,b=4,c=5;

       floatx=1.2,y=2.4,z=-3.6;

       longu=51274,n=128765;

       charc1='a',c2='b';

      

       intt=0,number[40]={0};

       for(inti=0;i<4;i++)

              for(intj=0;j<10;j++){

                     if(t==0){

                            t++;

                            continue;

                     }     

                     else

                            number[t]=j;

                     t++;

              }

       for(inti=1;i<40;i++)

              cout<<number[i];

       cout<<endl;

      

       printf("a=%2d,b=%2d,c=%2d\n",a,b,c);

       printf("x=%-8.4f,y=%-8.4f,z=%.4f\n",x,y,z);

       printf("x+y=%5.2f, y+z=%.2f , z+x=%.2f\n",x+y,y+z,z+x);

       printf("u=%010ld,n=%09ld\n",u,n);

       printf("c1=%-2cor%3d(ASCII)\n",c1,c1);

       printf("c2=%-2cor%3d(ASCII)\n",c2,c2);

}

 --------------------------------------------------------------------------

20.

#include<cstdio>

#include<iostream>

#include<string.h>

using namespace std;

 

int main(){

       intn,i,j;

       cout<<"请输入一个数字,按回车键结束!"<<endl;

       scanf("%d",&n);

      

       i=n-1;

       j=n+1;

      

       if(i==-1) i=9;

       if(j==10) j=0;

      

       cout<<"输入数字为:"<<n<<endl;

       cout<<"前驱数字为:"<<i<<endl;

       cout<<"后继数字为:"<<j<<endl;

}

 

 --------------------------------------------------------------------------

22.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       inta,b,c;

       cout<<"请输入方程的三个系数:"<<endl;

       cout<<"a= ";

       cin>>a;

       cout<<"b= ";

       cin>>b;

       cout<<"c= ";

       cin>>c;

      

       if(b*b-4*a*c< 0)

              cout<<"方程无解!"<<endl;

       else{

              floati,j;

              i=(-b+sqrt(b*b-4*a*c))/(2*a);

              j=(-b-sqrt(b*b-4*a*c))/(2*a);

              cout<<"方程的根:\t";

              printf("%.2f  %.2f",i,j);

       }

             

}

 --------------------------------------------------------------------------

25.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       intn;

       cout<<"请输入学生的成绩:";

       cin>>n;

       cout<<"您的等级为:";

       if(n>=90)

              cout<<"A";

       elseif(n>=80)

              cout<<"B";

       elseif(n>=70)

              cout<<"C";

       elseif(n>=60)

              cout<<"D";

       elseif(n>=0)

              cout<<"E";

}

-------------------------------------------------------------------------- 

31.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       cout<<"输入两个数:";

       inta,b;

       cin>>a>>b;

       cout<<"输入运算符(+-*/):";

       charx;

       cin>>x;

       switch(x){

              case'*':{

                     printf("%d* %d = %d",a,b,a*b);

                     break;

              }

              case'/':printf("%d / %d = %.2f",a,b,(float)a/b);

       }

}

 --------------------------------------------------------------------------

32.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       int y,m;

       cout<<"年份:";

       cin>>y;

       cout<<"月份:";

       cin>>m;

       printf("%d%d月:",y,m);

      

       inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};

       if(y%4==0|| y%400==0)

              a[1]=29;

       cout<<a[m-1];

}

 --------------------------------------------------------------------------

37.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       intcount=0,i=1;

       while(i<100){

              count+=i*(++i)*(++i);

              printf("%d*%d*%d+",i-2,i-1,i);

       }

       cout<<"\b= "<<count;

      

}

 --------------------------------------------------------------------------

38.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       intn,m,t;

       cout<<"请输入两个整数:";

       cin>>n>>m;

      

       if(m>n){

              t=m;

              m=n;

              n=t;

       }

      

       intmin=m,max=1;

       for(inti=1;i<=m;i++){

              if(n%i==0&& m%i==0){

                     if(max<i)

                            max=i;

              }

       }

       while(min++){

              if(min%n==0&& min%m==0)

                     break;

       }

      

       cout<<"输入的两个数:"<<n<<"\t"<<m<<endl;

       cout<<"最小公倍数:"<<min<<"\n"

              <<"最大公因数:"<<max<<endl;

}

 --------------------------------------------------------------------------

41.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       doublen=1.0,m=2.0,i,count=0;

       intt=0;

       while(t<20){

              count+=m/n;

              i=m;

              m+=n;

              n=i;

              t++;

       }

       cout<<"数列前20项的和为:";

       printf("%f",count);

}

-------------------------------------------------------------------------- 

43.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       inti=1,j,a;

       while(i){

              if(i<6)

                     j=i;

             

              for(a=0;a<j;a++){

                     printf("*");

              }

              cout<<endl;

             

              i++;

              if(i==10)

                     return0;

       }

}

-------------------------------------------------------------------------- 

47.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       inta[10],i=0,j,max=0;

       cout<<"请输入10个数:";

       while(i<10){

              cin>>a[i];

              if(a[i]>max){

                     max=a[i];

                     j=i;

              }

              i++;

       }

       printf("最大值为:a[%d] = %d",j,max);

}

-------------------------------------------------------------------------- 

48.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       cout<<"请输入10个整数:"<<endl;

       inti=0,j,t,a[10];

       while(i<10){

              cin>>a[i];

              i++;

       }

       for(i=0;i<9;i++){

              for(j=0;j<9-i;j++){

                     if(a[j]<a[j+1]){

                            t=a[j];

                            a[j]=a[j+1];

                            a[j+1]=t;

                     }

              }

       }

       i=0;

       cout<<"排序后:\n";

       while(i<10){

              cout<<a[i]<<"";

              i++;

       }

}

 --------------------------------------------------------------------------

49.

#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

void SelectionSort(int *num,int n){     //注意,数组就是指针

       inti=0,min=0,j=0,tmp=0;   // ij用于执行循环,num储存最小值的底数,tmp用于判断是对值否进行交换

       for(i=0;i<n-1;i++){       //总共进行n-1轮循环

              min=i;          

              for(j=i;j<n;j++){

                     if(num[min]<num[j]){   //这里就是对冒泡排序的改进之处,不一一进行交换,而是记录下最小值的底数

                            min=j;           //min保存最小数对应的底数

                     }

              }

              if(min!= i){           //如果不相等说明i不是此轮循环的最小值,就交换值

                     tmp= num[min];

                     num[min]=num[i];

                     num[i]=tmp;

              }

       }

}

 

int main(){

       inta[10];

       cout<<"请输入10个整数:"<<endl;

       for(inti=0;i<10;i++)

              cin>>a[i];

       SelectionSort(a,10);

       for(inti=0;i<10;i++){

              printf("%d",a[i]);

       }

       return0;

}

 --------------------------------------------------------------------------

50.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       inta[6],t;

       cout<<"请输入6个数:"<<endl;

       for(inti=0;i<6;i++){

              cin>>a[i];

       }

       cout<<"------------------输出6*6矩阵-------------------"<<endl;

       for(inti=0;i<6;i++){

              for(intj=0;j<6;j++){

                     cout<<a[j]<<"";

              }

              cout<<endl;

              t=a[5];

              for(intn=4;n>=0;n--){

                     a[n+1]=a[n];

              }

              a[0]=t;

       }

}

 --------------------------------------------------------------------------

51.
#include<cstdio>

#include<iostream>

#include<string.h>

using namespace std;

 

int main(){

       charchString[200];

       inti;

       scanf("%s",chString);            //可直接读入一串字符并且放入字符数组

       i=0;

       while(chString[i]){

              if(chString[i]>'a'&& chString[i]<'z'){

                     chString[i]= chString[i]-'a'+'A';

              }elseif(chString[i]>'A' && chString[i]<'Z'){

                     chString[i]= chString[i]-'A'+'a';

              }

              i++;

       }

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

       return0;

}

 --------------------------------------------------------------------------

52.
#include<cstdio>

#include<iostream>

#include<math.h>

using namespace std;

 

int main(){

       intnumber[9];

       cout<<"Pleaseinput nine numbers:\n";

       for(inti=0;i<9;i++)

              scanf("%d",&number[i]);

       cout<<endl;

             

       intt=0,count[5]={0,0,0,0,0};

       for(inti=0;i<9;i++){

              printf("%2d",number[i]);

              count[0]+=number[i];

              if((i+1)%3==0){

                     printf("%2d\n",count[0]);//输出每行的和

                     count[4]+=count[0];           //计算第四列的和

                     count[0]=0;

                    

                     count[3]+=number[i];  //计算第三列的和

                     t++; //计算行数

              }

              if(i== t*3){

                     count[1]+=number[i];  //计算第一列的和

              }

              if(i== t*3+1){

                     count[2]+=number[i];  //计算第三列的和

              }     

       }

       for(inti=1;i<5;i++)

              cout<<count[i]<<"";

}

 --------------------------------------------------------------------------

55.
#include<iostream>

using namespace std;

 

int findmax(int *number,int n){

       intmax=0,t;

       for(inti=0;i<n;i++)

              if(number[i]>max){

                     max=number[i];

                     t=i;

              }

       returnt+1;

}

 

int main(){

       intn;

       cout<<"请输入你要输入的数字总个数:";

       cin>>n;

       inta[n];

       for(inti=0;i<n;i++)

              cin>>a[i];

       cout<<"最大元素的下标是"<<findmax(a,n);

}

猜你喜欢

转载自blog.csdn.net/li_l_il/article/details/79944678