c语言基础110章练习题题库测试题带答案.docx

上传人:b****0 文档编号:12729272 上传时间:2023-04-21 格式:DOCX 页数:109 大小:85.59KB
下载 相关 举报
c语言基础110章练习题题库测试题带答案.docx_第1页
第1页 / 共109页
c语言基础110章练习题题库测试题带答案.docx_第2页
第2页 / 共109页
c语言基础110章练习题题库测试题带答案.docx_第3页
第3页 / 共109页
c语言基础110章练习题题库测试题带答案.docx_第4页
第4页 / 共109页
c语言基础110章练习题题库测试题带答案.docx_第5页
第5页 / 共109页
点击查看更多>>
下载资源
资源描述

c语言基础110章练习题题库测试题带答案.docx

《c语言基础110章练习题题库测试题带答案.docx》由会员分享,可在线阅读,更多相关《c语言基础110章练习题题库测试题带答案.docx(109页珍藏版)》请在冰豆网上搜索。

c语言基础110章练习题题库测试题带答案.docx

c语言基础110章练习题题库测试题带答案

1.概念填空题

1.1用编写的程序称为“源程序”。

计算机(能/不能)直接识别源程序,必须将其翻译成二进制代码才能在机器上运行。

一旦编译成功,目标程序就可以反复执行。

1.2C++的程序由一个或多个组成,其中一定有一个称为主函数的函数。

在组成程序的函数中,它是程序执行的,也是程序运行的。

对函数的描述由“{}”中的语句序列完成,每个语句以符号结束。

C++程序大小写。

1.3布尔型数值只有两个:

,。

在C++的算术运算式中,分别当作,。

1.4字符由括起来,字符串由括起来。

字符只能有个字符,字符串可以有

个字符。

空串的表示方法为。

1.5&&与||表达式按的顺序进行计算,以&&连接的表达式,如果左边的计算结果为,右边的计算就不需要进行了,整个逻辑表达式的结果为。

以||连接的表达式,如果左边的计算结果为,就能得到整个逻辑表达式的结果为。

1.6>>运算符将一个数右移n位,相当于将该数2n,<<运算数将一个数左移n位,相当于将该数2n。

1.7前置++、--的优先级于后置++、--。

 

2.概念填空题

1.1用高级语言编写的程序称为“源程序”。

计算机不能(能/不能)直接识别源程序,必须将其翻译成二进制代码才能在机器上运行。

一旦编译成功,目标程序就可以反复执行。

1.2C++的程序由一个或多个函数组成,其中一定有一个称为主函数的main函数。

在组成程序的函数中,它是程序执行的入口,也是程序运行的结束点。

对函数的描述由“{}”中的语句序列完成,每个语句以;符号结束。

C++程序区别大小写。

1.3布尔型数值只有两个:

true,false。

在C++的算术运算式中,分别当作1,0。

1.4字符由‘括起来,字符串由“括起来。

字符只能有1个字符,字符串可以有0-多个个字符。

空串的表示方法为NULL。

1.5&&与||表达式按优先级的顺序进行计算,以&&连接的表达式,如果左边的计算结果为false,右边的计算就不需要进行了,整个逻辑表达式的结果为false。

以||连接的表达式,如果左边的计算结果为true,就能得到整个逻辑表达式的结果为true。

1.6>>运算符将一个数右移n位,相当于将该数缩小2n,<<运算数将一个数左移n位,相当于将该数扩大2n。

1.7前置++、--的优先级高于于后置++、--。

编程题

1输入平面上某点横坐标x和纵坐标y,若该点在由图2-10表示的方块区域内,则输出1;否则输出0。

#include

#include

usingnamespacestd;

intmain(){

doublex,y;

cin>>x>>y;

if(abs(x)<=2&&abs(y)<=2)cout<<1<

elsecout<<0<

return0;

}

2定邮寄包裹的计费标准如下表,输入包裹重量以及邮寄距离,计算出邮资。

重量(克)

邮资(元/件)

15

30

45

60

75及以上

5

9

12

14(每满1000公里加收1元)

15(每满1000公里加收1元)

*重量在档次之间按高档靠

#include

usingnamespacestd;

