第四章实验作业
1 课本习题
1 例4.1 数组元素的引用举例
/**************************************
** 例题4.1 数组元素的引用推荐 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
using namespace std; //标准名字空间
int main() //主函数
{
int a[10];
int i;
for(i=0;i<10;i++)
a[i]=i*2+2;
for(i=0;i<10;i++)
{
cout<<a[i]<<'\t';
if((i+1)%5 ==0)
cout<<endl;
}
return 0;
}
例题4.2 输入一个程序计算考试成绩
/**************************************
** 例题4.2 编程计算考试成绩 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
using namespace std; //标准名字空间
int main() //主函数
{
int i,math[33],n;
float aver =0.0; //平均分
int a=0; //不及格人数
int b=0; //90分以上人数
cout<<"请输入学生人数:";
cin>>n;
cout<<"请依次输入学生的成绩:";
for(i=0;i<n;i++)
{
cin>>math[i];
aver+=math[i];
}
aver/=n;
for(i=0;i<n;i++)
{
if(math[i]<60)
a++;
if(math[i]>=90)
b++;
}
cout<<"平均分为:"<<aver<<endl;
cout<<"90分以上的人数为"<<b<<endl;
cout<<"不及格的人数为"<<a<<endl;
return 0;
}
运算结果如图
例题4.3 找出一个数组中最大的元素
/**************************************
** 例题4.3 计算数组中最大的元素 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制符命令文件调用
using namespace std; //标准名字空间
int main() //主函数
{
int a[10],i,max;
cout<<"请输入10个数"<<endl;
for(i=0;i<10;i++)
cin>>a[i];
cout<<"输入的10个数分别为";
for(i=0;i<10;i++)
cout<<setw(5)<<a[i];
cout<<endl;
max=a[0];
for(i=1;i<10;i++)
if(a[i]>=max)
max=a[i];
cout<<"这10个数中最大的为"<<max<<endl;
return 0;
}
例题4.4 练习使用冒泡法
/**************************************
** 例题4.4 练习用冒泡法对数进行排序 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制符命令文件调用
using namespace std; //标准名字空间
int main() //主函数
{
int a[10];
int i,j,t;
cout<<"请输入10个数字:";
for(i=0;i<10;i++)
cin>>a[i]; //输入数组元素
cout<<"输入的10个数分别为:";
for(i=0;i<10;i++) //输出数组元素
cout<<setw(5)<<a[i];
cout<<endl;
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;
}
}
}
cout<<"按照大到小排序的数为:" ; //输出排序后的元素
for(i=0;i<10;i++)
cout<<setw(5)<<a[i];
cout<<endl;
return 0;
}
例题4.5 用数组来处理fibonacci数列问题
/**************************************
** 例题4.5 用一维数组来处理fibonacc **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制符命令文件调用
using namespace std; //标准名字空间
int main() //主函数
{
int i;
int f[40]={1,1};
for(i=2;i<40;i++)
f[i]=f[i-2]+f[i-1]; //将前40个数存入数组
for(i=0;i<40;i++)
{
if(i%4 ==0)
cout<<endl;
cout<<setw(12)<<f[i];
}
cout<<endl;
return 0;
}
例题4.6 二维数组的赋值举例
/**************************************
** 例题4.6 对二维数组进行赋值 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制符命令文件调用
using namespace std; //标准名字空间
int main() //主函数
{
int i;
int j;
int a[5][5];
for(i=0;i<5;i++) //二维数组赋值精华
{
for(j=0;j<5;j++)
{
if(i%2 ==0)
a[i][j] = i*5+j+1;
else
a[i][4-j] =i*5+j+1;
}
}
for(i=0;i<5;i++) //二维数组输出精华
{
for(j=0;j<5;j++)
cout<<setw(5)<<a[i][j];
cout<<endl;
}
return 0;
}
例题4.7
输入一个a[2][3]的值,然后求这个数组中最大的值以及下标,,这是我见过的最坑爹的例题了没有之一,完全跟题目完全不同好不!!完全就是不知道错哪里的文不对题好不!!不吐槽了!!!!最终还是把自己写的程序调试好了 ,刚好符合题目要求就好了
/**************************************
** 二维数组程序举例 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制命令文件头
using namespace std; //标准名字空间
int main () //主函数
{
int i,j;
int a[2][3];
for(i=0;i<2;i++) //输入a[i][j]
{
for(j=0;j<3;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
}
cout<<"该二维数组为"<<endl;
for(i=0;i<2;i++) //显示a[i][j]
{
for(j=0;j<3;j++)
{
cout<<setw(5)<<a[i][j];
}
cout<<endl;
}
cout<<endl
<<"此二维数组的最大的元素为";
int max =a[2][3] ;
int c=2,b=3;
for(i=0;i<2;i++) //比较最大的元素
{
for(j=0;j<3;j++)
{
if(max<=a[i][j])
{
max=a[i][j];
c=i;
b=j;
}
}
}cout<<"a["<<c<<"]["<<b<<"]="<<max;
cout<<endl;
return 0;
}
运行结果如下啦
例题4.8 主要是对于数组中的字符串出现空格情况的输入,这里我们运用到了cin.get(a,50,规定的默认结束符),默认为回车,这个输入流函数能够很好的帮我们输入字符数组的赋值,我们还是需要加强练习。
/**************************************
** 输出一个含空格的字符窜 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制命令文件头
using namespace std; //标准名字空间
int main () //主函数
{
char str[50];
cout<<"请输入一个字符窜:";
cin.get(str,50);
cout<<"输出结果为:";
cout<<str<<endl;
return 0;
}
例题 4.9 从键盘读入一个字符串,反向输出每一个字符 这里出现了cstring 函数,用来控制处理数组,如例题中也出现了strlen函数,用来控制输出字符串的长度。
/**************************************
** 输入一个字符串后反向输出 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制命令文件头
#include<cstring> //字符串处理函数文件头
using namespace std; //标准名字空间
int main () //主函数
{
char a[100];
cout<<"请输入一个字符串"<<endl;
cin.get(a,100);
cout<<"字符串"<<a<<"的反向字符串为:";
for(int i=strlen(a)-1;i>=0;i--) //strlen输出字符串的长度
cout<<a[i];
cout<<endl;
return 0;
}
例题4.10
输入一个句子后求这个句子中单词最长的那个单词并输出,这里是遇到了两个循环,一个为判断句子的长度,一个为区分每一个单词后记录长度和位置,不过只是记录当前最长的单词的位置与长度,应该可以再优化一下重新计算,改天再去用for或者do-while重新改写一下程序吧
/**************************************
** 找出一句话中最长的单词 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制命令文件头
#include<cstring> //字符串处理函数文件头
using namespace std; //标准名字空间
int main () //主函数
{
char a[100];
cout<<"请输入一句话:"<<endl;
cin.get(a,100);
int i=0,pl=0,maxpl=0,pset=0;
while(a[i]!='\0') //控制结束整个循环
{
while(a[i]!=' '&&a[i]!='\0') //区分开每个单词并计算长度
{
pl++;
i++;
}
if(pl>maxpl) //判断单词长度是否最长,记录长度与位置
{
pset=i-pl;
maxpl=pl;
}
while(a[i]==' ') //跳过空格继续计算下个单词0
i++;
pl=0; //对pl的起始赋值
}
cout<<"该句子中最长的单词为:";
for(i=0;i<maxpl;i++)
cout<<a[pset+i];
cout<<endl;
return 0;
}
2书里的编程例题
1,在数组中输入几个数并按照大小排序,冒泡法的精髓
/**************************************
** 输入几个数并按顺序排列 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制命令文件头
#include<cstring> //字符串处理函数文件头
using namespace std; //标准名字空间
int main () //主函数
{
int a[50],b,i,j,S;
cout<<"请输入你要输入的数字的个数(不要超过50个)"<<endl;
cin>>b;
cout<<"请输入你要输入的所有个数(不要超过"<<b<<"个)"<<endl;
for(i=0;i<b;i++)
cin>>a[i];
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(a[j]<a[j+1])
{
S=a[j];
a[j]=a[j+1];
a[j+1]=S;
}
cout<<"从大到小的排列为:";
for(i=0;i<b;i++)
cout<<setw(5)<<a[i];
cout<<endl;
return 0;
}
统计一句话中的各种字符的多少并输出
/**************************************
** 统计一个数组中的大小写字母等 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制命令文件头
#include<cstring> //字符串处理函数文件头
using namespace std; //标准名字空间
int main () //主函数
{
char string[50];
cout<<"请输入一句话:";
cin.getline(string,50);
int da=0,xi=0,b=0,c=0,d=0;
for(int i=0;string[i]!='\0';i++)
if(string[i]>='A'&&string[i]<='Z')
da++;
else if(string[i]>='a'&&string[i]<='z')
xi++;
else if(string[i]==' ')
b++;
else if(string[i]>='0'&&string[i]<='9')
c++;
else d++;
cout<<"大写字符有:"<<da<<"个"<<endl;
cout<<"小写字符有:"<<xi<<"个"<<endl;
cout<<"数字字符有:"<<c<<"个"<<endl;
cout<<"其他字符有:"<<d<<"个"<<endl;
cout<<"空格有:"<<b<<"个"<<endl;
return 0;
}
输入一个字符串,去除数字后输出
/**************************************
** 删除字符串中的数字 **
** 自动化1121 李庆典 **
**************************************/
#include<iostream> //预编译处理命令
#include<iomanip> //控制命令文件头
#include<cstring> //字符串处理函数文件头
using namespace std; //标准名字空间
int main () //主函数
{
char a[100],b[100];
int x=0,y=0;
cout<<"请输入一个字符串"<<endl;
cin.get(a,100);
for(x=0;a[x];x++)
{
if(a[x]>='0'&&a[x]<='9')
continue;
b[y]=a[x];
y++;
}
int z=y-1;
cout<<"输出结果为:";
for(y=0;y<=z;y++)
cout<<b[y];
cout<<'\t'<<"该字符串长度为"<<z+1
<<endl;
return 0;
}
其他慢慢更来可好 ?