西安交通大学C复习课件_第1页
西安交通大学C复习课件_第2页
西安交通大学C复习课件_第3页
西安交通大学C复习课件_第4页
西安交通大学C复习课件_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0杨琦西安交通大学计算机教学实验中心2012.8第2章习题计算机程序设计(C++)2023/6/2812.温度转换。输入华氏温度,用下列公式将其转换为摄氏温度并输出。样例输入输出18026.66672023/6/282#include<iostream>usingnamespacestd;intmain(){ doublec,f; cin>>f; c=5.0/9*(f-32); cout<<c<<endl;

return0;}2023/6/28233.编程试求函数

当x→0时的极限。提示:三角函数的值是通过数学函数sin(x)(正弦)、cos(x)(余弦)来计算的(函数使用见附录)。输入的数值逐步变小,不要输入0。样例输入输出:输入:10输出:15342023/6/2834#include<iostream>#include<cmath>usingnamespacestd;intmain(){ doublex,y;

cin>>x; y=sin(x*x)/(1-cos(x));

cout<<y<<endl;return0;}2023/6/28455.编程实现,用户从键盘输入3个整数,计算并打印这三个数的和、平均值及平均值的四舍五入整数值。提示:直接将double型数转换为int型数,得到整数结果。请先实现小数部分大于等于0.5时整数加1,再取整(转换为int型数)。样例输入输出1568196.3333362023/6/2856intmain(){

int

a,b,c,x,z; doubley;

cin>>a>>b>>c; x=a+b+c; y=x/3.0; z=(int)(y+0.5);

cout<<x<<endl;

cout<<y<<endl;

cout<<z<<endl; return0;}2023/6/28676.找零钱。为顾客找零钱时,希望选用的纸币张数最少。例如73元,希望零钱的面值为五十元1张,二十元1张,一元3张。设零钱面值有五十元、二十元、十元、五元和一元,请编写程序,用户输入100以下的数,计算找给顾客的各面值的纸币张数。并在程序中想一个验证结果是否正确的办法。样例输入输出74110042023/6/2878intmain(){

intx,y[5]; cin>>x; y[0]=x/50; x=x%50; y[1]=x/20; x=x%20; y[2]=x/10; x=x%10; y[3]=x/5; x=x%5; y[4]=x/1; x=x%1;

for(inti=0;i<5;i++)

cout<<y[i]<<"";

cout<<endl;return0;}2023/6/28897.小写转大写。用户输入小写字母,程序输出对应的大写字母。样例输入输出dD2023/6/28910#include<iostream>usingnamespacestd;intmain(){ charc;

cin>>c;

if(c>='a'&&c<='z') c=c-'a'+'A';

cout<<c<<endl;return0;}2023/6/2810118.打印ASCII码。输入一个字符(可能为字母、数字或标点符号等),在一行中打印该字符及该字符的ASCII的十进制、十六进制形式和八进制形式,数据之间用’’分隔。提示,输出八进制数使用cout<<oct<<v;的格式,其中v是待输出的整型变量。样例输入输出AA65411012023/6/281112#include<iostream>#include<cmath>usingnamespacestd;intmain(){ charc;

cin>>c;

cout<<c<<""<<(int)c<<""<<hex<<(int)c<<""<<oct<<(int)c<<endl;return0;}2023/6/28121310.用户以字符形式输入4个数字字符,将其组成一个4位的整数。例如,用户输入:2011,输出结果为2011。注意,输入的四个数字是字符型,用四个字符型变量存储,而2011是由它们构造出的一个四位整数,用一个整型变量表示。样例输入输出2011201140222023/6/281314intmain(){ charc1,c2,c3,c4;

inty; cin>>c1>>c2>>c3>>c4; y=c1-'0'; y=y*10+c2-'0'; y=y*10+c3-'0'; y=y*10+c4-'0'; cout<<y<<""<<2*y<<endl;

return0;}2023/6/281415杨琦西安交通大学计算机教学实验中心2012.8第3章习题计算机程序设计(C++)2023/6/2815165.编程计算前N个奇数的和,N由用户输入。如N=4,和为16,1+3+5+7=16。样例输入输出:输入:4输出:162023/6/281617#include<iostream>usingnamespacestd;intmain(){

int

N,sum,i;

cin>>N; sum=0;

