C语言谭浩强版本第三章课后练习题答案

合集下载

C语言程序设计-谭浩强-第三版-课后习题标准答案

C语言程序设计-谭浩强-第三版-课后习题标准答案

1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6编写一个程序,输入a、b、c三个值,输出其中最大值。

解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。

main(){charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c%c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"Chi na"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:#include <stdio.h>main(){ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}运行结果:密码是Glmre3.9求下面算术表达式的值。

c程序设计第四版(谭浩强)第三章答案

c程序设计第四版(谭浩强)第三章答案
}*/
{
sum*=1.09;
}
printf("%f\n",sum);
}
*/
/*
int main() //存款利息的计算
{
printf("方案一本息和为:%f\n",1000*(1+5*0.0585));
printf("方案二本息和为:%f\n",1000*(1+2*0.0468)*(1+3*0.054));
int main() //计算还清月数
{ቤተ መጻሕፍቲ ባይዱ
int d=300000,p=6000;
float r=0.01;
printf("%.1f\n",(int)(log(p/(p-d*r))/log(1+r)*10+0.5)/10.0);//取小数点后一位,对第二位按四舍五入处理
}
*/
/*
int main() //程序分析
}
*/
/*
int main()
{
float r,h,c,s1,s2,v1,v2;//圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
printf("r=");
scanf("%f",&r);
printf("h=");
scanf("%f",&h);
printf("c=%.2f\ns1=%.2f\ns2=%.2f\nv1=%.2f\nv2=%.2f\n",c=2*PI*r,s1=PI*r*r,s2=6*PI*r*r,v1=4/3*PI*pow(r,3),v2=PI*r*r*h);

C++第三章课后习题答案-谭浩强

C++第三章课后习题答案-谭浩强

C++第三章课后习题答案-谭浩强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(); //将输入的第一个字符赋给c1c2=getchar(); //将输入的第二个字符赋给c2cout<<"用putchar函数输出结果为:";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){case5: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万时的奖金elsebonus=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++;elseother++;}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个因子赋给k1case 2:k2=i; break; // 找出的笫2个因子赋给k2case 3:k3=i; break; // 找出的笫3个因子赋给k3case 4:k4=i; break; // 找出的笫4个因子赋给k4case 5:k5=i; break; // 找出的笫5个因子赋给k5case 6:k6=i; break; // 找出的笫6个因子赋给k6case 7:k7=i; break; // 找出的笫7个因子赋给k7case 8:k8=i; break; // 找出的笫8个因子赋给k8case 9:k9=i; break; // 找出的笫9个因子赋给k9case 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;}using namespace std;int main()3.20题另一解#include <iostream>{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;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; // 将前一项的分子作为下一项的分母}cout<<"sum="<<s<<endl;return 0;}3.22题#include <iostream>using namespace std;int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; // 第1天的桃子数是第2天桃子数加1后的2倍x2=x1;}cout<<"total="<<x1<<endl;return 0;}3.23题#include <iostream>#include <cmath>using namespace std;int main(){float a,x0,x1;cout<<"enter a positive number:";cin>>a; // 输入a的值x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"The square root of "<<a<<" is "<<x1<<endl; return 0;}3.24题#include <iostream>using namespace std;int main(){int i,k;for (i=0;i<=3;i++) // 输出上面4行*号{for (k=0;k<=2*i;k++)cout<<"*"; // 输出*号cout<<endl; //输出完一行*号后换行}for (i=0;i<=2;i++) // 输出下面3行*号{for (k=0;k<=4-2*i;k++)cout<<"*"; // 输出*号cout<<endl; // 输出完一行*号后换行}return 0;}3.25题#include <iostream>using namespace std;int main(){char i,j,k; /* i是a的对手;j是b的对手;k是c的对手*/ for (i='X';i<='Z';i++)for (j='X';j<='Z';j++)if (i!=j)for (k='X';k<='Z';k++)if (i!=k && j!=k)if (i!='X' && k!='X' && k!='Z')cout<<"A--"<<i<<" B--"<<j<<" C--"<<k<<endl;return 0;}4.1题#include <iostream>using namespace std;int main(){int hcf(int,int);int lcd(int,int,int);int u,v,h,l;cin>>u>>v;h=hcf(u,v);cout<<"H.C.F="<<h<<endl;l=lcd(u,v,h);cout<<"L.C.D="<<l<<endl;return 0;}int hcf(int u,int v){int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0){u=v;v=r;}return(v);}int lcd(int u,int v,int h){return(u*v/h);}4.2题#include <iostream>#include <math.h>using namespace std;float x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;cout<<"input a,b,c:";cin>>a>>b>>c;disc=b*b-4*a*c;cout<<"root:"<<endl;if (disc>0){greater_than_zero(a,b);cout<<"x1="<<x1<<",x2="<<x2<<endl;}else if (disc==0){equal_to_zero(a,b);cout<<"x1="<<x1<<",x2="<<x2<<endl;}else{smaller_than_zero(a,b);cout<<"x1="<<p<<"+"<<q<<"i"<<endl;cout<<"x2="<<p<<"-"<<q<<"i"<<endl;}return 0;}void greater_than_zero(float a,float b) /* 定义一个函数,用来求disc>0时方程的根*/{x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}void equal_to_zero(float a,float b) /* 定义一个函数,用来求disc=0时方程的根*/{x1=x2=(-b)/(2*a);}void smaller_than_zero(float a,float b) /* 定义一个函数,用来求disc<0时方{p=-b/(2*a);q=sqrt(-disc)/(2*a);}4.3题#include <iostream>using namespace std;int main(){int prime(int); /* 函数原型声明*/ int n;cout<<"input an integer:";cin>>n;if (prime(n))cout<<n<<" is a prime."<<endl;elsecout<<n<<" is not a prime."<<endl;return 0;}int prime(int n){int flag=1,i;for (i=2;i<n/2 && flag==1;i++)if (n%i==0)flag=0;return(flag);}4.4题#include <iostream>using namespace std;int main(){int fac(int);int a,b,c,sum=0;cout<<"enter a,b,c:";cin>>a>>b>>c;sum=sum+fac(a)+fac(b)+fac(c);cout<<a<<"!+"<<b<<"!+"<<c<<"!="<<sum<<endl; return 0;}int fac(int n)for (int i=1;i<=n;i++)f=f*i;return f;}4.5题#include <iostream>#include <cmath>using namespace std;int main(){double e(double);double x,sinh;cout<<"enter x:";cin>>x;sinh=(e(x)+e(-x))/2;cout<<"sinh("<<x<<")="<<sinh<<endl; return 0;}double e(double x){return exp(x);}4.6题#include <iostream>#include <cmath>using namespace std;int main(){double solut(double ,double ,double ,double ); double a,b,c,d;cout<<"input a,b,c,d:";cin>>a>>b>>c>>d;cout<<"x="<<solut(a,b,c,d)<<endl;return 0;}double solut(double a,double b,double c,double d) {double x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);return(x);}4.7题#include <iostream>#include <cmath>using namespace std;int main(){void godbaha(int);int n;cout<<"input n:";cin>>n;godbaha(n);return 0;}void godbaha(int n){int prime(int);int a,b;for(a=3;a<=n/2;a=a+2){if(prime(a)){b=n-a;if (prime(b))cout<<n<<"="<<a<<"+"<<b<<endl;} }}int prime(int m){int i,k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0) break;if (i>k) return 1;else return 0;}4.8题#include <iostream>using namespace std;int main(){int x,n;float p(int,int);cout<<"input n & x:";cin>>n>>x;cout<<"n="<<n<<",x="<<x<<endl;;cout<<"P"<<n<<"(x)="<<p(n,x)<<endl;return 0;}float p(int n,int x){if (n==0)return(1);else if (n==1)return(x);elsereturn(((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n); }4.9题#include <iostream>using namespace std;int main(){void hanoi(int n,char one,char two,char three);int m;cout<<"input the number of diskes:";cin>>m;cout<<"The steps of moving "<<m<<" disks:"<<endl; hanoi(m,'A','B','C');return 0;}void hanoi(int n,char one,char two,char three)//将n个盘从one座借助two座,移到three座{void move(char x,char y);if(n==1) move(one,three);else{hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);}}void move(char x,char y){cout<<x<<"-->"<<y<<endl;}4.10题#include <iostream>using namespace std;int main(){void convert(int n);int number;cout<<"input an integer:"; cin>>number;cout<<"output:"<<endl;if (number<0){cout<<"-";number=-number;}convert(number);cout<<endl;return 0;}void convert(int n){int i;char c;if ((i=n/10)!=0)convert(i);c=n%10+'0';cout<<" "<<c;}4.11题#include <iostream>using namespace std;int main(){int f(int);int n,s;cout<<"input the number n:"; cin>>n;s=f(n);cout<<"The result is "<<s<<endl; return 0;}int f(int n){;if (n==1)return 1;elsereturn (n*n+f(n-1));}4.12题#include <iostream>#include <cmath>using namespace std;#define S(a,b,c) (a+b+c)/2#define AREA(a,b,c) sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)) int main(){float a,b,c;cout<<"input a,b,c:";cin>>a>>b>>c;if (a+b>c && a+c>b && b+c>a)cout<<"area="<<AREA(a,b,c)<<endl;elsecout<<"It is not a triangle!"<<endl;return 0;}4.14题#include <iostream>using namespace std;//#define LETTER 1int main(){char c;cin>>c;#if LETTERif(c>='a' && c<='z')c=c-32;#elseif(c>='A' && c<='Z')c=c+32;#endifcout<<c<<endl;return 0;}4.15题#include <iostream>using namespace std;#define CHANGE 1int main(){char ch[40];cout<<"input text:"<<endl;;#if (CHANGE){for (int i=0;i<40;i++){if (ch[i]!='\0')if (ch[i]>='a'&& ch[i]<'z'||ch[i]>'A'&& ch[i]<'Z') ch[i]+=1;else if (ch[i]=='z'||ch[i]=='Z')ch[i]-=25;}}#endifcout<<"output:"<<endl<<ch<<endl;return 0;}4.16题file#include <iostream>using namespace std;int a;int main(){extern int power(int);int b=3,c,d,m;cout<<"enter an integer a and its power m:"<<endl; cin>>a>>m;c=a*b;cout<<a<<"*"<<b<<"="<<c<<endl;d=power(m);cout<<a<<"**"<<m<<"="<<d<<endl;return 0;}4.16题fileextern int a;int power(int n){int i,y=1;for(i=1;i<=n;i++)y*=a;return y;}5.1题#include <iostream>#include <iomanip>using namespace std;#include <math.h>{int i,j,n,a[101];for (i=1;i<=100;i++)a[i]=i;a[1]=0;for (i=2;i<sqrt(100);i++)for (j=i+1;j<=100;j++){if(a[i]!=0 && a[j]!=0)if (a[j]%a[i]==0)a[j]=0; }cout<<endl;for (i=1,n=0;i<=100;i++){if (a[i]!=0){cout<<setw(5)<<a[i]<<" ";n++;}if(n==10){cout<<endl;n=0;}}cout<<endl;return 0;}5.2题#include <iostream>using namespace std;//#include <math.h>int main(){int i,j,min,temp,a[11];cout<<"enter data:"<<endl;for (i=1;i<=10;i++){cout<<"a["<<i<<"]=";cin>>a[i]; //输入10个数}cout<<endl<<"The original numbers:"<<endl;;for (i=1;i<=10;i++)cout<<a[i]<<" "; // 输出这10个数cout<<endl;;for (i=1;i<=9;i++) //以下8行是对10个数排序{min=i;for (j=i+1;j<=10;j++)if (a[min]>a[j]) min=j;temp=a[i]; //以下3行将a[i+1]~a[10]中最小者与a[i] 对换a[i]=a[min];a[min]=temp;}cout<<endl<<"The sorted numbers:"<<endl;for (i=1;i<=10;i++) // 输出已排好序的10个数cout<<a[i]<<" ";cout<<endl;return 0;}5.3题#include <iostream>using namespace std;int main(){int a[3][3],sum=0;int i,j;cout<<"enter data:"<<endl;;for (i=0;i<3;i++)for (j=0;j<3;j++)cin>>a[i][j];for (i=0;i<3;i++)sum=sum+a[i][i];cout<<"sum="<<sum<<endl;return 0;}5.4题#include <iostream>using namespace std;int main(){int a[11]={1,4,6,9,13,16,19,28,40,100};int num,i,j;cout<<"array a:"<<endl;for (i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;;cout<<"insert data:";cin>>num;if (num>a[9])a[10]=num;else{for (i=0;i<10;i++){if (a[i]>num){for (j=9;j>=i;j--)a[j+1]=a[j];a[i]=num;break;}}}cout<<"Now, array a:"<<endl;for (i=0;i<11;i++)cout<<a[i]<<" ";cout<<endl;return 0;}5.5题#include <iostream>using namespace std;int main(){ const int n=5;int a[n],i,temp;cout<<"enter array a:"<<endl;for (i=0;i<n;i++)cin>>a[i];cout<<"array a:"<<endl;for (i=0;i<n;i++)cout<<a[i]<<" ";for (i=0;i<n/2;i++) //循环的作用是将对称的元素的值互换{ temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;}cout<<endl<<"Now,array a:"<<endl;for (i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;return 0;}5.6题#include <iostream>#include <iomanip>using namespace std;int main(){const int n=11;int i,j,a[n][n];for (i=1;i<n;i++){a[i][i]=1;a[i][1]=1;for (i=3;i<n;i++)for (j=2;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for (i=1;i<n;i++){for (j=1;j<=i;j++)cout<<setw(5)<<a[i][j]<<" ";cout<<endl;}cout<<endl;return 0;}5.7题#include <iostream>using namespace std;int main(){ const int n=4,m=5; //假设数组为4行5列int i,j,a[n][m],max,maxj;bool flag;for (i=0;i<n;i++) //输入数组for (j=0;j<m;j++)cin>>a[i][j];for (i=0;i<n;i++){max=a[i][0]; maxj=0;for (j=0;j<m;j++) //找出第i行中的最大数if (a[i][j]>max){max=a[i][j]; //将本行的最大数存放在max中maxj=j; //将最大数所在的列号存放在maxj中}flag=true; //先假设是鞍点,以flag为真代表for (int k=0;k<n;k++)if (max>a[k][maxj]) //将最大数和其同列元素相比{flag=false; //如果max不是同列最小,表示不是鞍点令flag1为假continue;}if(flag) //如果flag1为真表示是鞍点{cout<<"a["<<i<<"]["<<"["<<maxj<<"]="<<max<<endl;//输出鞍点的值和所在行列号break;}}if(!flag) //如果flag为假表示鞍点不存在cout<<"It does not exist!"<<endl;return 0;5.8题#include <iostream>using namespace std;int main(){ const int n=7;int i,number,top,bott,mid,loca,a[n];bool flag=true,sign;char c;cout<<"enter data:"<<endl;;cin>>a[0];i=1;while(i<n){cin>>a[i];if (a[i]>=a[i-1])i++;elsecout<<"enter this data again:";}cout<<endl;for (i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;while(flag){cout<<"input number to look for:";cin>>number;sign=false;top=0; //top是查找区间的起始位置bott=n-1; //bott是查找区间的最末位置if ((number<a[0])||(number>a[n-1])) //要查的数不在查找区间内loca=-1; // 表示找不到while ((!sign) && (top<=bott)){mid=(bott+top)/2;if (number==a[mid]){loca=mid;cout<<"Find "<<number<<", its position is "<<loca+1<<endl;sign=true;}else if (number<a[mid])bott=mid-1;elsetop=mid+1;}if(!sign||loca==-1)cout<<number<<" has not found."<<endl;;cout<<"continu or not(Y/N)?";cin>>c;if (c=='N'||c=='n')flag=false;}return 0;}5.9题#include <iostream>using namespace std;int main(){int sum_day(int,int);int leap(int year);int year,month,day,days=0;cout<<"input date(year,month,day):";cin>>year>>month>>day;cout<<year<<"/"<<month<<"/"<<day;days=sum_day(month,day); /* 调用函数一*/if(leap(year) && month>=3) /* 调用函数二*/days=days+1;cout<<" is the "<<days<<"th day in this year."<<endl;return 0;}int sum_day(int month,int day) //计算日期{int i;int day_tab[12]={31,28,31,30,31,30,31,31,30,31,30,31};for (i=0;i<month-1;i++)day+=day_tab[i];return(day);}int leap(int year) //判断是否为闰年{int leap;leap=year%4==0&&year%100!=0||year%400==0;return(leap);}5.10题。

