编程题c.docx

上传人:b****9 文档编号:26034677 上传时间:2023-06-17 格式:DOCX 页数:19 大小:18.96KB
下载 相关 举报
编程题c.docx_第1页
第1页 / 共19页
编程题c.docx_第2页
第2页 / 共19页
编程题c.docx_第3页
第3页 / 共19页
编程题c.docx_第4页
第4页 / 共19页
编程题c.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

编程题c.docx

《编程题c.docx》由会员分享,可在线阅读,更多相关《编程题c.docx(19页珍藏版)》请在冰豆网上搜索。

编程题c.docx

编程题c

编程题

1

(2)键盘输入10个实型数,求其倒数的和并输出.

参考答案

#include"stdio.h"

#include"math.h"

main()

{

inti;

floata,sum=0;

printf("Pleaseinput10number:

");

for(i=0;i<10;i++)

{

scanf("%f",&a);

sum+=1.0/a;

}

printf("Theresultis:

%f\n",sum);

}

2(3)键盘输入10个正实型数,求其方根的和并输出。

参考答案

#include"stdio.h"

#include"math.h"

main()

{

inti;

floata,sum=0;

printf("Pleaseinput10numberwhichareallgreatthan0:

");

for(i=0;i<10;i++)

{

scanf("%f",&a);

if(a<0)

continue;

sum+=sqrt(a);

}

printf("Theresultis:

%f\n",sum);

}

3(4)计算s=1-2!

+3!

-4!

+…-10!

的值并输出。

参考答案

#include"stdio.h"

#include"math.h"

main()

{

inti;

longsum=0,b=-1;

for(i=1;i<=10;i++)

{

b=-1*i*b;

sum+=b;

}

printf("Theresultis:

%f\n",sum);

}

4(5)编写一个程序,从键盘输入一个三位整数,将它们逆序输出。

例如输入127,输出721。

参考答案

#include"stdio.h"

main()

{

intnum,a,b,c;

printf("Pleaseinputthenumber:

");

scanf("%d",&num);

a=num/100;

b=(num-100*a)/10;

c=num-100*a-10*b;

a+=b*10+c*100;

printf("Theresultis%d\n",a);

}

5(7)打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

例如:

153是一水仙花数,因为153=1^3+5^3+3^3.

参考答案

main()

{

inti,j,k,s;

for(s=100;s<=999;s++)

{

i=s/100;

j=s/10-10;

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

if(i*i*i+j*j*j+k*k*k==s)

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

else

continue;

}

}

6(8)编写一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。

设:

90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

参考答案

#include"stdio.h"

main(){

inta,b;

printf("Pleaseinputthescore:

");

scanf("%d",&a);

b=a/10;

switch(b){

case10:

case9:

printf("A!

\n");

break;

case8:

printf("B!

\n");

break;

case7:

printf("C!

\n");

break;

case6:

printf("D!

\n");

break;

default:

printf("E!

\n");

break;

}

}

7(9)计算s=1-1/3+1/5-1/7+…1/101的值并输出。

参考答案

main()

{

inti,f=1;

floatsum=0.0;

for(i=1;i<=101;i=i+2)

{sum=sum+1.0/i*f;

f=(-1)*f;

}

printf("sum=%f\n",sum);

}

8(11)输入一个正整数,要求以相反的顺序输出该数。

例如输入12345,输出位54321。

参考答案

main()

{intn;

printf("Pleaseentern:

");

scanf("%d",&n);

while(n>0)

{printf("%d",n%10);

n=n/10;

}}

9(21)在主函数中输入8个整数,调用函数对其进行排序(从小到大),排序方法不限,

最后在主函数中输出结果。

参考答案

#include"stdio.h"

voidmain()

{intnum[8],i;

voidtaxis(intp[],int);

printf("Input8integers:

\n");

for(i=0;i<8;i++)

scanf("%d",num+i);

taxis(num,8);

printf("Theresult:

\n");

for(i=0;i<8;i++)

printf("%d,",num[i]);

}

voidtaxis(intp[],intn)

{

inti,j;

intcode,temp;

for(i=0;i

{

code=i;

for(j=i+1;j

if(p[j]

code=j;

if(code!

=i)

{

temp=p[i];

p[i]=p[code];

p[code]=temp;

}

10(41)从键盘输入十个整数,用合并排序法对输入的数据按照从小到大的顺序进行排序,

将排序后的结果输出。

参考答案

#defineN16

#include"stdio.h"

merge(a,b,c,m)/*数组合并函数:

将长度为m的*/

inta[],b[],c[],m;/*数组a、b合并到c*/

{inti=0,j=0,k=0;

while(i

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

c[k++]=b[j++];/*将a[i]、*b[j]中的小*/

elsec[k++]=a[i++];/*者存入c[k]*/

while(i

while(j

}

mergesort(w,n)/*数组排序函数:

对长度为n*/

intw[],n;/*的数组w排序*/

{inti,t,ra[N];

for(i=1;i

if(i==n)

{if(n>2)/*递归调用结束条件*/

{mergesort(w,n/2);/*将数组w一分为二,递归调*/

mergesort(w+n/2,n/2);/*用mergesort*/

merge(w,w+n/2,ra,n/2);/*将排序后的两数组重新合并*/

for(i=0;i

w[i]=ra[i];

}elseif(*w>*(w+1))

{t=*w;*w=*(w+1);*(w+1)=t;

}}

elseprintf("Error:

sizeofarrayisnotapowerof2/n");

}

main()

{inti;

staticintkey[N]={4,3,1,81,45,8,0,4,-9,26,7,4,2,9,1,-1};

mergesort(key,N);

for(i=0;i

printf("%d",key[i]);

printf("\n");

}

11(44)编写函数,采用递归方法将任一整数转换为二进制形式。

参考答案

turn(n,a,k)

intn,a[],k;

{if(n>0)

{a[k]=n%2;

turn(n/2,a,k-1);

}

elsereturn;

}

main()

{inti,n,a[16]={0};

printf("\nPleaseentern:

");

scanf("%d",&n);

turn(n,a,15);

for(i=0;i<16;i++)

printf("%d",a[i]);}

12(45)编写函数,采用递归方法在屏幕上显示如下杨辉三角形:

  1

  11

  121

  1331

  14641

  15101051

  …… …… …… …… ……

参考答案

#include

main()

{inti,j,n=13;

printf("N=");

while(n>12)

scanf("%d",&n);/*最大输入值不能大于12*/

for(i=0;i<=n;i++)/*控制输出N行*/

{for(j=0;j<12-i;j++)

printf("");/*控制输出第i行前面的空格*/

for(j=1;j

printf("%6d",c(i,j));/*输出第i行的第j个值*/

printf("\n");

}

}

intc(x,y)/*求杨辉三角形中第x行第y列的值*/

intx,y;

{intz;

if((y==1)||(y==x+1))

return

(1);/*若为x行的第1或第x+1列,则输出1*/

else/*否则;其值为前一行中第y-1列与第y列值之和*/

z=c(x-1,y-1)+c(x-1,y);

return(z);

}

13(54)编制一个计算函数y=f(x)的值程序,其中:

14(70)任意输入一个偶数,请将它分解为两个素数之和。

参考答案

main()

{intj,k,n,m;

printf("Pleaseentern:

");

scanf("%d",&n);

for(j=2;j

{for(k=2;k

if(j%k==0)break;/*j能够被小于它的一个数整除就不是素数*/

if(k>=j)/*j是素数*/

{m=n-j;

for(k=2;k

if(m%k==0)break;

if(k>=m)/*m也是素数,输出结果*/

{printf("%4d=%4d+%4d\n",n,j,m);

break;

}

}

}

}

15(90)编写程序,输入三角型的三条边长,求其面积。

注意:

对于不合理的边长输入要输出数据错误的提示信息。

参考答案

#include"math.h"

main()

{intflag=0;

floata,b,c,s;

do

{printf("Pleaseenterabc:

");

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

if(a>b+c||b>a+c||c>a+b)

flag=1;

}while(flag);

s=(a+b+c)/2;

printf("S=%f",s=sqrt((s-a)*(s-b)*(s-c)));

}

16(95)输入n值,输出如图所示矩形。

******

******

******

******

******

******

n=6时的矩形

参考答案

分析:

打印此图形用两重循环实现。

图形要重复n行,故采用循环结构实现循环n次,循环体内部打印一行''*''号,把上述思路表示为:

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

打印一行''*''号;

每行有n个''*''号,再采用循环结构实现n次循环,循环内部用格式输出语句打印一个''*''号,即:

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

printf("*");

按照上述思路,实现打印矩形。

参考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:

");

scanf("%d",&n);

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

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

printf("*");

printf("\n");

}}

17(96)输入n值,输出如图所示平行四边形。

******

******

******

******

******

******

n=6时的平行四边形

参考答案

分析:

此题和上题的区别在于每行''*''的数量逐行减少,可以使用上题控制空格个数的思路来控制''*''号的个数,请注意每行''*''的个数都是奇数。

参考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:

");

scanf("%d",&n);

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

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

printf("");

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

printf("*");

printf("\n");

}}

18(97)输入n值,输出如图所示高为n的等腰三角形。

*

***

*****

*******

*********

***********

n=6时的等腰三角形

参考答案

分析:

此题图形是第3题图形的垂直反转,在编程上我们可以变换一个思路。

对于图形中的第i行(1≤i≤n),共需要输出2n-i个字符,其中前面的i-1个字符为空格,后面的字符为''*''号。

按照这一思路可以编写出如下程序。

参考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:

");

scanf("%d",&n);

for(i=1;i<=n;i++)/*重复输出图形的n行*/

{for(j=1;j<=2*n-i;j++)/*重复输出图形一行中的每个字符*/

if(j<=i-1)printf("");/*输出前面的空格*/

elseprintf("*");/*输出后面的*号*/

printf("\n");

}

}

19(108)编程求sum=1!

+2!

+3!

+……+20!

20(110)编写程序,求S=1/(1*2)+1/(2*3)+1/(3*4)+……前50项之和。

参考答案

#include"stdio.h"

main()

{

inti;

floatsum=0;

for(i=1;i<=50;i++)

{

sum+=1.0/(i*(i+1));

}

printf("sum=%f\n",sum);

}

21(117)统计在[1030-25830]之间有多少个数能同时被13和27整除。

参考答案

#include"stdio.h"

main()

{

inti,num=0;

for(i=1030;i<=25830;i++)

{

if((i%13==0)&&(i%27==0))

num++;

}

printf("num=%d\n",num);

}

22(121)统计在[30-15810]之间有多少个数能被23整除,而不能被37整除。

参考答案

#include"stdio.h"

main()

{

inti,num=0;

for(i=30;i<=15810;i++)

{

if((i%23==0)&&(i%37!

=0))

num++;

}

printf("num=%d\n",num);

}

23(122)统计在[210-15870]之间有多少个数能被19整除,而不能被21整除。

参考答案

#include"stdio.h"

main()

{

inti,num=0;

for(i=210;i<=15870;i++)

{

if((i%19==0)&&(i%21!

=0))

num++;

}

printf("num=%d\n",num);

}

24(133)求一维整型数组中零的个数。

要求:

主函数定义数组a[10]={-15,-22,13,44,-25,66,0,88,-39,10},

调用自定义函数求出零的个数,然后在主函数中输出结果。

参考答案

#include"stdio.h"

main()

{

inta[10]={-15,-22,13,44,-25,66,0,88,-39,10},n;

intnum(intx[10]);

n=num(a);

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

}

intnum(intx[10])

{

inti,n=0;

for(i=0;i<=9;i++)

if(x[i]==0)

n++;

return(n);

}

25(137)统计数组中小于数组元素平均值的元素的个数。

要求:

主函数定义一维整型数组a[10]={12,34,56,78,90,9,87,65,43,21},

调用自定义函数统计小于数组元素平均值的元素的个数,并在主函数中输出结果

参考答案

#include"stdio.h"

main()

{

inta[10]={12,21,34,43,56,65,78,87,90,9},n;

intnum(inta[10]);

n=num(a);

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

}

intnum(inta[10])

{

inti,n=0;

floataver,sum=0;

for(i=0;i<=9;i++)

sum+=a[i];

aver=sum/10;

for(i=0;i<=9;i++)

if(a[i]

n++;

return(n);

}

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

当前位置:首页 > 工程科技 > 兵器核科学

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

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