




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+编程 过关+提高篇1.用户输入三角形的三个边的程度,计算三角形的面积。程序运行结果如下: 输入: 3 4 5输出: 6答案:#include<iostream>#include<cmath>using namespace std;int main() double a,b,c,p,s; cout<<"请输入三角形的三边边长:"<<endl; cin>>a>>b>>c; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); cout<<"三
2、角形的面积为:"<<endl; cout<<s<<endl; return 0;2.输入一个摄氏温度,计算并输出对应的华氏温度值。程序运行结果如下: 输入: 34 输出: 93.2华氏度()=32+摄氏度()×1.8答案:#include<iostream>#include<cmath>using namespace std;int main() double a,b; cout<<"请输入摄氏()温度:"<<endl; cin>>a; b=32+1.8*a;
3、 cout<<"化氏度()为:"<<endl; cout<<b<<endl; return 0;3.输入一个四位无符号整数,反序输出这四位数。例如,输入1234,输出为4321。 程序运行结果如下: 输入:1234输出: 4321答案:#include<iostream>#include<cmath>using namespace std;int main()int a,b,c,d,e,f,g,h;cout<<"请输入一个四位无符号数:"<<endl;cin&
4、gt;>a;b=a%10;f=a/10;c=f%10;g=a/100;d=g%10;h=a/1000;cout<<"反序输出结果为:"<<endl;cout<<b*1000+c*100+d*10+h<<endl; return 0;4.大小写转换:输入一个字符,如果是大写字母,则转换为小写;如果是小写字母,则转换为大写;否则不转换。程序可以连续接收三次输入,并输出转换结果。 程序运行结果如下: 输入: a A 6输出: A a 6答案:#include<iostream>#include<cmath&g
5、t;using namespace std;void fun(char x)x=(x>=97&&x<=122?x-32:(x>=65&&x<=90?x+32:x);cout<<x<<endl;int main()char a,b,c;cout<<"请输入三个字符或数字:"<<endl;cin>>a>>b>>c;cout<<"转换为:"<<endl;fun(a);fun(b);fun(c); r
6、eturn 0;5.从键盘输入任意四个整数,计算其平均值并显示。再对平均值四舍五入并显示。 程序运行结果如下: 输入:1 2 3 4输出:2.5 3从键盘输入任意四个整数,计算其平均值并显示。再对平均值四舍五入并显示。 程序运行结果如下: 输入:1 2 3 4输出:2.5 35.编程实现以下分段函数:当x<0时,y=x+1 当0<=x<1时,y=1 当x>=1 时,y=x*x*x 程序的运行结果如下所示: 输入:1.5输出:3.375#include<iostream>using namespace std;int main() double x,y; ci
7、n>>x; y=(x<0?x+1:(x>=1?x*x*x:1); cout<<y<<endl; return 0; 6.编写一个程序,将百分制的学生成绩转换为优秀(5)、良好(4)、中等(3)、及格(2)和不及格(1)的5级制成绩。标准为:优秀: 100-90分;良好: 80-89分;中等: 70-79分;及格: 60-69分;不及格: 60分以下。 程序的运行结果如下所示: 输入:83输出:4#include<iostream>#include<cmath>using namespace std;int main() i
8、nt a; cin>>a; switch(a/10) case 10:cout<<5;break; case 9:cout<<5;break; case 8:cout<<4;break; case 7:cout<<3;break; case 6:cout<<2;break; default:cout<<1; cout<<endl; return 0;7.编程计算1!+2!+3!+N! 。N由用户输入。 程序运行结果如下: 输入:10输出:4037913#include<iostream>
9、using namespace std;int main() int n,i,sum,x; x=1; sum=0; cin>>n; for(i=1;i<=n;i+) x=x*i; sum=sum+x; cout<<sum<<endl; return 0; 8.猴子在第一天摘下若干个桃子,当即就吃了一半,又感觉不过瘾,于是就多吃了一个。以后每天如此,到第N天想吃时,发现就只剩下了一个桃子。请编程计算第一天猴子摘的桃子个数.N由用户输入。 分析:用一个数学变量x来描述猴子在某一天所持有的桃子数目,根据题意,猴子前一天所持有的数目是(x+1)*2,由此得到循
10、环的公式,即可求解。 程序运行结果如下: 输入:10输出:1534#include<iostream>using namespace std;int main() int sum,n; cin>>n; sum=1; while(n>1) sum=(sum+1)*2; n-; cout<<sum<<endl; return 0; 9.编写一个程序,寻找用户输入的几个整数中的最小值。并假定用户输入的第一个数值指定后面要输入的数值个数。 程序运行结果如下: 输入:5 20 15 300 9 700输出:9#include <iostream
11、> using namespace std;int main() double a100; int n; cin>>n; int i=0; int b; for (i=0;i<n;i+) cin>>ai; b=a0; for (i=0;i<n;i+) if(b>ai) b=ai; cout<<b<<endl; return 0;10.有一分数序列如下:2/1, 3/2, 5/3, 8/5, 13/8, 21/13, .即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和,求其前n项之和。 程序运行结果如下: 输入
12、:6输出:10.0071 注意:输出单词间全是一个空格#include <iostream> using namespace std;int main() double a,b,c,d,e,f,g; int n; cin>>n; f=0; a=2; b=1; c=0; while(c<n) d=a/b; f=d+f; e=a; a=a+b; b=e; c=c+1; cout<<f<<endl; return 0; 11.求a+aa+aaa+aaaa+. .+aa.a(n个),其中a为19之间的整数。 例如:当a = 1, n = 3时,求1
13、+11+111之和; 当a = 5, n =7时,求5555555555555555555555555555之和。 程序运行结果如下: 输入:2 3输出:246#include<iostream>using namespace std;int main() int a,n; cin>>a>>n; int i=0; int k; k=a; int s; s=0; while(i<n) s=s+k; k=10*k+a; i=i+1; cout<<s<<endl; return 0; 12.使用数组编写一个统计学生课程平均分的程序:输
14、入6个学生的学号和3门课程的成绩(整数形式),统计每个学生3门课程的平均分(整数形式),最后输出统计结果。 程序运行结果如下:输入: 10221001 89 88 78 10221002 88 78 79 10221003 90 78 77 10221004 87 67 81 10221005 89 68 79 10221006 87 88 90 输出: 10221001 89 88 78 85 10221002 88 78 79 81 10221003 90 78 77 81 10221004 87 67 81 78 10221005 89 68 79 78 10221006 87 88 9
15、0 88 注意:每行中的间隔是空格符号。#include<iostream>using namespace std;int main () int chengji65; int i=0,j=0; for (i=0;i<6;i+) for(j=0;j<4;j+) cin>>chengjiij; for(i=0;i<6;i+) chengjii4=(chengjii1+chengjii2+chengjii3)/3; cout<<chengjii0<<" "<<chengjii1<<&quo
16、t; "<<chengjii2<<" "<<chengjii3<<" "<<chengjii4<<endl; return 0;13.给一维数组输入7个整数,找出该数组中的最大数。 程序运行结果如下: 输入:234 12 34 56 34 23 89输出:234#include <iostream> using namespace std;int main() double a7,b; int i=0; for (i=0;i<7;i+) cin>&g
17、t;ai; b=a0; for (i=0;i<7;i+) if(b<ai) b=ai; else b=b; cout<<b<<endl; return 0; 14.编写一个用于对整型数组(长度<10)进行排序的程序,排序方法使用简单的交换排序法 程序运行结果如下(输入的第一个数为的数组中元素的个数): 输入:6 45 12 345 56 7 89输出:7 12 45 56 89 345#include<iostream>#include <cmath>using namespace std;int main() int n,i,
18、j; double a6; cin>>n; for(i=0;i<n;i+) cin>>ai; for(i=0;i<n-1;i+) for(j=0;j<n-i-1;j+) if(aj>aj+1) int tmp; tmp=aj; aj=aj+1; aj+1=tmp; for(i=0;i<n;i+) cout<<ai<<" " return 0; 15.编程将用户输入的一个字符串之中的所有小写字母转换为相应的大写字母。 程序运行结果如下: 输入:asdfg输出:ASDFG #include<io
19、stream>using namespace std;int main() char str26; int i; cin>>str; for(i=0;i<26;i+) if(stri>='a'&&stri<='z') stri=stri-('z'-'Z'); cout<<str<<endl; return 0;16.已知有两个字符串,第一个是abcdefg,第二个字串由用户输入,请实现两个字符串的连接并输出结果。 程序运行结果如下: 输入:123x输出:a
20、bcdefg123x#include <iostream> #include <string>using namespace std;int main() string text1("abcdefg"); string text2,text3; cin>>text2; text3=text1+text2; cout<<text3<<endl; return 0; 17.使用数组来求斐波那挈数列的第n项和前n之和。数列有下列公式产生: 第0项 f0=0;第1项 f1=1;第n项 fn=fn-1+fn-2;程序运行结果
21、如下: 输入:6输出:8 20#include<iostream>using namespace std;int main () int i,n,sum; cin>>n; int fn; f0=0; f1=1; sum=0; for(i=2;i<=n;i+) fi=fi-1+fi-2; cout<<fn<<endl; for(i=0;i<=n;i+) sum=sum+fi; cout<<sum<<endl; return 0; 18.用户首先输入一个字符串,最长100个字符,然后输入需修改字符的下标(注意!下标
22、从1开始),再输入要修改的字符。重复输入修改过程,直到用户输入的下标为0为止。最后输出修改后的字符串。 提示:用户输入的第一个字符串可能中间有空格,要使用cin.getline函数。 输入: HELLO JOHN! 7 K 11 Y 8 I 9 T 10 T 0 输出: HELLO KITTY #include <iostream> using namespace std; main () char x100,b; int i,n; i=0; cin.getline(x,99); cin>>n; cin>>b; while(n!=0) xn-1=b; cin
23、>>n; if(n!=0) cin>>b; if(n=0) cout<<x; return 0; 19.利用参数值传递能否交换两个变量的值?输入两个数,尝试使用参数值传递将这两个数交换,分别输出交换前和交换后两个变量的值做比较。 程序运行结果如下:输入: 5 6 输出: 5 6 5 6 #include <iostream> using namespace std;int main() int a,b; cin>>a>>b; cout<<a<<" "<<b<&l
24、t;endl; cout<<a<<" "<<b<<endl; return 0; 20.所谓回文数是指其各位数字左右对称的整数,例如12321、789987、1等都是十进制回文数。 用户输入回文数的上下界,程序输出上下界之间的回文数。程序运行结果如下:1000 2000 1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 注:元素之间空一个空格。 #include<iostream>using namespace std;void lfh(int x) int dou
25、shu = 0; int Temp = x; while(true) doushu= Temp % 10 + doushu*10; Temp= Temp / 10; if(Temp=0) break; if(x%11=0 && doushu = x) cout<<x<<" " int main() int m,n; cin>>m; cin>>n; for(int t=m;t<n;t+) lfh(t); return 0; 21.用弦截法求一元方程 在区间x0, x1之间的一个根。 假设f(x)=x*x-2
26、*x,如果已知x0和x1,则可以根据弦截法公式计算x2=x0-(x0-x1)/(f(x0)-f(x1)*f(x0);然后用x2代入原式求出f(x2),判断f(x2)与f(x1)和f(x0)中的哪一个同号,就用x2和f(x2)代替之,即如果f(x2)和f(x0)同号,就用x2和f(x2)代替x0和f(x0),反之用x2和f(x2)代替x1和f(x1),然后再继续上述过程直至f(x)小于给定的误差控制值。 程序运行结果如下: 输入:1 4输出:2#include<iostream>#include <cmath>using namespace std;inline doub
27、le f(double x) return x*x-2*x;double newx(double x1, double x2) double y1, y2; y1 = f(x1); y2 = f(x2); return (x1 * y2 - x2 * y1) / (y2 - y1); double root(double x0, double x1) double y; double x; do x = newx(x0,x1); y = f(x); if (y * f(x0) < 0) x1 = x; else x0 = x; while(abs(y) > 1e-5); retur
28、n x; int main() double x0; double x1; do cin >> x0 >> x1; while(f(x0) * f(x1) > 0); cout <<root(x0, x1) << endl; return 0;22.利用指针,编写用于交换两个整型变量值的函数。 程序运行结果如下: 输入:5 6输出:6 5#include<iostream>using namespace std;void swap(int *,int *);int main() int a,b; cin>>a>
29、>b; swap(&a,&b); cout<<a<<" "<<b; return 0;void swap(int *p,int *q) int t=*p; *p=*q; *q=t; 23.编写主程序,将输入字符串反序输出,必须使用指针。 程序运行结果如下:输入: ABCDEFGHIJK 输出: KJIHGFEDCBA #include<iostream>using namespace std;int main() int j,i=0; char str100; cin>>str; while(
30、stri!='0') i+; j=i-1; for(j;j>=0;j-) cout<<strj; return 0; 24.编写程序,将某一个输入的位数不确定的正整数按照标准的三位分节格式输出,例如,当用户输入82668634时,程序应该输出82,668,634。 程序运行结果如下: 输入:82668634输出:82,668,634#include<iostream> using namespace std; void fun(char *p,int &n,int &i) i=1; while(n) if(i%4!=0) *p=n%
31、10+'0' n=n/10; else *p=',' p+; i+; int main() int n,j=0,i; char a81; cin>>n; fun(a,n,i); j=i-2; while(j>=0) cout<<aj; j-; cout<<endl; return 0; 25.编写程序,把10个整数赋予某个int型数组,然后用int型指针输出该数组元素的值。输入参数n是待输出元素的个数,输出是1到n n个数组元素。 输入: 9 输出: 1 2 3 4 5 6 7 8 9 注:数组元素之间空一个空格。 45
32、678910111213141516 #include <iostream> using namespace std; int main( ) int a=1,2,3,4,5,6,7,8,9,10,*ptr; int x; ptr=a; cin>>x; for(int i =0;i<x;i+) cout<<*ptr<<" " ptr+; cout<<endl; return 0; 26.用户输入一个只包含小写字母的字符串(最长100个字母)作为明文,再输入一个一位数字k作为密钥,密文为明文中字母后的第k个字母
33、,到字母表结尾后循环。用户输入:acdekfz1输出:bdeflga#include<iostream>#include<cstring>using namespace std;int main () int n,i,len; char a100; i=0; cin>>a; cin>>n; len=strlen(a); for(i=0;i<len;i+) if(ai<='z'-n&&ai>='a') ai=ai+n; else ai=(ai+n)%'z'+'
34、a'-1; for(i=0;i<len;i+) cout<<ai; return 0;27.用户首先输入一句英文诗,最长100个单词,每个单词最多100个字母,均为小写字母,中间不包含标点符号,以英文句号'.'结尾。接着用户输入两个数字n和k。把该英文句子中的第n个单词采用上题中的加密方法(就是按照字母表向后数第k个字母,到结尾循环到开头)加密输出。输入:every time when you pass by you take my breath away.10 2输出:dtgcvj提示:1.输入的英文句子可以考虑用二维数组存储。2.可以用上题的程序做
35、一个函数本题使用。3.注意英文诗句的最后一个单词不包含句号'.',句号只是作为提示诗句结束使用。可能用到的函数:strlen 求字符串长度 strcpy 拷贝字符串#include<iostream>#include<cstring>using namespace std;void tran(char *s,int x,int t) int i; for(i=0;i<x;i+) si=si+t; for(i=0;i<x;i+) if(si>'z') si=si-26; for(i=0;i<x;i+) cout<
36、;<si; int main() char A10030; int i,j,x,n=0,k,c=0; for(i=0;i<100;i+) cin>>Ai; for(j=0;j<30;j+) if(Aij='.') c=1; if(c=1) break; cin>>x>>k; char b30; if(x!=i+1) strcpy(b,Ax-1); do n+; while(bn!='0'); tran(b,n,k); else strcpy(b,Ax-1); do n+; while(bn!='0
37、39;); tran(b,n-1,k); return 0;28.重载绝对值函数。函数名为myabs,三个函数的参数分别为int,double 和long。 程序运行结果如下: 输入(一个整数、一个双精度实数和一个长整数):1 -2.5 3输出:1 2.5 3#include<iostream>using namespace std;int main() int a; double b; long c; cin>>a>>b>>c; if(b>0) b=b; else b=-b; if(c>0) c=c; else c=-c; if(a
38、>0) a=a; else a=-a; cout<<a<<endl; cout<<b<<endl; cout<<c<<endl; return 0; 29.编写一个用于在字符串中查找某字符的函数。查找成功,函数返回该字符的地址(指针),查找失败,返回的指针为NULL。编写主函数测试该函数,在主函数中输入源字符串和要查找的字符,如果找到,显示字符在源字符串中的序号;如果找不到,显示“未找到”。 能找到时,程序运行结果如下: 输入(第一个参数是待查找的字符串,第二个是要查找的字符):ABCDEFGHIJKLMN D输出:
39、4查找不成功的情形: 输入:ABCDEFG S输出: 未找到5678910111213141516171819202122232425262728293031323334 #include<iostream>using namespace std;char *strchr(char*str,char c) int p=0; while(*str!='0') if(*str=c) p=1; break; str+; if(p=1) return str; else return NULL; int main() char a; char b100; char *p;
40、cin>>b; char *str=b; cin>>a; p=strchr(str,a); if(p=NULL) cout<<"δÕÒµ½"<<endl; else cout<<p-str+1<<endl; return 0; 30.Ackermann函数ack(m,n)由以下递归定义:ack(0, n)=n+1 ack(m, 0)=ack(m-1, 1) ack(m, n)=ack(m-1, ack(m,n-1) m>0, n>
41、0编写一个计算此函数的递归程序。 程序运行结果如下: 输入(依次为Ackermann(m, n)函数的m和n): 3 2输出:29#include<iostream>using namespace std;int Acm(int m,int n) if(m=0) return n+1; if(n=0) return Acm(m-1,1); return Acm(m-1,Acm(m,n-1);int main() int a,b; cin>>a>>b; cout<<Acm(a,b)<<endl; return 0; 31.用二分法编写一
42、个求方程f(x)=0在区间a, b中的实根的函数, 其原型为: double equation(double (*func)(double), double a, double b, double eps);其中参数func, a和b分别为求根函数和区间两端点, eps为精度,缺省值为1.0E-7。 编写主函数测试,设待求根的函数有两个,分别为 x*x+2*x-3 和sin(x),其中sin(x)可调用系统函数,求根区间由用户输入。 程序运行结果如下: 输入(分别为x*x+2*x-3 和sin(x)的求根区间):0 5 1.5 5输出(分别为x*x+2*x-3 和sin(x)在求根区间的根):
43、1 3.14159#include <iostream>#include <cmath>using namespace std;double f(double x) return sin(x);double f1(double x) return x*x+2*x-3;double eq(double (*f)(double),double a,double b) double eps=1.0e-7; double x,y; x=(a+b)/2; y=(*f)(x); while(fabs(y)>eps) if(y*(*f)(a)<0) b=x; else a
44、=x; x=(a+b)/2; y=(*f)(x); return x; int main() double a,b,c,d; cin>>a>>b; cin>>c>>d; cout<<eq(f1,a,b)<<endl; cout<<eq(f,c,d)<<endl; return 0;32.用结构体编写Dog应用程序。其中Dog结构体包含姓名(字符数组)、性别(字符)、年龄(整型)3个分量。 程序运行结果如下:输入(分别为第1条狗的姓名、性别、年龄和第2条狗的姓名、性别、年龄): XiaoQiao f
45、1 WangCai m 2 输出:第1条狗:XiaoQiao f 1 第2条狗:WangCai m 2 把第1条狗的信息复制给第2条狗: 第2条狗:XiaoQiao f 1 注:冒号为英文符号。 #include<iostream>#include<cstring>using namespace std;class Dogprivate: char Name20; char Sex; int Age;public: void fun(char *name,char sex,int age) strcpy(Name,name); Sex=sex; Age=age; voi
46、d show() cout<<Name<<" "<<Sex<<" "<<Age<<endl; ;int main() Dog dog1,dog2; char name120,name220,sex1,sex2; int age1,age2; cin>>name1>>sex1>>age1; cin>>name2>>sex2>>age2; cout<<"µÚ1Ì
47、245;¹·:" dog1.fun(name1,sex1,age1); dog1.show(); cout<<"µÚ2Ìõ¹·:" dog2.fun(name2,sex2,age2); dog2.show(); cout<<"°ÑµÚ1Ìõ¹·µÄÐÅÏ¢¸´ÖƸ
48、øµÚ2Ìõ¹·:"<<endl; cout<<"µÚ2Ìõ¹·:" dog1.fun(name1,sex1,age1); dog1.show(); return 0;33.根据键盘输入的首字符选择对应颜色(枚举类型的输入和输出)。该题目只有6种颜色(blue, brown, green, red, white, yellow),用户输入该颜色的前两个字母,然后程序输出对应颜色的英文名称。 程序运行结果如下: 输
49、入:bl输出:blue#include <iostream> using namespace std;int main() enum Colors blue, brown, green, red, white, yellow choose; char ch1, ch2; cin>>ch1>>ch2; switch(ch1) case 'b': if(ch2='l') choose=blue; else choose=brown; break; case 'g': choose=green; break; case 'r': choose=red; break; case 'w': choose=white;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西河池市本年度(2025)小学一年级数学统编版期中考试(下学期)试卷及答案
- 四川省青神中学2025年高三最后一模英语试题含答案
- 母婴1+x模拟试题及参考答案
- 2025届陕西省西安市远东一中高三考前热身英语试卷含答案
- 货币金融学模拟习题+答案
- 山东省名校考试联盟2024-2025学年高一下学期期中检测地理试题(原卷版+解析版)
- 畜禽舍环境控制与改善考核试卷
- 糕点烘焙师的创意灵感来源考核试卷
- 体育场馆体育赛事商务开发与赞助商招募考核试卷
- 纸容器轻量化与结构优化设计考核试卷
- 机械制造及非标零部件加工项目突发环境事件应急预案
- 2025年装维智企工程师(三级)复习模拟100题及答案
- 国家管网集团西南管道昆明输油气分公司突发环境事件综合应急预案
- 9.1科学立法 课件高中政治统编版必修三政治与法治
- 施工现场临时用电安全
- 停送电培训课件
- 医院培训课件:《核心制度-护理值班和交接班制度》
- 美学《形象设计》课件
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- DB14∕T 2024-2020 出口水果包装厂管理规范
- 08真空热处理炉
评论
0/150
提交评论