C语言程序设计第三版谭浩强课后习题答案1~13章

C语言程序设计第三版谭浩强课后习题答案1~13章
解: #include <stdio.h> main() { char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre
第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出 格式和结果,请写出程序(包括定义变量类型和设计输出)。
file:///D|/程序设计/C语言程序设计第三版谭浩强课后习题答案1~13章.txt[2010-7-20 10:29:47]
file:///D|/程序设计/C语言程序设计第三版谭浩强课后习题答案1~13章.txt[2010-7-20 10:29:47]
_c1=A_c2=a
4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积Байду номын сангаас圆球体积、圆柱体积。用scanf输入数 据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。
file:///D|/程序设计/C语言程序设计第三版谭浩强课后习题答案1~13章.txt[2010-7-20 10:29:47]
char c1,c2; 与 int c1,c2; 是否无条件的等价? #include"stdio.h" main() {char c1,c2; c1=getchar();c2=getchar(); putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’); }
请编一程序用赋初值的方法使clc2c3c4c5五个变量的值分别为china经过运算使c1c2c3c4c5分别变为glmre并输出

C语言教材第三章课后部分习题答案

C语言教材第三章课后部分习题答案

C语言教材第三章课后部分习题答案( 第三版谭浩强)3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:#include <stdio.h>main(){ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); }运行结果:密码是Glmre3.9求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。

