C语言练习题及参考答案_第1页
C语言练习题及参考答案_第2页
C语言练习题及参考答案_第3页
C语言练习题及参考答案_第4页
C语言练习题及参考答案_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言练习题及参考答案

一、程序设计共30题(共计600.0分)

第1题(20.0分)

/*一一一一一一一

【程序设计】

题目:编程证明冰雹:猜想:输入•个正整数n,如果n为偶数籽它变为n/2;如果除后变为奇数,

则将它乘3加1(3*n+l),不断重复这样的运算,经过有限步后能得到整数1(输出次数

和每次运算后得到的数)。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

△include<stdio.h>

^include<stdlib.h>

intmainO

(

inin;

intcount=l;

printf("inputanumber:*);

scanf("与d",&n):

do{

/**********End**********/

}while(n!=l);

system(''pause*);

return0;

)

答案:if(n%2==l){

n=n*3+l;

printf("第%d次:%d\n",count++,n);

}else{

n/=2;

printf("第$d次:%d\n',count++,n);

第2题(20.0分)

/*--------------------------------------------------------------------------

【程序设计】

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半再落下,

求它在第10次落地时,共经过多少米?第10次反弹多高?

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

^include<stdio.h>

^include<stdlib.h>

intmainO{

doublesum=0,high=100;

inti;

/**********Prograin**********/

/**********End**********/

printf("第10次落地时总共经过的路程湍f,第10次反弹的高度为离f\n”,sum,high);

system(*pausc*);

return0;

)

答案:fcr(i=0:i<10”++){

sum=high+high/2+sum;

high=high/2;

}

sum=sum-high:

第3题(20.0分)

【程序设计】

题目:如果一个整数从左往右读与从右往左读是相同的数,且其是素数.则称其为回文素数。

如11,101,愉出1000以内的所有回文素数。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

---------------------------------------------------------------------------------*/

#include<stdio.h>

力include<stdiib.h>

intmain(){

intflag;

intm,n;

/**********[]rogram**********/

/**********End**********/

system("pause");

return0;

}

答案:for(m=10:m<1000;m++){

for(n=2;n<m;n++);

flag=l;

if(m%n==0){

flag=0;

break:

)

)

if(flag==l){

if(m/100==0)-

if(m/10==m%10)

printf("为d\n",m);

}else{

if(m/100==m%10)

printf("%d\n",m);

)

)

)

第4题(20.0分)

【程序设计】

题目:输入一个2~100之间(包含2和100)的整数,求2到该整数之间(含2和该数)的偶数

个数以及奇数的和,并输出。

程序运行加样张所示.

注意:请勿改动程序中的其他部分,请勿定义新的变量。

---------------------------------------------------------------------------------*/

^include<stdio.h>

^include<stdlib.h>

/**********End**********/

printf("\n这些数字的和是:用d'n”,sum);

system("pause");

return0;

)

答案:for(i=3;i〈=99;i++){

if((i%3==0)||(i;10==3||i%10==3)){

printfC%d”,i);

sum=sum+i;

)

)

第6题(20.0分)

【程序设计】

题目:定义一个函数用于计算数学分段函数y=2x+3(x>=0):y=4x-5(x<0),

并调用函数求从键盘上输入的某个x值对应的y值

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

---------------------------------------------------------------------------------*/

nclude<stdio.h>

#include<stdlib.h>

