大一的各种c++实验课小程序

 一部分发上来,还有一部分在实验报告,你们也是随便交个实验报告就可以了么?
//goto版百分制分数转换等级
#include <iostream>
using namespace std;
int main()
{
int mark,leave;
A://goto标示符
cout<<"输入百分制分数:"<<endl;
cin>>mark;
if(mark<=100 && mark>=0)
{
	leave=mark/10;
    switch (leave)
{
case 10: cout<<"A"<<endl;
break;
case 9: cout<<"A"<<endl;
break;
case 8: cout<<"B"<<endl;
break;
case 7: cout<<"C"<<endl;
break;
case 6: cout<<"D"<<endl;
break;
case 5: cout<<"E"<<endl;
break;
case 4: cout<<"E"<<endl;
break;
case 3: cout<<"E"<<endl;
break;
case 2: cout<<"E"<<endl;
break;
case 1: cout<<"E"<<endl;
break;
case 0: cout<<"E"<<endl;
break;
}
cin.clear();
cin.ignore(1000,'\n');  //清理缓冲区,防止goto导致死循环。
goto A;
}
else 
{
	cout<<"输入错误"<<endl;
	cin.clear();
    cin.ignore(1000,'\n');  //清理缓冲区,防止goto导致死循环。
    goto A;
}
return 0;
}
----------------------------------------------------------------------

//三个数求最大的和最小的
#include <iostream>
using namespace std;
int main ()
{
	float a,b,c,max,min;
	cout<<"请输入三个数,以求出其中最大(或最小)的数。"<<endl;
	while(!(cin >> a >> b >>c))
      {//防止输入错误
          cout<<"输入错误了!请输入多一次"<<endl;
          cin.clear();
          cin.ignore(100,'\n');//清除错误的输入
      }
	if (a>b)
	{
		max=a;
		min=b;
	}
	    else
	    {
		max=b;
		min=a;
	    }
	if (c>max || c==max)
	{
		max=c;
	}
	     else if (c<min || c==min)
	     {
			 min=c;
	     }

	
	cout<<"最大值是"<<max<<endl;
	cout<<"最小值是"<<min<<endl;
	
	return 0;

}
------------------------------------------------
//fibonacci数列:
#include <iostream>
using namespace std;
long fibon(int n)
{
	long f;
	if(n <= 0)	f = 0;
	else if(n == 1)	f = 1;
	else f = fibon(n-1) + fibon(n-2);
	return f;
}
int main()
{
	
	int m,n;
	long f = 0;//结果
	cout<<"输入fibonacci数列的范围m~n:"<<endl;
	cin>>m>>n;
	for(int i = m; i <= n; i++)
	{
		f += fibon(i);
		cout<<"fibonacci"<<"("<<i<<"):"<<fibon(i)<<endl;
	}
	cout<<"第"<<m<<n<<"项fibonacci数列和为:"<<f<<endl;
}
------------------------------------------------------------------------------

//求N!迭代与递归
#include <iostream>
using namespace std;
//迭代方法
double factorial_diedai(int n)
{
	double sum;
	if(n <=1)
	{
		sum = 1;
	}
	else if(n > 1) 
	{
		sum = n;
		sum *= factorial_diedai(n-1);
	}
	else return 1;
	return sum;
}
//递归法
double factorial_digui(int n)
{
	double sum = 1;
	for (int i = n; i >= 1; i--)
	{
		sum *= i;
	}
	return sum;
}
int main()
{
	int n = 20;
	double sum = 0;
	//迭代方法输出1!+2!+3!+···+20!
	for (int i = n; i >= 1;i--)
	{
		sum += factorial_diedai(i);
	}
	cout<<"迭代方法:1!+2!+3!+···+20!="<<sum<<endl;
	//递归法
	sum = 0;
	for (int i = n; i >= 1;i--)
	{
		sum += factorial_digui(i);
	}
	cout<<"递归法:1!+2!+3!+···+20!="<<sum<<endl;
	return 0;
}

--------------------------------------------------------

//任意的二维数组(M×N)的转置(行列互换)。
#include <iostream>
using namespace std;