intmain(){

ints,l,w;//s表示邮资,l表示距离,w表示重量

cin>>l>>w;

if(w<=15)s=5;

elseif(w<=30)s=9;

elseif(w<=45)s=12;

elseif(w<=60)s=14+l/1000;

elses=15+l/1000;

cout<

return0;

}

3.某地发生了一件谋杀案,警察通过确定杀人凶手必为4个嫌疑犯中的一个。

以下为4个嫌疑犯的会供词。

A说:

不是我;B说:

是C;C说:

是D;D说:

C在胡说。

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定谁是凶手。

#include

#include

usingnamespacestd;

intmain()

{

charkiller;

for(killer='A';killer<='D';killer++)

if(((killer!

='A')+(killer=='C')+(killer=='D')+(killer!

='D'))==3)

//三真一假,进行逻辑判断

cout<<"Killeris"<

return0;

}

4求一个大于指定数n的最小素数,n由键盘输入。

#include

#include

usingnamespacestd;

intmain(){

intn,i,k;

cin>>n;

while

(1){

k=(int)sqrt(++n);

i=1;

while(++i<=k){

if(n%i==0)

break;

}

if(i>k){

cout<

break;

}

}

return0;

}

5将100元换成20元、10元和5元的组合,共有多少种组合方法?

#include

usingnamespacestd;

intmain(){

inti,j,k,count=0;

for(i=0;i<=10;i++)//i是10元张数,j是5元张数,k是1元张数

for(j=0;j<=20;j++){

k=100-10*i-5*j;

if(k>=0){

cout<

count++;

}

}

cout<

return0;

}

6编程求1000以内的所有完数。

完数指的是一个数恰好等于它的所有因子之和。

例如6=1+2+3,6就是一个完数。

#include

usingnamespacestd;

intmain(){

inti,a,sum_yz;//sum_yz是a的因子和

for(a=1;a<1000;a++){

sum_yz=0;

for(i=1;i

//求因子运算未改变循环控制变量a的值,否则要用另一个变量b来代替a来参加运算

if(a==sum_yz)cout<

}

return0;

}

7.求4个不同的整数,其平方和等于200。

#include

#include

usingnamespacestd;

intmain(){

inta,b,c,d;

for(a=1;a<=14;a++)

for(b=a+1;b<=14;b++)

for(c=b+1;c<=14;c++)

for(d=c+1;d<=14;d++)

if(a*a+b*b+c*c+d*d==200)

cout<

return0;

}

8从键盘输入一个整数,判断该数是否为回文数。

所谓的回文数就是从左到右读与从右向左读都是一样的数。

例如7887、23432是回文数。

#include

usingnamespacestd;

intmain(){

inta,b,c;

cin>>a;

b=0;

for(c=a;c;){

b=b*10+c%10;

c/=10;

}

if(a==b)

cout<

else

cout<

return0;

}

9编写一程序,按下列公式求

,精确到最后一项绝对值小于10-6。

=

#include

usingnamespacestd;

intmain(){

doubles=0,i=1;

intp=1;

do{

s=s+p*1/i;

i+=2;

p*=-1;

}while(1/i>=1e-6);

cout<<4*s<

return0;

}

10用迭代法编程求

的近似值。

求平方根的迭代公式为:

#include

#include

usingnamespacestd;

intmain(){

doublea,x0,x1;

cout<<"输入初始值";

cin>>a;

x0=a/2;

x1=(x0+a/x0)/2;

do{

x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x0-x1)<1e-6);

cout<<"根为"<

return0;

}

11一球从100米高度落下,每次落地后反跳回原来高度的一半,再落下。

编程求它在第10次落地时,共经过多少米?

第10次反弹多高?

#include

usingnamespacestd;

intmain(){

doublesn=100,hn=sn/2;

intn;

for(n=2;n<=10;n++){

sn+=2*hn;

hn/=2;

}

cout<<"第10次落地时共经过"<

cout<<"第10次反弹"<

return0;

}

12猴子吃桃问题:

猴子摘下若干个桃子,第1天吃了所有桃子中的一半多一个,以后每天吃前一天剩下的一半多一个,到第10天吃之前发现只剩下一个桃子,问猴子共摘了几个桃子。

#include

usingnamespacestd;

