您的位置:首页 > 其它

第五(六)周作业 p1

2014-04-13 16:27 323 查看
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
2.编程实现课本每一个编程习题。

一 课本例题
例一:

#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++)    //输出所有的数组元素,每行显示5个数组元素
{
cout<<a[i]<<'\t';
if((i+1)%5==0)
cout<<endl;

}

return 0;

}


显示结果:



例二:

/*************************
**成绩筛选及统计*********
************************/
#include<iostream>
using namespace std;

int main()
{
int i,math[40],n;                   //math[40]最多可输入40个成绩
float aver=0.0;                    //平均分
int unpassedcout = 0;             // 不及格学生人数
int highscorecout =0;            // 90分以上学生人数
cout<<"请输入学生人数:";
cout<<endl;
cin>>n;
cout<<"请输入学生成绩:";
cout<<endl;
for(i=0;i<n;i++)
{
cin>>math[i];
aver+=math[i];
}
aver/=n;
for(i=0;i<n;i++)
{
if(math[i]<60) unpassedcout++;
if(math[i]>90) highscorecout++;
}

cout<<"平均分为:"<<aver<<endl;
cout<<"90分以上人数为:"<<highscorecout<<endl;
cout<<"不及格人数为:"<<unpassedcout<<endl;

return 0;

}

输出结果:



例三:

/**********************************
*****扫描法——找最大的数组元素****
***********************************/
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
int a[10],i,big;
cout<<"please input 10 numbers:\n";
for(i=0;i<10;i++)
cin>>a[i];
cout<<"the numbers are:";
for(i=0;i<10;i++)
cout<<setw(4)<<a[i];
cout<<endl;
big=a[0];
for(i=1;i<10;i++)
if(a[i]>big)
big=a[i];
cout<<"the big number is :"<<big<<endl;

return 0;
}

输出结果:



例四:

/**************************
***** 冒泡法*************
*************************/

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
int a[10];
int i,j,t;
cout<<"please input 10 numbers:\n";
for(i=0;i<10;i++)
cin>>a[i];       //输入数组元素
cout<<"the numbers are:";
for(i=0;i<10;i++)
cout<<setw(4)<<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<<"the sorted numbers are:";
for(i=0;i<10;i++)
cout<<setw(4)<<a[i];     //输出数组元素
cout<<endl;
return 0;
}

输出结果:



例五:

/************************************
*** 用一维数组处理Fibonacci数列问题**
*************************************/
#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;

}

输出结果:



例七:

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
int a[2][3];
int i,j,big;
cout<<"请输入二行三列二维数组的元素值:"<<endl;

for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
cout<<"a["<<i<<"]"
<<"["<<j<<"]=";
cin>>a[i][j];
}
cout<<"该二维数组为:";
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
if(j%3==0)
cout<<endl;
cout<<setw(4)<<a[i][j];
}
cout<<endl;
big=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(a[i][j]>=big)
big=a[i][j];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(a[i][j]==big)
cout<<"该数组中最大元素为:"<<"a["<<i<<"]"<<"["<<j<<"]="<<a[i][j]<<endl;
}
输出结果:



例八:

#include<iostream>
using namespace std;

int main()
{
char str[50];
cout<<"Please input a string:";
cin.get(str,50);         //默认结束符是回车键
cout<<"The string is:"<<str<<endl;

return 0;
}


输出结果:

例九:

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
char str[100];
cout<<"请输入一个字符串:";
cin.get(str,100);
cout<<"字符串"<<str<<"的反向字符串为:";
for(int i=strlen(str)-1;i>=0;i--)
cout<<str[i];
cout<<endl;

return 0;

}
输出结果:



例十:

#include <iostream>
using namespace std;

int main()
{
char s[]="This is C programming test.";
cout<<"This is C programming test 这个句子中";
int i=0,pLen=0,maxpLen = 0, pSeat = 0;
while(s[i]!='\0')
{
while(s[i]!=' '&&s[i]!='\0')    //区分单词并计算长度
{
pLen++;
i++;
}
if(pLen>maxpLen)       //记录最长的单词的位置和长度
{
pSeat=i-pLen;
maxpLen=pLen;
}
while(s[i]==' ')
i++;
pLen=0;               //为计算下一个单词长度赋值
}
cout <<"最长的单词 :";
for(i=0;i<maxpLen;i++)
cout << s[pSeat+i];
cout <<endl;

return 0;
}


输出结果:



例十二:

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
char str[10];
cout<<"请输入字符串,直到输入 hello 后程序结束:"<<endl;
do{
cin>>str;

}while(strcmp(str,"hello")!=0);

