南通大学C++课程设计答案.docx

上传人:b****0 文档编号:12848288 上传时间:2023-04-22 格式:DOCX 页数:18 大小:17.59KB
下载 相关 举报
南通大学C++课程设计答案.docx_第1页
第1页 / 共18页
南通大学C++课程设计答案.docx_第2页
第2页 / 共18页
南通大学C++课程设计答案.docx_第3页
第3页 / 共18页
南通大学C++课程设计答案.docx_第4页
第4页 / 共18页
南通大学C++课程设计答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

南通大学C++课程设计答案.docx

《南通大学C++课程设计答案.docx》由会员分享,可在线阅读,更多相关《南通大学C++课程设计答案.docx(18页珍藏版)》请在冰豆网上搜索。

南通大学C++课程设计答案.docx

南通大学C++课程设计答案

2013年VC++课程设计

 

1、任意输入一个4位自然数。

调用一个自定义函数输出该自然数的各位数字组成的最大的数。

#include

voidf4(inta)

{intb[4];

intj;

b[0]=a%10;

b[1]=(a/10)%10;

b[2]=(a/100)%10;

b[3]=a/1000;

for(intq=0;q<4;q++)

{for(inti=q+1;i<4;i++)

if(b[i]>b[q])

{j=b[q];

b[q]=b[i];

b[i]=j;

}

}

for(intp=0;p<4;p++)

cout<

}

intmain()

{inta;

cout<<"请输入一个四位数:

\n";

cin>>a;

while(a<1000)

{cout<<"你输入的数据不对,请重新输入:

";

cin>>a;

}

f4(a);

}

2、输入一个三位整数,输出其各位数字组成的最大数。

#include

voidf4(inta)

{intb[3];

intj;

b[0]=a%10;

b[1]=(a/10)%10;

b[2]=(a/100)%10;

for(intq=0;q<3;q++)

{for(inti=q+1;i<3;i++)

if(b[i]>b[q])

{j=b[q];

b[q]=b[i];

b[i]=j;

}

}

for(intp=0;p<3;p++)

cout<

}

intmain()

{inta;

cout<<"请输入一个三位数:

\n";

cin>>a;

while(a<99)

{cout<<"你输入的数据不对,请重新输入:

";

cin>>a;

}

f4(a);

}

总结:

本题主要是将各位数字放入数组中,再对它进行排序。

编写函数drop用于判断自然数n是否是降序数,若是,则返回1,否则返回0,

#include

intdrop(intn)

{intn1=n%10,n2;

while(n>=10)

{n/=10;

n2=n%10;

if(n2>=n1)

n1=n2;

else

return0;

}

return1;

}

voidmain()

{intn;

cout<<"请输入一个自然数:

";

cin>>n;

if(drop(n))

cout<

\n";

else

cout<

\n";

}

本题主要思路主要是先求出各个位上的数字,再依次比较大小。

3、设计一个程序,求出5~100间的所有素数,要求每行输出5个素数,判断一个整数是否为素数要求用一个函数来实现。

#include

#include

intlove(inta)

