熟悉c++的表达式、运算符、简单程序设计
1.请写出下列表达式的值,并编写一个程序验证。
(1)3.53+27-‘a’=-72.5
(2)26/3+34%3+2.5=11.5
(3)45/2+(int)3.14159/2=23
(4) a=b=(c=a+=6) 设a的初值为3 a=9
(5) a=35,a=b=32 a=6
(6) (int)(a+6.5)%2+(a=b=5) 设a的初值为3 答案为6
(7) x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 答案为2.5
(8)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5 答案为3.5
#include
using namespace std;
int main(){
cout<<3.5*3+2*7-'a'<<endl; //(1)
cout<<26/3+34%3+2.5<<endl; //(2)
cout<<45/2+(int)3.14159/2<<endl; //(3)
int a=3;int b=0,c=0;
a=b=(c=a+=6);
cout<<a<<endl; //(4)
cout<<(a=3*5,a=b=3*2)<<endl; //(5)
a=3;
cout<<(int)(a+6.5)%2+(a=b=5)<<endl; //(6)
double x=2.5;
a=7;
double y=4.7;
cout<<x+a%3*(int)(x+y)%2/4<<endl; //(7)
a=2; b=3;x=3.5;y=2.5;
cout<<(float)(a+b)/2+(int)x%(int)y<<endl; //(8)
return 0;
}
2.要将"China"译成密码,密码规律是: 用原来的字母后面第4个字母代替原来的字母。
例如字母A后面第4个字母是E,用E代替A。因此,“China"应译为"Glmre”。请编写一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为’C’, ‘h’, ‘i’, ‘n’, ‘a’,经过运算,使c1,c2,c3,c4,c5分别变为’G’, ‘l’, ‘m’, ‘r’, ‘e’,并输出。
#include ;
using namespace std;
int main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;
cout<<c1<<c2<<c3<<c4<<c5<<endl;
return 0;
}
3. 用迭代法求x=sqrt(a)。求平方根的迭代公式为xn+1=1/2(xn+a/xn)
要求前后两次求出的x的差的绝对值小于10-5时结束,并输出每次迭代的结果和最后结果。
能连续求多个正数的平方根,输入负数时给出提示,并结束程序。
#include
#include
using namespace std;
int main(){
double x1=1.0,x2;
int a;
printf("请输入一个正整数a\n");
while(scanf("%d",&a)){//便于连续求多个正数的平方根
if(a>0){//
x2=(x1+a/x1)/2;
while(fabs(x1-x2)>=1e-5){//差的绝对值小于10^-5
x1=x2;
x2=(x1+a/x1)/2;
printf("%5f,%5f\n",x1,x2);//输出每次迭代结果
}
printf("a的平方根是%5f\n",x1);//输出最终结果
}else{//若输入负数给出提示并结束程序
printf("您输入的是一个负数,程序结束");
break;
}
}
return 0;
}
#include
using namespace std;
int p(int n,int x){//构造递归方法
int ans;
if(n == 0) ans=1;
else if(n==1) ans=x;
else
ans=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;
return ans;
}
int main(){
int n;int x;
printf("请输入变量x的值\n");
scanf("%d",&x);
printf("请输入所求x勒让德多项式的阶数n\n");
scanf("%d",&n);
printf("%d的%d阶勒让德多项式的值为%d",x,n,p(n,x)); //调用递归方法输出结果
return 0;
}
5.用函数重载实现函数sum,分别求int、float、double型的三个数的和,在main函数中分别调用这3个函数。
#include
using namespace std;
int sum(int a,int b,int c){//求int型的三个数的和
return a+b+c;
}
float sum(float a,float b,float c){//求float型的三个数的和
return a+b+c;
}
double sum(double a,double b,double c){//求double型的三个数的和
return a+b+c;
}
int main(){//在main函数中分别调用以上3个函数
cout<<"int型:1+2+3="<<(sum(1,2,3))<<endl;
cout<<"float型:1.0f+2.0f+3.5f="<<(sum(1.0f,2.0f,3.5f))<<endl;
cout<<"double型:1.1+2.2+3.3="<<(sum(1.1,2.2,3.3))<<endl;
return 0;
}
#include
using namespace std;
template<typename T>
T sum(T a,T b,T c)//函数模板
{
return a+b+c;
}
int main()
{
int a,b,c;//求int型的三个数的和
cin>>a>>b>>c;
cout<<sum(a,b,c)<<endl;
float d,e,f;//求float型的三个数的和
cin>>d>>e>>f;
cout<<sum(d,e,f)<<endl;
double g,h,i;//求double型的三个数的和
cin>>g>>h>>i;
cout<<sum(g,h,i)<<endl;
return 0;
}