专转本C语言复习题3Word格式.docx
《专转本C语言复习题3Word格式.docx》由会员分享,可在线阅读,更多相关《专转本C语言复习题3Word格式.docx(6页珍藏版)》请在冰豆网上搜索。
0.000001),即小于float的表示精度,可认为已经计算到最精确的值了。
大家可以测试,这种方式,其结果为3.141594,非常接近了,如果用double型,其循环条件执行条件应变为>
0.000000000001,可以把精度扩展到小数点后12位。
#include<
stdio.h>
voidmain()
{
floatpi=0;
inti,flag=1;
for(i=0;
1.0/(2*i+1)>
=0.000001;
i++)
{
pi=pi+1.0/(2*i+1)*flag;
flag=flag*-1;
}
pi=pi*4;
printf("
pi=%f"
pi);
}
2.已有一个排好序的数组,要求输入一个数后,按原来的规律将它插入数组中。
先把这种抽象的题,具体化后分析,如一个排好序的数组为12567892105,这时候再输入一个数,这个数假如是89,大家看它的放到哪儿去?
其方法是:
先和第一个元素12比较,比12大,再和56比较,还是比56大,再和78比较,还大,再和92比较,比92小,这时候找到它的位置了,就应该让92及其后的数往后面挪一位。
把位置空出来后,再放输入的89。
它分为两个过程,一是寻找位置的过程,这可以用一个for循环,逐个取数组元素来比较,直接找到比当前输入的数大的位置停下来,比如是i。
二是把a[i]及后面的数往后挪的问题,可以用一个for循环,从最后一个数开始,把数往后挪一位,即a[j+1]=a[j]。
位置腾出来后,把输入的数放到寻找到的位置。
inta[6]={12,45,67,89,92};
intb,i,j;
scanf("
%d"
&
b);
//寻找插入位置;
i<
5;
i++)//此处i<
5,,是因为数组中只有5个数。
if(b<
a[i])
{
break;
}
//如果是中途退出,就把后面的数,往后挪一位。
if(i<
5)
for(j=5;
j>
=i;
j--)
a[j]=a[j-1];
a[i]=b;
//输出插入后的数组;
6;
printf("
%d\t"
a[i]);
3.
已有一个排好序的数组,要求输入一个数后,请快速查找其位置。
分析:
用折半查找法最快。
//此方法和中央二台猜价格的方法相似。
比如1000低了,2000,高了,(1000+2000)/2=1500高了,(1000+1500)/2=1250,对了!
inta[10]={12,45,67,89,92,105,378,456,897,900};
intb,i,left=0,right=9,mid;
while(left<
=right)
mid=(left+right)/2;
if(b==a[mid])
printf("
%d在数组的第%d位"
b,mid+1);
return;
elseif(b<
a[mid])
right=mid-1;
else
left=mid+1;
没找到!
\n"
);
4.求100至200间的全部素数。
inti,j;
for(i=100;
=200;
for(j=2;
j<
=i-1;
j++)
if(i%j==0)
break;
if(j==i)
%d是素数!
i);
5.把一个整数按大小顺序插入已排好序的数组中。
(同2题)
6.在二维数组a中选出各行最大的元素组成一个一维数组b。
7.输入五个国家的名称按字母顺序排列输出。
8.输入两个正整数m和n,求其最大公约数和最小公倍数。
(辗转相除法)
9.编程计算100至999之间有多少个数,其各位数字之和是5。
例如:
122、131是满足要求的数的两个例子。
(穷举法)
10.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一水仙花数,因为153=13+53+33。
11.求Sn=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字。
2+22+222+2222+22222(此时n=5),n由键盘输入。
12.求100~200间的全部素数。
13.定义一个2*3矩阵,输入/输出数值。
14.求一个3*3矩阵对角线元素之和。
15.用二分法求下面方程在(-10,10)之间的根。
2x3-4x2+3x-6=0
16.求Fibonacci数列前40个数。
这个数列有如下特点:
第1,2两个数为1,1。
从第3个数开始,该数是其前面两个数之和。
即:
F1=1(n=1)
F2=1(n=2)
Fn=Fn-1+Fn-2(n>
=3)
17.用起泡法对10个数排序(由小到大)。
18.用选择法对输入的10个整数排序。
19.写程序,判断某一年是否闰年。
20.将一个二维数组行和列元素互换,存到另一个二维数组中。
21.有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
22.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
23.用递归方法求n!
。
24.打印出以下的杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
25.打印以下图案:
*****
*****
*****
26.打印以下图案:
*
**
***
****
*
27.打印以下图案:
1
121
12321
1234321
123454321
12345654321
28.有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分,及格率。
29.请编程一个函数实现查找如下字符串“thePeople’sRepublicofChina.”中第一个“of”单词在字符串中的位置,并返回该值;
通过主函数调用该函数,并输出结果。
30.请编程实现如下功能:
从键盘输入一个任意正整数,求其各位数字立方和。