编程题222doc.docx

上传人:b****7 文档编号:11041897 上传时间:2023-02-24 格式:DOCX 页数:61 大小:29.54KB
下载 相关 举报
编程题222doc.docx_第1页
第1页 / 共61页
编程题222doc.docx_第2页
第2页 / 共61页
编程题222doc.docx_第3页
第3页 / 共61页
编程题222doc.docx_第4页
第4页 / 共61页
编程题222doc.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

编程题222doc.docx

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

编程题222doc.docx

编程题222doc

01、从键盘输入三个整数a、b、c,输出其中最大的数。

#include"stdio.h"

intmain()

{

inta,b,c,max;

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

if(a>b)

{if(a>c)max=a;}

else

{if(b>c)max=b;

elsemax=c;

}

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

}

2、为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:

月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。

请编写程序计算电费。

输入格式:

输入在一行中给出某用户的月用电量(单位:

千瓦时)。

输出格式:

在一行中输出该用户应支付的电费(元),结果保留两位小数,格式如:

"cost=应付电费值";若用电量小于0,则输出"InvalidValue!

"。

#include

intmain()

{

doublei;

scanf("%lf",&i);

if(i<0)

{

printf("InvalidValue!

\n");

}

elseif(i<=50)

{

printf("cost=%.2f\n",0.53*i);

}

else

{

printf("cost=%.2f\n",0.53*50+(i-50)*0.58);

}

return0;

}

3、求出0~999之间的所有“水仙花数”并输出。

“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3,则153是一个“水仙花数”。

#include

intmain()

{

inti,j,k;

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

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

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

if(100*i+10*j+k==i*i*i+j*j*j+k*k*k)

printf("%d",100*i+10*j+k);

printf("\n");

 

}

#include

voidmain(void)

{

inti,j,k,n;

printf("水仙花数是:

");

for(n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

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

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

}

}

4、找出不超过1000的十位数字为1,个位数字为3或7的所有数。

例如:

13、17、113、317等。

#include

intmain()

{

inti;

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

{

if((i%10==3||i%10==7)&&i/10%10==1)

printf("%d",i);

}

return0;

}

5、输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

在一行中输出逆序后的字符串。

#include

#include

intmain()

{

chara[80],b[80];

inti,n,j=0;

gets(a);

n=strlen(a);

for(i=n-1;i>=0;i--)

b[j++]=a[i];

b[j]='\0';

strcpy(a,b);

puts(a);

return0;

}

6、有人想将手中一张面值100元的人民币换成5元、1元、0.5元面值的零钱100张,以上三种面值的零钱至少有一张,输出每种换法中各种面值零钱的张数。

#include

intmain()

{

inti,j,k,c=0;

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

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

{

k=100-i-j;

if(i*5+j+0.5*k==100)

{

c++;

printf("%d%d%d\n",i,j,k);

}

}

}

7、根据公式编写计算排列数的程序,(要求:

利用子函数实现阶乘的计算,分别用迭代法和递归法实现,并调用其中的一个子函数实现公式的计算)

迭代法:

#include

intstr(intm,intn);

main()

{

intn,m,jieguo;

printf("请输入m的值:

");

scanf("%d",&m);

printf("请输入n的值:

");

scanf("%d",&n);

jieguo=str(m,n);

printf("结果为%d",jieguo);

}

intstr(intm,intn)

{

intsum1=1,sum2=1,i;

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

sum1=sum1*i;

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

sum2=sum2*i;

i=sum1/sum2;

returni;

}

递归法

#include

longfact(intn)

{

if(n==0||n==1)

return1;

else

return(n*fact(n-1));

}

main()

{

inti,n,m,r;

longp,q;

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

p=fact(n);

q=fact(n-m);

r=p/q;

printf("%d",r);

}

8、有一个长度为40的数组score,类型为double,让用户输入n(不大于40)个数,完成以下任务:

(1)写函数完成将用户输入的n个数进行升序排序:

voidsort(doublescore[],intn);

(2)让用户输入一个数x,写函数完成将此数插入到已排好序的数组中:

voidinsert(doublescore[],intn,doublex);

#include

voidsort(doublescore[],intn)

{

inti,j;

doublet;

for(i=0;i

for(j=i+1;j

if(score[i]>score[j])

{

t=score[i];

score[i]=score[j];

score[j]=t;

}

}

voidinsert(doublescore[],intn,doublex)

{

inti,j;

doublet,k;

for(i=0;i

if(score[i]>x)

{

t=score[i];

score[i]=x;

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

{

k=score[j];

score[j]=t;

t=k;

}

break;

}

}

main()

{

doublescore[40],x;

intn,i;

printf("请输入数的个数:

");

scanf("%d",&n);

printf("请输入%d个数:

",n);

for(i=0;i

scanf("%lf",&score[i]);

sort(score,n);

for(i=0;i

printf("%lf",score[i]);

printf("\n请输入一个要插入的数:

");

scanf("%lf",&x);

insert(score,n,x);

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

printf("%lf",score[i]);

}

9、有一个长度为40的数组score,类型为double,让用户输入n(不大于40)个数,完成以下任务:

(1)写函数Sort,将用户输入的n个数进行排序

(2)写函数Count,返回数组中小于等于平均值的数的个数

(3)让用户输入一个数,将此数插入到已经拍好序的数组a中

#include

voidsort(doublescore[],intn)

{

inti,j;

doublet;

for(i=0;i

for(j=i+1;j

{

if(score[i]>score[j])

{

t=score[i];

score[i]=score[j];

score[j]=t;

}

}

}

intcount(doublescore[],intn)

{

inti,count=0;

doublesum=0,ave;

for(i=0;i

sum+=score[i];

ave=(double)sum/n;

for(i=0;i

{

if(score[i]<=ave)

count++;

}

returncount;

}

voidinsert(doublescore[],intn,doublex)

{

inti,j;

doublet1,t2;

for(i=0;i

if(score[i]>x)

{

t1=score[i];

score[i]=x;

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

{

t2=score[j];

score[j]=t1;

t1=t2;

}break;

}

}

intmain()

{

doublescore[40],x;

intn,i;

printf("请输入数的个数:

");

scanf("%d",&n);

printf("请输入%d个数:

",n);

for(i=0;i

scanf("%lf",&score[i]);

sort(score,n);

printf("升序为:

");

for(i=0;i

printf("%10lf",score[i]);

printf("\n");

printf("小于等于平均值的个数为:

%d\n",count(score,n));

printf("请输入一个待插入的数:

");

scanf("%lf",&x);

insert(score,n,x);

printf("插入后结果为:

");

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

printf("%10lf",score[i]);

return0;

}

10、从键盘输入三个整数a、b、c,将其按小到大排列。

#include"stdio.h"

voidmain()

{

inta,b,c,t;

printf("pleaseinputthreenumbers\n");

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

if(a>b)/*实现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;}

printf("%d<%d<%d\n",a,b,c);

}

11、输入n值,输出如图所示高和上底均为n的等腰梯形。

图为当n=5时

#include

intmain()

{

inti,j,a,b,n,k,c;

scanf_s("%d",&n);

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

{

for(intk=n-i;k>=0;k--)

{

printf("");

}

for(j=1;j

{

printf("*");

}

printf("\n");

}

scanf_s("%d");

}

12、从键盘任意输入10个整数,计算其中所有正整数之和,并输出结果。

#include

intmain()

{

intarray[10];

inti,sum=0;

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

scanf_s("%d",&array[i]);

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

{

if(array[i]>0)

sum+=array[i];

}

printf("输入的数中所有正数之和为:

%d",sum);

return0;

}

13、输入一个整数,将其数值按小于10,10~99,100~999,1000以上分类并显示(例如:

输入358时,显示358is100to999)。

#include

intmain()

{

intn;

scanf_s("%d",&n);

if(n<10&&n>0)

printf("%dis<10\n",n);

elseif(n>=10&&n<=99)

printf("%dis10to99\n",n);

elseif(n>=100&&n<=999)

printf("%dis100to999\n",n);

elseif(n>=1000)

printf("%dis>=1000\n",n);

}

14、要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:

输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:

在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

#include

intmain()

{

intm,n;

inti;

intcnt=0;

intsum=0;

scanf_s("%d%d",&m,&n);

if(m==1)

m=2;

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

intisPrime=1;

intk;

for(k=2;k

{

if(i%k==0)

{

isPrime=0;

break;

}

}

if(isPrime){

cnt++;

sum+=i;

}

}

printf("%d%d\n",cnt,sum);

return0;

}

15、利用公式e=1/1!

+1/2!

+1/3!

+…+1/n!

计算e的值并输出(要求:

利用子函数实现n!

的计算,分别迭代法和递归法实现,并调用其中的一个子函数实现e的计算,误差小于10-5)

#include

doublejiecheng(doublen);

intmain()

{

doublea,n;

printf("请输入n的值:

");

scanf("%lf",&n);

a=jiecheng(n);

printf("e=%0.5lf\n",a);

 

return0;

}

doublejiecheng(doublen)

{

doublei,j,s,t=0,u=1;

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

{

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

{

u=u*j;

}

s=1/u;

t=t+s;

}

returnt;

}

16、用户输入n(不大于40)个整数,输入整数值x,完成以下任务:

(1)写函数Fun1,实现将用户输入的n个整数进行升序排列

(2)写函数Fun2,查找数组中是否有整数x,如果有,则返回下标,如果没有,则返回-1

#include

voidFun1(intb[40],intm);

intFun2();

main()

{

inta[40];

inti,n,s,t;

scanf("%d",&n);

for(i=0;i

{

scanf("%d",&a[i]);

}

Fun1(a,n);

for(i=0;i

{

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

}

printf("\n");

scanf("%d",&s);

t=Fun2(a,s,n);

printf("%d",t);

}

voidFun1(intb[40],intm)

{

inti,j,t;

for(i=0;i

{

for(j=m-1;j>i;j--)

{

if(b[j-1]>b[j])

{

t=b[j];

b[j]=b[j-1];

b[j-1]=t;

}

}

}

}

intFun2(intc[40],intp,intk)

{

inti,j;

intf;

for(i=0;i

{

if(p==c[i])

{

f=i;

break;

}

else

f=-1;

}

returnf;

}

17、编程求出1!

+2!

+3!

+…..+8!

+9!

+10!

的值并输出。

#include

voidmain()

{

inti,t=1,s=0;

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

{

t*=i;

s+=t;

}

printf("%d",s);

}

18、求sn=a+aa+aaa+aaaa+aaaaa.....的值,a的值n的值均由用户指定。

例如:

a=2,n=4,s=2+22+222+2222.

#include

intmain()

{

inttn=0,a,i,sn=0,n;

scanf("a=%d,n=%d",&a,&n);

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

{

sn=sn+tn;

tn=10*tn+a;

}

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

}

19、输入一个三位数,然后进行个位和百位的置换,如234,转换成432。

#include

voidmain()

{

inta,b,c,n;

scanf("%d",&n);

a=n/100;

b=n%100/10;

c=n%10;

printf("%d%d%d\n",c,b,a);

}

20、某歌手大赛,共有10个评委打分,分数采用百分制整数,去掉一个最高分,去掉一个最低分,然后取平均分,得到歌手的成绩,编程实现#include

main()

{

inta[10],i,j,t,sum=0;

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

{

scanf("%d",&a[i]);

}

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

{

for(j=9;j>i;j--)

{

if(a[j-1]>a[j])

{

t=a[j-1];

a[j-1]=a[j];

a[j]=t;

}}}

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

{

sum=sum+a[i];

}

printf("%d",sum/8);

}

21、一个四位数恰好等于它的前两位加后两位和的平方,编程找出所有满足要求的四位数。

比如:

3025=(30+25)*(30+25)。

#include

main()

{

inti,g,s,b,j,q,h;

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

{

j=i/1000;

b=i%1000/100;

s=i%1000%100/10;

g=i%1000%100%10;

q=j*10+b;

h=s*10+g;

if((q+h)*(q+h)==i)

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

}

22、输入n(n<=40)个自然数放在数组num中,完成以下任务

(1)写函数CountJi,计算数组中奇数的个数,主函数调用并输出奇数个数

(2)写函数SortJi,将数组中的奇数按照从大到小排序,主函数调用并输出排序后结果

例如:

输入数据为12345678910

调用SortJi函数,num中内容为:

92745638110

#include

#defineSIZE40

intCountJi(inta[],intn);

voidSortJi(inta[],intn);

main()

{

intnum[SIZE];

inti,n,count;

printf("请输入数的个数:

\n");

scanf("%d",&n);

printf("请输入%d个数:

",n);

for(i=0;i

scanf("%d",&num[i]);

count=CountJi(num,n);

printf("奇数的个数为:

");

printf("%d",count);

SortJi(num,n);

printf("\n数组中奇数降序排列为:

");

for(i=0;i

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

}

intCountJi(inta[],intn)

{

inti,count=0;

for(i=0;i

if(a[i]%2!

=0)

count++;

returncount;

}

voidSortJi(inta[],intn)

{

inti,k,t,j;

for(i=0;i

{

if(a[i]%2!

=0)

{

k=i;

}

for(j=k+1;j

{

if(a[j]%2!

=0)

{

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

{

t=a[k];

a[k]=a[j];

a[j]=t;

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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