***第一章 ***
编程:由键盘输入三个数,求出最大数和最小数并显示输出。
#include <iostream>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a>b?b:a;
}
int main()
{
int a,b,c,Max,Min;
cin>>a>>b>>c;
Max=max(max(a,b),c);
cout<<"max="<<Max<<endl;
Min=min(min(a,b),c);
cout<<"min="<<Min<<endl;
return 0;
}
***第二章***
1.键盘输入五个double型数,输出它们的和以及平均值(n个double 型数)
#include <iostream>
#include <cstdio>
using namespace std;
double sum,a[100000000],ave;
int n;
void addsum_ave(double a[],int n);
int main()
{
while(cin>>n&&n)
{
for(int i=0;i<n;i++)
cin>>a[i];
addsum_ave(a,n);
}
return 0;
}
void addsum_ave(double a[],int n)
{
for(int i=0;i<n;i++)
sum+=a[i];
printf("sum=%.5f\n",sum);
ave=sum/n;
printf("ave=%.5f\n",ave);
}
2.计算(a+b)*(a+b)与 a * a+2 * a * b+b * 是否相等,相等输出"yes"反之输出“no”
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
if(pow((a+b),2)==(pow(a,2)+2*a*b+pow(b,2)))
cout<<"Yes";
else
cout<<"No";
cout<<endl;
return 0;
}
3.求100以内所有的奇数和
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int sum=0;
for(int i=1;i<=100;i++)
if(i&1)
sum+=i;
cout<<"sum="<<sum<<endl;
return 0;
}
4.求最大公约数和最小公倍数
#include <iostream>
#include <cmath>
using namespace std;
int a,b,gcd,times;
int Max_gcd(int a,int b)
{
if(b==0)
return a;
else
return Max_gcd(b,a%b);
}
int Min_times(int a,int b)
{
return (a*b)/(Max_gcd(a,b));
}
int main()
{
cin>>a>>b;
gcd=Max_gcd(a,b);
cout<<"Max_gcd="<<gcd<<endl;
times=Min_times(a,b);
cout<<"Min_times="<<times<<endl;
return 0;
}
5.求序列和,假定n=20. S=1+(1+2)+…………+(1+2+…………+n)
键盘输入n,求S=1+(1+2)+………………+(1+2+…………+n)
#include <iostream>
#include <cmath>
using namespace std;
long a[1000000],fib[10000000];
int main()
{
int i,n;
long sum=0;
while(cin>>n&&n)
{
a[0]=0;
for(i=1;i<=n;i++)
{
sum+=i;
a[i]=sum;
if(i==n)
{
fib[0]=0;fib[1]=1;
for(int i=1;i<=n;i++)
{
fib[i]=a[i]+fib[i-1];
sum=a[i]+fib[i-1];
}
cout<<"sum="<<sum<<endl;
sum=0;
}
}
}
return 0;
}
6.求分数序列和 2/1+3/2+……………… 前15项和
键盘输入n,求前n项和 2/1+3/2+5/3+8/5………………前n项和
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
double a,b,sum=0.0,temp=0.0;
int n;
while(cin>>n&&n)
{
a=1.0;b=2.0;
for(int i=0;i<n;i++)
{
sum+=b/a;
temp=b;
b=b+a;
a=temp;
}
printf("%.2f\n",sum);
sum=0;
}
return 0;
}
6 求e的近似值
e=1+1/1!+1/2!+………………+1/n!
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int n;
double e,k=0.0;
while(cin>>n&&n)
{
double t=1.0;
for(int i=1.0;i<=n;i++)
{
t*=i;
k+=(1.0)/t;
}
e=k+1.0;
printf("%.15f\n",e);
e=0.0;k=0.0;
}
return 0;
}
***第三章***
1.任意输入10( n )个数于数组中,求出数组的最大数max及最小数 min
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int arr[10000000];
void max_min(int arr[],int n)
{
int i,j,k;
for(i=1;i<=n;i++)
{
k=i;
for(j=i+1;j<=n;j++)
{
if(arr[i]>arr[j]) k=j;
if(k!=j)
{
swap(arr[i],arr[j]);
}
}
}
cout<<"min="<<arr[1]<<endl;
cout<<"max="<<arr[n]<<endl;
}
int main()
{
int n,i;
while(cin>>n&&n)
{
for(i=1;i<=n;i++)
cin>>arr[i];
max_min(arr,n);
}
return 0;
}
2.任意输入15个整数存放于数组A [ 3 ] [ 5 ] 中,再输入20个整数存放于数组B [ 5 ] [ 4 ]中,用二维数组A,B表示矩阵A,B,计算矩阵A、B的乘积并输出结果。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[5][5],b[5][5];
int result[3][4];
int main()
{
int a[5][5]={0},b[5][5]={0};
int result[3][4]={0};
int i,j;
cout<<"Please enter a a[3][5]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<"Please enter a b[5][4]:"<<endl;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"Please a[3][4] times b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
/*
result[i][j]=0;
for(k=0;k<5;k++)
result[i][j]+=a[j][k]*b[k][j];
*/
result[i][j]=a[i][j]*b[i][j];
}
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
cout<<result[i][j]<<" ";
if(j==3)
cout<<endl;
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[5][5],b[5][5];
int result[3][4];
int main()
{
int a[5][5]={0},b[5][5]={0};
int result[3][4]={0};
int i,j,k;
cout<<"Please enter a a[3][5]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<"Please enter a b[5][4]:"<<endl;
for(i=0;i<5;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"Please a[3][4] times b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
result[i][j]=0;
for(k=0;k<5;k++)
result[i][j]+=a[j][k]*b[k][j];
// result[i][j]=a[i][j]*b[i][j];
}
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
cout<<result[i][j]<<" ";
if(j==3)
cout<<endl;
}
return 0;
}
3.编写函数alter(x,y),它的x值变为x*y,y值变为x+y,x与y是float型。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
void alter(float x,float y)
{
float temp;
temp=y;
y=x+temp;
x=x*temp;
cout<<"x="<<x<<" "<<"y="<<y<<endl;
}
int main()
{
float x,y;
while(~scanf("%f %f",&x,&y))
{
alter(x,y);
}
return 0;
}
***第四章***
1.编写一个程序,将用户输入的一个十进制转换为二进制数、八进制数、十六进制数。
1>十进制转换为n进制
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
int N,R;
while(cin>>N>>R&&N&&R)
{
if(N<0) cout<<"-";
string s;
N=abs(N);
while(N>0)
{
int a=N%R;
if(a>=10)
s.push_back(a-10+'A'); //应用stl,s尾部插入
else
s.push_back(a+'0');
N/=R; //更新
}
for(int i=s.size()-1;i>=0;i--) //size(),统计s
cout<<s[i];
cout<<endl;
}
return 0;
}
2.判断n个数字是否由奇数组成
全是奇数组成输出 “Yes" ,否则输出 “No"
#include <iostream>
#include <string>
#include <cmath>
bool flag;
using namespace std;
int main()
{
string s="";
int n;
while(cin>>n&&n)
{
for(int i=0;i<n;i++)
cin>>s[i];
for(int i=0;i<n;i++)
{
if(s[i]&1)
flag=true;
else
{
flag=false;
break;
}
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
3.编程求n^1 +n2+………………+n20的值,n=1,2,3,4,5;
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{
int n;
long long sum=0;
while(cin>>n&&n)
{
if(n>5) break;
for(int i=1;i<=20;i++)
sum+=pow(n,i);
cout<<sum<<endl;
}
return 0;
}
4.输入一个自然数,将改自然数的每一位数字按反序输出。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
string s,t="";
while(cin>>s)
{
for(int i=s.size()-1;i>=0;i--)
{
t+=s[i];
}
cout<<t<<endl;
t="";
}
return 0;
}
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
while(n>0)
{
int t;
t=n%10;
cout<<t;
n/=10;
}
cout<<endl;
}
return 0;
}
5.输入5 ( n )个字符串,按照升序输出。要求 5 ( n )个字符串必须以指针数组形式存放。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
void Sortstring(char *s[10000],int n)
{
/*** for(int i = 0; i < 5; i ++)
puts(s[i]);***/
int i,j,k;
char *t = new char[1000];
for(i=0; i<n; i++)
{
k=i;
for(j=i+1; j<n; j++)
if(strcmp(s[k],s[j])>0)
k=j;
if(k!=i)
{
strcpy(t, s[k]);
strcpy(s[k],s[i]);
strcpy(s[i], t);
}
}
}
int main()
{
char *s[10000],**p;
int i,n;
while(cin>>n){
for(i=0; i<n; i++)
s[i]=new char[1000];
cout<<"Please enter lots of strings:"<<endl;
for(p=s; p<s+n; *p++)
scanf("%s",*p);
Sortstring(s,i);
cout<<"Sort by:"<<endl;
for(p=s; p<s+i;*p++)
cout<<*p<<" ";
cout<<endl;
}
return 0;
}