c++第6周作业(第四章)

作业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;
}


作业2:

课本习题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_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;
}


习题5:

/***********************************************************
****   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做错了,老师,那个从键盘输入的字符串没有达到我们定义的数组长度的话,数组剩下的空间是以什么形式存储的?乱码吗?还是?

我这个错误程序的方向正不正确呢?

还剩下两个题,我过两天做好了再补上。最近有点忙,抱歉了老师。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值