return 0;

}
输出结果:



例十三:

#include<iostream>
using namespace std;

int main()
{
char str[50];
int len=0;
cout<<"请输入一个字符串:";
cin.get(str,50);
while(str[len] !='\0')
len++;
cout<<"字符串"<<str<<"的长度"<<len<<endl;

return 0;

}


输出结果:



二 课本习题

习题一

/*******************************
****冒泡法:大小排序输出**
*******************************/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[5],i,j,temp;
cout<<"请输入五个数:"<<endl;
for(i=0;i<5;i++)
cin>>a[i];
cout<<"输入的五个数为:";
for(i=0;i<5;i++)
cout<<setw(4)<<a[i];
cout<<endl;
for(i=0;i<4;i++)           //i为轮次变量,共四轮
for(j=0;j<4-i;j++)             //j为每轮比较次数变量,共4-i次
if(a[j]<a[j+1])

{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;                         //冒泡法排序
}
cout<<"按照大到小的排序为:";
for(i=0;i<5;i++)                   //输出已排序的数据
cout<<setw(4)<<a[i];
cout<<endl;
return 0;
}


输出结果:



习题二:

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[2][3],i,j;
cout<<"请输入6个数组元素:"<<endl;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
cin>>a[i][j];
}
cout<<"输入的数组为:"<<endl;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
cout<<setw(5)<<a[i][j];
cout<<endl;
}
int row=0,col=0,max=a[0][0];            //找出该数组的最大元素以及其下标
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(max<a[i][j])
{
max=a[i][j];row=i;col=j;
}
cout<<"最大的数组为:"
<<"a["<<row<<"]["<<col<<"]="
<<a[row][col]<<endl;

return 0;
}


输出结果:



习题三:

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,sixteenth,count=0,f[20]={1,1};    //将Fibonacci数列的前20个数存入数组f中
for(i=2;i<20;i++)
{
f[i]=f[i-2]+f[i-1];
if(f[i]>=100&&f[i]<=999)     //统计三位数的个数
count++;
}
sixteenth=f[15];    //第十六项数据的下标标为15
for(i=0;i<20;i++)
{
if(i>0&&i%4==0)
cout<<endl;
cout<<setw(8)<<f[i];
}
cout<<endl<<endl
<<"Fibonacci数列的前20个数中三位数的个数为:"<<count<<endl
<<"Fibonacci数列的第十六项数据为:"<<sixteenth<<endl;

return 0;
}


输出结果:



习题四:

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char string[50];
cout<<"请输入一个字符串:";
cin.getline(string,50);
int uppercase=0,lowercase=0,space=0,digit=0,others=0;
for(int i=0;string[i]!='\0';i++)
if(string[i]>='A'&&string[i]<='Z') uppercase++;
else if(string[i]>='a'&&string[i]<'z') lowercase++;
else if(string[i]==' ') space++;
else if(string[i]>='0'&&string[i]<='9') digit++;
else others++;
cout<<"大写字符有:"<<uppercase<<"个"<<endl;
cout<<"小写字符有:"<<lowercase<<"个"<<endl;
cout<<"数字字符有:"<<digit<<"个"<<endl;
cout<<"空格有"<<space<<"个"<<endl;
cout<<"其他字符有:"<<others<<"个"<<endl;

return 0;
}


输出结果:



习题五:

#include<iostream>
using namespace std;
int main()
{
char string[100];
int len=0;
cout<<"请输入一个字符串:"<<"(例如“hello world”)"<<endl;
cin.getline(string,100);        //依次将所输入的字符赋给各数组元素
while(string[len])
len++;
cout<<"这个字符串的长度为:"<<len<<endl;
cout<<"这个字符串反向输出为:";
for(int i=len-1;i>=0;i--)
{
cout<<string[i];
}
cout<<endl;

return 0;
}


输出结果:



习题六:

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char string[30];
cout<<"请输入一个字符串:"<<endl;
cin.getline(string,30);
int count=0;
for(int i=0;string[i];i++)
if(string[i]>='0'&&string[i]<='9') count++;
cout<<"该字符串中所有的十进制数字字符的个数有"<<count<<"个"<<endl;

return 0;
}


输出结果:



习题七:

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char a[50],b[50];
int i,j=0;
cout<<"请输入一个字符串:"<<endl;
cin.getline(a,50);
for(i=0;a[i];i++)
{
if(a[i]>='0'&&a[i]<='9')
continue;
b[j]=a[i];
j++;
}
b[j]='\0';
cout<<"删除数字后的字符串为:"<<b<<endl;
cout<<"字符串的长度为:"<<j<<endl;
return 0;
}


输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: