第一章
1.5题
#include <iostream>
using namespace std;
int main()
{
cout<<"This"<<"is";
cout<<"a"<<"C++";
cout<<"program.";
return 0;
1.6题
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
a=10;
b=23;
c=a+b;
cout<<"a+b=";
cout<<c;
cout<<endl;
return 0;
}
1.7七题
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
int f(int x,int y,int z);
cin>>a>>b>>c;
c=f(a,b,c);
cout<<c<<endl;
return 0;
}
int f(int x,int y,int z)
{
int m;
if (x<y) m=x;
else m=y;
if (z<m) m=z;
return(m);             
}
1.8题
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b;
c=a+b;
cout<<"a+b="<<a+b<<endl;
return 0;
}
c程序设计谭浩强pdf百度网盘
1.9题
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
int add(int x,int y);
cin>>a>>b;
c=add(a,b);
cout<<"a+b="<<c<<endl;
return 0;
}
int add(int x,int y)
{int z;
z=x+y;
return(z);
}
2.3题
#include <iostream>
using namespace std;
int main()
{char c1='a',c2='b',c3='c',c4='\101',c5='\116';
cout<<c1<<c2<<c3<<'\n';
cout<<"\t\b"<<c4<<'\t'<<c5<<'\n';
return 0;
}
2.4题
#include <iostream>
using namespace std;
int main()
{char c1='C',c2='+',c3='+';
cout<<"I say: \""<<c1<<c2<<c3<<'\"';
cout<<"\t\t"<<"He says: \"C++ is very interesting!\""<< '\n';
return 0;
}
2.7题
#include <iostream>
using namespace std;
int main()
{int  i,j,m,n;
i=8;
j=10;
m=++i+j++;
n=(++i)+(++j)+m;
cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n<<endl;
return 0;
}
2.8题
#include <iostream>
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<<"password is:"<<c1<<c2<<c3<<c4<<c5<<endl;
return 0;
}
3.2题
#include <iostream>
#include <iomanip>
using namespace std;
int main ( )
{float h,r,l,s,sq,vq,vz;
const float pi=3.1415926;
cout<<"please enter r,h:";
cin>>r>>h;
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=3.0/4.0*pi*r*r*r;
vz=pi*r*r*h;
cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)
<<setprecision(2);
cout<<"l= "<<setw(10)<<l<<endl;
cout<<"s= "<<setw(10)<<s<<endl;
cout<<"sq="<<setw(10)<<sq<<endl;
cout<<"vq="<<setw(10)<<vq<<endl;
cout<<"vz="<<setw(10)<<vz<<endl;
return 0;
3.3题
#include <iostream>
using namespace std;
int main ()
{float c,f;
cout<<"请输入一个华氏温度:";
cin>>f;
c=(5.0/9.0)*(f-32);        //注意5和9要用实型表示,否则5/9值为0
cout<<"摄氏温度为:"<<c<<endl;
return 0;
};
3.4题
#include <iostream>
using namespace std;
int main ( )
{char c1,c2;
cout<<"请输入两个字符c1,c2:";
c1=getchar();        //将输入的第一个字符赋给c1
c2=getchar();        //将输入的第二个字符赋给c2
cout<<"用putchar函数输出结果为:";
putchar(c1);
putchar(c2);
cout<<endl;
cout<<"用cout语句输出结果为:";
cout<<c1<<c2<<endl;
return 0;
}
3.4题另一解
#inc
lude <iostream>
using namespace std;
int main ( )
{char c1,c2;
cout<<"请输入两个字符c1,c2:";
c1=getchar();        //将输入的第一个字符赋给c1
c2=getchar();        //将输入的第二个字符赋给c2
cout<<"用putchar函数输出结果为:";
putchar(c1);
putchar(44);
putchar(c2);
cout<<endl;
cout<<"用cout语句输出结果为:";
cout<<c1<<","<<c2<<endl;
return 0;
}
3.5题
#include <iostream>
using namespace std;
int main ( )
{char c1,c2;
int i1,i2;                  //定义为整型
cout<<"请输入两个整数i1,i2:";
cin>>i1>>i2;
c1=i1;
c2=i2;
cout<<"按字符输出结果为:"<<c1<<" , "<<c2<<endl;
return 0;
}
3.8题
#include <iostream>
using namespace std;
int main ( )
{ int a=3,b=4,c=5,x,y;
cout<<(a+b>c && b==c)<<endl;
cout<<(a||b+c && b-c)<<endl;
cout<<(!(a>b) && !c||1)<<endl;
cout<<(!(x=a) && (y=b) && 0)<<endl;
cout<<(!(a+b)+c-1 && b+c/2)<<endl;
return 0;
3.9题
include <iostream>
using namespace std;
int main ( )
{int a,b,c;
cout<<"please enter three integer numbers:";
cin>>a>>b>>c;
if(a<b)
if(b<c)
cout<<"max="<<c;
else
cout<<"max="<<b;
else if (a<c)
cout<<"max="<<c;
else
cout<<"max="<<a;
cout<<endl;
return 0;
}
3.9题另一解
#include <iostream>
using namespace std;
int main ( )
{int a,b,c,temp,max ;
cout<<"please enter three integer numbers:";
cin>>a>>b>>c;
temp=(a>b)?a:b;                /*  将a和b中的大者存入temp中 */
max=(temp>c)?temp:c;            /*  将a和b中的大者与c比较,最大者存入max 
*/
cout<<"max="<<max<<endl;
return 0;
}
3.10题
#include <iostream>
using namespace std;
int main ( )
{int x,y;
cout<<"enter x:";
cin>>x;
if (x<1)                           
{y=x;
cout<<"x="<<x<<", y=x="<<y;
}
else if (x<10)                    // 1≤x<10
{y=2*x-1;
cout<<"x="<<x<<", y=2*x-1="<<y;
}
else                          // x≥10
{y=3*x-11;
cout<<"x="<<x<<", y=3*x-11="<<y;
}
cout<<endl;
return 0;
}
3.11题
#include <iostream>
using namespace std;
int main ()
{float score;
char grade;
cout<<"please enter score of student:";
cin>>score;
while (score>100||score<0)
{cout<<"data error,enter data again.";
cin>>score;
}
switch(int(score/10))
{case 10:
case 9: grade='A';break;
case 8: grade='B';break;
case 7: grade='C';break;
case 6: grade='D';break;
default:grade='E';       
}
cout<<"score is "<<score<<", grade is "<<grade<<endl;
return 0;
}
3.12题
#include <iostream>
using namespace std;
int main ()
{long int num;
int indiv,ten,hundred,thousand,ten_thousand,place;
/*分别代表个位,十位,百位,千位,万位和位数
*/
cout<<"enter an integer(0~99999):";
cin>>num;
if (num>9999)
place=5;
else  if (num>999)
place=4;
else  if (num>99)
place=3;
else  if (num>9)
place=2;
else place=1;
cout<<"place="<<place<<endl;
//计算各位数字
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
cout<<"original order:";
switch(place)
{case 
5:cout<<ten_thousand<<","<<thousand<<","<<hundred<<","<<ten<<","<<indiv<<en
dl;
cout<<"reverse order:";
cout<<indiv<<ten<<hundred<<thousand<<ten_thousand<<endl;
break;
case 4:cout<<thousand<<","<<hundred<<","<<ten<<","<<indiv<<endl;
cout<<"reverse order:";
cout<<indiv<<ten<<hundred<<thousand<<endl;
break;
case 3:cout<<hundred<<","<<ten<<","<<indiv<<endl;
cout<<"reverse order:";
cout<<indiv<<ten<<hundred<<endl;
break;
case 2:cout<<ten<<","<<indiv<<endl;
cout<<"reverse order:";
cout<<indiv<<ten<<endl;
break;
case 1:cout<<indiv<<endl;
cout<<"reverse order:";
cout<<indiv<<endl;
break;
}
return 0;
}   
3.13题
#include <iostream>
using namespace std;
int main ()
{ long i;                      //i为利润
float  bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;            //利润为10万元时的奖金
bon2=bon1+100000*0.075;      //利润为20万元时的奖金
bon4=bon2+100000*0.05;      //利润为40万元时的奖金
bon6=bon4+100000*0.03;      //利润为60万元时的奖金
bon10=bon6+400000*0.015;    //利润为100万元时的奖金
cout<<"enter i:";
cin>>i;
if (i<=100000)
bonus=i*0.1;                    //利润在10万元以内按10%提成奖金
else if (i<=200000)
bonus=bon1+(i-100000)*0.075;    //利润在10万元至20万时的奖金
else if (i<=400000)
bonus=bon2+(i-200000)*0.05;    //利润在20万元至40万时的奖金
else if (i<=600000)
bonus=bon4+(i-400000)*0.03;    //利润在40万元至60万时的奖金
else if (i<=1000000)
bonus=bon6+(i-600000)*0.015;    //利润在60万元至100万时的奖金
else
bonus=bon10+(i-1000000)*0.01;  //利润在100万元以上时的奖金
cout<<"bonus="<<bonus<<endl;
return 0;
}
3.13题另一解
#include <iostream>
using namespace std;
int main ()
{long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
int c;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
cout<<"enter i:";
cin>>i;
c=i/100000;
if (c>10)  c=10;
switch(c)
{case 0: bonus=i*0.1; break;
case 1: bonus=bon1+(i-100000)*0.075; break;
case 2:
case 3: bonus=bon2+(i-200000)*0.05;break;
case 4:
case 5: bonus=bon4+(i-400000)*
0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015; break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
cout<<"bonus="<<bonus<<endl;
return 0;
}
3.14题
#include <iostream>
using namespace std;
int main ()
{int t,a,b,c,d;
cout<<"enter four numbers:";
cin>>a>>b>>c>>d;
cout<<"a="<<a<<", b="<<b<<", c="<<c<<",d="<<d<<endl;
if (a>b)
{t=a;a=b;b=t;}
if (a>c)
{t=a; a=c; c=t;}
if (a>d)
{t=a; a=d; d=t;}
if (b>c)
{t=b; b=c; c=t;}
if (b>d)
{t=b; b=d; d=t;}
if (c>d)
{t=c; c=d; d=t;}
cout<<"the sorted sequence:"<<endl;
cout<<a<<", "<<b<<", "<<c<<", "<<d<<endl;
return 0;
}
3.15题
#include <iostream>
using namespace std;
int main ()
{int p,r,n,m,temp;
cout<<"please enter two positive integer numbers n,m:";
cin>>n>>m;
if (n<m)             
{temp=n;
n=m;
m=temp;                //把大数放在n中, 小数放在m中
}
p=n*m;                    //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0)              //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
cout<<"HCF="<<n<<endl;
cout<<"LCD="<<p/n<<endl;        // p是原来两个整数的乘积
return 0;
}
3.16题
#include <iostream>
using namespace std;
int main ()
{char c;
int letters=0,space=0,digit=0,other=0;
cout<<"enter one line::"<<endl;
while((c=getchar())!='\n')
{if (c>='a' && c<='z'||c>='A' && c<='Z')
letters++;
else if (c==' ')
space++;
else if (c>='0' && c<='9')
digit++;
else
other++;
}
cout<<"letter:"<<letters<<", space:"<<space<<", digit:"<<digit<<", 
other:"<<other<<endl;
return 0;
}
3.17题
#include <iostream>
using namespace std;
int main ()
{int  a,n,i=1,sn=0,tn=0;
cout<<"a,n=:";
cin>>a>>n;
while (i<=n)
{tn=tn+a;        //赋值后的tn为i个a组成数的值
sn=sn+tn;      //赋值后的sn为多项式前i项之和
a=a*10;
++i;
}
cout<<"a+aa+aaa+...="<<sn<<endl;
return 0;
}
3.18题
#include <iostream>
using namespace std;
int main ()
{float s=0,t=1;
int n;
for (n=1;n<=20;n++)
{
t=t*n;      // 求n!
s=s+t;      // 将各项累加
}
cout<<"1!+2!+...+20!="<<s<<endl;
return 0;
}
3.19题
#include <iostream>
using namespace std;
int main ()
{int i,j,k,n;
cout<<"narcissus numbers are:"<<endl;
for (n=100;n<1000;n++)
{i=n/100;
j=n/10-i*10;
k=n%10;
if (n == i*i*i + j*j*j + k*k*k)
cout<<n<<" ";
}
cout<<endl;
return 0;
}
3.20题
#include <iostream>
using namespace std;
int main()
{const int m=1000;      // 定义寻范围
int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
int i,a,n,s;
for (a=2;a<=m;a++)      // a是2~1000之间的整数,检查它是否为完数
{n=0;                  // n用来累计a的因子的个数
s=a;                  // s用来存放尚未求出的
因子之和,开始时等于a
for (i=1;i<a;i++)    // 检查i是否为a的因子
if (a%i==0)        // 如果i是a的因子
{n++;                // n加1,表示新到一个因子
s=s-i;              // s减去已到的因子,s的新值是尚未求出的因子
之和
switch(n)            // 将到的因子赋给k1,...,k10
{case 1:
k1=i;  break;  // 出的笫1个因子赋给k1
case 2:
k2=i;  break;  // 出的笫2个因子赋给k2
case 3:
k3=i;  break;  // 出的笫3个因子赋给k3
case 4:
k4=i;  break;  // 出的笫4个因子赋给k4
case 5:
k5=i;  break;  // 出的笫5个因子赋给k5
case 6:
k6=i;  break;    // 出的笫6个因子赋给k6
case 7:
k7=i;  break;  // 出的笫7个因子赋给k7
case 8:
k8=i;  break;    // 出的笫8个因子赋给k8
case 9:
k9=i;  break;  // 出的笫9个因子赋给k9
case 10:
k10=i;  break;  // 出的笫10个因子赋给k10
}
}
if (s==0)              // s=0表示全部因子都已到了
{cout<<a<<" is a 完数"<<endl;
cout<<"its factors are:";
if (n>1)  cout<<k1<<","<<k2;    // n>1表示a至少有2个因子
if (n>2)  cout<<","<<k3; // n>2表示至少有3个因子,故应再输出一个因子
if (n>3)  cout<<","<<k4; // n>3表示至少有4个因子,故应再输出一个因子
if (n>4)  cout<<","<<k5;        //  以下类似
if (n>5)  cout<<","<<k6;       
if (n>6)  cout<<","<<k7;       
if (n>7) cout<<","<<k8;       
if (n>8) cout<<","<<k9;       
if (n>9) cout<<","<<k10;       
cout<<endl<<endl;
}
}
return 0;
}
3.20题另一解
#include <iostream>
using namespace std;
int main()
{int m,s,i;
for (m=2;m<1000;m++)
{s=0;
for (i=1;i<m;i++)
if ((m%i)==0) s=s+i;
if(s==m)
{cout<<m<<" is a完数"<<endl;
cout<<"its factors are:";
for (i=1;i<m;i++)
if (m%i==0)  cout<<i<<" ";
cout<<endl;
}
}
return 0;
}
3.20题另一解
#include <iostream>
using namespace std;
int main()
{int k[11];
int i,a,n,s;
for (a=2;a<=1000;a++)
{n=0;
s=a;
for (i=1;i<a;i++)
if ((a%i)==0)
{n++;
s=s-i;
k[n]=i;          // 将到的因子赋给k[1]┅k[10]
}
if (s==0)
{cout<<a<<" is a 完数"<<endl;
cout<<"its factors are:";
for (i=1;i<n;i++)
cout<<k[i]<<" ";
cout<<k[n]<<endl;
}
}
return 0;
}
3.21题
#include <iostream>
using namespace std;
int main()
{int i,t,n=20;
double a=2,b=1,s=0;
for (i=1;i<=n;i++)
{s=s+a/b;
t=a;
a=a+b;          // 将前一项分子与分母之和作为下一项的分子
b=t;            // 将前一项的分子作为下一项的分