作业1:
例题1:
/**********************************************
**** 数组元素的引用举例 *****
***********************************************/
# 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;
}
例题2:
/**********************************************
**** 功能 :用数组来保存学生成绩 ****
***********************************************/
# include<iostream>
using namespace std;
int main()
{
int i, math[40], n;
float aver = 0.0; //平均分
int unpassedcount = 0; //不及格人数
int highscorecount = 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) unpassedcount++;
if(math[i] >= 90) highscorecount++;
}
cout<<"平均分为 :"<<aver<<endl;
cout<<"90分以上人数为 :"<<highscorecount<<endl;
cout<<"不及格人数为 :"<<unpassedcount<<endl;
return 0;
}
例题3:
/****************************************************************
**** 功能 :找出一个包含10个元素的数组中最大的元素 ****
*****************************************************************/
# include<iostream>
# include<iomanip>
using namespace std;
int main()
{
int a[10], i, big;
cout<<"请输入10个数字 :\n";
for(i=0; i<10; i++)
cin>>a[i];
cout<<"这个数是 :";
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<<"最大的数是 :"<<big<<endl;
return 0;
}
例题4:
/************************************************
**** 功能 :冒泡排序 ****
*************************************************/
# include<iostream>
# include<iomanip>
using namespace std;
int main()
{
int a[10];
int i, j, t;
cout<<"请输入10个数 :\n";
for(i=0; i<10; i++)
cin>>a[i]; //输入数组元素
cout<<"这些数是 :";
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<<"从大到小排列是 :";
for(i=0; i<10; i++)
cout<<setw(4)<<a[i];
cout<<endl;
return 0;
}
例题5:
# 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;
}
例题6:
/************************************************************
**** 功能 :偶数行元素升序排列,奇数行降序排列 ****
*************************************************************/
# 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(4)<<a[i][j];
cout<<endl;
}
return 0;
}
例题7:
/*********************************************************************************************
**** 从键盘上为数组a[2][3]输入任意整数值,显示该数组,找出该数组的最大元素及其下标 ****
**********************************************************************************************/
# include<iostream>
# include<iomanip>
using namespace std;
int main()
{
int a[2][3];
int i, j, big;
cout<<"请输入2行3列二维数组的元素值 :"<<endl;
for(i=0; i<2; i++) //从键盘上读数
{
for(j=0; j<3; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
}
cout<<"该二位数组为:"<<endl;
for(i=0; i<2; i++) //将数组输出
{
for(j=0; j<3; j++)
cout<<setw(4)<<a[i][j];
if(j % 3 == 0)
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];
}
}
cout<<"该数组中最大的元素为a["<<i<<"]["<<j<<"]="<<big<<endl;
return 0;
}
例题8:
/****************************************************
**** 输入一个含有空格的字符串,并将其输出 ****
*****************************************************/
# include<iostream>
using namespace std;
int main()
{
char str[50];
cout<<"Please input strings :";
cin.get(str,50); //默认结束符为Enter键
cout<<"The string is :";
cout<<str<<endl;
return 0;
}
例题9:
/************************************************
**** 4_9读入字符串,反向输出 ****
*************************************************/
# 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--) //strlen()为求字符串长度函数
cout<<str[i];
cout<<endl;
return 0;
}
例题10:
/************************************************************************
**** 功能 :找出最长字符串,并记录该单词的开始位置及其长度 ****
*************************************************************************/
# include<iostream>
using namespace std;
int main()
{
char s[] = "This is C programming test.";
int i = 0, pLen = 0, maxLen = 0, pSeat = 0; //pLen为长度,maxLen为最长,pSeat为位置
while(s[i] != '\0')
{
while(s[i] != ' ' && s[i] !='\0') //区分单词并计算长度
{
pLen++;
i++;
}
if(pLen > maxLen) //记录最长单词的位置及长度
{
pSeat = i - pLen;
maxLen = pLen;
}
while(s[i] == ' ')
i++;
pLen = 0; //为计算下一个单词长度赋初值
}
cout<<"最长的单词为:";
for(i=0; i<maxLen; i++)
cout<<s[pSeat + i];
cout<<endl;
return 0;
}
//while每运行一次,读一个单词
例题11:
/*****************************************************
**** 功能 :求任意字符串的长度 ****
******************************************************/
# include<iostream>
# include<cstring>
using namespace std;
int main()
{
char str[50];
cout<<"Please input a string:";
cin.get(str,50);
cout<<" The length of string "<<str<<" is "<<strlen(str)<<endl;
return 0;
}
例题12:
/******************************************************
**** 4_12从键盘输入字符串,输入hello结束 ****
*******************************************************/
# 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;
}
例题13:
/****************************************************
**** 4_13_mystrlen计算字符串长度 ****
*****************************************************/
# 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;
}
课本习题1:
/*****************************************************
**** 4_1从键盘输入5个数并排序输出 ****
******************************************************/
# include<iostream>
# include<iomanip>
using namespace std;
int main()
{
int a[5];
int i, j, t;
cout<<"请输入5个数:"<<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<5; i++)
for(j=0; j<5-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<5; i++)
cout<<setw(4)<<a[i];
cout<<endl;
return 0;
}
习题2:
/*********************************************************************************************
**** 从键盘上为数组a[2][3]输入任意整数值,显示该数组,找出该数组的最大元素及其下标 ****
**********************************************************************************************/
# include<iostream>
# include<iomanip>
using namespace std;
int main()
{
int a[2][3];
int i, j, big;
cout<<"请输入2行3列二维数组的元素值 :"<<endl;
for(i=0; i<2; i++) //从键盘上读数
{
for(j=0; j<3; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
}
cout<<"该二位数组为:"<<endl;
for(i=0; i<2; i++) //将数组输出
{
for(j=0; j<3; j++)
cout<<setw(4)<<a[i][j];
if(j % 3 == 0)
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];
}
}
cout<<"该数组中最大的元素为a["<<i<<"]["<<j<<"]="<<big<<endl;
return 0;
}
习题3:
/***************************************************************
**** 4_3统计Fibonacci数列中的3位数,并输出第16项数据 ****
****************************************************************/
# include<iostream>
using namespace std;
int main()
{
int i, j = 0;
int f[20] = {1, 1};
for(i=2; i<20; i++)
f[i] = f[i - 2] + f[i - 1]; //将前20个数存入数组
for(i=0; i<20; i++)
{
if((f[i] - 100) >= 0)
j++;
}
cout<<"Fibonacci数列前20个数中的三位数个数是:"<<j<<endl;
cout<<"第16项数据是:"<<f[16]<<endl;
return 0;
}
/************************************************************
**** 4_4统计一行文字的大写字母,小写字母等 ****
*************************************************************/
# include<iostream>
# include<cstring>
using namespace std;
int main()
{
char str[200];
int i,j;
int Upper = 0, Lower = 0, Space = 0, Num = 0, Another = 0; //分别用于存储大写字母,小写字母,空格,数字,其他字符的个数
cout<<"请输入一段少于200字符的文字(含空格):";
cin.get(str,200);
j = strlen(str);
for(i=0; i<j; i++)
{
if(str[i] >= 'A' && str[i] <= 'Z') Upper++;
else if(str[i] >= 'a' && str[i] <= 'z') Lower++;
else if(str[i] == ' ') Space++;
else if(str[i] >= '0' && str[i] <= '9') Num++; //str[i]定义为char形式
else Another++;
}
cout<<"大写字母的个数是:"<<Upper<<endl
<<"小写字母的个数是:"<<Lower<<endl
<<"空格的个数是:"<<Space<<endl
<<"数字的个数是:"<<Num<<endl
<<"其他字符串的个数是:"<<Another<<endl;
return 0;
}
/***********************************************************
**** 4_5反向输出字符串,并求其长度 ****
************************************************************/
# include<iostream>
# include<cstring>
using namespace std;
int main()
{
char str[100];
int i, j;
cout<<"请输入一个字符串 :";
cin.get(str,100);
j = strlen(str);
cout<<"字符串"<<str<<"的反向字符串为:";
for(i = j - 1; i>=0; i--) //strlen()为求字符串长度函数
cout<<str[i];
cout<<"字符串的长度为:"<<j<<endl;
return 0;
}
习题6:
/***************************************************************
**** 输入字符串,删掉数字输出,并计算其长度 ****
****************************************************************/
# include<iostream>
# include<cstring>
# include<iomanip>
using namespace std;
int main()
{
char str[400], t;
int j = 1;
int i = 0, Long = 0;
cout<<"请输入一串字符串(含空格,不超过200个):"<<endl;
cin.get(str,400);
while(str[Long] != '\0') //记录输入的记录串长度
Long++;
for(i=0; i<200; i++)
{
if(str[i] >= '0' && str[i] <= '9')
{
t = str[i];
str[i] = str[Long + j]; //将数字跟输入的字符串之外的那些空字符交换,并且至于最后
str[Long + j] = t;
Long--; //数字置后,长度减一,数字实际还在字符串中,但只需输出数字之前的值就可以达到去除数字的目的
j = j + 2;
}
}
cout<<"去除数字之后的字符串是:";
for(i=0; i<Long; i++)
{
cout<<str[i];
}
cout<<setw(4)<<Long<<endl;
return 0;
}
这个习题6做错了,老师,那个从键盘输入的字符串没有达到我们定义的数组长度的话,数组剩下的空间是以什么形式存储的?乱码吗?还是?
我这个错误程序的方向正不正确呢?
还剩下两个题,我过两天做好了再补上。最近有点忙,抱歉了老师。