intmain(){

intday,x1,x2;

day=9;

x2=1;

while(day>0){

x1=(x2+1)*2;

x2=x1;

day--;

}

cout<<"桃子总数"<

return0;

}

编程题

1输入平面上某点横坐标x和纵坐标y,若该点在由下图表示的方块区域内,则输出1;否则输出0。

2假定邮寄包裹的计费标准如下表,输入包裹重量以及邮寄距离,计算出邮资。

重量(克)

邮资(元/件)

15

30

45

60

60以上

5

9

12

14(每满1000公里加收1元)

15(每满1000公里加收1元)

注意:

重量在档次之间的按高档算。

3.某地发生了一件谋杀案,警察通过确定杀人凶手必为4个嫌疑犯中的一个。

以下为4个嫌疑犯的会供词。

A说:

不是我;B说:

是C;C说:

是D;D说:

C在胡说。

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定谁是凶手。

4.求一个大于指定数n的最小素数,n由键盘输入。

5.将100元换成20元、10元和5元的组合,共有多少种组合方法?

6.编程求1000以内的所有完数。

完数指的是一个数恰好等于它的所有因子之和。

例如,6=1+2+3,6就是一个完数。

7.求4个不同的整数,其平方和等于200。

8.从键盘输入一个整数,判断该数是否为回文数。

所谓的回文数就是从左到右读与从右向左读都是一样的数。

例如7887、23432是回文数。

9.编写一程序,按下列公式求

,精确到最后一项绝对值小于10-6。

=

10.用迭代法编程求

的近似值。

求平方根的迭代公式为:

11.一球从100米高度落下,每次落地后反跳回原来高度的一半,再落下。

编程求它在第十次落地时,共经过多少米?

第十次反弹多高?

12.猴子吃桃问题:

猴子摘下若干个桃子,第1天吃了所有桃子中的一半多一个,以后每天吃前一天剩下的一半多一个,到第10天吃之前发现只剩下一个桃子,问猴子共摘了几个桃子。

编程题

1输入m、n和p的值,求s=

的值。

注意判断运算中的溢出。

#include

usingnamespacestd;

doublesum(intn,inte){

doubles=0;

inti,j,q;

for(i=1;i<=n;i++){

q=1;

for(j=1;j<=e;j++)

q*=i;

s+=q;

}

returns;

}

intmain(){

doubles;

intm,n,p;

cin>>m>>n>>p;

s=(sum(m,1)+sum(n,3))/sum(p,5);

cout<

return0;

}

2设计一函数,判断一整数是否为素数,并完成在800-900之间,验证歌德巴赫猜想:

任何一个充分大的偶数都可以表示为两个素数之和。

#include

#include

usingnamespacestd;

boolIsPrime(long);

intmain(){

longi,j,k;

for(i=800;i<=900;i+=2)

{

k=i/2;

for(j=2;j<=k;j++)

if(IsPrime(j)&&IsPrime(i-j))

{

cout<

break;

}

}

return0;

}

boolIsPrime(longn){

longi,k;

k=(int)sqrt(n);i=1;

while(++i<=k)

if(n%i==0)

returnfalse;

returntrue;

}

3编写递归函数求两个数的最大公约数,并在主函数中加以调用验证。

#include

usingnamespacestd;

intf(int,int);

intmain(){

inta,b;

cin>>a>>b;

cout<

return0;

}

intf(inta,intb){

if(a%b)returnf(b,a%b);

returnb;

}

4用递归函数实现勒让德多项式。

并在主函数中求P5(1.4)。

#include

usingnamespacestd;

doubleP(intn,doublex){

if(n==0)return1;

if(n==1)returnx;

return((2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x))/n;

}

intmain(){

cout<<"P(4,1.5)="<

return0;

}

5.编写函数intdigit(intm,intn),求整数m从右往左数第n位数字,并将该数字作为函数值返回。

例如:

digit(1234,2)=3digit(1234,6)=0

#include

usingnamespacestd;

intdigit(intm,intn);

intmain(){

intm,n;

cout<<"请输入整数和数字位数"<

cin>>m>>n;

cout<

return0;

}

intdigit(intm,intn)

{

intk;

while(m&&n)

{

k=m%10;

n--;

m=m/10;

}

if(n)return0;//n超过整数实际位数

returnk;

}

