c习题集及参考答案Word下载.docx
《c习题集及参考答案Word下载.docx》由会员分享,可在线阅读,更多相关《c习题集及参考答案Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
(18)求满足下列条件的最小自然数n:
(1)n的个位数是8,;
(2)将n的个位移至n的最前面,所得的新数是n的4倍。
11月19日
(19)输入10个数,将其中小于平均值的数输出来。
(20)输入10个数,将其中的最大数调到最后位置,输出重排后的结果。
(21)已知a0=1,a1=2,an=an-1+an-2(n>
=2),求an的前20项。
(22)用数组实现两个13位数的加法。
11月24日
(23)输入10个数,用冒泡法进行排序。
(24)输入10个数,用选择法进行排序。
(25)输入10个数(有序),用二分法进行查找。
(26)将两个有序数组合并为一个有序数组。
如{1,5,9,11,15},{2,3,12,13,17}合并为{1,2,3,5,9,11,12,13,15,17}
11月26日
(27)输入一字符串,统计其中每种英文字母(26个,大小写按一种计数)出现的次数。
(28)将一正整数转化为字符串。
(29)删除字符串中指定的字符。
(30)输入某人的身份证号码,输出其年龄。
11月29日
(31)自定义每一个英文字母的对应规则,对字符串加密。
(32)输入行数,打印如下的杨辉三角。
1
11
121
1331
14641
15101051
。
(33)找出一个矩阵中的所有鞍点。
(所谓鞍点,是指该元素在所在的行上是最大值,在所在的列上是最小值)
12月3日
(34)编写一函数,判断整数是否只由奇数数字构成。
(35)编写一函数,用海伦法计算三角形面积。
[S=sqrt(p(p-a)(p-b)(p-c)),其中p=0.5(a+b+c)]
(36)编写一函数,返回整数某一指定位的数值。
(intdigitR(12345,2),返回4。
)
(37)编写一函数,判断某整数是否是回文数。
并用该函数找出1000内的回文数。
12月6日
(38)编写一函数,统计字符串中指定字符的出现次数。
(39)编写一函数,返回一整型数组中最小元素的下标,如果有多个最小元素,返回最小的下标。
(40)编写一函数,将一整型数组中的元素诸循环右移j位。
(41)编写一函数,判断矩阵是否是对称矩阵。
12月13日
(42)先阅读下面的程序,写出结果。
然后运行该程序,检查你的结果。
#include<
iostream>
usingnamespacestd;
intmain()
{
inti=111;
charch='
1'
;
cout<
<
ch<
"
"
i<
endl;
{
inti=222;
charch='
2'
cout<
if(i>
0)
{
doublei=300.3;
intch=333;
cout<
ch<
}
}
}
(43)先阅读下面的程序,写出结果。
inti=5;
voidfunc(void);
staticinta;
intb=-22;
intc=0;
a<
b<
c<
c=c+10;
func();
i=i+12;
voidfunc()
staticinta=3;
staticintb;
intc=10;
a=a+2;
i=i+21;
c=c+6;
b=a;
(44)先阅读下面的程序,写出结果。
inti=11,j=22;
longf1(intn)
staticlongres=1;
i++<
j++<
res=res*n;
returnres;
longf2(intn)
inti=2,j=5;
f1(i)<
f2(j)<
j<
i++;
(45)用递归的方法将一数字字符串转化为一整形值。
12月15日
(46)编写一递归函数,intgcd(intm,intn),返回m,n的最大公约数。
(47)编写一递归函数,返回一整形数组中的的最大数。
(48)编写一递归函数,返回一整形数中各位数之和(如234,返回2+3+4=9)。
(49)编写一递归函数,统计字符串中指定字符的出现次数。
12月17日
(50)定义用三种方法求三角形面积的重载函数
(已知三顶点坐标;
已知底和高;
已知两边和它们的夹角。
(51)用指针和引用两种方法来实现两个变量数据的交换[voidswap(int&
int&
);
voidswap(int*,int*)]
(52)验证三角形三边的中垂线交与一点,且交点是三角形外接圆的圆心。
12月20日
(53)定义一字符数组,分别用数组首地址和指针的方法实现查找字符串中是否存在所指定的字符。
(54)定义inta[3][4],使用地址的方法,找出数组中每行最大值,并输出数组的值。
(55)用指针的方法,实现二字符串的连接。
(56)用指针的方法,实现数组的选择法排序。
12月24日
(57)使用指针完成下列任务,读入10个数据,输出其中不同的数。
(即只输出其中不同的数)。
(58)将下列同学的姓名升序排序。
(“zhangyi”,“wangfei”,“liushan”,“zhaoxiang”)。
(59)用动态分配内存的方法,实现任意大小矩阵的转置。
12月27日
(60)一旦创建一个数组,其大小就固定了。
当我们向数组中输入更多的数据时,由于数组已满,我们必须创建一个更大的新的数组来代替当前的数组。
编写一个函数,函数头如下:
int*doublesize(int*list,intsize);
函数返回一个新数组,大小是list的两倍。
(61)编写一个函数,检查字符串s1是否是字符串s2的子字符串,若是,返回第一次匹配的下标,否则返回-1。
(62)编写一个函数,判断两个单词是否为字母易位次。
如“silent”和“listen”就是易位词。
《C++习题集》参考答案
(3)
intmain()
inti,count=0;
for(i=100;
=1000;
i++)
if(i%3==0||i%10==3)
if(count%10==9)cout<
count++;
return0;
(4)
inti=1,sum=0;
while(sum<
=5000)
sum+=i;
i++;
i-2<
(5)#include<
inti,n;
cin>
>
n;
for(i=1;
=n;
if(n%i==0)cout<
return0;
(6)
inti,j,sum;
for(j=1,sum=0;
i;
j++)
if(i%j==0)sum=sum+j;
if(sum==i)cout<
(7)
inti,bit0,bit1,bit2;
=999;
bit0=i%10;
bit1=i/10%10;
bit2=i/100;
if(bit0*bit0*bit0+bit1*bit1*bit1+bit2*bit2*bit2==i)cout<
(8)
doublepi=0,t;
intn=1,s=1;
while((t=1.0/n)>
0.000001)
pi+=s*t;
n=n+2;
s=-s;
4*pi<
(9)
doublex,max=-1,min=101;
inti;
=10;
cin>
x;
if(x>
max)max=x;
if(x<
min)min=x;
max="
max<
min="
min<
(10)
intnumber,reverse_number=0;
number;
while(number>
reverse_number=reverse_number*10+number%10;
number/=10;
reverse_number<
(11)
intnumber,i;
for(i=2;
i<
=number;
if(number%i==0)
number/=i;
i=1;
(22)
#include<
inta[14]={0,1,0,2,2,3,4,5,6,7,1,2,3,4};
intb[14]={0,2,9,9,1,3,4,5,6,7,1,2,3,6};
boolflag=false;
intc[14]={0};
for(inti=13;
i>
=0;
i--)
c[i]=a[i]+b[i];
if(flag==true)c[i]++;
if(c[i]>
=10)
c[i]-=10;
flag=true;
else
flag=false;
if(a[0]!
=0)cout<
c[0];
14;
c[i];
(45)
cstring>
intstr2num(charstr[])
intlen=strlen(str);
if(len==1)
returnstr[0]-'
0'
else
intdigit=str[len-1]-'
str[len-1]='
\0'
returnstr2num(str)*10+digit;
charstr[80];
str;
str2num(str)<
(46)
intgcd(intm,intn)
if(m%n==0)
returnn;
returngcd(n,m%n);
intm,n;
m>
gcd(m,n)<
(47)
intfind_max(inta[],intn,intmax)
if(n==0)returnmax;
else
if(max>
a[n-1])
max=find_max(a,n-1,max);
max=find_max(a,n-1,a[n-1]);
Intmain()
inta[6]={23,6,14,79,10,1};
find_max(a,5,a[4])<
(48)
intsumdigit(intnumber)
if(number/10==0)
returnnumber;
returnsumdigit(number/10)+number%10;
intm;
m;
sumdigit(m)<
(49)
intcount(charstr[],charch,intlen)
staticintcounts=0;
if(len==0)
returncounts;
if(str[len-1]==ch)
counts++;
count(str,ch,len-1);
charstr[80],ch;
intlen;
str>
ch;
len=strlen(str);
count(str,ch,len)<
(57)
inta[10],temp[10];
int*pa,*p_temp;
inttemp_count=0;
for(pa=a;
pa<
a+10;
pa++)
*pa;
for(pa=a;
pa<
pa++)
boolwrite=true;
for(p_temp=temp;
p_temp<
temp+temp_count;
p_temp++)
if(*pa==*p_temp)
{
write=false;
break;
}
if(write)temp[temp_count++]=*pa;
for(p_temp=temp;
*p_temp<
(58)
char*p[4]={"
zhangyi"
"
wangfei"
liushan"
zhaoxiang"
},*p_temp;
inti,j;
for(i=3;
=1;
charcurrent_max[20];
intcurrent_max_index=0;
strcpy(current_max,p[0]);
for(j=1;
=i;
j++)
if(strcmp(p[j],current_max)>
strcpy(current_max,p[j]);
current_max_index=j;
if(current_max_index!
=i)
p_temp=p[i];
p[i]=p[current_max_index];
p[current_max_index]=p_temp;
for(i=0;
4;
p[i]<
(60)
int*doublesize(int*list,intsize)
int*p=newint[size*2];
for(inti=0;
size;
*(p+i)=*(list+i);
delete[]list;
returnp;
intsize,i;
int*list=newint[size];
for(i=0;
i<
size;
i++)
*(list+i);
list=doublesize(list,size);
*(list+size);
size+1;
list[i]<
(61)
intindexof(char*s1,char*s2)
char*ptrs2,*ptrs1;
intj;
for(ptrs2=s2;
ptrs2<
=s2+strlen(s2)-strlen(s1);
ptrs2++)
for(j=0,ptrs1=s1;
*ptrs1!
='
;
ptrs1++,j++)
if(*ptrs1!
=*(ptrs2+j))break;
if(*ptrs1=='
)returnptrs2-s2;
return-1;
charstr1[80],str2[80];
str1;
str2;
indexof(str1,str2)<
//使用地址操纵二维数组
intA[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
3;
for(