一部分发上来,还有一部分在实验报告,你们也是随便交个实验报告就可以了么?
//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;
}