for(i=1;i<2*N;i=i+2) sum=sum+i;

cout<<sum<<endl; return0;}2023/6/2817189.求π的近似值。将arctan(x)在x=0展开,得当x=1时,arctan(x)=π/4,从而这个级数即可以计算arctan(x)的近似值,又可以计算π的近似值:利用上式编程计算π的近似值,精确到小数点后10位。样例输入输出:输入:1e-5输出:3.141572023/6/281819intmain(){ doublepi=0,u=1,eps=1e-5; intn=1,s=1; cin>>eps; while(u>eps) { pi=pi+s*u; n=n+2; s=-s; u=1.0/n; } cout<<4*pi<<endl; return0;}2023/6/28192010.输入n(n<13),计算1!+2!+3!+4!+...+n!样例输入输出:输入:6输出:8732023/6/282021#include<iostream>usingnamespacestd;intmain(){ inti,n,u=1,sum=0;//u为通项的值,sum为总和

cin>>n; for(i=1;i<=n;i++) { u=u*i; sum=sum+u; } cout<<sum<<endl; return0;}2023/6/2821227.1202年,意大利数学家列奥纳多(LeonardoPisano,外号Fabonacci斐波那契),在他的《算盘全书》中描述了一个关于兔子繁殖的问题。如果一对兔子每月能繁殖一对小兔,每对小兔在第三个月成熟,又能生出一对小兔。假定在不死亡的情况下,由一对小兔开始,10个月后有多少对兔子?输入:5输出:5120.62.766672023/6/282223intmain(){ intsum=0,n,i; intf[100]={0,1};

doublesum1=0,a[100]={0,1};

cin>>n;

for(i=1;i<=n;i++) {

if(i>=2)f[i]=f[i-1]+f[i-2]; sum+=f[i];

a[i]=1.0*f[i-1]/f[i]; sum1+=a[i]; }

cout<<f[n]<<""<<sum<<endl;

cout<<a[n]<<""<<sum1<<endl; return0;}2023/6/28232413.求a+aa+aaa+aaaa+...+aa...a(第n项,n个a),其中a是1~9的整数。例如,a=1,n=3时,式子为1+11+111;当a=5,n=4时,式子为5+55+555+5555。样例输入输出:输入:25输出:246902023/6/282425intmain(){

int

a,n,u=0,sum=0;

inti;

cin>>a>>n;

for(i=1;i<=n;i++) { u=u*10+a; sum=sum+u; }

cout<<sum<<endl; return0;}2023/6/28252614.arcsin(x)写成级数形式为:用户输入x,利用该式,计算反正弦函数的值。结束条件可以设为|u|<ε,其中u为通项。提示:通项最好利用前一项。2023/6/282627constdoublep=1e-7;intmain(){ doublearcsinx,x,u; intn; cin>>x; u=x; arcsinx=x; n=1; while(u>=p) { u=u*(2*n-1)*(2*n-1)*x*x/2/n/(2*n+1); arcsinx=arcsinx+u; n++; } cout<<arcsinx<<endl; return0;}2023/6/28272815.猴子吃桃问题。第一天,猴子摘下一堆桃子,当天吃了一半,感觉没吃够,又饶了一个。以后每天如此,到第10天的时候,发现只剩下一个桃子了。编程计算第一天猴子摘了多少桃子。样例输入输出:输入:10输出:15342023/6/282829intmain(){

intsum;

int

i,n; sum=1;

cin>>n; for(i=n-1;i>=1;i--) { sum=(sum+1)*2;

}

cout<<sum<<endl;return0;}2023/6/28293016.谁是小偷。某小区发生盗窃案,有四个人嫌疑最大,警察找来讯问,A说:不是我。B说:是C。C说:是D。D说:他冤枉人。三人中有一人说了假话,请编程分析谁是小偷?样例输入输出:Cisathief2023/6/283031#include<iostream>usingnamespacestd;intmain(){

intx;

for(x=1;x<=4;x=x+1)if((x!=1)+(x==3)+(x==4)+(x!=4)==3)

cout<<char(64+x)<<"isathief"<<endl; return0;}2023/6/283132杨琦西安交通大学计算机教学实验中心2012.8第4章习题计算机程序设计(C++)2023/6/2832331.编写程序,将N(N<10)阶方阵转置,例如:

