C程序设计及题集(含答案)Word文档下载推荐.doc
《C程序设计及题集(含答案)Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《C程序设计及题集(含答案)Word文档下载推荐.doc(30页珍藏版)》请在冰点文库上搜索。
![C程序设计及题集(含答案)Word文档下载推荐.doc](https://file1.bingdoc.com/fileroot1/2023-4/28/ced609cb-6990-4e8d-9e29-c7366d35c2a2/ced609cb-6990-4e8d-9e29-c7366d35c2a21.gif)
若以每步走7级则最后刚好不剩。
问台阶共有几级?
9.公鸡5元1只,母鸡3元1只,小鸡1元3只,花了100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?
10.编程实现解决下述问题的算法:
一位顾客在购物时,如果买4个苹果剩下4角钱.如果买5个苹果则缺5角钱,请问,该顾客带了多少钱?
多少钱可以头一个苹果?
11.编写程序.计算100之内可以被13整除的自然数之和。
12.键盘输入m和n(10<
m<
n≤32000),求出m~n间所有素数且按每行8个数形式输出。
13.编写程序打印乘法口诀表。
14.编程实现求解最大公约数的欧几里德算法,用户输入两个任意正整数,程序输出他们的最大公约数。
算法如下:
步骤1:
如果p<
q,则交换p和q。
步骤2:
令r是p/q的余数。
步骤3:
如果r=0,则令g=q并终止;
否则令p=q,q=r并转向步骤2
15.求不超过正整数n的2的最大幂值,如输入17,程序应输出4(24=16<
17)。
16.有关专家十分关注珠江渔业资源的问题。
目前珠江中大约有8000万条鱼,平均每年以3.5%的速度减少。
请编写一个程序,计算在多少年之后鱼的数目下降到目前的一半?
多少年后下降到目前的十分之一?
(提示注意整数类型的取值范围)。
17.编程求解一元二次方程ax2+bx+c=0的根。
要求:
设计完备的测试数据集,考虑a,b,c各种取值对根的影响。
18.编写一个程序,输入全班同学某门课考试成绩,计算平均成绩并找出其中最高分与最低分。
批量数据通常不事先规定输入的数据数量,而是以一个特殊的标志作为输入结束。
程序根据结束标志统计人数)
19.编一程序模拟整数加、减、乘、除四则运算。
当你在键盘上输入
5+6
后,程序将输出=11,当你在键盘上输入11*7后,程序将输出=77。
20.把一张1元钞票换成1分、2分和5分的硬币,每种至少有1枚,问有多少种换法?
21.求自然对数底(e)的近似值。
e的近似值计算公式为:
当余项rn<
ε时停止计算。
设ε=1e-8
22.S==1!
+2!
+…+7!
23.S=1×
2+3×
4+5×
6+…+39×
40
24.Y=X-+-+…+(-1)n+1+…的值,精确到10-6。
25.编制一个程序,读入一个正整数,并反向输出。
例如,读入123,输出是321。
26.水仙花数问题:
水仙花数是一种三位数,它的值等于每个数字的立方和。
例如,153=13+53+33。
编程输出小于999的水仙花数。
27.求一整数的等差数列,该数列满足下述条件:
头4项数的和值为26,积值为880。
该数列公差为正整数,否则数列将出现负数;
该数列的首项必须小于5,且其公差也小于5,否则头四项数的和将大于26。
)
28.完数问题:
若有一数,其值等于它的因子之和,则该数称为完数。
例如,6的因子为1、2、3,而6=1+2+3,故6是完数。
编程输出1000之内的所有完数及其因子。
29.100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马2匹驮1担。
试编程计算大、中、小马的数目。
30.编程产生出1到10以内的所有数对<
i,j>
并输出,其中i>
j。
31.编程求出1000以内的所有符合如下条件的数:
其高位数字小于低位数字。
如12,238等。
但21,548不符合条件。
32.求任一整数N的标准分解式,即素数因子之积。
例如16=2*2*2*2,15=3*5。
33.斐波那契(Fibonacci)数列问题:
Fibonacci数列递归定义为:
x0=0,
x1=1,
xi+1=xi+xi-1,i=2,3,…
即从第二项开始,数列中的每一个元素等于前面两个元素之和。
编程输出前20项Fibonacci数。
(提示可以用递归或迭代两种方式编程)
34.打印下面图形。
1
131
13531
1357531
135797531
…………………
13……21………31
35.打印如下图形
ABCDE
BCDEA
CDEAB
DEABC
EABCD
36.正读和反读都一样的数称为回文数。
编写程序输入一个整数max_num,输出从0到max_num中用二进制表示和十进制表示都是回文数的整数。
定义一个函数is_circle_num()判断一个数(number)在某个进制(radius)下是否为回文数。
例如,整数313就是该程序输出的一个数,因为它的二进制表示为10011001。
37.编写一个递归函数:
将一个整数转换为响应的字符串并输出,函数原型可声明为:
voidint2str(intnumber)。
38.用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。
例如,输入”A2”转换为162。
39.编写一个将十进制整数转换为十六进制字符串的函数。
40.编写出判断一个整数是否为素数的函数,并求出在2000以内的有十个以上的所有连续的非素数组。
41.编制一个程序,统计从标准输入设备上输入的字符流(以?
结束)中每个英文字母(大小写不分开计)出现的次数。
42.编程实现“冒泡排序算法”,将输入的若干整数由小到大(升序)排序输出。
要求定义一个排序函数,其原型是voidbubble(intdata[],intlength)。
43.给定含有m+n个元素的整型数组A(其中m>
0,n>
0),它分为两个互不重叠的,长度分别为m和n的子数组段,写出交换这两个子数组段的程序,要求不引入数组A以外的数组,但可引入若干中间变量。
44.用数组存储数据,实现筛选法求素数问题的求解。
要求求出2到1000之间的所有素数。
筛选法求出2~N间的所有素数的方法是:
首先将这些数全部放入一个数组中,然后重复下面的操作直到数组为空为止:
a.找出其中的最小数K,则K一定是一个素数,因此可输出。
b.从数组中删除K及其所有倍数。
45.编程实现二分查找算法。
二分(折半)查找(搜索)算法如下:
数组a中的n个数从大到小(降序)的顺序排列,要检索一个数x是否在a中,折半查找算法的思路是:
设查找区间为[lower,upper],初值lower=0,upper=n-1;
算法步骤:
(1)输入数组a的元素及x;
(2)x是否为a的第一或最后一个元素。
若是其中之一,算法结束;
(3)将区间两等分为[lower,mid]和[mid,upper],mid为区间中点,每次取出中间项进行检查,若x=a[mid],x被检索到,算法结束;
若x<
a[mid],则在后半区间[mid,upper]内重复折半检索;
若x>
a[mid],则在前半区间[lower,mid]内重复折半检索。
反复执行上述步骤,使lower和upper相等或相差1(表示未检索到x),或a[mid]=x。
46.编程实现查找矩阵中最大元素的位置。
要求输入一个矩阵中所有元素,输出该矩阵,并输出矩阵中最大数所在的行、列号及该元素的值。
47.编写程序找出二维整形数组中所有这样的元素及其位置:
它在所在的行上是最大的,在所在的列上也是最大的。
设数组中的元素各不相同。
先在第i行中寻找此行最大值元素,记下其行和列,然后在其所在的列判断它是否也是最大的,若是则输出结果。
可以引入标志变量表示找到这个元素。
48.编程产生下列数组,并输出。
123456
234560
345601
456012
560123
601234
49.编程产生下列数组,并输出
123456
212345
321234
432123
543212
654321
50.编程产生下列数组,并输出。
123.....n-10
234.....01
345.....12
................
n-101.....n-3n-2
012.....n-2n-1
1.
//加密字符串
#include<
iostream.h>
voidmain()
{
chara[21],b,key;
cout<
<
"
请输入字符串和密钥:
;
cin>
>
a>
b;
for(inti=0;
a[i]!
=0;
i++){
a[i]=a[i]^b;
}
加密后:
for(intk=0;
a[k]!
k++){
a[k];
}
endl<
请输入密码:
key;
for(intj=0;
a[j]!
j++){
a[j]=a[j]^key;
for(intg=0;
a[g]!
g++){
a[g];
endl;
2.
main()
intyear,month,days;
请输入年份,月份:
year>
month;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
cout<
year<
年"
month<
月有"
days<
天\n"
}elseif(month==4||month==6||month==9||month==11){
days=30;
}elseif((year%4==0&
&
year%100!
=0)||year%400==0){
days=29;
}else{
days=28;
}
return0;
3.
//收过桥费
intkind;
cout<
1.自行车\n"
2.摩托车\n"
3.小汽车\n"
4.大货车或客车\n"
5.货柜车\n"
请输入汽车种类:
cin>
kind;
switch(kind){
case1:
cout<
thefeeis:
0yuanonce."
break;
case2:
2yuanonce."
case3:
5yuanonce."
case4:
8yuanonce."
case5:
12yuanonce."
default:
cout<
Error!
4.
intmarks;
输入考试成绩:
marks;
switch(marks/10){
case10:
case9:
cout<
Excellent\n"
case8:
VeryGood\n"
case7:
Good\n"
case6:
Pass\n"
default:
NoPass\n"
5.
//旅行社折扣
intnum,price;
floatdiscount,total_price;
输入购买张数和单价:
num>
price;
switch(num/10){
case0:
discount=0.1;
case1:
discount=0.15;
default:
discount=0.3;
total_price=num*price*(1-discount);
总价格为:
total_price<
6.
//输入数流
inta[100],i,j,x=0,y=0,z=0;
输入数流(以1000结束):
for(i=0;
cin>
a[i];
if(a[i]==1000)break;
for(j=0;
=1000;
if(a[j]==-1)x++;
if(a[j]==0)y++;
if(a[j]==1)z++;
该数流中含-1:
x<
项\n"
该数流中含0:
y<
该数流中含1:
z<
7.
//求2因子
intx,i,n;
输入整数:
l:
cin>
x;
if(x<
0){
输入有误!
请重新输入:
gotol;
n=x;
n%2==0;
n/=2;
整数"
含有"
i<
个2因子"
8.
inti,n;
for(i=7;
!
(i%2==1&
i%3==2&
i%4==3&
i%5==4&
i%6==5);
i+=7){
n=i;
最小可能值是:
n+7<
9.
//百元买百鸡
intcock,hen,chicken,price;
for(cock=0;
cock<
=20;
cock++){
for(hen=0;
hen<
=33;
hen++){
chicken=100-cock-hen;
if(chicken%3==0&
5*cock+3*hen+chicken/3==100)
符合条件的有公鸡"
母鸡"
小鸡"
chicken<
10.
intmoney,i,m,n;
for(i=1;
if(4+4*i==5*i-5){
money="
4+4*i<
price="
break;
}
elsecontinue;
11.
intn,i,j,s=0;
=100;
if(i%13==0)s+=i;
100以内可以被13整除的自然数之和为:
s<
12.
//求m到n的素数
math.h>
intf(intn)
inta,x,i,b;
x=sqrt(n);
if(n==2||n==3)b=1;
elsefor(i=2;
=x;
if(n%i==0){
b=0;
break;
elseif(i==x)b=1;