main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d”,i,j,m,n);}解:9,11,9,103.12写出下面表达式运算后a的值,设原来a=12。

C语言谭浩强版本第三章课后练习题答案

C语言谭浩强版本第三章课后练习题答案

第三章课后练习题一、单项选择题1.根据C语言的语法规则,不能做变量名的是:A)doB)NameC)R5D)_exam2.下列四组选项中,全是C语言关键字的选项是:感觉没有答案A)define IF typeB)getc char printf :printf是函数名C)include case scanf :同上D)while go pow :同上3.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符:A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字和下划线中任一种字符4.在C语言中,合法的字符常量是:A) 3B)‘S’C)'ab'D)"A"5.若已定义x和y为double类型,则表达式:x=1,y=x+3/2中y的值是:A) 1B) 2C) 3D) 2.56.C语言提供的不合法的数据类型关键字是:A)doubleB)shortC)integerD)char7.合法的C语言中,合法的字符串是:A)'\t'B)"A"C)‘a’D)‘a\t’8.执行语句int a=5; a++;后,a的值是:A)7B) 6C) 5D) 4A)9.以下选项中属于C语言的数据类型是:A)复合型B)双精度型C)数学型D)集合型10.Vc6.0下各种基本数据类型的存贮空间正确的长度排列是:A)int< Char<=float<doubleB)Double<float <=int<charC)Char<int<=float<doubleD)Float<=int <char<double11.下面的变量说明中正确的是:A)char:a, b, c;B)char a; b; c;C)char a, b, c;D)char a, b, c12.sizeof(double) 语句执行结果的数据类型是A)一种函数调用B)一个双精度型表达式C)一个整型表达式D)一个不合法的表达式13.以下程序的输出结果是:int a=1,b=4,c=2;float x=10.5,y=4.0,z;z=(a+b)/c+sqrt((double)y)*1.2/c+x; pritnf("%f\n",z);A.14.000000B.15.400000C.13.700000D.14.90000014.下面四个选项中,均是不合法的整型常量的选项是:A)--0f1 -0xffff 0011B)-0Xcdf 017 12,456C)-018 999 5e2D)-0x48eg -068 03f15.下面四个选项中,均是不合法的浮点数的选项是:A)160.0.12 e3B)123 2e4.2 .e5C)-.18 123e4 0.0D)-e3 .234 1e316.下面四个选项中,均是不合法的转义字符的选项是:A)‘\‛’‘\\’‘\xf’B)‘\1011’‘\’‘\a’C)‘\011’‘\f’‘\}’D)‘\abc’‘\101’‘xlf’17.若有说明语句:char c=‘\72’;则变量c:A)包含1个字节B)包含2个字节C)包含3个字节D)说明不合法,c的值不确定18.表达式18/4*sqrt(4.0)/8值的数据类型为:A)int B)float C)double D)不确定19.设有如下的变量定义:int i=8, k, a, b; unsigned long w=5; double x=1.42, y=5.2;则以下符合C语言语法的表达式是:没有答案????A)k=k/0;:除数不为0B)x%(-3);:浮点数不能参加%运算C)a*3=2;:左边不能为表达式D)y=float(i);:(float)i20.假定有以下变量定义,int k=7,x=12;则能使值为3的表达式是:A)x%=(k-5)B)x= x% (k-k%5)C)x= x-k-k%5D)(x/k)-(k%5)21.设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是:A)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值22.以下程序int a=12,b=12; printf("%d,%d\n",--a,++b);的输出结果是:A)10 10B)12 12C)11 10D)11 1323.以下程序int a=5;float x=3.1; a=x*(‘E’- ‘A’);printf(‚%f\n‛,(float)a);输出结果是A)12.000000B)12.800000C)13.000000D)1224.下面不正确的赋值语句是:A)a=a+1B)a= =bC)a+=bD)a=125.已知字母A的ASC II码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为:A)DB)68C)不确定的值D) C26.下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量D.它们的运算对象可以是char型变量、int型变量和float型变量27.以下能正确地定义整型变量a,b和c并为其赋初值5的语句是: A)int a=b=c=5; B)int a,b,c=5;C)a=5,b=5,c=5; D)a=b=c=5;28.已知ch是字符型变量,下面不正确的赋值语句是:A)ch=‘a+b’;B)ch=‘\0’; C)ch=‘7’+‘9’; D)ch=5+9;29.已知ch是字符型变量,下面正确的赋值语句是:A)ch=‘123’; B)ch=‘\xff’; C)ch=‘\08’;D)ch=‚\‛;30.若有以下定义,则正确的赋值语句是:int a,b; float x;A)a=1,b=2, B)b++; C)a=b=5 D)b=int(x); 31.设x、y均为float型变量,则以下不合法的赋值语句是:A)++x; B)y=(x%2)/10;C)x*=y+8; D)x=y=0;32.设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y 和z的值是:A)x=10 B)x=10 C)x=10 D)x=10y=15 y=10 y=10 y=5z=10 z=10 z=15 z=10二、判断题×1.在 C 程序中, APH 和 aph 代表不同的变量。

