1、小球自由落体运动
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?利用for()循环函数求出10次后的结果。代码如下,
/*小球自由落体*/ #include<stdio.h> int main(void){ double height=100; //定义初始高度变量height为100 double S = -100; //定义初始经过距离为-100,(详情见下) for(int i=0;i<10;i++){ S += height*2; //除第一次下落外,每次下落间隔为两个返回高度,则初始S赋值为-100. height /= 2; //求第十次反弹高度 } /*输出值*/ printf("第10次降落时,有 %lf 米\n",S); printf("第10次高度 %.8f 米\n",height); //第十次反弹高度共有8位小数 return 0; }
2、求解出n以内所有能被5整除的正整数的乘积
n
是通过键盘输入一个整数值,代码如下,
#include<stdio.h> int main(void) { /*********Begin*********/ int n,s=1; scanf("%d",&n); for(int i=5;i<=n;i+=5){ s*=i; } printf("%d\n",s); /*********End**********/ return 0; }
3、最大公约数和最小公倍数
最小公倍数等于输入的两个数之积除于它们的最大公约数,先需要求出最大公约数。
1)循环实现
#include<stdio.h> int main(){ int a,b; printf("请输入a,b的值:"); scanf("%d %d",&a,&b); if(a<b){ //交换a,b 的大小 int temp = b; b = a; a = temp; } int r; //r代表余数 r = a%b; int n; n = a*b; //最小公倍数为a*b/GCD while(r!=0){ a = b; b = r; r = a%b; } printf("最大公约数是%d,最小公倍数为%d",b,n/b); return 0; }
2)递归实现
#include<stdio.h> //递归实现最大公约数 int gcd(int a,int b){ if(a%b == 0) return b; else return gcd(b,a%b); } int main(){ int a,b; printf("请输入a,b的值:"); scanf("%d %d",&a,&b); if(a<b){ //交换a,b 的大小 int temp = b; b = a; a = temp; } int n; n = a*b; //最小公倍数为a*b/GCD printf("最大公约数是%d,最小公倍数为%d",gcd(a,b),n/gcd(a,b)); return 0; }
4、字符串中各类字符数的统计
从键盘输入一行字符串,统计其中的大写字母、小写字母、空格、数字、和其他字符的个数。代码如下,
#include<stdio.h> int main() { int char_num=0,int_num=0,space_num=0,other_num=0; char ch; while((ch=getchar())!='\n') { if(ch<='z'&&ch>='a'||ch<='Z'&&ch>='A') { char_num++; } else if(ch<='9'&&ch>='0') { int_num++; } else if(ch==' ') { space_num++; } else { other_num++; } } printf("%d ",char_num); printf("%d ",int_num); printf("%d ",space_num); printf("%d",other_num); }
5、水仙花数
阿姆斯特朗数 也就是俗称的 水仙花数 ,是指一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33
,所以 153 就是一个 水仙花数 。求出所有的 水仙花数 。代码如下,
//导入头文件 #include<stdio.h> #include<stdlib.h> //主函数 int main(){ int i,j,k,n,sumi,sumj,sumk;//定义7个整型数据 printf("\n100-1000 包含的“水仙花”数分别有: \n\n"); for(n=100;n<1000;n++){ //循环求数字个位、十位、百位上的数字 i=n/100;//求百位 j=n/10%10; //求十位 k=n%10; //求个位 //求i、j、k的立方和 sumi=i*i*i;//求个位立方和 sumj=j*j*j;//求十位立方和 sumk=k*k*k;//求百位立方和 //判断是否为 水仙花数 if(n==sumi+sumj+sumk){ printf("%-5d",n);//输出 水仙花数 } } printf("\n");//换行 return 0; }