2023/6/283334#include<iostream>usingnamespacestd;intmain(){ doublea[10][10],ta[10][10];

intN=10,M=10;

inti,j;

cin>>M; N=M;

for(i=0;i<M;i=i+1) {

for(j=0;j<N;j=j+1)

cin>>a[i][j]; }2023/6/283435

cout<<"矩阵a为:"<<endl;

for(i=0;i<N;i=i+1) {

for(intj=0;j<M;j=j+1)

cout<<a[i][j]<<"";

cout<<endl; } for(i=0;i<N;i=i+1)

{ for(j=0;j<M;j=j+1) ta[i][j]=a[j][i];

}2023/6/283536

cout<<"矩阵a的转置阵为:"<<endl;

for(i=0;i<N;i=i+1) { for(intj=0;j<M;j=j+1)

cout<<ta[i][j]<<""; cout<<endl;

} return0;}

2023/6/283637

3.打印杨辉三角形。样例输入输出:输入:6输出:1111211331146411510105116152015612023/6/283738#include<iostream>usingnamespacestd;intmain(){

inta[20][20]; int

n,i,j;

cin>>n;

for(i=0;i<=n;i++) { a[i][0]=1; a[i][i]=1;

for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; }

for(i=0;i<=n;i++) {

for(j=0;j<=i;j++) cout<<a[i][j]<<"";

cout<<endl; } return0;}2023/6/283839

5.矩阵用一维数组存储,判断矩阵是否是对称矩阵样例输入输出:512321是对称矩阵2023/6/283940intmain(){

inta[100]; int

n,i,y=1;

cin>>n;

for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n/2;i++) { if(a[i]!=a[n-1-i]) { y=0; break; } }

if(y==1)cout<<"是对称矩阵"<<endl; else cout<<"不是对称矩阵"<<endl; return0;}2023/6/284041

7.编写程序,去掉字符串尾部的空格符样例输入输出:Theartofcomputerprogramming截取前的原始字符串是:[Theartofcomputerprogramming]截取空格后的字符串是:[Theartofcomputerprogramming]2023/6/284142#include<iostream>usingnamespacestd;char*mytrim(char*string){ char*ptr=string; while(*ptr!=0)

ptr++; do {

ptr--; }while(*ptr=='');

*(ptr+1)=0; returnstring;}2023/6/284243intmain(){ charstr[100]="Theartofcomputerprogramming"; cin.getline(str,100);

cout<<"截取前的原始字符串是:["<<str<<']'<<endl;

cout<<"截取空格后的字符串是:["<<mytrim(str)<<']'<<endl; return0;}2023/6/2843448.编写程序,去掉字符串开头的空格符样例输入输出:

Theartofcomputerprogramming截取前的原始字符串是:[Theartofcomputerprogramming]截取空格后的字符串是:[Theartofcomputerprogramming]2023/6/284445#include<iostream>#include<cstring>usingnamespacestd;char*myltrim(char*string){ char*ptr=string;

while(*ptr=='')

ptr++;

strcpy(string,ptr); returnstring;}2023/6/284546intmain(){ charstr[100]="Theartofcomputerprogramming"; cin.getline(str,100);

cout<<"截取前的原始字符串是:["<<str<<']'<<endl;

cout<<"截取空格后的字符串是:["<<myltrim(str)<<']'<<endl; return0;}2023/6/28464711.编写程序,将数字组成的字符串转换为整数,例如“1757”(字符串)转换为1757(整形数),要能处理负数。样例输入输出:

-529转换后整型数值的立方是:-1480358892023/6/284748int