int main()
{
	int row;
	int column;
	cout<<"输入二维数组的行数与列数\n"<<"行数row:";
	cin>>row;
	cout<<"列数:";
	cin>>column;
	//动态创建二维数组凹
	int **a = new int*[row];
	for (int a_i = 0;a_i < row; a_i++)
	{
		a[a_i] = new int[column];
	}
	//动态创建置换二维数组凹
	int **zh_a = new int*[column];
	for (int azh_i = 0;azh_i < column; azh_i++)
	{
		zh_a[azh_i] = new int[row];
	}	//凸凸
	//初始化二维数组凹
	srand(6);
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < column; j++)
		{
		a[i][j] = rand() % 100;
		cout<<"a["<<i<<"]["<<j<<"]="<<a[i][j]<<endl;
		}
	}
	//凸
	cout<<"行列置换:"<<endl;
	cout<<"---------------------------"<<endl;
	for (int zh_i = 0; zh_i < column; zh_i++)
	{
		for (int zh_j = 0; zh_j < row; zh_j++)
		{
			zh_a[zh_i][zh_j] = a[zh_j][zh_i];
			cout<<"zh_a["<<zh_i<<"]["<<zh_j<<"]="<<zh_a[zh_i][zh_j]<<endl;
		}
	}
	//删除动态数组空间凹
	for (int dela_i = 0;dela_i < row; dela_i++)
	{
		delete [] a[dela_i];
	}
	delete [] a;
	for (int delazh_i = 0;delazh_i < column; delazh_i++)
	{
		delete [] zh_a[delazh_i];
	}
	delete [] zh_a;
	//凸凸
	cout<<"按回车键结束程序"<<endl;
	cin.get();
	return 0;
}

--------------------------------------------------------

//建立Fibonacci数列数组的函数,并在主函数main()中进行调用测试。
#include <iostream>
using namespace std;
long fibon(int n)
{
	long f;
	if(n <= 0)	f = 0;
	else if(n == 1)	f = 1;
	else f = fibon(n-1) + fibon(n-2);
	return f;
}
void arr_fibonfn(int m, int n)
{
	long space = n  + 1;
	long fibon_value = 0;
	long *arr_fibon = new long[space];
	for(int i = m; i <= n; i++)
	{
		/*i=i-m与i=i+m为了修改arr_fibon[i]数组下标空间,
		不然导致溢出,或者可以令数组arr_fibon的空间space=n+1*/
		fibon_value = fibon(i);
		i = i - m;
		arr_fibon[i] = fibon_value;
		cout<<"arr_fibon["<<i<<"]="<<"fibon("<<i+m<<")="<<arr_fibon[i]<<endl;
		i = i + m;
	}
	delete [] arr_fibon;
}
int main()
{
	
	int m,n,fn;
	long f = 0;//结果
	cout<<"输入创建fibonacci数列数组的范围m~n:"<<endl;
	cin>>m>>n;
	arr_fibonfn(m,n);
	return 0;
}

-------------------------------------------------------------------------

//编写程序:运用字符数组,将两个字符串连接起来,结果取代第一个字符串。
#include <iostream>
#include <string>
using namespace std;

int main()
{
	string s1,s2;
	cout<<"输入两段字符串"<<endl;
	cin>>s1>>s2;
	s1 = s1 + s2;
	cout<<s1<<endl;
}

----------------------------------------------------------------------

//有若干个数存放在一个数组中,现输入一个数,找出该数是否在数组中。要求:分别用交换排序法和选择排序法建立排序函数,实现数组的排序;建立折半查找函数实现快速查找。
#include <iostream>
using namespace std;

int bs(int t_arr[],int n,int x)
{
	int low,mid,high,find;
		low = 0;
		high = n - 1;
	while (low <= high)
	{
		mid = (low + high)/2;
		if(x > t_arr[mid])
		{
			low = mid + 1;
		}
		else if(x < t_arr[mid])
		{
			high = mid - 1;
		}
		else
		{
			find = mid;
			break;
		}
	}
	return find;
}
int main()
{
	int n;
	int temp;
	int min = 0;//假设选择排序法最小数组下标为0
	cout<<"输入数组项数"<<endl;
	cin>>n;//n>100最好修改随机数rand()%100
	cout<<"创建数组"<<endl;
	int *arr = new int[n];
	srand(0);
	for (int ai = 0; ai < n; ai++)
	{
		arr[ai] = rand()%100;
		cout<<"arr["<<ai<<"]="<<arr[ai]<<endl;
	}
	//交换排序法

	for (int c_i = 1; c_i < n; c_i++)
	{
		for(int c_j = 0; c_j < (n - c_i); c_j++)
		{
			if(arr[c_j] >= arr[c_j + 1])
			{
				temp = arr[c_j + 1];
				arr[c_j + 1] = arr[c_j];
				arr[c_j] = temp;
			}
		}
	}
	
	//选择排序法
	/*
	for (int x_i = 0; x_i < n-1; x_i++)
	{
		
		for(int x_j = x_i; x_j < n; x_j++)
		{
			if(arr[x_i] >= arr[x_j])
			{
				temp = arr[x_i];
				arr[x_i] = arr[x_j];
				arr[x_j] = temp;
			}
		}
	}
	*/
	cout<<"排序后的数组"<<endl;
	for (int pai = 0; pai < n; pai++)
	{
		cout<<"arr["<<pai<<"]="<<arr[pai]<<endl;
	}
	cout<<"输入你要查询的数字"<<endl;
	cin>>temp;
	cout<<"arr["<<bs(arr,n,temp)<<"]="<<temp<<endl;
	
	delete [] arr;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值