一、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include<stdio.h>
int main ()
{
char c;
int letter=0,number=0,space=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n'){
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letter++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
number++;
else
other++;
}
printf("字母数:%d\n数字数:%d\n空格数:%d\n其他字符数:%d\n",letter,number,space,other);
return 0;
}
运行结果:
二、求1!+2!+3!+4!+···+20!
#include<stdio.h>
int main()
{
int a;
double b=1;
double sum=0;
for(a=1;a<=20;a++){
b=a*b;
sum=sum+b;
}
printf("sum=%e\n",sum);
return 0;
}
运行结果:
三、一个球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高。
方法一:
#include <stdio.h>
int main()
{
int a;
float s=0;
float h=100.0;
for(a=1;a<=10;a++){
s=s+h;//下来经过米数
h=h/2;//反弹后达到最高的高度
s=s+h;//反弹经过米数
}
s=s-h;//减去第十次反弹的高度
printf("第十次落地时经历米数s=%f\n第十次反弹高度h=%f\n",s,h);
return 0;
}
运行结果:
方法二:
#include<stdio.h>
int main()
{
double h=100.0,s=0.0,b=100.0;//b为第一次落地小球经过的距离
int a=1;
for(;a<=10;a++){
h/=2;
s=s+2*h;//s为小球从第一次落地开始算起小球经过的距离,两倍h表示小球反弹后小球经过上升和下降的距离
}
s=b+s;
s=s-2*h;//减去第十次小球落地反弹上升和下降的距离
printf("第十次落地时经历米数s=%f\n第十次反弹高度h=%f\n",s,h);
return 0;
}
运行结果: