南通大学C课程设计答案学习资料

上传人:无*** 文档编号:134862364 上传时间:2022-08-14 格式:DOC 页数:10 大小:60KB
返回 下载 相关 举报
南通大学C课程设计答案学习资料_第1页
第1页 / 共10页
南通大学C课程设计答案学习资料_第2页
第2页 / 共10页
南通大学C课程设计答案学习资料_第3页
第3页 / 共10页
点击查看更多>>
资源描述
2013 年 VC+ 课程设计1、任意输入一个 4 位自然数。调用一个自定义函数输出该自然数的各位数字组 成的最大的数。#includevoid 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;q4;q+)for(int i=q+1;ibq)j=bq;bq=bi;bi=j;for(int p=0;p4;p+) couta;while(a1000)couta;f 4(a);2、输入一个三位整数,输出其各位数字组成的最大数 #include void f4(int a)int b3;int j; b0=a%10; b1=(a/10)%10; b2=(a/100)%10; for(int q=0;q3;q+) for(int i=q+1;ibq) j=bq; bq=bi; bi=j;for(int p=0;p3;p+) couta;while(a99)couta;f 4(a);1,否则返回 0,总结:本题主要是将各位数字放入数组中,再对它进行排序。 编写函数 drop 用于判断自然数 n 是否是降序数,若是,则返回#includeint drop(int n) int n1=n%10,n2;while(n=10)n/=10; n2=n%10;if(n2=n1)n1=n2;elsereturn 0;return 1;void main()int n;coutn;if(drop(n)coutn 是降序数 !n;elsecoutn 不是降序数 :n;本题主要思路主要是先求出各个位上的数字,再依次比较大小。3、设计一个程序,求出 5100间的所有素数,要求每行输出 5 个素数,判断一 个整数是否为素数要求用一个函数来实现。#include#includeint love (int a)for(int i=2;ia;i+)if(a%i=0)return 0;return 1;void main()int a=0;for(int b=5;b100;b+)if(love(b)if(a%5=0) coutn;coutbt;a+;本题的主要思路:本题主要是考察判断一个数是否为素数的主要算法。要搞清 楚课本上的素数的算法。4、下列程序求 250 之间所有素数的累加和。#include#includevoid main()int i,j,m,sum;for(sum=0,i=2;i50;i+)j=(int)sqrt(i); for(m=2;mj)sun+=i;coutsumendl;5,求阶乘#includeint fun(int n)int i,s;for(i=s=1;in;s=0;for(k=0;k=n;k+)s+=fun(n);coutsendl;6. 用牛顿的迭代法求一元方程的在 x=1,5 附近你的根,要求精度为 10 -8#include#includeint 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(fabs(a-b)pow(10,-8);return y;void main()cout 方程的根为 :n;coutlove(); 思路:本题主要是运用迭代法进行阶乘的运算。也需要关注一下其他方法求阶乘7、编写程序,求过函数调用,求正整数m,n 的最大公约数和最小公倍数。#includeint love(int a,int b)int t;if(aa;cout请输入一个数:n;cinb;c=love(a,b);cout两个数的最大公约数是:c;cout两个数的最小公倍数:(a*b)/c; 思路:本题主要运用的是牛顿的迭代法。8、.编写程序,通过函数调用,判断任一整数是否是回文数。 #includebool love(char *p);void main()char *i;cout请输入数字:n;cini;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;总结:本题主要抓住用指针数组来进行回文数的判定。要注意指针数组和数组 指针的区别。#includevoid delsame(char a,n)foe(int i=0;im-1;i+)if(ai=ai+1)for(int j=i+1;jm-1l;j+)aj=aj+1;m-;i-;void main()char *p;cout;2011 年秋改错题: #include #include #include int primes25; int isPrimes(int n) for(int i=2;isqrt(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(kprimesi)j+;sum=0;else if(sumprimesi) k+;else return 1;return 0;void main()int i,j,low,high,count=0; for(i=2;i100;i+) if(!isPrimes(i) primescount+=i;coutvv小于100的素数中满足条件的素数为:e ndl; for(i=0;icount;i+) if(fun(i,low,high)coutprimesi=; for(j=low;jhigh;j+) coutprimesj+;coutprimeshigh;试着定义一个类ID,实现根据某人的身份证号码判断其所在年份的虚岁年龄#include#includeclass 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;in;i+) s=s*10+(*p-0); p+; return s;void fun(int y1)int y; y=subsr(id,6,4);cout 指定年份: y1endl; age=y1-y+1;void print()cout 身份证 :idystr;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(lenmaxlen)maxlen=len;c=*ptr;ptr+;for(int i=0;imaxlen;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 nclass 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;icount-1;i+) for(int j=i+1;jcount;j+) if(aiaj) int t=ai; ai=aj;aj=t; for(i=0;icount;i+) m=m*10+ai;void print()cout 该数的降序数位: mendl; ;void main()int x;coutx;NUM n1(x);n1.decrease ();n1.print();2011 年秋改错题:#include #include 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);coutsubs;n=counStr(str,subs);cout 子串在主串中出现的次数为: nendl;试着定义一个类,Num,其功能是求出1000以内的所有满足下列条件的整数:1, 该整数是一个素数, 2,其各位数字之和与它的平方数的各位数字之和相等。#includeclass NUMint *p,m,k;public:NUM(int t1,int t2)m=t1;k=t2;p=new int k;int isinv(int n)int s0=n,s1=0;while(s0)s1=s1*10+s0%10;s0/=10;if(s1=n)return 1;return 0;void fun()for(int i=0;ik;i+)cout*(p+i)t;coutmk;cout大于vvkvv个自反数为:;NUM test(m,k);test.fun();test,print();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!