谭浩强c语言第三版课后习题答案

谭浩强c语言第三版课后习题答案

谭浩强c语言第三版课后习题答案谭浩强教授的《C程序设计》第三版是一本广受欢迎的C语言教材,其课后习题也是很多学习者检验学习成果的重要方式。

以下是部分课后习题的答案,供参考:第一章:C语言概述1. C语言的特点是什么?- C语言具有高级语言的特点,同时具有低级语言的许多功能。

- C语言具有丰富的运算符和数据类型。

- C语言具有结构化编程的特点。

- C语言具有很好的移植性。

2. C语言的主要应用领域有哪些?- 系统软件开发。

- 嵌入式系统开发。

- 应用软件的开发。

第二章:数据类型及其运算1. C语言中的基本数据类型有哪些?- 整型(int)- 浮点型(float, double)- 字符型(char)2. 什么是算术运算符?- 加(+)、减(-)、乘(*)、除(/)、模(%)第三章:简单的输入输出1. C语言中标准输入输出函数有哪些?- `printf()` 用于格式化输出。

- `scanf()` 用于格式化输入。

2. 如何使用`printf()`函数进行输出?- 使用`printf()`函数时,需要在括号内提供格式字符串,格式字符串中可以包含转义序列和格式说明符。

第四章:分支结构1. C语言中的条件语句有哪些?- `if`语句- `if...else`语句- `switch`语句2. 如何使用`if`语句实现分支?- 使用`if`语句时,首先需要一个条件表达式,如果条件为真,则执行`if`语句块内的代码。

第五章:循环控制1. C语言中的循环语句有哪些?- `for`循环- `while`循环- `do...while`循环2. 如何使用`for`循环?- `for`循环需要三个部分:初始化表达式、条件表达式和迭代表达式。

第六章:数组1. 数组的基本概念是什么?- 数组是一种数据结构,可以存储固定大小的同类型元素集合。

2. 如何声明一个数组?- 使用数组类型和数组名来声明,例如:`int arr[10];`第七章:指针1. 什么是指针?- 指针是一种变量,它存储了另一个变量的内存地址。

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强课后习题答案完整版第一章1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

C语言设计谭浩强第三版课后习题答案

C语言设计谭浩强第三版课后习题答案

C语言设计谭浩强第三版的课后习题答案C语言设计谭浩强第三版的课后习题答案1.5请参照本章例题,编写一个C程序,输出以下信息:main(){printf(" ************ \n");printf("\n");printf(" Very Good! \n");printf("\n");printf(" ************\n");}1.6编写一个程序,输入a b c三个值,输出其中最大者。

解:main(){int a,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;printf("最大数为:%d",max);}第三章3.3 请将下面各数用八进制数和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:十八十六(10)=(12)=(a)(32)=(40)=20(75)=(113)=4b(-617)=(176627)=fd97-111=177621=ff912483=4663=963-28654=110022=901221003=51013=520b3.5字符常量与字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。

字符串常量是由0个或若干个字符而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'. 3.6写出以下程序的运行结果:#includevoid main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c %c\n",c4,c5);解:程序的运行结果为:aabb cc abcA N3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母, 例如,字母"A"后面第4个字母是"E",用"E"代替"A".因此,"China"应译为"Glmre".请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并输出.main(){char c1="C",c2="h",c3="i",c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}3.8例3.6能否改成如下:#includevoid main(){int c1,c2;(原为char c1,c2)c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.3.9求下面算术表达式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)3.10写出下面程序的运行结果:#includevoid main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);}解:结果: 9,11,9,10第4章4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得到以下的输出格式和结果,请写出程序要求输出的结果如下:a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)解:main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y=z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c' or %d(ASCII)\n",c1,c2);printf("c2='%c' or %d(ASCII)\n",c2,c2);}4.5请写出下面程序的输出结果.结果:575 767.856400,-789.12396267.856400 ,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a', 问在键盘上如何输入?main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d,&a,&b);scanf(" x=%f y=%e",&x,&y);scanf(" c1=%c c2=%c",&c1,&c2);}解:可按如下方式在键盘上输入:a=3 b=7x=8.5 y=71.82c1=A c2=a说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行入的"回车".如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一初步概念即可,以后再进一步深入理解.4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z);解:main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运行时输入:10 20Aa1.5 -3.75 +1.5,67.8注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。

