南通大学C++课程设计附答案Word文档下载推荐.docx
《南通大学C++课程设计附答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《南通大学C++课程设计附答案Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
\n"
;
cin>
>
a;
while(a<
1000)
{cout<
你输入的数据不对,请重新输入:
f4(a);
2、输入一个三位整数,输出其各位数字组成的最大数。
{intb[3];
3;
请输入一个三位数:
99)
总结:
本题主要是将各位数字放入数组中,再对它进行排序。
编写函数drop用于判断自然数n是否是降序数,若是,则返回1,否则返回0,
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))
n<
是降序数!
不是降序数:
本题主要思路主要是先求出各个位上的数字,再依次比较大小。
3、设计一个程序,求出5~100间的所有素数,要求每行输出5个素数,判断一个整数是否为素数要求用一个函数来实现。
math.h>
intlove(inta)
{for(inti=2;
if(a%i==0)return0;
{inta=0;
for(intb=5;
b<
100;
b++)
{if(love(b))
{
if(a%5==0)
'
\n'
\t'
a++;
本题的主要思路:
本题主要是考察判断一个数是否为素数的主要算法。
要搞清楚课本上的素数的算法。
4、下列程序求2~50之间所有素数的累加和。
isotream.h>
{inti,j,m,sum;
for(sum=0,i=2;
50;
{j=(int)sqrt(i);
for(m=2;
m<
=j;
m++)
if(i%m==0)break;
if(m>
j)
sun+=i;
sum<
endl;
5,求阶乘
intfun(intn)
{inti,s;
for(i=s=1;
s*=i;
returns;
{intk,n,s;
s=0;
for(k=0;
k<
=n;
k++)
s+=fun(n);
s<
6.用牛顿的迭代法求一元方程的在x=1,5附近你的根,要求精度为10》-8。
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)<
pow(10,-8));
returny;
{cout<
方程的根为:
love();
思路:
本题主要是运用迭代法进行阶乘的运算。
也需要关注一下其他方法求阶乘
7、编写程序,求过函数调用,求正整数m,n的最大公约数和最小公倍数。
intlove(inta,intb)
{intt;
if(a<
b)
{t=a;
a=b;
b=t;
if(a%b==0)
returnb;
love(b,a/b);
{inta,b,c;
请输入一个数:
b;
c=love(a,b);
两个数的最大公约数是:
c;
两个数的最小公倍数:
(a*b)/c;
思路:
本题主要运用的是牛顿的迭代法。
8、.编写程序,通过函数调用,判断任一整数是否是回文数。
boollove(char*p);
{char*i;
请输入数字:
i;
love(i);
boollove(char*p)
{char*u;
u=p;
while(u)
{u++;
u--;
while(u==p)
{if(*u!
=*p)
return0;
p++;
本题主要抓住用指针数组来进行回文数的判定。
要注意指针数组和数组指针的区别。
voiddelsame(chara[],n)
{foe(inti=0;
m-1;
if(a[i]==a[i+1])
{for(intj=i+1;
j<
m-1l;
j++)a[j]=a[j+1];
m--;
i--;
{char*p;
2011年秋
改错题:
string.h>
intprimes[25];
intisPrimes(intn)
sqrt(n);
if(n%i==0)return0;
return1;
intfun(inti,int&
j,int&
k)
{intsum=0;
j=k=0;
while(k<
i)
{sum+=primes[k];
if(sum>
primes[i])
{j++;
sum=0;
if(sum<
k++;
{inti,j,low,high,count=0;
for(i=2;
if(!
isPrimes(i))
primes[count++]=i;
小于100的素数中满足条件的素数为:
for(i=0;
count;
if(fun(i,low,high))
primes[i]<
="
for(j=low;
high;
j++)
primes[j]<
+"
primes[high];
试着定义一个类ID,实现根据某人的身份证号码判断其所在年份的虚岁年龄。
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;
{s=s*10+(*p-'
0'
);
p++;
voidfun(inty1)
{inty;
y=subsr(id,6,4);
指定年份:
y1<
age=y1-y+1;
voidprint()
身份证:
id<
虚岁年龄:
age<
};
charstr[20];
请输入指定的年份和身份证号码:
y>
str;
IDtest(str);
test.fun(y);
test.print();
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;
maxlen;
*(subs+i)=c;
*subs='
{char*text,subt[100];
intlen;
text=newchar[100];
请输入字符:
cin.getline(text,100);
process(text,len.subt);
该字符串的最长平台的长度为:
len<
该字符串的最长平台:
subt<
delete[]text;
编程:
定义一个类num,实现求大于整数m的最小的k个自反数,若将某个整数各位数字反序排列后得到的整数与原数相等,则称这个整数是自反数
classNUM
{intn,m;
NUM(intx=0)
{n=x;
m=0;
voiddecrease()
{intt=n,count=0;
inta[15];
while(t)
{a[count++]=t%10;
t=t/10;
count-1;
for(intj=i+1;
if(a[i]<
a[j])
{intt=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;
m=m*10+a[i];
该数的降序数位:
{intx;
输入一个整数:
x;
NUMn1(x);
n1.decrease();
n1.print();
intcountStr(char*str,char*substr)
{intn=0;
char*p,*r;
while(*str)
{p=str;
r=substr;
while(*r)
if(*r=='
.'
)
{r++;
break;
if(*p++='
n++;
str++;
returnn;
{charstr[80],subs[5];
intn;
输入主串:
cin.getline(str,80);
输入子串:
subs;
n=counStr(str,subs);
子串在主串中出现的次数为:
试着定义一个类,Num,其功能是求出1000以内的所有满足下列条件的整数:
1,该整数是一个素数,2,其各位数字之和与它的平方数的各位数字之和相等。
{int*p,m,k;
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;
voidfun()
{for(inti=0;
k;
*(p+i)<
~NUM()
{delete[]p;
{intm,k;
请输入m和k:
m>
大于"
个自反数为:
NUMtest(m,k);
test.fun();
test,print();