2.1
#include<iostream>
using namespace std;
int main(){
int num=129;
cout<<oct<<num<<endl;
cout<<hex<<num<<endl;
unsigned short int num1=129;
cout<<sizeof(signed short)<<dec<<num1<<endl;
// cout<<dec<<(signed)num1<<endl;没用
}
当以有符号数输出时,结果比原数在左边多了一个2.
2.2
#include<iostream>
// #define PI 3.1415926 不合适,超出长度
#include<iomanip>
int area(float r);
using namespace std;
double PI=3.1415926;
int main(){
cout<<setw(10)<<PI<<endl;
cout<<setw(10)<<40<<endl;
cout<<setw(10)<<928.335<<endl;
int output1=area(40);
float output2=area(928.335);
cout<<setw(10)<<output1<<endl;
cout<<setw(10)<<output2<<endl;
}
int area(float r){
return r*r*PI;
}
2.3
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
const double e=2.718281828;
cout<<setprecision(10)<<e<<endl;
cout<<setiosflags(ios::fixed)<<setprecision(8)<<e<<endl;
cout<<setiosflags(ios::scientific)<<setprecision(8)<<e<<endl;
}
2.4
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
const int stu=500;
cout<<"\"How many students here?\""<<endl<<"\""<<stu<<"\"";
}
2.5
略
2.8
#include<iostream>
using namespace std;
double getvol(float r,float h);
int main(){
float r,h;
cin>>r>>h;
double vol=getvol(r,h);
cout<<vol<<endl;
}
double getvol(float r,float h){
return 3.14159*r*r*h;
}
3.1
#include<iostream>
#include<math>
using namespace std;
int main(){
double x;
double num1=sin(x);
double num2=pow(num1,2.5);
double num3=sqrt(num2);
double a;
double num4=(a+x)/4*a;
double num5=1/2*(a*x+num4);
double c;
double num6=pow(c,x*x);
double num7=sqrt(2*3.1415926);
double num8=num6/num7;
}
3.5
if(能被3整除){
输出能被3整除;
if(能被5整除){输出}
else(能被7整除)(输出)
}
else(能被5整除){
输出
if(能被7整除){输出}
}
else(能被7整除){
}
else 输出不能被任一个整除
4.1
错误代码:
#include<iostream>
using namespace std;
int cycle(int i);
int main(){
int i=2;
int x;
int n;
int sum=i+x;
cin>>x;
cin>>n;
while(i<=n){
int add*=x;//[错误]标记“*=”之前需要初始值设定项
int a=cycle(i);
sum+=add/a;
i++;
}
}
int cycle(int i){
while(i>0){
int cy*=i;
i--;
}
return cy;
}
答案:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
double sum=1,t=1,x;
int i=1;
cout<<"please input a value:\n";
cin>>x;
do{
t*=(-1)*x/i;
sum+=t;
i++;
}
while(fabs(t)>1e-8);// 精度一乘十的负八次方
cout<<"sum="<<sum<<endl;
}
4.2
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int i=1;
int t=1;
int sum=0;
do{
t*=i;
sum+=t;
i++;
} while(i>12)
cout<<sum<<endl;
}
4.3
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int x;
cout<<"请输入一个三位数"<<endl;
cin>>x;
int hun=x/100;
int ten=(x-hun*100)/10;
int one=x-hun*100-ten*10;
if(x=hun*hun*hun+ten*ten*ten+one*one*one){
cout<<"为水仙花数";
}else cout<<"不为水仙花数";
}
标准答案
#include<iostream>
#include<math.h>
using namespace std;
int main(){
for(int i=1;i<=9;i++){
for(int j=0;j<=9;j++){
for(int k=0;k<=9;k++){ //遍历所有三位数
if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)
cout<<(100*i+10*j+k)<<endl;
}
}
}
}
4.4
#include<iostream>
#include<math.h>
using namespace std;
int main(){
for(int i=1;i<1000;i++){
int sum=0;
for(int j=1;j<=i/2;j++){ //对半求
if(i%j==0) sum+=j;
if(sum==i) cout<<i<<"是完数"<<endl;
}
}
}
4.5
#include<iostream>
#include<math.h>
using namespace std;
int main(){
ffloat s=100,h=100;
for(int i=1;i<10;i++)
{
s+=h;
h/=2;
}
cout<<
}
4.6
以剩下的桃子为主体来做
4.7
#include<iostream>
#include<math.h>
using namespace std;
int main(){
double a,x0,x1;
cout<<"please input a value :\n";
cin>>a;
x1=a;
do{
x0=x1;
x1=(x0+a/x0)/2; // x1=1/2*(x0+a/x0);为非法运算 输出为nan表示运算非法
}while(fabs(x0-x1)>=1e-7);
cout<<x1;
}
4.8
(1)错答
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
for(int i=9;i>0;i--){
cout<<" "; //setfill(" ")的意思是重置
for(int j=1;j<20;j++){
cout<<'#';
}
}
}
标答
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
for(int i=1;i<=10;i++){ //先有一个整体的列的循环
for(int j=1;j<=10-i;j++) cout<<" ";
for(int j=1;j<=2*i-1;j++) cout<<'#';
cout<<endl; //再有一个行的循环,两个循环之间找出对应关系
}
}
(2)
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
for(int i=0;i<8;i++){
for(int j=0;j<=i-1;j++){
cout<<" ";
}
for(int k=0;k<=18-i;k++){
cout<<"# ";
}
cout<<endl;
}
}
4.9
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
cout<<" *";
for(int i=1;i<10;i++) cout<<setw(4)<<i;
cout<<"\n----------------------------\n";
for(int i=1;i<=9;i++){ //如果是嵌套循环,先列后行
cout<<setw(3)<<i;
for(int j=1;j<=9;j++) cout<<setw(4)<<i*j;
cout<<endl;
}
}
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
cout<<" *";
for(int i=1;i<10;i++) cout<<setw(4)<<i;
cout<<"\n----------------------------\n";
for(int i=1;i<=9;i++){ //如果是嵌套循环,先列后行
cout<<setw(3)<<i;
for(int j=1;j<=i;j++)
cout<<setw(4)<<i*j;
cout<<endl; //如果输出的结果不对,可能是嵌套用的括号位置不对或者多余
}
}
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
cout<<" *";
for(int i=1;i<10;i++) cout<<setw(4)<<i;
cout<<"\n----------------------------\n";
for(int i=1;i<=9;i++){
cout<<setw(3)<<i;
if(i!=1) cout<<setw(4*i-4)<<" ";
for(int j=i;j<=9;j++) cout<<setw(4)<<i*j;
cout<<endl; }
}
4.10
错答
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n;
cin>>n;
int [n]b={1,1,1,1}; //需要分配确定的内存给数组
int sum=4;
for(int i=4;i<n;i++) {
b[i]=sum+b[i-4];
sum+=b[i];
}
cout<<sum<<endl;
}
标答
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n;
long a=1,b=1,c=1,temp;
cout<<"please input a value:\n";
cin>>n;
for(int i=4;i<=n;i++){
temp=a+c;a=b;b=c;c=temp;
}
cout<<c<<endl;
}
将求n!的递归函数非递归化
#include<iostream>
using namespace std;
int add(int n);
int main(){
int n;
cin>>n;
int con;
while(n>1){
int temp;
for(int i=0;i<n;i++){
temp*=n;
n--;
}
con=temp;
}
cout<<con<<endl;
}