c语言-C程序设计(第四版)谭浩强_课后习题答案第3章

c语言-C程序设计(第四版)谭浩强_课后习题答案第3章

C程序设计(第四版)谭浩强_课后习题答案第3章第3章最简单的C程序设计——顺序程序设计373.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和printf("p2=%f\n",p2); // 输出按第2方案得到的本息和printf("p3=%f\n",p3); // 输出按第3方案得到的本息和printf("p4=%f\n",p4); // 输出按第4方案得到的本息和printf("p5=%f\n",p5); // 输出按第5方案得到的本息和return 0;}3-2-2#include <stdio.h>#include <math.h>int main(){double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

C语言设计谭浩强第三版的课后习题答案

C语言设计谭浩强第三版的课后习题答案

C语言设计谭浩强第三版的课后习题答案1.5请参照本章例题,编写一个C程序,输出以下信息:main(){printf(" ************ \n");printf("\n");printf(" Very Good! \n");printf("\n");printf(" ************\n");}编写一个程序,输入a b c三个值,输出其中最大者。

解:main(){int a,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;printf("最大数为:%d",max);}第三章请将下面各数用八进制数和十六进制数表示:(1)10 (2)32 (3)75 (4)-617解:十八十六(10)=(12)=(a)(32)=(40)=20(75)=(113)=4b(-617)=(176627)=fd97-111=177621=ff912483=4663=963-28654=110022=901221003=51013=520b字符常量与字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。

字符串常量是由0个或假设干个字符而成,用双引号把它们括起来,存储时自动在字符串最后加一个终止符号'\0'.写出以下程序的运行结果:#includevoid main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c %c\n",c4,c5);解:程序的运行结果为:aabb cc abcA N将"China"译成密码.密码规律:用原先的字母后面第4个字母代替原先的字母,请编一程序,用赋初值的议程使c1,c2,c3,c4,c5别离变成'G','1','m','r','e',并输出.main(){char c1="C",c2="h",c3="i",c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}例可否改成如下:#includevoid main(){int c1,c2;(原为char c1,c2)c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}解:能够.因为在可输出的字符范围内,用整型和字符型作用相同.求下面算术表达式的值.(2)(float)(a+b)/2+(int)x%(int)y=(设a=2,b=3,x=,y=写出下面程序的运行结果:#includevoid main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);}解:结果: 9,11,9,10第4章'a',c2='b'.想得到以下的输出格式和结果,请写出程序要求输出的结果如下: a= 3 b= 4 c= 5x=,y=,z=x+y= y+z= z+x=u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)解:{int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=;y=;z=;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%,y=%,z=%\n",x,y,z);printf("x+y=% y=z=% z+x=%\n",x+y,y+z,z+x); printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c' or %d(ASCII)\n",c1,c2);printf("c2='%c' or %d(ASCII)\n",c2,c2);}请写出下面程序的输出结果.结果:575 7,,+001,+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM用下面的scanf函数输入数据,使a=3,b=7,x=,y=,c1='A',c2='a',问在键盘上如何输入?main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d,&a,&b);scanf(" x=%f y=%e",&x,&y);scanf(" c1=%c c2=%c",&c1,&c2);}解:可按如下方式在键盘上输入:a=3 b=7x= y=c1=A c2=a说明:在边疆利用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行入的"回车".假设是没有那个空格,按上面输入数据会犯错,读者目前对此只留有一用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=,y=-,z=,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z);解:main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运行时输入:10 +,注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。

c语言程序设计第三版谭浩强课后习题答案

c语言程序设计第三版谭浩强课后习题答案

c语言程序设计第三版谭浩强课后习题答案
《C语言程序设计第三版谭浩强课后习题答案》
C语言程序设计是计算机科学领域中的重要一环,而谭浩强的《C语言程序设
计第三版》更是备受学生和程序员们的青睐。

在学习这门课程时,课后习题是
非常重要的一部分,通过解答习题可以加深对知识点的理解和掌握。

本文将为大家提供《C语言程序设计第三版谭浩强课后习题答案》,希望能够帮
助大家更好地学习和掌握C语言程序设计这门课程。

1. 第一章习题答案
1.1 习题1
答案:C语言程序设计是一门非常重要的编程语言,它可以用来编写各种类型
的程序,包括系统软件、应用软件、嵌入式软件等。

1.2 习题2
答案:C语言程序设计的优点包括语法简洁、执行效率高、灵活性强、可移植
性好等。

2. 第二章习题答案
2.1 习题1
答案:C语言程序的基本结构包括头文件、全局变量声明、函数声明、主函数、自定义函数等。

2.2 习题2
答案:在C语言程序中,注释的作用是对程序进行说明和解释,提高程序的可
读性。

3. 第三章习题答案
3.1 习题1
答案:C语言中的标识符是用来表示变量、函数、数组等的名称,它由字母、数字和下划线组成,且不能以数字开头。

3.2 习题2
答案:C语言中的关键字是指被编程语言保留用作特定用途的单词,比如int、float、if、else等。

通过以上习题答案的解答,相信大家对C语言程序设计的理解和掌握会更加深入。

希望大家在学习过程中能够多加练习,不断提升自己的编程能力。

祝大家学习顺利,编程愉快!。

C语言程序设计第三版谭浩强课后习题答案

C语言程序设计第三版谭浩强课后习题答案

C语言程序设计第三版谭浩强课后习题答案1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

C语言程序设计第四版第三章答案 谭浩强

C语言程序设计第四版第三章答案 谭浩强

第三章3.5用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?main(){int a,b;float x,y;char c1c2;scanf("a=%d_b=%d",&a,&b);scanf("_x=%f_y=%e",&x,&y);scanf("_c1=%c_c2=%c",&c1,&c2);}a=3_b=7_x=8.5_y=71.82_c1=A_c2=a3.6要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

解:#include <stdio.h>main(){ char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}运行结果:密码是Glmre3.7设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。

请编程序。

main(){float r,h,C1,Sa,Sb,Va,Vb;scanf("%f,%f",&r,&h);C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf("C1=%.2f\n",C1);printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);}3.8编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。

C程序设计(第四版)_谭浩强_第三章_课后习题答案-推荐下载

C程序设计(第四版)_谭浩强_第三章_课后习题答案-推荐下载

对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

C程序设计(第四版)_谭浩强_第三章_课后习题答案

C程序设计(第四版)_谭浩强_第三章_课后习题答案

