12 KiB
12 KiB
C语言-1
/*-------------------------------------------------------
输入三角形三边长,判断能否构成三角形,如能构成则输出其面积,不能则给出错误提示。
(海伦公式):
一个三角形,边长分别为a、b、c,面积S可由一下公式求得
S=√p(p-a)(p-b)(p-c)
公式里p为半周长(周长的一半):P=(a+b+c)/2
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
/**********Program**********/
double S(int a, int b, int c){
return (a+b+c)/2;
}
double AREA(double t, int a, int b, int c){
return sqrt(t*(t-a)*(t-b)*(t-c));
}
/********** End **********/
main()
{
int a,b,c;
double t,area;
printf("请输入三个正整数,表示三角形的三个边长:");
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
t=S(a,b,c);
area=AREA(t,a,b,c);
printf("三角形的面积是:%f\n",area);
}
else
printf("不能构成三角形\n");
}
C语言-2
/*-------------------------------------------------------
将一张100元钞票换成等值的10元,5元,2元和1元的小钞,每次换成40张小钞,要求每一种小钞都要有,编程求出所有可能的换法总数输出并输出各换法的组合。(注:使用for循环)
结果:
10元钞票有1张,5元钞票有5张,2元钞票有31张,1元钞票有3张
10元钞票有1张,5元钞票有6张,2元钞票有27张,1元钞票有6张
10元钞票有1张,5元钞票有7张,2元钞票有23张,1元钞票有9张
。
。
。
总共有34种换法
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,d,s;
s=0;
/**********Program**********/
for(a=1;a<10;a++){
for(b=1;b<20;b++){
for(c=1;c<50;c++){
for(d=1;d<100;d++){
if(a*10+b*5+c*2+d == 100 && a+b+c+d==40){
s++;
/********** End **********/
printf("10元钞票有%d张,5元钞票有%d张,2元钞票有%d张,1元钞票有%d张\n",a,b,c,d);
}
}
}
}
}
printf("\n总共有%d种换法\n",s);
}
C语言-3
/*-------------------------------------------------------
编程将一个正整数分解成质因数(注:使用while循环)
例如:
输入 90
输出 90=2*3*3*5
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,i;
printf("请输入一个正整数:");
scanf("%d",&n);
printf("%d=",n);
i=2;
/**********Program**********/
while(n > i){
if(n%i==0){
printf("%d*", i);
n/=i;
}else{
i++;
}
}
/********** End **********/
printf("%d\n",n);
}
C语言-4
/*-------------------------------------------------------
韩信点兵,韩信带1500名士兵打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。编程计算还有多少士兵? (注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
/**********Program**********/
for(i=1000;i<1100;i++){
if(i%3==2 && i%5==4 && i%7==6)
/********** End **********/
printf("还有%d名士兵\n",i);
}
}
C语言-5
/*-------------------------------------------------------
百马百担,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,每匹马都要驮货,编程计算大马(dm)、中马(zm)、小马(xm)各有多少匹。 (注:使用for循环)
结果:
大马有2匹,中马有30匹,小马有68匹
大马有5匹,中马有25匹,小马有70匹
大马有8匹,中马有20匹,小马有72匹
大马有11匹,中马有15匹,小马有74匹
大马有14匹,中马有10匹,小马有76匹
大马有17匹,中马有5匹,小马有78匹
-------------------------------------------------------*/
#include <stdio.h>
void main() {
int dm,zm,xm;
/**********Program**********/
for(dm=1;dm<66;dm++){
for(zm=1;zm<100;zm++){
for(xm=2;xm<200;xm+=2){
if(dm*3+zm*2+xm/2 == 100 && dm+zm+xm==100)
/********** End **********/
printf("大马有%d匹,中马有%d匹,小马有%d匹\n",dm,zm,xm);
}
}
}
}
C语言-6
/*-------------------------------------------------------
鸡兔同笼,《孙子算经》中记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”,编程计算鸡和兔子各有多少只。(注:使用for循环)
结果:
鸡有23只,兔有12只
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int j,t;
/**********Program**********/
for(j=1;j<35;j++){
for(t=1;t<35;t++){
if(j*2+t*4==94 && j+t == 35)
/********** End **********/
printf("鸡有%d只,兔有%d只\n",j,t);
}
}
}
C语言-7
/*-------------------------------------------------------
编程输出1000以内的完数,所谓完数是指一个数的所有因子(包含1但不包含其本身)之和等于这个数本身。(例:28=1+2+4+7+14)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j,s;
for(i=2;i<=1000;i++)
{
s=0;
/**********Program**********/
for(j=1;j<i;j++){
if(i%j==0){
s+=j;
}
}
/********** End **********/
if(s==i)
printf("%d\n",i);
}
}
C语言-8
/*-------------------------------------------------------
编程求所有能被3且能被5且能被7整除的三位数并输出(每个数字占5字符宽度,5个一行)。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,k;
k=0;
for(i=100;i<=999;i++)
{
/**********Program**********/
if(i%3 ==0 && i%5==0 && i%7==0){
/********** End **********/
printf("%5d",i);
k++;
if(k%5==0)
printf("\n");
}
}
}
C语言-9
/*-------------------------------------------------------
输入一个整数,判断是否为回文数(所谓回文数就是左右对称的数)
(注:使用while循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,t,s;
s=0;
scanf("%d",&n);
t=n;
/**********Program**********/
while(n){
s*=10;
s+=n%10;
n/=10;
}
/********** End **********/
if( t==s )
printf("yes\n");
else
printf("no\n");
}
C语言-10
/*-------------------------------------------------------
百钱买百鸡,《算经》一书中记载
“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
要求每一种鸡都要有,编程输出公鸡(gj)、母鸡(mj)、小鸡(xj)各有多少只。
结果:(注:使用for循环)
公鸡有4只,母鸡有18只,小鸡有78只
公鸡有8只,母鸡有11只,小鸡有81只
公鸡有12只,母鸡有4只,小鸡有84只
-------------------------------------------------------*/
#include <stdio.h>
void main()
{
int gj,mj,xj;
/**********Program**********/
for(gj=1;gj<20;gj++){
for(mj=1;mj<34;mj++){
for(xj=3;xj<300;xj+=3){
if(gj+mj+xj==100 && gj*5+mj*3+xj/3 == 100)
/********** End **********/
printf("公鸡有%d只,母鸡有%d只,小鸡有%d只\n",gj,mj,xj);
}
}
}
}
C语言-11
/*-------------------------------------------------------
《孙子算经》中有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?” (注:使用while循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
i=1;
/**********Program**********/
while(1){
if(i%3==2&&i%5==3&&i%7==2)
/********** End **********/
{
printf("%d\n",i);
break;
}
i++;
}
}
C语言-12
/*-------------------------------------------------------
61.【程序功能】猴子吃桃,猴子第一天摘下若干个桃子, 吃了总数的一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都这样吃。到第十天时, 发现只有一个桃子了。编程求第一天摘了多少个桃子。(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
void main() {
int i,t;
t=1;
/**********Program**********/
for(i=0;i<9;i++){
t=(t+1)*2;
}
/********** End **********/
printf("第一天共摘了%d只桃\n",t);
}
C语言-13
/*-------------------------------------------------------
编写函数(sum),计算1+2+3+…+n的和,n由键盘输入。
-------------------------------------------------------*/
#include <stdio.h>
int sum(int n);
main()
{
int n,s;
printf("请输入一个整数n:");
scanf("%d",&n);
s=sum(n);
printf("1+2+...+%d=%d\n",n,s);
}
/**********Program**********/
int sum(int n){
int s = 0, i;
for(i=1;i<=n;i++){
s += i;
}
return s;
}
/********** End **********/
C语言-14
/*-------------------------------------------------------
编程用“碾转相除法”求两个整数的最大公约数,两个整数由键盘输入。(注:使用while循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int m,n,t;
printf("请输入两个整数:");
scanf("%d%d",&m,&n);
t=m%n;
/**********Program**********/
while(t){
m = n;
n = t;
t = m%n;
}
/********** End **********/
printf("最大公约数是:%d\n",n);
}
C语言-15
/*-------------------------------------------------------
一个正整数加上100后是完全平方数,加上268后还是一个完全平方数,编程求出这样的数并输出(在10000以内求)。
结果:
21
261
1581
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k;
for(i=1;i<=10000;i++)
{
/**********Program**********/
if(pow((int)sqrt(i+100), 2) == i+100 && pow((int)sqrt(i+268), 2) == i+268){
/********** End **********/
printf("%d\n",i);
}
}
}
C语言-16
/*-------------------------------------------------------
输入一个整数,输出该数所有因子(1和它本身除外)之和。例如6的因子有2和3,则输出5
(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,i,s;
printf("请输入一个整数n:");
scanf("%d",&n);
s=0;
/**********Program**********/
for(i=2;i<n;i++){
if(n%i==0){
s+=i;
}
}
/********** End **********/
printf("s=%d\n",s);
}
C语言-17
/*-------------------------------------------------------
编程求100以内的所有奇数之和,以及偶数之和。(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,odd,even;
odd=even=0;
/**********Program**********/
for(i=1;i<=100;i++){
if(i%2){
odd+=i;
}else{
even+=i;
}
}
/********** End **********/
printf("奇数之和为:%d,偶数之和为:%d\n",odd,even);
}
C语言-18
/*-------------------------------------------------------
输出100-1000以内所有的回文数,一行10个。(注:每个数占5个字符)
101 111 121 131 141 151 161 171 181 191
202 212 222 232 242 252 262 272 282 292
303 313 323 333 343 353 363 373 383 393
404 414 424 434 444 454 464 474 484 494
505 515 525 535 545 555 565 575 585 595
606 616 626 636 646 656 666 676 686 696
707 717 727 737 747 757 767 777 787 797
808 818 828 838 848 858 868 878 888 898
909 919 929 939 949 959 969 979 989 999
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,s,t,k;
k=0;
/**********Program**********/
for(i=100;i<1000;i++){
s = 0;
t = i;
while(t){
s*=10;
s+=t%10;
t/=10;
}
if(s == i){
printf("%5d", i);
k++;
if(k%10==0){
printf("\n");
}
}
}
/********** End **********/
}
C语言-19
/*-------------------------------------------------------
编程求用1,2,3,4四个数字可以组成多少个无重复数字的四位数,并输出这些四位数。(注:使用for循环)
结果:
1234
1243
1324
。
。
。
可以组成24个无重复数字的四位数
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,d,count;
count=0;
/**********Program**********/
for(a=1;a<5;a++)
for(b=1;b<5;b++)
for(c=1;c<5;c++)
for(d=1;d<5;d++)
if(a!=b && a!=c && a!=d && b!=c && b!=d && c!=d){
printf("%d%d%d%d\n", a, b, c, d);
count++;
}
/********** End **********/
printf("可以组成%d个无重复数字的四位数\n",count);
}
C语言-20
/*-------------------------------------------------------
一小球从100米落下,每次弹跳原来一半高,求第10次落地时经过的距离及第10次弹跳的高度。
(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
double h,s;
s=100;
h=50;
/**********Program**********/
for(i=0;i<9;i++){
s+=h*2;
h/=2;
}
/********** End **********/
printf("第10次落地时经过的距离为%f米,第10次弹跳的高度为%f米\n",s,h);
}