第四周自动1122徐达武

来源:互联网 发布:杭州电魂网络科技股份 编辑:程序博客网 时间:2024/06/06 17:41

2.0

#include<iostream.h>void main(){const int jiweng=20,jimu=33,jichu=100;int i,j,k;for(i=0;i<=jiweng;i++)for(j=0;j<=jimu;j++)for(k=0;k<=jichu;k++)if((i+j+k)==100&&(5*i+3*j+k/3)==100&&k%3==0)cout<<"鸡翁、鸡母、雏鸡各有:\t"<<i<<"\t"<<j<<"\t"<<k<<endl;}
这道题实在有点难度,所以看了课本的,使用了for三重循环。



3.1

#include<iostream.h>     int res=0; void main()  {  char str[10];int i;      cout<<"请输入一个整数:"<<endl;  cin>>str;      for(i=0;str[i]!=NULL;i++)  {  res+=(str[i]-48);cout<<str[i]<<endl;  }  cout<<"该数是一个"<<i<<"位数"<<endl;   cout<<"各位数之和是:"<<res<<endl;   }  
本题使用了数组的方法,注意字符型转成整形需要减去48,。本题是将输入的字符当做整数处理了,虽能达到一样的效果,但是终究不符合“要输入整数”的要求!!所以请看下面这题。

3.2

#include<iostream.h>    void main()  {      long int a,i;      int k=0,t,s=0;      cout<<"输入一个整型数:"<<endl;      cin>>a; i=10;    do      {          k++;          if(a<i)              break; i=i*10;    }while(i<=1000000) ;     cout<<"位数:";      cout<<k<<endl;      cout<<"输出各位数值:";      while(i>1)      {          i=i/10;          t=a/i;          a=a%i;          s+=t;          cout<<t<<' ';            }      cout<<endl;      cout<<"各个位的数值和:"<<s<<endl;       }  
参照了同学的,并将它改编,主要思路是不断取余数。




5.1

#include<iostream.h>int s;int fun(int n){if(n<=0)return 0;if(n==1)return 1;elsereturn n*fun(n-1);}int re(int n){int i;for(i=1;i<=n;i++)s+=fun(i);return s;}void main(){int i ,j;cout<<"请输入整数n:"<<endl;cin>>i;for( j=1;j<=i;j++){if(j==1)cout<<"阶乘之和:";if(j==i)cout<<j<<"!"<<"=";elsecout<<j<<"!"<<"+";}cout<<re(i)<<endl;}
本题使用了递归的方法,还创造了两个小函数,注意函数的调用!!



5.2

#include<iostream.h>int s;int fun(int n){if(n<=0)return 0;int res=1;for(int i=1;i<=n;i++){res*=i;}return res;}int re(int n){int i;for(i=1;i<=n;i++)s+=fun(i);return s;}void main(){int i ,j;cout<<"请输入整数n:"<<endl;cin>>i;for( j=1;j<=i;j++){if(j==1)cout<<"阶乘之和:";if(j==i)cout<<j<<"!"<<"=";elsecout<<j<<"!"<<"+";}cout<<re(i)<<endl;}
本题使用普通累乘和累加的方法,分别创造这两个小函数,在主函数中调用时注意不要忽略参数i!!


7.0

#include<iostream.h>void main(){int s1=1;int s2=0;int j,n,a,t;int s[1000];cout<<"请输入a"<<endl;cin>>a;cout<<"请输入n"<<endl;cin>>n;for(j=1;j<=n;j++){s2+=(a*s1);t+=s2;s1*=10;}s[n]=t;cout<<s[n]<<endl;}//计算s[n]=a+aa+aaa+aa...a(n个)的值。其中a是一个数字,n表示a的位数。例如,当a=1,n=5时,则要计算的表达式为   // s[5]=1+11+111+1111+11111
本人认为思路还是比较正确的,编译通过了,但是运行不了,不知道哪里有问题,请老师指点!!

将此题改正后:

#include<iostream.h>   void main()  {  int s1=1;  int s2=0;  int j,n,a,t;t=0;  int s[1000];  cout<<"请输入a"<<endl;  cin>>a;  cout<<"请输入n"<<endl;  cin>>n;    while(a<=0){cout<<"输入错误,请再次输入a"<<endl;cin>>a;}  while(n<=0){cout<<"输入错误,请再次输入n"<<endl;cin>>n;}for(j=1;j<=n;j++)      {  s2+=(a*s1);  t+=s2;  s1*=10;  }      s[n]=t;cout<<'s'<<'['<<n<<']'<<'='; for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)if(i==1)cout<<a<<'+';else if(j==n)cout<<a<<'=';else if(j==i)cout<<a<<'+';elsecout<<a;cout<<s[n]<<endl;  }  //计算s[n]=a+aa+aaa+aa...a(n个)的值。其中a是一个数字,n表示a的位数。例如,当a=1,n=5时,则要计算的表达式为      // s[5]=1+11+111+1111+11111 


8.0

#include<iostream.h>void print(){int i,j;for(i=1;i<=9;i++){ for(j=i;j<=9;j++){cout<<i<<"*"<<j<<"="<<i*j;cout<<"   ";}cout<<endl;}}void main(){cout<<"9*9乘法表"<<endl;print();return;}
for双重循环,里层循环后,跳到外层,在进入里层依次循环,再跳到外层,不断重复,知道不满足条件!

0 0