{for(inti=2;i

if(a%i==0)return0;

return1;

 

}

voidmain()

{inta=0;

for(intb=5;b<100;b++)

{if(love(b))

{

if(a%5==0)

cout<<'\n';

cout<

a++;

}

}

}

本题的主要思路:

本题主要是考察判断一个数是否为素数的主要算法。

要搞清楚课本上的素数的算法。

4、下列程序求2~50之间所有素数的累加和。

#include

#include

voidmain()

{inti,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<

}

5,求阶乘

#include

intfun(intn)

{inti,s;

for(i=s=1;i

s*=i;

returns;

}

voidmain()

{intk,n,s;

cin>>n;

s=0;

for(k=0;k<=n;k++)

s+=fun(n);

cout<

}

6.用牛顿的迭代法求一元方程的在x=1,5附近你的根,要求精度为10》-8。

#include

#include

intlove()

{floata=1.5;

floatb=3;

floaty;

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)

returny;

}

voidmain()

{cout<<"方程的根为:

\n";

cout<

}

思路:

本题主要是运用迭代法进行阶乘的运算。

也需要关注一下其他方法求阶乘

7、编写程序,求过函数调用,求正整数m,n的最大公约数和最小公倍数。

#include

intlove(inta,intb)

{intt;

if(a

{t=a;

a=b;

b=t;

}

if(a%b==0)

returnb;

love(b,a/b);

}

voidmain()

{inta,b,c;

cout<<"请输入一个数:

\n";

cin>>a;

cout<<"请输入一个数:

\n";

cin>>b;

c=love(a,b);

cout<<"两个数的最大公约数是:

"<

cout<<"两个数的最小公倍数:

"<<(a*b)/c;

}

思路:

本题主要运用的是牛顿的迭代法。

8、.编写程序,通过函数调用,判断任一整数是否是回文数。

#include

boollove(char*p);

voidmain()

{char*i;

cout<<"请输入数字:

\n";

cin>>i;

love(i);

}

boollove(char*p)

{char*u;

u=p;

while(u)

{u++;

}

u--;

while(u==p)

{if(*u!

=*p)

return0;

p++;

u--;

}

return1;

}

总结:

本题主要抓住用指针数组来进行回文数的判定。

要注意指针数组和数组指针的区别。

#include

voiddelsame(chara[],n)

{foe(inti=0;i

if(a[i]==a[i+1])

{for(intj=i+1;j

m--;i--;

}

}

voidmain()

{char*p;

cout<<";

2011年秋

改错题:

#include

#include

#include

intprimes[25];

intisPrimes(intn)

{for(inti=2;i

if(n%i==0)return0;

return1;

}

intfun(inti,int&j,int&k)

{intsum=0;

j=k=0;

while(k

{sum+=primes[k];

if(sum>primes[i])

{j++;

sum=0;

}

else

if(sum

k++;

else

return1;

}

return0;

}

voidmain()

{inti,j,low,high,count=0;

for(i=2;i<100;i++)

if(!

isPrimes(i))

primes[count++]=i;

cout<<"小于100的素数中满足条件的素数为:

"<

for(i=0;i

if(fun(i,low,high))

{cout<

for(j=low;j

cout<

cout<

 

}

试着定义一个类ID,实现根据某人的身份证号码判断其所在年份的虚岁年龄。

#include

#include

classID

{charid[19];

intage;

public:

IDchar(char*p)

{strcpy(id,p);age=0;}

intsubstr(char*p0,charn0,intn)

{ints=0;

char*p=p0+n0;

for(inti=0;i

{s=s*10+(*p-'0');

p++;

}

}

returns;

 

}

voidfun(inty1)

{inty;

y=subsr(id,6,4);

cout<<"指定年份:

"<

age=y1-y+1;

}

voidprint()

{cout<<"身份证:

"<

cout<<"虚岁年龄:

"<

};

voidmain()

{inty;

charstr[20];

cout<<"请输入指定的年份和身份证号码:

";

cin>>y>>str;

IDtest(str);

test.fun(y);

test.print();

 

}

2011年秋

改错题:

#include

#include

voidprocess(char*str,int&maxlen,char*subs)

{char*ptr=str,c;

intlen;

maxlen=0;

while(*ptr)

{len=1;

while(*ptr==*(ptr+1))

{len++;

ptr++;

}

if(len>maxlen)

{maxlen=len;

c=*ptr;

}

ptr++;

}

for(inti=0;i

*(subs+i)=c;

*subs='0';

}

voidmain()

{char*text,subt[100];

intlen;

text=newchar[100];

cout<<"请输入字符:

";

cin.getline(text,100);

process(text,len.subt);

cout<<"该字符串的最长平台的长度为:

"<

cout<<"该字符串的最长平台:

"<

delete[]text;

}

 

编程:

定义一个类num,实现求大于整数m的最小的k个自反数,若将某个整数各位数字反序排列后得到的整数与原数相等,则称这个整数是自反数

#include

classNUM

{intn,m;

public:

NUM(intx=0)

{n=x;

m=0;

}

voiddecrease()

{intt=n,count=0;

inta[15];

while(t)

{a[count++]=t%10;t=t/10;

}

for(inti=0;i

for(intj=i+1;j

if(a[i]

{intt=a[i];

a[i]=a[j];

a[j]=t;

}

for(i=0;i

m=m*10+a[i];

}

}

voidprint()

{cout<<"该数的降序数位:

"<

}

};

voidmain()

{intx;

cout<<"输入一个整数:

";

cin>>x;

NUMn1(x);

n1.decrease();

n1.print();

}

2011年秋

改错题:

#include

#include

intcountStr(char*str,char*substr)

{intn=0;

char*p,*r;

while(*str)

{p=str;

r=substr;

while(*r)

if(*r=='.')

{r++;

p++;

}

else

break;

if(*p++='.')

n++;

str++;

}

returnn;

}

voidmain()

{charstr[80],subs[5];

intn;

cout<<"输入主串:

";

cin.getline(str,80);

cout<<"输入子串:

";

cin>>subs;

n=counStr(str,subs);

cout<<"子串在主串中出现的次数为:

"<

}

试着定义一个类,Num,其功能是求出1000以内的所有满足下列条件的整数:

1,该整数是一个素数,2,其各位数字之和与它的平方数的各位数字之和相等。

#include

classNUM

{int*p,m,k;

public:

NUM(intt1,intt2)

{m=t1;k=t2;

p=newint[k];

}

intisinv(intn)

{ints0=n,s1=0;

while(s0)

{s1=s1*10+s0%10;

s0/=10;

}

if(s1==n)

return1;

return0;

}

}

voidfun()

{for(inti=0;i

cout<<*(p+i)<<'\t';

cout<

}

~NUM()

{delete[]p;

};

voidmain()

{intm,k;

cout<<"请输入m和k:

";

cin>>m>>k;

cout<<"大于"<

";

NUMtest(m,k);

test.fun();

test,print();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1