myatoi(char*string){

intnum=0; ints=1; while(*string!='\0') { if(*string=='-') s=-s; elseif(*string=='+') s=s; elseif(*string>='0'&&*string<='9') num=num*10+*string-'0'; string++; } returns*num;}2023/6/284849intmain(){ charstr[50]; intn; cin>>str; n=myatoi(str); cout<<"转换后整型数值的立方是:"<<n*n*n<<endl; return0;}2023/6/284950杨琦西安交通大学计算机教学实验中心2012.8第5章习题计算机程序设计(C++)2023/6/28501.函数index(t,s)用于确定字符串t是否是s的子串,若不是,则函数返回-1,否则返回子串t在s中第一次出现时的第一个字符的下标。样例输入输出abcdefghijkcdef22023/6/2851intIndex(char*s,char*t){ intn=strlen(s),m=strlen(t); inti,j; for(j=0;j<=n-m;j++) { for(i=0;i<m;i++) if(t[i]!=s[i+j]) break; if(i==m) returnj; } return-1;}2023/6/2852intmain(){ chars[100]="abcdefghijk",t[100]="cdef"; cin>>s>>t; cout<<Index(s,t)<<endl; return0;}2023/6/28535.求出200~1000之间所有这样的整数,它们的各位数字之和等于5。样例输入输出2032122212303023113204014105002023/6/2854intmain(){ intx,y,z;

for(inti=200;i<1000;i++) { x=i%10;

y=i/10%10; z=i/100%10; if(x+y+z==5)cout<<i<<"";

}

cout<<endl;return0;}2023/6/28556.编写程序计算p=n!/(r!(n-r)!)(n>r)。样例输入输出3132023/6/2856int

fac(intn){

intx=1;

if(n<0) return-1; elseif(n==0) return1; else { while(n>1) { x=x*n; n--;

} } returnx;}2023/6/2857intmain(){

int

n,r,p;

cin>>n>>r; p=fac(n)/fac(r)/fac(n-r);

cout<<p<<endl; return0;}2023/6/28587.从键盘上输入一个大于4的整数,然后将从4开始到该数之间的所有整数分解为两个素数之和,显示出每个整数的分解情况,例如:4=2+2,6=3+3,8=3+5等。样例输入输出88=3+52023/6/2859int

isprime(intn){

inti;

for(i=2;i<=n/2;i++)

if(n%i==0) return0; return1;}2023/6/2860intmain(){ intn; cin>>n;

for(inti=2;i<n;i++) { if(isprime(i)&&isprime(n-i)) {

cout<<n<<"="<<i<<"+"<<n-i<<endl; break; } }return0;}2023/6/28618.编写函数,用选择法对10个数进行从小到大的排序。样例输入输出141633411478157241846719169244642650026962293582023/6/2862voidSort(int

a[],intCount){

int

i,j,x;

for(i=0;i<Count;i++) {

for(j=Count-1;j>i;j--)

if(a[j]<a[j-1]) x=a[j];a[j]=a[j-1];a[j-1]=x; }}2023/6/2863intmain(){

int

i,x; constintCount=10;

int

a[Count];

cin>>x; srand(x);

for(i=0;i<Count;i++) a[i]=rand();

Sort(a,Count);

for(i=0;i<Count;i++)

cout<<a[i]<<"";

cout<<endl; return0;}2023/6/28649.写一个判断素数的函数,在主调函数中输入一个整数后,由该函数输出是否是素数的信息。样例输入输出44不是素数2023/6/2865int

isprime(intn){

inti;

for(i=2;i<=n/2;i++)

if(n%i==0) return0; return1;}2023/6/2866intmain(){ intn; cin>>n; if(isprime(n)) cout<<n<<"是素数"<<endl; else cout<<n<<"不是素数"<<endl;return0;}2023/6/286710.编写函数fun,它的功能是:计算正整数n的除1和n之外的所有因子之和,并返回此值。样例输入输出422023/6/2868int

factor(intn){

int

i,y=0;

for(i=2;i<=n/2;i++)

if(n%i==0) y=y+i; returny;}2023/6/2869intmain(){ intn; cin>>n;

cout<<factor(n)<<endl; return0;}2023/6/287011.编写函数fun,它的功能是:计算下列级数的和,并返回此值。(其中n和x由键盘输入)

S=1+x+x2/2!+x3/3!+…+xn/n!,样例输入输出1122.718282023/6/2871doublefun(doublex,doublen){ doubles=1; doublei=1,a=1; for(i=1;i<=n;i++) { a=a*x/i; s=s+a; } returns;}2023/6/2872intmain(){ doublex; doublen; cin>>x>>n; cout<<fun(x,n)<<endl; return0;}2023/6/287312.编写函数fun,它的功能是:计算1~n之间能同时被3、5和7整除的所有自然数之和,并返回此值。样例输入输出2001052023/6/2874intfun(intn){ ints=0,i=0; while(i<n) { i=i+1; if(i%3==0&&i%5==0&&i%7==0) { s=s+i; } } returns;}2023/6/2875intmain(){ intn; cin>>n; cout<<fun(n)<<endl; return0;}2023/6/2876