6使用重载函数编程序分别把两个数和三个数从大到小排列。

#include

usingnamespacestd;

voidf(int,int,int);

voidf(int,int);

intmain(){

inta,b,c;

cin>>a>>b>>c;

f(a,b);

f(a,b,c);

return0;

}

voidf(inta,intb,intc){

intt;

if(a

t=a;a=b;b=t;

}

if(a

t=a;a=c;c=t;

}

if(b

t=b;b=c;c=t;

}

cout<

}

voidf(inta,intb){

if(a>b)cout<

elsecout<

}

编程题

1.输入m、n和p的值,求s=

的值。

2.设计一函数,判断一整数是否为素数,并完成在800-900之间,验证歌德巴赫猜想:

任何一个充分大的偶数都可以表示为两个素数之和。

3.编写递归函数求两个数的最大公约数,并在主函数中加以调用验证。

4.用递归函数实现勒让德多项式。

并在主函数中求P5(1.4)。

5.编写函数intdigit(intm,intn),求整数m从右往左数第n位数字,并将该数字作为函数值返回。

例如:

digit(1234,2)=3digit(1234,6)=0

6.使用重载函数编程序分别把两个数和三个数从大到小排列。

编程题

1已知求成绩的平均值和均方差公式:

ave=

dev=

其中n为学生人数,

为第i个学生成绩。

求某班学生的平均成绩和均方差。

#include

#include

#include

#include

usingnamespacestd;

doubleave(int*,int);

doubledev(int*,double,int);

voidcreate(int*,int);

constintN=10;

intmain(){

inta[N],i;

doubles,d;

srand(time(0));

create(a,N);

for(i=0;i

cout<

s=ave(a,N);

cout<<"ave="<

d=dev(a,s,N);

cout<<"dev="<

return0;

}

doubleave(int*a,intN){

doubles=0;

inti;

for(i=0;i

s+=a[i];

returns/N;

}

doubledev(int*a,doubles,intN){

inti;

doubled=0;

for(i=0;i

d+=(a[i]-s)*(a[i]-s);

returnsqrt(d/N);

}

voidcreate(int*c,intN){

inti;

for(i=0;i

c[i]=rand()%100;

}

2用随机函数产生10个互不相同的两位整数,存放至一维数组中,并输出其中的素数。

#include

#include

#include

#include

usingnamespacestd;

voidcreate(int*,int);

voidprime(int*,int);

constintN=10;

intmain(){

inta[N],i;

srand(time(0));

create(a,N);

for(i=0;i

cout<

cout<

prime(a,N);

return0;

}

voidprime(int*p,intN){

inti,j,k;

for(i=0;i

if(p[i]<2)continue;

k=sqrt(p[i]);

for(j=2;j<=k;j++)

if(p[i]%j==0)break;

if(j>k)cout<

}

cout<

}

voidcreate(int*c,intN){

inti,d;

intf[100]={0};

for(i=0;i

do{

d=rand()%100;

}while(f[d]);

c[i]=d;

f[d]=1;

}

}

3.输入10个整数,用选择排序法从小到大对其进行排序,输出排序后结果。

提示:

选择排序算法如下

选择排序法共需进行n-1轮排序。

第i轮(0≤i≤n-2)排序从a[i]、a[i+1]、……a[n-1]中找出最小的数和a[i]互换。

下图是5个数的选择排序过程。

#include

usingnamespacestd;

constintN=5;

voidselectSort(inta[],intn){

inti,j,t,min;

for(i=0;i

min=i;//每一轮最小元素下标min设初值是i

for(j=i+1;j

//找出a[i]到a[n-1]的最小元素,下标为min

if(a[min]>a[j])

min=j;

if(min!

=i){//如果a[i]不是最小,a[i]和a[min]互换

t=a[min];

a[min]=a[i];

a[i]=t;

}

}

}

intmain(){

inta[N],i;

cout<<"输入"<

for(i=0;i

cin>>a[i];

selectSort(a,N);

for(i=0;i

cout<

return0;

}

4在一个二维数组中形成如以下形式的n阶矩阵:

(1)以方阵形

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

当前位置:首页 > 农林牧渔 > 林学

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

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