C/C++之习题16-20
2016-09-01 15:41
281 查看
【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
![](https://img-blog.csdn.net/20160901113410814)
【程序17】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为’\n’.
为什么结果总是会少算一个
![](https://img-blog.csdn.net/20160901114929978)
初学的我掉到一个坑里
更改之后
对于other是7可能不能理解,因为,。;值中文字符/算一个
![](https://img-blog.csdn.net/20160901123100765)
【程序18】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
![](https://img-blog.csdn.net/20160901130933175)
【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数。
先找它的所有因子
![](https://img-blog.csdn.net/20160901152108216)
【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
辗转相除法设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q……r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q……r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。
例如:a=25,b=15,a/b=1……10,b/10=1……5,10/5=2…….0,最后一个为被除数余数的除数就是5,5就是所求最大公约数。#include<stdio.h> #include<stdlib.h> #include<math.h> int main(){ int num1,num2,flag,temp; printf("请输入两个数\n"); scanf("%d%d",&num1,&num2); printf("最大公约数为:"); int a ,b ; a = num1>num2?num1: num2; // flag = a; b = num1<=num2?num1: num2; while(b != 0){ if(a%b == 0){ printf("%d\n",b); flag = b; b = 0; } else{ temp = a; a = b; b = temp%b; } } printf("最小公倍数:%d",num1*num2/flag); printf("\n"); system("pause"); return 0; }
【程序17】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为’\n’.
#include<stdio.h> #include<stdlib.h> int main(){ char c; printf("请输入一串字符\n"); scanf("%c",&c); int letters = 0,space = 0 ,digit = 0,others = 0; while((c= getchar())!='\n'){ if(c>='a'&&c<='z'||c>='A'&&c<='Z'){ letters++; } else if(c ==' '){ space++; }else if(c>='0'&&c<='9'){ digit++; }else{ others++; } } printf("结果输出letters为%d个,space为%d个,digit为%d个,others为%d个",letters,space,digit,others); printf("\n"); system("pause"); return 0; }
为什么结果总是会少算一个
初学的我掉到一个坑里
更改之后
#include<stdio.h> #include<stdlib.h> int main(){ char c; char sr; printf("请输入一串字符\n"); // scanf("%c",&c); // sr = gets(c); int letters = 0,space = 0 ,digit = 0,others = 0; while((c = getchar())!='\n'){ if(c>='a'&&c<='z'||c>='A'&&c<='Z'){ letters++; } else if(c ==' '){ space++; }else if(c>='0'&&c<='9'){ digit++; }else{ others++; } } printf("结果输出letters为%d个,space为%d个,digit为%d个,others为%d个",letters,space,digit,others); printf("\n"); system("pause"); return 0; }
对于other是7可能不能理解,因为,。;值中文字符/算一个
函数名: getchar 功 能: 从stdin流中读字符 用 法: int getchar(void); 程序例: #include <stdio.h> int main(void) { int c; /* Note that getchar reads from stdin and is line buffered; this means it will not return until you press ENTER. */ while ((c = getchar()) != '\n') printf("%c", c); return 0; }
【程序18】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
#include<stdio.h> #include<stdlib.h> int main(){ int c; printf("请输入一个数字\n"); scanf("%d",&c); printf("请输入需要几个数相加\n"); int num; scanf("%d",&num); int i,sum = 0; for(i= num;i>0;i--){ printf("-----"); sum = i*c+sum; c = c*10; } printf("结果输出为%d个",sum); printf("\n"); system("pause"); return 0; }
【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数。
先找它的所有因子
#include<stdio.h> #include<stdlib.h> #include<math.h> int main(){ int i,number,sum = 0; printf("分解质因数\n"); int j; //1000以内的数 for(j = 2;j<1000;j++){ sum = 1; //求所有因子 for(i = 2;i<j;i++){ if(j%i==0){ sum = sum+i; } } if(sum == j){ printf("完全数为%d\t",sum); } } printf("\n"); system("pause"); return 0; }
【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?
#include<stdio.h> #include<stdlib.h> #include<math.h> int main(){ int i,number,sum = 100,flag = 100; printf("球落地次数输入\n"); scanf("%d",&number); int j; if(number == 1){ printf("球总共经过了%d米\t",sum); printf("\n"); system("pause"); return 0; } for(i = 2;i<=number;i++){ sum = sum+flag/(i-1); } printf("球总共经过了%d米\t",sum); printf("\n"); system("pause"); return 0; }
相关文章推荐
- 明明白白c++ effective c++ 条目16-20
- 有点意思的C/C++问题及解答:16-20
- C++Primer第五版 第十三章习题答案(11~20)
- →『C/C++ 笔试、面试题目大汇总(16-20)』
- c++求一组数据中出现次数最多的数《c++程序设计原理与实践》第4章习题16
- 有点意思的C/C++问题及解答:16-20
- C/C++程序题(16-20)
- 算法竞赛入门经典(第二版)-刘汝佳-第五章 C++与STL 习题(13/16)
- learn the python in hard way习题16~20的附加习题
- C++Primer第五版 第五章习题答案(11~20)
- 函数条款明明白白c++ effective c++ 条目16-20
- More Effective C++ 条款16 谨记80-20法则
- C++Primer第五版 第二章习题答案(11~20)
- 【c++习题】【17/4/16】动态分配内存
- C++Primer第五版 第七章习题答案(11~20)
- 有点意思的C/C++问题及解答:16-20
- C++Primer第五版 第四章习题答案(11~20)
- 有点意思的C/C++问题及解答:16-20
- 【ThinkingInC++】20、关于C的习题(2)
- MoreEffective C++(条款16:谨记80-20法则)