13.从键盘输入两个整数m和n,然后从m+1开始找出大于m的n个素数。样例输入输出56711131719232023/6/2877boolisprime(intb){ inta; for(a=2;a<=b/2;a++) if(b%a==0) returnfalse; returntrue;}2023/6/2878intmain(){ intm,n; inti,s=0; cin>>m>>n; for(i=m+1;s<n;i++) { if(isprime(i)) { cout<<i<<""; s=s+1; } } cout<<endl; return0;}2023/6/2879

14.从键盘输入10个字符串,找出其中最大者并输出,假定每个字符串长度不超过80个字符。样例输入JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctober输出September2023/6/2880intmain(){ stringa[10]; intj; for(j=0;j<10;j++) cin>>a[j]; stringmax=a[0]; inti; for(i=1;i<10;i++) { if(a[i]>max) max=a[i]; } cout<<max<<endl; return0;}2023/6/288115.用弦截法求一元非线性方程=在区间[0.5,0.6]中的根。样例输入输出0.50.60.5671432023/6/2882constdoubleEPS=1.0E-9;doublef(doublex){ returnx*exp(x)-1;}2023/6/2883intmain(){ doublex0,x1,x2; do {

cin>>x0>>x1; }while(f(x0)*f(x1)>0);

do { x2=x0-(x0-x1)/(f(x0)-f(x1))*f(x0);

if(f(x2)*f(x1)>0)x1=x2; if(f(x2)*f(x0)>0)x0=x2; }while(fabs(f(x2))>EPS);

cout<<x2<<endl; return0;}2023/6/2884

17.使用梯形法计算定积分的值。样例输入输出0110000.4596982023/6/2885#include<iostream>#include<cmath>usingnamespacestd;doublefun(doublex){ returnsin(x);}2023/6/2886intmain(){ doublea=0,b=1,s=0,h;

int

i,n;

cin>>a>>b>>n; h=(b-a)/n;

s=(fun(a)+fun(b))/2;

for(i=1;i<n;i++) { s=s+fun(a+i*h); } cout<<s*h<<endl;

return0;}2023/6/288788杨琦西安交通大学计算机教学实验中心2012.10第6章习题计算机程序设计(C++)2023/6/2888

2.从键盘输入10个字符串,假定每个字符串长度不超过80个字符,然后对这10个字符串进行排序,最后输出排序后的结果。样例输入输出abc

acd

fui

miucadgji

bui

loi

hio

iklabc

acd

buicadfui

gji

hio

ikl

loi

miu2023/6/2889voidmysort(string*p,intcount){ strings;

for(inti=0;i<count-1;i++) {

for(intj=0;j<count-i-1;j++) {

if(p[j]>p[j+1]) { s=p[j];

p[j]=p[j+1]; p[j+1]=s; } } }}2023/6/2890intmain(){ stringp[10];

inti;

for(i=0;i<10;i++)

cin>>p[i]; mysort(p,10);

for(i=0;i<10;i++)

cout<<p[i]<<"";

cout<<endl; return0;}2023/6/2891

3.编写函数,求出一个字符串的长度,要求使用地址传递。样例输入输出jskdlfjklsjfl132023/6/2892intmystrlen(char*s){ intm=0; while(*s!='\0') { s++; m++; } returnm;}2023/6/2893intmain(){ char*p=newchar[200]; intn=0;// cout<<"请输入字符串:"<<endl; cin>>p; n=mystrlen(p); cout<<n<<endl; return0;}2023/6/2894

4.编写函数,将一个字符串中指定的字符删去,然后输出新的字符串。样例输入输出jlkdjfdkdjlkjfk2023/6/2895#include<iostream>#include<cstring>usingnamespacestd;char*mydelchr(char*s,chard){ chart[200]; inti=0,j=0;

while(s[i]!='\0') {

if(s[i]==d) i++; else t[j++]=s[i++]; }

t[j]='\0';

strcpy(s,t); returns;}2023/6/2896intmain(){ charstr[200]; charch;

cin>>str;

cin>>ch;

mydelchr(str,ch);

cout<<str<<endl; return0;}2023/6/2897

5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论