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;
}