floatfun(floatx){

floaty;

/**********Pi、cgram**********/

/**********End**********/

intmainO(

floatx,y;

printf("输入x的值

scanf&x);

y=fun(x):

printf(*x=%.2f,y=%.2f\n”,x,y);

system("pause");

return0;

答案:if(x>=0){

y=2*x+3;

}else(

y=4*x-5;

returny;

第7题(20.0分)

/*--------------------------------------------------

【程序设计】

题目:从键盘上输入3个数,将其按从小到大排序愉出。

程序运行如样张所示.

注意:请勿改动程序中的其也部分,请勿定义新的变量。

*include<stdio.h>

#include<stdlib.h>

intmain(){

inta,b,c,t:

printf("输入a,b,c:\n");

scanf("%d%d%d”,&a,&b,&c);

printf("排序前:%d,%d,%dw,a,b,c);

/**********[)rogram**********/

/**********End**********/

printf("排序后:%d,%d,%d\n”,a,b,c);

system("pause");

return0;

答案:if(a>b)

t=a

a=b

b=t

if(a>c)

t=a;

a=c;

c=t;

if(b>c){

t=b;

b=c;

c=t;

第8题(20.0分)

/*--------------------------------------------------------------

【程序设计】

题目:给定两个整数,求它们的最大公约数。(要求使用while循环)

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

△include<stdlib.h>

#include<stdio.h>

intdivisor(inta,intb)f

inttemp;

if(a<b){

temp=a;

a=b;

b=temp;

)

/**********F,rogram**********/

/**********End**********/

returna;

)

intmain(){

intm,n,res;

printf("请输入两个正整数:“);

scanf("%i,%d”,&m,&n);

res=divisor(m,n);

prinlf("%d和%d的最大公约数是与d\n”,m,n,res);

system("pause"):

return0;

}

答案:while(b!=O){

temp=a%b;

a=b;

b=temp;

第9题(20.0分)

/*--------------------------------------------------------------------

【程序设计】

题目:将一个正整数分解质因数。例如:输入60,打印出60=2*2*3*5。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

---------------------------------------------------------------------------------*/

#include<stdio.h>

^include<stdlib.h>

inimainO{

intn,i;

Drintf("请输入一个正整数:”):

scanf&n);

printfn);

/**********Program**********/

/**********End**********/

system(''pause*);

return0:

)

答案:for(i=2;i〈=n;i++){

while(n%i==0){

prinif(“%d”,i);

n=n/i:

if(n!=l){

printf('*");

)

)

)

putchar(,\n);

第10题(20.0分)

/*---------------------------------------------------------------------------

【程序设计】

题目:有求s=d+dd+ddd+dddd+…+dd…ddd;其中d为非零正整数。

d的值和位数由键盘接收数据。

比如输入5和2,则表示求S=2+22+222+2222+22222

程序运行如样张所示.

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

#include<stdio.h>

/include<stdlib.h>

intsum(intn,intm){

inti,s=0;

inttmp=m;

/**********Prograni**********/

/**********End**********/

)

intmainO{

intn,m,s;〃n表示位数,m表示数字

prinlf("输入要求的数的位数和数字(逗号隔开):\n");

scanf("%d,%d”,&n,&m);

s=sum(n,ni);

printf("s=%d\n”,s);

system("pause");

return0:

)

答案:for(i=l;i<=n;i++){

s=s+tmp;

tmp=tmp*10+m;

)

returns;

第11题(20.0分)

/*

【程序设计】

题目:定义一个函数计算数组元素的平均值,在主函数调用函数求出指定数组元素的平均值,

输出结果,保留两位小数。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

#include<stdio.h>

△include<stdlib.h>

floataverage(intarr[],intn){

inti,sum=0;

floatavg=0;

/**********Prograni**********/

/**********End**********/

}

intmain。

(

inta[5]={10>20,30,40,50}:

floatavg;

avg=average(a,5):

printf("数组元素的平均值:%.2f\n”,avg);

system("pause");

return0;

}

答案:for(i=0;i<n;i++){

sum=sum+arr[i];

)

avg二(float)sum/n;

returnavg:

第12题(20.0分)

/*--------------------------------------------------------------------------

【程序设计】

题目:一个四位数,当它逆向排列时得到的4位数足它自身的整数倍,

输出所有符合条件的四位数,每行10个:

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

m————一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一mi——————————--一一一一一一一一一一一一一一一*/

△include<stdio.h>

^include<stdlib.h>

#include<math.h>

/*函数实现将整数反转*/

intreverse(intnum){

inti=3;

intres=O;

/**********[)rogram**********/

/**********End**********/

returnres;

)

intmain(){

inti,count=0;

printf("反转后的数是原数的倍数的四位数有:\n");

for(i=1000;i<=9999;i++){

if(reverse(i)%i==0){

printf("%-6d”,i);

count++:

if(count%10==0)printf(*\n*);

)

)

system("pause");

return0;

)

答案:while(num){

res+=num%10*pow(10,i);

num=num/10;

—i;

)

第13题(20.0分)

*----------

【程序设计】

题目:有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13……,定义一个函数求

这个序列前n项的和,从键盘上输入序列的项数,调用函数求出指定项数的和。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

#includc<stdio.h>

△include<stdlib.h>

floatsum(intn){

inti;

floatt,a=2,b=l,s=0;

/**********Progi、am**********/

/**********End**********/

returns;

)

intmain()

(

intcount;

floatres;

printf("请输入数列的项数:”);

scanf(飞d”,&count);

res=sum(count);

printf(,,sum=%9.6f\n”,res);

syslem("pause");

return0;

)

答案:

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

s=s+a/b;

t=a;

a=a+b;

b=t;

)

第14题(20.0分)

/*--------------------------------------------------------------------------

【程序设计】

题目:给一个不多于5位的正整数,求它是儿位数。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

^include<stdio.h>

^include<stdlib.h>

intmainO

(

intnum,number:

intcount=0;

prinlf("输入一个不多于5位的正整数:”);

/**********Prog]、am**********/

/**********End**********/

printf(*\n*);

system("pause");

return0;

)

答案:scanf(飞d”,&number);

num=number;

if(num>99999){

printf("输入有误:”);

}

else{

do{

num=num/10;

count=count+l;

}while(num);

prinlf("/d是一个*d位数“,number,count);

)

第15题(20.0分)

/*---------------------------------------------------------------------------

【程序设计】

题目:从键盘输入一位整数i,计算其各位数字之和。

程序运行如样张所示。

汴意:请勿改动程序中的其他部分.请勿定义新的变量C

--------------------------------------------------------------------------*/

#include<stdio.h>

^include<stdlib.h>

intmainO{

inti,sum=0,a;

scant(飞d",&i);

/**********Prog]、am**********/

/**********End**********/

system("pause");

return0;

)

答案:while(i>0){

a=i%10;

sum+=a;

i=i/10;

}

printf(*%d\n*,sum);

第16题(20.0分)

/*-----------------------

【程序设计】

题目:有序列1,1,2,3,5,8,13,21....,定义一个函数求这个序列的任意项,

并调用函数输出序列的前20项。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

#include<stdio.h>

△include<stdlib.h>

intfib(inti){

intf;

/**********F,rogram**********/

/**********End**********/

)

intmainO(

inti;

for(i=l;i<=20;i++){

printf("序列的第%d项为%d\n”,i,fib(i));

)

system("pause");

return0;

)

答案:if(i==l||i=2)-:

f=l;

}else(

f=fib(i-l)+fib(i-2);

)

returnf;

第17题(20.0分)

【程序设计】

题目:输出所有满足条件的三位数,这个三位数的每个数字的阶乘之和等于这个三位数本身。

如145=1!+4!+5!

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

△include<stdio.h>

^include<stdlib.h>

inifact(intn){

intf=l,i;

for(i=n;i>l;i­){

f=f*i:

)

returnf;

)

intmainO{

intnum,ge,shi,bai;

/**********Prograin**********/

/**********End**********/

system("pause");

return0;

答案:for(num=100;num<=999;num++){

ge=num$10;〃个位

shi=num/10%10;//十位

bai=num/100;〃百位

if(fact(ge)+fact(shi)+fact(bai)==num){

printf(飞d”,num):

)

)

第18题(20.0分)

/*---------------------------------------------------------------------------

【程序设计】

题目:将时间4683分钟换算为天、小时和分输出。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

#include<stdio.h>

^include<stdlib.h>

intmain(){

intm=4683;

intdays,hours,minutes;

/**********Program*»********/

/**********End**********/

system("pause"):

return0;

)

答案:days=m/(24*60);

hours=m%(24*60)/60;

minutcs=ni-days*24*60-hours*60:

printf("%d分钟折合男d天%d小时%d分钟\n",m,days,hours,minutes);

第19题(20.0分)

/*---------------------------------------------------------------------------

【程序设计】

题目:定义一个函数用于输出指定行数的金字塔图形,输入行数,调用函数输出金字塔。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

^include<stdio.h>

#include<stdlib.h>

voidtriangle(intlines):

inti,j;

/**********Prograni**********/

/**********End**********/

intmainO{

intlines;

printf(〃输入金字塔的行数:");

scanf(“融i”,&lines);

trianglcdincs):

system("pause");

return0;

答案:for(i=l;i<=lines;i++){

for(j=l;j<=lines-i;j++){

printf(*");

)

for(j=l;j<=2*i-l;j++){

prinifE;

)

printf(*\n*);

第20题(20.0分)

【程序设计】

题目:编程从键盘上输入6个数,要求输出其中最大的前3个数。

程序运行如样张所示。

注意:请勿改动程序中的其他部分.请勿定义新的变量c

口include<stdio.h>

^include<stdlib.h>

闻efineN6

intmainO

inti,j,a[N+l];

printf("请输入%d个数:〃,N);

/**********Prograin**********/

/**********End**********/

prinlf("数组中最大的前三个数为:“);

for(i=l;i<=3;i++){

printf(*%-5d,z,a[i]);

printf("\n");

system(*pause*);

return0;

答案:for(i=l;i<=N;i++)

scanf&a[i]);

for(.i=l:.i<N:,j++)

for(i=j+l;i<=N;i++)

if(a[i]>a[j]){

a[0]=a[i];

a[i]=a[j:;

a[j]=a[0:;

第21题(20.0分)

【程序设计】

题目:输入三角形的三条边,判断是否构成出角三角形,如戾是直角三角形,

输出面积,保留一位小数,如果不是,输出不能构成亘角三角形。

程序运行如样张所示.

注意:请勿改动程序中的其也部分,请勿定义新的变量。

#include<stdio.h>

4include<stdlib.h>

floatarea(floata,floatb,float.c){

floats=0;

/**********Progran)**********/

/**********End**********/

returns;

intmain()

floata,b,c,s;

prinlf("请输入三角形的三条边长:\n");

scanf(^f,%f,%f",&a,&b,&c);

s=area(a,b,c);

if(s==O)printf("不能构成自角三角形\n");

elseprintf("构成直角三角形,面积:%.s);

system(*pausez/);

return0;

)

答案:

if(a*a==b*b+c*c)s=(float)l/2*b*c;

if(b*b==a*a+c*c)s=(float)l/2*a*c;

if(c*c==a*a+b*b)s=(float)l/2*a*b;

第22题(20.0分)

/*----------

【程序设计】

题目:定义一个函数,给定n(n<10),求1+12+123+1234+…+1234…,从键盘上接收n,

调用函数求值,并输出结果。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

*/

#includc<stdio.h>

#include<stdlib.h>

intsum(intn){

inti;

intres=0;

intitem=0;

/**********Prograni**********/

/**********End**********/

)

intmainO(

intnum;

printf("请输入n的值:");

scanf(“/d”,&num);

printf(*%d\n,z,sum(num)):

system(,,pausew);

return0;

答案:for(i=l;i<=n;i++){

item=item*10+i;

res=res+item;

)

returnres;

第23题(20.0分)

/*----------------

【程序设计】

题目:一个数如果恰好是等于它的因子之和,这个数就称为"完数"。

例如,6的因子是1,2,3,而6=1+2+3,因此6是完数。

定义函数判断完数,并求出其因子。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

-———————————————————————————————————―......-___--------_____y

#include<stdio.h>

#include<stdlib.h>

voidperfect(intnumber)

(

inti=0;

intj=0;

intk;

intsum=0;

intarr[100]={0};

/**********F,rogram**********/

/**********End**********/

if(number==sum){

printf("%3d是完数,它的因子:",sum);

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

printf(z,%d”,arr[k]);

)

printf(*\n*);

)

}

intmain(){

intnum=0;

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

perfect(num);

}

system("pause");

return0;

}

答案:for(i=1;i<=number/2;i++){

if(number%i==0){

arr[j]=i;

j++;

sum=sum+i;

)

1

第24题(20.0分)

----------

【程序设计】

题目:在「500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

甘include<stdio.h>

△include<stdlib.h>

intfun(intnum){

/**********Prograin**********/

/**********End**********/

)

intmainO(

inti;

printf("「500中,同时满足用3除余2,用5除余3,用7除余2的整数有:");

for(i=l;i<=500;i++){

if(fun(i)){

printfC%-5d*»i);

)

)

printf("\n");

system("pause"):

return0;

}

答案:if(num%3==2&&num%5==3&&num%7==2){

return1;

}else{

return0;

)

第25题(20.0分)

【程序设计】

题目:王二赚到了人生的第一个100万,他存入银行账户用于理财,每年可以获得8%的收益,

在每年的最后一天,他会取出10万来消费,剩下的继续理财。

编写程序计算过多少年以后,账户上的钱会被取完。

程序运行如样张所示.

注意:请勿改动程序中的其他部分,请勿定义新的变量。

---------------------------------------------------------------------------------*/

#include<stdio.h>

△include<stdlib.h>

intmainO

(

intmoney=100:

intyear=1;

/**********Pr()gram**********/

/**********End**********/

printf(*\n*):

system("pause");

return0;

答案:do{

money+=money*0.08;

money=money-10;

year++;

}while(money>0);

printf(“为d年后账户上的钱会被花完",year):

第26题(20.0分)

【程序设计】

题目:鸡兔关在一个笼子,共有98个头,386只脚。用穷举法编程计算鸡,兔各多少只。

程序运行如样张所示。

注意:请勿改动程序中的其他部分,请勿定义新的变量。

#include<stdio.h>

*include<stdlib.h>

intmainO

(

intx,y=98;

/**********|)rogram**********/

/**********End**********/

system("pause");

return0;

1

答案:for(x=0;x<=98;x++){

if(2*x+4*y==386){

printf("共有%d只鸡,与d只兔子\n”,x,y);

)

y=y-i;

)

第27题(20.0分)

/*-------------------------------------------------

【程序设计】

题目:求任意两个整数之间的所有同时能被3,4,5整除的数。

程序运行如样张所示。

注意:请勿改动程序中的其也部分,请勿定义新的变量。

--------------------------------------------------------------------------*/

^include<stdio.h>

^include<stdlib.h>

intmainO(

intstart,end,i;

printf("输入开始数字:");

scanf&start);

printf("输入结束数字

scanf&end);

printf("*d和%d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论