最简单的C程序设计——顺序程序设计P037 3.1 把华氏温度转化为摄氏表示法.#include<stdio.h>float F_to_C(float input_fah) //代表华转摄,input_fah是局部变量.{float output_cen; //这里也是局部变量.output_cen=(5.0/9)*(input_fah-32); //函数的功能体.return output_cen; //返回值,注意,返回值的数据类型应该和函数一致.}float C_to_F(float input_cen){float output_fah;output_fah=(9.0/5)*input_cen+32; //转换过程.return output_fah;}int main(){int choice;float input_fah,input_cen,output_fah,output_cen; //局部变量的调用及参数传递.printf("F_to_C press <1> and C_to_F press <2> !\n");scanf("%d",&choice);if(choice==1){printf("Please input fahrenheit :");scanf("%f",&input_fah); //这个是主函数定义的变量,虽然和调用函数同名.output_cen=F_to_C(input_fah);printf("The 华氏 is %d , 摄氏 is %d .",(int)input_fah,(int)output_cen);}if(choice==2){printf("Please input centigrade :");scanf("%f",&input_cen);output_fah=C_to_F(input_cen);printf("The Centigrade is %d , and the Fahrenheitis %d .",(int)input_cen,(int)output_fah);}return 0;}P038 3.2 计算存款利息(关于精度问题).#include<stdio.h>int main(){float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);return 0;}#include<stdio.h>int main() //小写范围是97-122,大写范围是65-90,大写加上即得小写.26个字母. {char c1, c2;c1='A';c2=c1+32;printf("%c %d",c2,c2);return 0;}P059 3.4 给出三角形边长,算出面积.#include<stdio.h>#include<math.h>int main(){double a=3.67, b=5.43, c=6.21, s, area;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area is %f\n",area); //默认可以组成三角形.return 0;P065 3.5 求一无二次等式的根,默认两个不同根.#include<stdio.h>#include<math.h>int main(){double a,b,c,disc,x1,x2,p,q;scanf("%lf %lf %lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("x1=%7.2f\nx2=%7.2f",x1,x2);return 0;}#include<stdio.h>#include<math.h>int main(){double a=1.0; //1是整型,1.0是浮点型,默认是double.可以是float.printf("%.9f\n",a/3);return 0;}#include<stdio.h>#include<math.h>int main(){float a; //输出的结果是.333252,float精度6位,所以第七位后不可信.a=10000/3.0;printf("%f\n",a);return 0;}#include<stdio.h>#include<math.h>int main(){char a='B',b='O',c='Y';putchar(a);putchar(b);putchar(c);putchar('\n');putchar(101); //101是A的ASCII代码的缩写,因为此函数只能输出字符.putchar(66);return 0;}P079 3.9 使用getchar得到字符.#include<stdio.h>#include<math.h>int main(){char a,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c); //这也是基本回显的C程序代码.putchar('\n');return 0;}#include<stdio.h>#include<math.h>int main(){char a,b;a=getchar();b=a+32;putchar(b);putchar('\n');return 0;}#include<stdio.h>#include<math.h>int main(){double p,r=0.09,n=10;p=pow((1+r),n); //这是数学函数, pow(x,y)计算x的y次方.printf("P is %lf when 10 years later .\n",p);return 0; //结果是0.36倍.}P082 0.2 求各种存款的利息数.#include<stdio.h>#include<math.h>int main(){double p,r,n; //年份和当年利率均有给出.p=1000*(1+5*0.0585);printf("5 years is %lf !\n",p); //1292.5,这是全五年期.lf输出的是double型.p=(1000*(1+2*0.0468));p=(p*(1+3*0.0540));printf("5 years is %lf !\n",p); //1270.76,这是先二年,再三年的.p=(1000*(1+3*0.0540));p=(p*(1+2*0.0468));printf("5 years is %lf !\n",p); //1270.76,这是先三年,再二年的.证明,是一样的.p=1000*pow((1+0.0414),5);printf("5 years is %lf !\n",p); //1224.86,这难道说是,相对的存死期越久越值钱.p=1000*pow((1+0.072/4),4*5);printf("5 years is %lf !\n",p); //1428.74.return 0;}P083 0.3 求几个月要以还贷.#include<stdio.h>#include<math.h>int main(){double m,r=0.01,d=300000,p=6000;m=(log10(p/(p-d*r)))/(log10(1+r));printf("%.1lf",m); //按要求只留一个小数,所以要写%.1lf.return 0;}P084 0.6 字母密码转换,调用函数及临界处理.#include<stdio.h>char printcode(char f){if(((int)f>86&&(int)f<91)||((int)f>118&&(int)f<123)){return(f-26+4); //因为putchar会自动返回,所以改成return,因为这是在函数中,调用需要返回值.}else{return(f+4);}}int main(){char a,b,c,d,e;printf("Please input :\n");a=getchar();b=getchar();c=getchar();d=getchar();e=getchar(); //临界问题.printf("%c%c%c%c%c",printcode(a),printcode(b),printcode(c),printcode(d),printc ode(e));putchar(putcharcode(a));putchar(putcharcode(b));putchar(putcharcode(c));putchar(putcharcode(d));putchar(putcharcode(e));return 0; //注意理解自定义函数的定义,使用,及形参实参的流向.//p84的是计算问题,自己看着办,最后要求小数点后两位,用的是%.2lf 来实现,因为没有要求实部,所以m.n格式中m不写.//p84的是定义问题,第一问,两者都行,但是定义字母时,scanf要写%c来获取,而定义数值时则要用%d来获取.// 第二问,putchar貌似只能输出字符,所以用printf.putchar本身就是字符输出函数啦,字符,有木有!!!字符啊!!尽管它的参数可以是putchar('\101'),效果是输出字符A啊.// 第三问,出现"任何"及"无条件",那么答案明显是"否".可以转换,但要在某此条件下,例如输出和读入时,%c是字母,而%d是数值,看着办.}。

c第三章课后习题答案 谭浩强

c第三章课后习题答案 谭浩强

