1、南通大学C+课程设计答案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+) coutbp;int main()int a; couta; while(a1000) couta; f 4(a);2、输入一个三位整数,输出
2、其各位数字组成的最大数。#includevoid 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+) coutbp;int main()int a; couta; while(a99) couta; f 4(a);总结:本题主要是将各位数字放入数组中,再对它进行排序。编写函数drop用于判断自然数n是否是降序数,若是,则返回1,否则返回0,#includeint drop(
3、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;ret
4、urn 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
5、=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; do y=(a+b)/2; if(2*pow(y,3)-4*pow(y,2)+3*b-6)0) a=y; else b=y while(fabs(a-b)pow(10,-8);return y;void main()cout方程的根为:n; coutlove();思路:本题主要是运用迭代法进行阶乘的运算。也需
6、要关注一下其他方法求阶乘7、编写程序,求过函数调用,求正整数m,n的最大公约数和最小公倍数。#includeint love(int a,int b)int t; if(ab) t=a; a=b; b=t; if(a%b=0) return b; love(b,a/b); void main()int a,b,c; couta; coutb; c=love(a,b); cout两个数的最大公约数是:c; cout两个数的最小公倍数:(a*b)/c;思路:本题主要运用的是牛顿的迭代法。8、.编写程序,通过函数调用,判断任一整数是否是回文数。#includebool love(char *p);v
7、oid main()char *i;couti;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年秋改错题:#includ
8、e#include#includeint 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;elseif(sumprimesi)k+;elsereturn 1;return 0;void main()int i,j,low,high,count=0;for(i=2;i100;i+)if(!isPrimes(i)primescount+=i;cout
9、小于100的素数中满足条件的素数为:endl;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;
10、 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身份证:idendl; cout虚岁年龄:ageendl;void main()int y; char str20; coutystr; ID test (str); test.fun(y); test.print();2011年秋改错题:#include#includevoid process(char *str,int &maxlen,
11、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; cout请输入字符:; cin.getline(text,100); process(text,len.subt); cout该字符串的最长
12、平台的长度为:lenendl; cout该字符串的最长平台:subtendl; deletetext;编程:定义一个类num,实现求大于整数m的最小的k个自反数,若将某个整数各位数字反序排列后得到的整数与原数相等,则称这个整数是自反数#includeclass 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(ai
13、aj) 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#includeint countStr(char *str,char *substr)int n=0; char *p,*r; while(*str) p=str; r=substr; while(*r) if(*r=.) r+; p+; else break; if(
14、*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;coutendl;NUM ()delete p;void main()int m,k;coutmk;cout大于k个自反数为:;NUM test(m,k);test.fun();test,print();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1