课本编程习题
1.0
#include<iostream>
using namespace std;
long A[5];
void main()
{
cout<<"依次输入5个数字"<<endl;
for(int i=0;i<5;i++)
{
cout<<"每输入一个数字请回车"<<endl;
cin>>A[i];
}
int j,k,t;
for(j=0;j<4;j++)
{ for(k=0;k<4-j;k++)
{
if(A[k]<A[k+1])
{
t=A[k];
A[k]=A[k+1];
A[k+1]=t;
}
}
}
for(int b=0;b<5;b++)
{cout<<A[b]<<' ';}
cout<<endl;
}
考察for双重循环和冒泡排序法
2.0
#include<iostream>
using namespace std;
int max;
int A[2][3];
void main()
{
cout<<"请为数组输入数值"<<endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
cin>>A[i][j];
}
for( int a=0;a<2;a++)
{
for( int b=0;b<=2;b++)
{
cout<<A[a][b]<<' ';}
}
int c,d,e,f;
for( c=0;c<2;c++)
{if(c==0)
{for( max=A[c][0], d=1;d<3;d++)
if(max<A[c][d])
{max=A[c][d];
e=c;f=d;}
}
else
for(d=0;d<3;d++)
if(max<A[c][d])
{max=A[c][d];
e=c;f=d;
}
}
cout<<"最大数是"<<max<<endl;
cout<<"最大数位于"<<"第"<<e+1<<"行"<<"第"<<f+1<<"列"<<endl;
}
考察for双重循环和else-if的使用
3.0#include<iostream>
using namespace std;
#define LONG 1024
int i;
void main()
{
char A[LONG];
cout<<"请输入字符串"<<endl;
cin>>A;
for( i=0;A[i]!=NULL;i++)
{;}
cout<<"共有"<<i<<"个"<<"字符"<<endl;
i--;
for(i;A[i]!=NULL;i--)
cout<<A[i]<<' ';
cout<<endl;
}
不知为毛会出现很多问号。C++中并没有串这种数据类型,但允许讲串放在char型数组中。注意宏定义#define的使用!!
改正后:
#include<iostream>
using namespace std;
#define LONG 1024
int i;
void main()
{
char A[LONG];
cout<<"请输入字符串"<<endl;
cin>>A;
for( i=0;A[i]!=NULL;i++)
{;}
cout<<"共有"<<i<<"个"<<"字符"<<endl;
i--;
for(i;A[i]!=NULL;i--)
if(i>=0)
{
cout<<A[i]<<' ';
cout<<endl;
}
}
4.0
#include<iostream>
using namespace std;
#define LONG 1024
int i,j,k,l;
char A[LONG];
void main()
{
cout<<"请输入内容"<<endl;
cin.getline(A,12);
for( i=0;A[i]<='9'&&A[i]>='0';i++)
{;}
cout<<"共有数字"<<i<<"个"<<endl;
for(j=0;A[j]<='Z'&&A[j]<='A';j++)
{;}
cout<<"共有大写字母"<<j<<"个"<<endl;
for(k=0;A[k]==32;k++)
{;}
cout<<"共有空格"<<k<<"个"<<endl;
}
这个程序还没调试成功,还需要仔细琢磨
修改后:
#include<iostream>
#include<iomanip>
using namespace std;
#define LONG 1024
int j,k,l,n,m=0;
char A[LONG];
void main()
{
cout<<"请输入内容"<<endl;
cin.getline(A,20);
for(int i=0;i<20;i++)
{
if(A[i]<='9'&&A[i]>='0')
j++;
else if(A[i]<='Z'&&A[i]>='A')
k++;
else if(A[i]==' ')
l++;
else if(A[i]>='a'&&A[i]<='z')
n++;
else
m=strlen(A)-(j+k+l+n);
}
cout<<"共有数字"<<j<<"个"<<endl;
cout<<"共有大写字母"<<k<<"个"<<endl;
cout<<"共有空格"<<l<<"个"<<endl;
cout<<"小写字母"<<n<<"个"<<endl;
cout<<"其他字符"<<m<<"个"<<endl;
}
cin.getline()能输入空格,空格用' '表示,头文件用<iomanip>,strlen()计算串长度,包括空格
5.0
#include<iostream>
using namespace std;
#define LONG 1024
int i,k,l;
int j=0;
char A[LONG];
char B[LONG];
void main()
{
cout<<"请输入字符串"<<endl;
cin>>A;
for(i=0;A[i]!=0;i++)
if(A[i]>'9')
{B[j]=A[i];
j++;}
for(k=0;B[k]!=NULL;k++)
{
cout<<B[k]<<' ';
}
cout<<endl;
}
注意要在9字上加单引号
6.0
#include<iostream.h>
int function(int n);
int function(int n)
{
if(n==1||n==2)return 1;
else return function(n-1)+function(n-2);
}
void main()
{
int i;
int j=0;
for(i=1;i<=20;i++)
{
cout<<function(i)<<" ";
cout<<endl;
if(function(i)>=100&&function(i)<=999)
j++;
}
cout<<"数列前20个数中的三位数个数为:"<<j<<endl;
cout<<"该数列第16是:"<<function(16)<<endl;
}