1 / 22题#include <iostream> #include <iomanip> using namespace std; int main ( ){float h,r,l,s,sq,vq,vz; const float pi=;cout<<“please enter r,h:“;cin>>r>>h; l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=*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;2 / 22return 0; } 题#include <iostream> using namespace std; int main () {float c,f; cout<<“请输入一个xx:“;cin>>f; c=*(f-32);; 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;3 / 22return 0; } 题#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;4 / 22cout<<“place=“<<place<<endl;.=“<<sn<<endl;return 0; } 题#include <iostream> using namespace std; int main () {float s=0,t=1; int n;for (n=1;n<=20;n++) {t=t*n;.+20!=“<<s<<endl;return 0; } 题#include <iostream> using namespace std; int main () {int i,j,k,n; cout<<“narcissus numbers are:“<<endl;5 / 22for (n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n_x0010_;if (n == i*i*i + j*j*j + k*k*k) cout<<n<<““;}cout<<endl; } 题#include <iostream> using namespace std; int main(){const int m=1000;.,k10 {case 1:k1=i;break;<<endl; return 0; elsecout<<n<<“is not a prime.“<<endl;return 0; }6 / 22int prime(int n) {int flag=1,i;for (i=2;i<n/2 && flag==1;i++) if (n%i==0) flag=0; return(flag); } 题#include <iostream> using namespace std; int main() {int fac(int); int a,b,c,sum=0; cout<<“enter a,b,c:“;cin>>a>>b>>c;sum=sum+fac(a)+fac(b)+fac(c);cout<<a<<“!+“<<b<<“!+“<<c<<“!=“<<sum<<endl;return 0; }int fac(int n) {int f=1;7 / 22for (int i=1;i<=n;i++) f=f*i; return f; } 题#include <iostream> #include <cmath> using namespace std; int main() {double e(double); double x,sinh; cout<<“enter x:“; cin>>x;sinh=(e(x)+e(-x))/2;cout<<“sinh(“<<x<<“)=“<<sinh<<endl;return 0; }double e(double x) {return exp(x);} 题#include <iostream>8 / 22#include <cmath> using namespace std; int main(){double solut(double ,double ,double ,double ); double a,b,c,d; cout<<“input a,b,c,d:“;cin>>a>>b>>c>>d;cout<<“x=“<<solut(a,b,c,d)<<endl;return 0; }double solut(double a,double b,double c,double d) {doublex=1,x0,f,f1; do{x0=x;f=((a*x0+b)*x0+c)*x0+d; f1=(3*a*x0+2*b)*x0+c; x=x0-f/f1; } while(fabs(x-x0)>=1e-5); return(x); }9 / 22题#include <iostream> #include <cmath> using namespace std; int main() {void godbaha(int); int n;cout<<“input n:“;cin>>n; godbaha(n); return 0; }void godbaha(int n) {int prime(int); int a,b;for(a=3;a<=n/2;a=a+2) {if(prime(a)) {b=n-a; if (prime(b)) }int prime(int m)10 / 22{int i,k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if (i>k) return 1; else return 0; } 题#include <iostream> using namespace std; int main() {int x,n; float p(int,int); cout<<“input n & x:“;cin>>n>>x;cout<<“n=“<<n<<“,x=“<<x<<endl;;cout<<“P“<<n<<“(x)=“<<p(n,x)<<endl;cout<<n<<“=“<<a<<“+“<<b<<endl;}}return 0;}float p(int n,int x) {if (n==0) return(1); else if (n==1)11 / 22return(x); elsereturn(((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n); } 题#include <iostream> using namespace std; int main() {void hanoi(int n,char one,char two,char three); int m; cout<<“input the number of diskes:“;cin>>m;cout<<“The steps of moving “<<m<<“disks:“<<endl; hanoi(m,“A“,“B“,“C“);return 0; }void hanoi(int n,char one,char two,char three) <<endl;; cout<<“continu or not(Y/N)“;cin>>c;if (c==“N“||c==“n“)12 / 22flag=false; } return 0; } 题#include <iostream> using namespace std; int main(){int sum_day(int,int); int leap(int year);int year,month,day,days=0;cout<<“input date(year,month,day):“;cin>>year>>month>>day;cout<<year<<“/“<<month<<“/“<<day;days=sum_day(month,day); 数一*/if(leap(year) && month>=3) 二*//*调用函/*调用函数days=days+1;cout<<“is the “<<days<<“th day in this year.“<<endl;13 / 22return 0; }int sum_day(int month,int day),tran; tran=ch;cout<<“cipher code:“<<ch<<endl;j=0; while (j<=()){ if ((ch[j]>=“A“) && (ch[j]<=“Z“))tran[j]=155-ch[j];else if ((ch[j]>=“a“) && (ch[j]<=“z“))}cout<<“original text:“;cout<<tran<<endl; return 0; } 另一解tran[j]=219-ch[j]; tran[j]=ch[j]; elsej++;#include <iostream>14 / 22#include <string> using namespace std; int main() {int j; string ch=“I will visit China next week.“;cout<<“cipher code:“<<ch<<endl;j=0; while (j<=()){ if ((ch[j]>=“A“) && (ch[j]<=“Z“))ch[j]=155-ch[j];else if ((ch[j]>=“a“) && (ch[j]<=“z“))ch[j]=219-ch[j]; j++; }cout<<“original text:“;cout<<ch<<endl; return 0; }#include <iostream> #include <string> using namespace std;15 / 22int main() {int j;string ch=“I will visit China next week.“;cout<<“cipher code:“<<ch<<endl;j=0; while (j<=()){ if ((ch[j]>=“A“) && (ch[j]<=“Z“))ch[j]=155-ch[j];else if ((ch[j]>=“a“) && (ch[j]<=“z“))}cout<<“original text:“;cout<<ch<<endl; return 0; } 题ch[j]=219-ch[j]; j++;#include <iostream> #include <string> using namespace std; intmain()16 / 22{char s1[80],s2[40]; int i=0,j=0;cout<<“input string1:“;cin>>s1;cout<<“input string2:“;cin>>s2; while (s1[i]!=“\0“)i++;while(s2[j]!=“\0“)s1[i++]=s2[j++]; s1[i]=“\0“;cout<<“The new string is:“<<s1<<endl;return 0; } 另一解#include <iostream> using namespace std; int main() {chars1[80],s2[40]; cout<<“input string1:“;cin>>s1;17 / 22cout<<“input string2:“;cin>>s2; strcat(s1,s2);cout<<“The new string is:“<<s1<<endl;return 0; } 另一解#include <iostream> #include <string> using namespace std; int main(){ string s1=“week“,s2=“end“;cout<<“s1=“<<s1<<endl;cout<<“s2=“<<s2<<endl;s1=s1+s2;cout<<“The new string is:“<<s1<<endl;return 0; } 题#include <iostream> #include <string>18 / 22using namespace std; int main() { const int n=5; int i,j;string str[n],temp;cout<<“please input strings:“<<endl; for(i=0;i<n;i++) cin>>str[i]; for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) if(str[j]>str[j+1]){temp=str[j];str[j]=str[j+1];str[j+1]=temp;} cout<<endl<<“sorted strings:“<<endl;for(i=0;i<n;i++) } 题#include <iostream> #include <string> using namespace std; int main() { const int n=5;19 / 22string str; for(int i=0;i<n;i++){cout<<“please input string:“;cin>>str; } 题#include <iostream> using namespace std; int main() { const n=10;int i;char a[n],temp;cout<<“please input a string:“;for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n/2;i++){temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;} for(i=0;i<n;i++) cout<<a[i]; cout<<endl; return 0;20 / 22}if(str[0]==“A“)cout<<str<<endl;} cout<<str[i]<<endl; return 0; return 0; 题另一解#include <iostream> #include <string> using namespace std; int main() { string a; int i,n; char temp;cout<<“please input a string:“;cin>>a; n=();for(i=0;i<n/2;i++){temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;} cout<<a<<endl; return 0; }21 / 22题#include <iostream> #include <string> using namespace std; const int n=10; string name[n]; int num[n],score[n]; int main() {int i; void input_data(); input_data();cout<<endl<<“The list of failed:“<<endl;for(i=0;i<n;i++) if(score[i]<60)cout<<name[i]<<““<<num[i]<<““<<score[i]<<endl;return 0; }void input_data() {int i;for (i=0;i<n;i++){cout<<“input name,number and score of student “<<i+1<<“:“;22 / 22cin>>name[i]>>num[i]>>score[i];} }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章课后练习题
一、单项选择题
1.根据C语言的语法规则,不能做变量名的是:
A)do
B)Name
C)R5
D)_exam
2.下列四组选项中,全是C语言关键字的选项是:感觉没有答案
A)define IF type
B)getc char printf :printf是函数名
C)include case scanf :同上
D)while go pow :同上
3.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符:
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母、数字和下划线中任一种字符
4.在C语言中,合法的字符常量是:
A) 3
B)‘S’
C)'ab'
D)"A"
5.若已定义x和y为double类型,则表达式:x=1,y=x+3/2中y的值是:
A) 1
B) 2
C) 3
D) 2.5
6.C语言提供的不合法的数据类型关键字是:
A)double
B)short
C)integer
D)char
7.合法的C语言中,合法的字符串是:
A)'\t'
B)"A"
C)‘a’
D)‘a\t’
8.执行语句int a=5; a++;后,a的值是:
A)7
B) 6
C) 5
D) 4
A)
9.以下选项中属于C语言的数据类型是:
A)复合型
B)双精度型
C)数学型
D)集合型
10.Vc6.0下各种基本数据类型的存贮空间正确的长度排列是:
A)int< Char<=float<double
B)Double<float <=int<char
C)Char<int<=float<double
D)Float<=int <char<double
11.下面的变量说明中正确的是:
A)char:a, b, c;
B)char a; b; c;
C)char a, b, c;
D)char a, b, c
12.sizeof(double) 语句执行结果的数据类型是
A)一种函数调用
B)一个双精度型表达式
C)一个整型表达式
D)一个不合法的表达式
13.以下程序的输出结果是:
int a=1,b=4,c=2;float x=10.5,y=4.0,z;z=(a+b)/c+sqrt((double)y)*1.2/c+x; pritnf("%f\n",z);
A.14.000000
B.15.400000
C.13.700000
D.14.900000
14.下面四个选项中,均是不合法的整型常量的选项是:
A)--0f1 -0xffff 0011
B)-0Xcdf 017 12,456
C)-018 999 5e2
D)-0x48eg -068 03f
15.下面四个选项中,均是不合法的浮点数的选项是:
A)160.0.12 e3
B)123 2e4.2 .e5
C)-.18 123e4 0.0
D)-e3 .234 1e3
16.下面四个选项中,均是不合法的转义字符的选项是:
A)‘\‛’‘\\’‘\xf’
B)‘\1011’‘\’‘\a’
C)‘\011’‘\f’‘\}’
D)‘\abc’‘\101’‘xlf’
17.若有说明语句:char c=‘\72’;则变量c:
A)包含1个字节B)包含2个字节
C)包含3个字节D)说明不合法,c的值不确定
18.表达式18/4*sqrt(4.0)/8值的数据类型为:
A)int B)float C)double D)不确定19.设有如下的变量定义:int i=8, k, a, b; unsigned long w=5; double x=1.42, y=5.2;则以下符合C语言语法的表达式是:没有答案????
A)k=k/0;:除数不为0
B)x%(-3);:浮点数不能参加%运算
C)a*3=2;:左边不能为表达式
D)y=float(i);:(float)i
20.假定有以下变量定义,int k=7,x=12;则能使值为3的表达式是:
A)x%=(k-5)
B)x= x% (k-k%5)
C)x= x-k-k%5
D)(x/k)-(k%5)
21.设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是:
A)把x和y按从大到小排列
B)把x和y按从小到大排列
C)无确定结果
D)交换x和y中的值
22.以下程序int a=12,b=12; printf("%d,%d\n",--a,++b);的输出结果是:
A)10 10
B)12 12
C)11 10
D)11 13
23.以下程序int a=5;float x=3.1; a=x*(‘E’- ‘A’);printf(‚%f\n‛,(float)a);输出结果是
A)12.000000
B)12.800000
C)13.000000
D)12
24.下面不正确的赋值语句是:
A)a=a+1
B)a= =b
C)a+=b
D)a=1
25.已知字母A的ASC II码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为:
A)D
B)68
C)不确定的值
D) C
26.下列关于单目运算符++、--的叙述中正确的是
A.它们的运算对象可以是任何变量和常量
B.它们的运算对象可以是char型变量和int型变量,但不能是float型变

