c++简单基础实验作业
1、设计程序,计算 s=1!+2!+…+10!的值。
2、设计程序,求 2~100 间的非素数。
3、设计程序,求所有的“水仙花数” 。“水仙花数”是各位数字的立方和恰好等于其自身的 3
位数,如 153=13+53+33
5、编程根据输入的 3 条边值判定是否构成三角形,能则求其面积。
6、计算s=1+2+3+…+i,直到累加到 s 大于 1000 为止,并输出s 和 i 的值。
7、分别用 for、while 和 do while 语句编写程序,求 5~20(包括 20)间所有偶数的和。
8、编写程序,求满足如下条件的最大的 n。12+22+32+…+n2≤1000
9、用数据{8.2,6.5,3,9.7,12,2.8,7.6,15,10.3}初始化一维数组,并求其中的最大值、最小值和平均值。
10、编程求字符串“I am a student.”的长度。
11、从键盘输入一个带空格的字符串,并把空格后的第 1 个小写英文字母改为大写英文字母。如从键盘输入“I am forever 25 years old.”时,则输出“I Am Forever 25 Years Old.”。12、设计一个程序,把字符串中的字符逆序。如将“I am a student.”逆序为“.tneduts a ma I”。
13、通过指针拼接字符串。如把“china”和“ people” 拼接成“china people”。
14、设计一个程序,将一维数组中的元素从小到大排序(升序排列,冒泡排序法)。
15、设计一个程序,将一维数组中的元素从小到大排序(升序排列,选择排序法)。
16、把键盘输入的数(n)插入到有序序列(num)中,并保持序列有序。
17、设计一个程序,把二维数组中的元素上移一行,其中第 1 行移到最后。
18、设计一个程序用指针判断键盘输入的数是否为自反数。所谓自反数是指正序和反序相同的数,如 1234321 和 123321 都是自反数。
19、找出一维数组中值最大的元素及其位置(下标),最大元素可能不止一个。如{3,5,2,
7,6,1,7,4,7,5}中最大元素为 7,其下标分别为 3、6、8。
20、求键盘输入的 n 个实数的均方差。求均方差的公式为:
21、求二维数组外围元素(第 1 行、第 1 列、最后一行和最后一列)的和。
22、不使用字符串处理函数,通过指针变量拼接字符串。如把“Good morning.”和“I am Tom.” 拼接成“Good morning. I am Tom.”
23、设计一个程序,通过指针变量求键盘输入的一串字符中单词的个数。例如“ I am a boy.” 中有 4 个单词。
24、设计一个程序,交换一维数组中最大元素与最小元素的位置,如{18,16,19,15,11,8}交换后为{18,16,8,15,11,19}。
25、设计一个程序,通过行指针求二维数组中正数元素与负数元素的平均值。
26、求三个整数的最大公约数
① 定义 gcd 函数求两个整数的最大公约数;
② 调用 gcd 函数,其返回值即为两个整数的最大公约数;复合调用 gcd(gcd(a,b),c), 得到三个数的最大公约数。
27、求解代数式 sum=1k+2k+…+nk,其中 k 为整数。
① 设计函数 powers 用于求 ik 的值。设 p 的值为 1,则 p*=i 循环 k 次,p 就等于ik。
② 设计函数 sum 用于累加求和,通过循环语句 n 次调用 powers 函数便可求得 n 项 ik 的和。
28、定义函数求 ex 的近似解,要求最后一项小于 10-6,其中,求 ex 的近似公式为:
① 定义递归函数 int fun(int n),用以计算 n!。
② 定义递归函数 double f (int n),用以计算 xn。
29、统计二维数组中所有元素的平均值,并将该二维数组中的小于平均值的元素存储到一个一维数组中,并输出这些元素及其个数。
30、设计程序,将二维数组中的每一列的元素按从小到大进行排序(用函数实现)。
源程序
**程序1 **
//阶层累加
#include<iostream>
using namespace std;
int main()
{
int sum=0,j=1;
for (int i=1;i<=10;i++)
{
j*= i;
sum+=j;
}
cout << "结果是" << sum<<endl;
system("pause");
}
程序2
//2-100素数
#include<iostream >
using namespace std;
int main()
{
int j,i;
int nums= 0;
cout<<"2-100之间的素数:"<<'\n';
for(i= 2;i<=100;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0) //判断数是不是素数
break;
}
if(j==i)
{
nums++;
if(nums%5==0) //控制每行输出5个素数
{
cout<<i<<'\t'<<endl;
}
else
{
cout<<i<<'\t';
}
}
}
cout<<endl;
return 0;
}
或
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main( )
{
int x , m , k , i ;
cout<<setw(8)<<2<<setw(8)<<3 ; //先输出两个素数:2和3
for ( k=2 , x=5 ; x<100 ; x+=2 ) //检测5~100间奇数
{
m=sqrt((double)x) ;
for ( i=3 ; i<=m ; i++ )
if ( x%i==0 ) break ; //检测x是否为素数
if ( i>=m+1 ) //条件成立,则x为素数,需输出;否则不输出
{
cout<<setw(8)<<x ;
k++ ; //统计输出素数的个数
if ( k%5==0 )cout<<'\n' ; //控制每行输出5个素数
}
}
cout<<'\n';
return 0;
}
程序3
//水仙数
#include<iostream>
using namespace std;
int main( )
{
int a,b,c;
cout<<"水仙数:"<<'\n';
for(int i=100;i<1000;i++)
{
a=i/100; //取百位
b=i/10%10; //取十位
c=i%10; //取个位
if(i==a*a*a+b*b*b+c*c*c)
cout<<i<<endl;
}
return 0;
}
程序4
//Fibonacci 数列
#include<iostream>
using namespace std;
int main()
{
int a[20], i;
cout << "Fibonacci数列前二十项分别为:"<<'\n';
a[0] = 0;
a[1] = 1;
for (i = 2; i < 20; i++)
{
a[i] = a[i - 1] + a[i - 2];
}
for (i = 0; i < 20; i++)
{
cout << i << '\t';
}
}
程序5
//三角形面积
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double a,b,c,s,area;
cout<<"请输入三条边:"<<'\n';
cin>>a>>b>>c;
if((a+b)<=c||(b+c)<=a||(c+a)<=b) //检测是否构成三角形
cout<<"输入的三条边不构成三角形,请重新输入!"<<endl;
else
{
s=((a+b+c)/2);
area=sqrt(s*(s-a)*(s-b)*(s-c)); //海伦格式求三角形面积
cout<<"三角形的面积:"<<area<<endl;
}
return 0;
}
或
#include<iostream>
#include<cmath>
using namespace std;
#define s(a,b,c) ((a+b+c)/2)
#define area(a,b,c) s(a,b,c)*(s(a,b,c)-a)*(s(a,b,c)-b)*(s(a,b,c)-c)
int main( )
{
double a,b,c;
double ss;
cout<<"请输入三角形的三边: ";
cin>>a>>b>>c;
ss=area(a,b,c);
ss=sqrt(ss);
cout<<"三角形的面积为: "<<ss<<endl;
return 0;
}
程序6
//累加到1000的s和i值
#include<iostream>
using namespace std;
int main()
{
int s=0,i;
for(i=0;s>1000;i++)
{
s+=i;
}
cout<<"s的值:"<<s<<'\n';
cout<<"i的值:"<<i<<'\n';
return 0;
}
程序7
//三种循环语句
#include<iostream>
using namespace std;
int main()
{
int s=0,i;
for(i=5;i<=20;i++