编程题222doc.docx
- 文档编号:11041897
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:61
- 大小:29.54KB
编程题222doc.docx
《编程题222doc.docx》由会员分享,可在线阅读,更多相关《编程题222doc.docx(61页珍藏版)》请在冰豆网上搜索。
编程题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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 222 doc