C.它们的运算对象可以是int型变量,但不能是double型变量和float型
变量
D.它们的运算对象可以是char型变量、int型变量和float型变量
27.以下能正确地定义整型变量a,b和c并为其赋初值5的语句是: A)int a=b=c=5; B)int a,b,c=5;
C)a=5,b=5,c=5; D)a=b=c=5;
28.已知ch是字符型变量,下面不正确的赋值语句是:
A)ch=‘a+b’;B)ch=‘\0’; C)ch=‘7’+‘9’; D)
ch=5+9;
29.已知ch是字符型变量,下面正确的赋值语句是:
A)ch=‘123’; B)ch=‘\xff’; C)ch=‘\08’;D)ch=‚\‛;
30.若有以下定义,则正确的赋值语句是:
int a,b; float x;
A)a=1,b=2, B)b++; C)a=b=5 D)b=int(x); 31.设x、y均为float型变量,则以下不合法的赋值语句是:
A)++x; B)y=(x%2)/10;C)x*=y+8; D)x=y=0;
32.设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y 和z的值是:
A)x=10 B)x=10 C)x=10 D)x=10
y=15 y=10 y=10 y=5
z=10 z=10 z=15 z=10
二、判断题×
1.在 C 程序中, APH 和 aph 代表不同的变量。

(√)
2.表达式 _ya是不合法的C语言标识符。

(× )
3.变量‛a‛和’a’含义相同。

(×)
4.C语言的数据类型只有int 型和 float 型。

(× )
5.在C语言程序设计中,不同类型的数在计算机内存中所占空间是不同的。

(√)
6.在C程序中,浮点型变量能完全准确地表示任意精度的实数。

(×)
7.在C程序中,float变量没有double变量精度高。

(√)
8.符号常量的定义方法是#define. ( )
三、填空题
1.在C语言中,正确的标识符是由__字母___,__数字___,_下划线__组成
的。

2.C语言中,正确的标识符是由_字母_____,_____下划线___开头的。

3.C语言中基本的数据类型有:、、。

4.vc6.0下C语言中普通整型变量的类型说明符为 int
5.在C语言中的实型变量分为两种类型,它们
是float和double 。

四、简答题
1.请说明符号‛a‛和’a’的区别。

“a”是字符串
…a‟是字符。

相关文档
最新文档