2025-03-13 16:46:35 +08:00

12 KiB
Raw Blame History

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

/*-------------------------------------------------------
编程求用1234四个数字可以组成多少个无重复数字的四位数并输出这些四位数。使用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);
}