题目16:
思路:代码:结果: 题目17:
思路:代码:结果: 题目18:
思路:代码:结果: 题目19:
思路:代码:结果: 题目20:
思路:代码:结果:
题目16:输入两个正整数m和n,求其最大公约数和最小公倍数。
思路:- 运用代余除法的思维求最大公约数。最小公倍数是两个整数之积除以最大功公约数。
#include"stdio.h" int main() { int m,n,i,j,max,min; scanf("%d%d",&m,&n); i=m>n?m:n; j=m结果: 题目17: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
思路:核心在我看来就是输入的时候可以避开空格不结束输入用gets( )即可,可这是运用于已知字符串长度。若是长度未知可能getchar( )更为合适。
代码:法一:
#include"stdio.h" int main() { int num1=0,num2=0,num3=0,num4=0,i=0; char a[80]; gets(a); while(*(a+i)!='') { if(*(a+i)>='a'&&*(a+i)<='z') num1++; else if(*(a+i)>='A'&&*(a+i)<='Z') num1++; else if(*(a+i)>='0'&&*(a+i)<='9') num2++; else if(*(a+i)==' ') num3++; else num4++; i++; } printf("字母个数=%dt数字个数=%dt空格个数=%dt其他字符个数=%d",num1,num2,num3,num4); return 0; }法二:
#include"stdio.h" int main() { int num1=0,num2=0,num3=0,num4=0,i=0; char a; while((a=getchar())!='n') { if(a>='a'&&a<='z') num1++; else if(a>='A'&&a<='Z') num1++; else if(a>='0'&&a<='9') num2++; else if(a==' ') num3++; else num4++; i++; } printf("字母个数=%dt数字个数=%dt空格个数=%dt其他字符个数=%d",num1,num2,num3,num4); return 0; }结果:题目18:
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
思路:首先明晰已知的数,即a和n;这给公式的计算是一个累加的过程,这个公式的每一项也是一个累加的过程。把累加的过程弄清楚就行。
代码:#include"stdio.h" int main() { int a,s=0,n,i; scanf("%d%d",&a,&n); int b=a; for(i=1;i<=n;i++) { s+=a; b=b*10; a+=b; } printf("%d",s); return 0; }结果: 题目19:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
思路:完数的因子相加计算中不包含其本身。找出所有因子累加计算,看结果是否与本身相等即可。
代码:#include"stdio.h" int main() { int a,i,s; for(a=2;a<=1000;a++) { s=0; for(i=1;i 结果: 题目20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反d多高?
思路:首先明晰每一次的高度和是下落加反d。然后第十次落地时的高度要在累加的高度中减去最后一次反d的高度。
代码:#include"stdio.h" int main() { float a=100,s=0,i=a*1/2; int k; for(k=0;k<10;k++) { s+=a+i; a=i; i=i*1/2; } printf("%ft%f",s-a,a); return 0; }结果:欢迎分享,转载请注明来源:内存溢出
评论列表(0条)