南通大学C++课程设计答案学习资料_第1页
南通大学C++课程设计答案学习资料_第2页
南通大学C++课程设计答案学习资料_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、2013 年 VC+ 课程设计1、任意输入一个 4 位自然数。调用一个自定义函数输出该自然数的各位数字组 成的最大的数。#include<iostream.h>void f4(int a)int b4;int j;b0=a%10;b1=(a/10)%10; b2=(a/100)%10;b3=a/1000;for(int q=0;q<4;q+)for(int i=q+1;i<4;i+)if(bi>bq)j=bq;bq=bi;bi=j;for(int p=0;p<4;p+) cout<<bp;int main()int a;cout«&qu

2、ot;请输入一个四位数:n"cin>>a;while(a<1000)cout<<" 你输入的数据不对,请重新输入: "cin>>a;f 4(a);2、输入一个三位整数,输出其各位数字组成的最大数 #include<iostream.h> void f4(int a)int b3;int j; b0=a%10; b1=(a/10)%10; b2=(a/100)%10; for(int q=0;q<3;q+) for(int i=q+1;i<3;i+) if(bi>bq) j=bq; bq=bi;

3、 bi=j;for(int p=0;p<3;p+) cout<<bp;int main()int a;cout«"请输入一个三位数:n"cin>>a;while(a<99)cout<<" 你输入的数据不对,请重新输入: "cin>>a;f 4(a);1,否则返回 0,总结:本题主要是将各位数字放入数组中,再对它进行排序。 编写函数 drop 用于判断自然数 n 是否是降序数,若是,则返回#include<iostream.h>int drop(int n) int n1=n

4、%10,n2;while(n>=10)n/=10; n2=n%10;if(n2>=n1)n1=n2;elsereturn 0;return 1;void main()int n;cout<<" 请输入一个自然数: " cin>>n;if(drop(n)cout<<n<<" 是降序数 !n"elsecout<<n<<" 不是降序数 :n"本题主要思路主要是先求出各个位上的数字,再依次比较大小。3、设计一个程序,求出 5100间的所有素数,要求每行输出 5

5、 个素数,判断一 个整数是否为素数要求用一个函数来实现。#include<iostream.h>#include<math.h>int love (int a)for(int i=2;i<a;i+)if(a%i=0)return 0;return 1;void main()int a=0;for(int b=5;b<100;b+)if(love(b)if(a%5=0) cout<<'n'cout<<b<<'t'a+;本题的主要思路:本题主要是考察判断一个数是否为素数的主要算法。要搞清 楚课本

6、上的素数的算法。4、下列程序求 250 之间所有素数的累加和。#include<isotream.h>#include<math.h>void main()int i,j,m,sum;for(sum=0,i=2;i<50;i+)j=(int)sqrt(i); for(m=2;m<=j;m+) if(i%m=0)break;if(m>j)sun+=i;cout<<sum<<endl;5,求阶乘#include<iostream.h>int fun(int n)int i,s;for(i=s=1;i<n;i+)s*

7、=i;return s;void main()int k,n,s;cin>>n;s=0;for(k=0;k<=n;k+)s+=fun(n);cout<<s<<endl;6. 用牛顿的迭代法求一元方程的在 x=1,5 附近你的根,要求精度为 10 -8#include<iostream.h>#include<math.h>int love()float a=1.5;float b=3;float y;doy=(a+b)/2;if(2*pow(y,3)-4*pow(y,2)+3*b-6)<0)a=y;elseb=ywhile(

8、fabs(a-b)<pow(10,-8);return y;void main()cout<<" 方程的根为 :n"cout<<love(); 思路:本题主要是运用迭代法进行阶乘的运算。也需要关注一下其他方法求阶乘7、编写程序,求过函数调用,求正整数m,n 的最大公约数和最小公倍数。#include<iostream.h>int love(int a,int b)int t;if(a<b)t=a;a=b;b=t;if(a%b=0)return b;love(b,a/b);void main()int a,b,c;cout

9、71;"请输入一个数:n"cin>>a;cout«"请输入一个数:n"cin>>b;c=love(a,b);cout«"两个数的最大公约数是:"<<c;cout«"两个数的最小公倍数:"<<(a*b)/c; 思路:本题主要运用的是牛顿的迭代法。8、.编写程序,通过函数调用,判断任一整数是否是回文数。 #include<iostream.h>bool love(char *p);void main()char *i;cout&#

10、171;"请输入数字:n"cin>>i;love(i);bool love(char *p)char *u;u=p;while(u)u+;u-;while(u=p)if(*u!=*p)return 0;p+;u-;return 1;总结:本题主要抓住用指针数组来进行回文数的判定。要注意指针数组和数组 指针的区别。#include<iostream.h>void delsame(char a,n)foe(int i=0;i<m-1;i+)if(ai=ai+1)for(int j=i+1;j<m-1l;j+)aj=aj+1;m-;i-;voi

11、d main()char *p;cout<<"2011 年秋改错题: #include<isotream.h> #include<math.h> #include<string.h> int primes25; int isPrimes(int n) for(int i=2;i<sqrt(n);i+) if(n%i=0)return 0; return 1;int fun(int i,int &j,int &k)int sum=0;j=k=0; while(k<i) sum+=primesk; if(sum&

12、gt;primesi)j+;sum=0;else if(sum<primesi) k+;else return 1;return 0;void main()int i,j,low,high,count=0; for(i=2;i<100;i+) if(!isPrimes(i) primescount+=i;coutvv"小于100的素数中满足条件的素数为:"<<e ndl; for(i=0;i<count;i+) if(fun(i,low,high)cout<<primesi<<"=" for(j=lo

13、w;j<high;j+) cout<<primesj<<"+"cout<<primeshigh;试着定义一个类ID,实现根据某人的身份证号码判断其所在年份的虚岁年龄#include<iostream.h>#include<string.h>class IDchar id19;int age;public:ID char(char *p)strcpy(id,p);age=0;int substr(char *p0,char n0,int n)int s=0; char *p=p0+n0; for(int i=0

14、;i<n;i+) s=s*10+(*p-'0'); p+; return s;void fun(int y1)int y; y=subsr(id,6,4);cout<<" 指定年份: "<<y1<<endl; age=y1-y+1;void print()cout<<" 身份证 :"<<id<<endl;coutvv"虚岁年龄:"vvagevve ndl;void main()int y;char str20;coutvv"请输入指

15、定的年份和身份证号码:" cin>>y>>str;ID test (str);test.fun(y);test.print();2011 年秋改错题:#includeviostream.h> #includevstring.h> void process(char *str,int &maxlen,char *subs) char *ptr =str,c;int len;maxlen=0;while(*ptr)len=1;while(*ptr=*(ptr+1)len+;ptr+;if(len>maxlen)maxlen=len;c=*

16、ptr;ptr+;for(int i=0;i<maxlen;i+)*(subs+i)=c;*subs='0'void main()char *text,subt100;int len;text=new char100;coutvv"请输入字符:";cin.getline(text,100);process(text,len.subt);coutvv"该字符串的最长平台的长度为:"vvle n<<e ndl;coutvv"该字符串的最长平台:"vvsubtvvendl;deletetext;编程:定义一

17、个类 n um ,实现求大于整数 m 的最小的 k 个自反数,若将某个整 数各位数字反序排列后得到的整数与原数相等,则称这个整数是自反数#includeviostream.h>class NUMint n,m;public:NUM(int x=0)n=x;m=0;void decrease()int t=n,count=0;int a15;while(t)acount+=t%10;t=t/10;for(int i=0;i<count-1;i+) for(int j=i+1;j<count;j+) if(ai<aj) int t=ai; ai=aj;aj=t; for(i

18、=0;i<count;i+) m=m*10+ai;void print()cout<<" 该数的降序数位: "<<m<<endl; ;void main()int x;cout<<" 输入一个整数 :" cin>>x;NUM n1(x);n1.decrease ();n1.print();2011 年秋改错题:#include<iostream.h> #include<string.h> int countStr(char *str,char *substr) int n=0;char *p,*r; while(*str) p=str; r=substr; while(*r)if(*r='.')r+;p+;elsebreak;if(*p+='.')n+;str+;return n;void main()char str80,subs5;int n;cout<<" 输入主串: "cin.getline(str,80);cout<<&q

温馨提示

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

评论

0/150

提交评论