写在前面:
本系列博客所有代码均为个人学习记录。并非标准例程,也不是最优解。遇到问题多点思考、少点借鉴,才能向前冲冲冲!
1、字母分类统计(题目编号:18046):
描述:
输入一行以换行符结束的字符,统计并输出其中英文字母、数字、空格和其它字符的个数。
输入格式:
一行字符,以换行符结束
输出格式:
一行4个数字分别为:英文字母、数字、空格和其它字符的个数,两数据之间以一个空格分隔
输入样例:
ABC 456!
输出样例:
3 3 1 1
代码实现(参考):
#include <stdio.h>
int main()
{
char 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("%d %d %d %d",letters,digit,space,others);
}
2、水仙花数(题目编号:18047):
描述:
输出所有的水仙花数。所谓水仙花数是一个3位的正整数,其各位数字的立方和等于这个数本身。例如,153是水仙花数,因为1^3 +5^3 +3^3=153。 ^代表上标
输入格式:
无
输出格式:
一行一个,由小到大输出所有水仙花数
输入样例:
无
输出样例:
略
代码实现(参考):
#include <stdio.h>
int main()
{
int a, g, s, b;
for(a = 100; a < 1000; a++){
g = a % 10; //个位数
s = (a % 100) / 10; //十位数
b = a / 100; //百位数
if (g*g*g+s*s*s+b*b*b == a){
printf("%d%d%d\n", b, s, g);
}
}
return 0;
}
3、计算数列和(题目编号:1037):
描述:
有数列:
编程实现,由键盘输入n,计算输出数列前n项和。(结果保留四位小数,提示:要使用double,否则精度不够)
输出格式:
请按格式输出
输入样例:
20
输出样例:
32.6603
代码实现(参考):
#include <stdio.h>
int main()
{
double a = 2, b = 1, s = 0, t;
int n;
scanf("%d",&n);
for(int i = 0; i < n; i++){
s += a / b;
t = a;
a = a + b;
b = t;
}
printf("%.4lf",s);
return 0;
}
4、自由落体(题目编号:18048):
描述:
一个球从100米的高度自由落下,每次落地后弹起的原来高度的一半。计算并输出第n次落地时,共经过了多少米,第n次弹起的高度是多少?结果显示3位小数。
输入格式:
从键盘输入一个数n(n>0)
输出格式:
输出两个数,分别为共经过的米数和第n次弹起的高度,以一个空格分隔
输入样例:
1
输出样例:
100.000 50.000
代码实现(参考):
#include <stdio.h>
int main()
{
double h = 100, s = 100;
int n;
scanf("%d",&n);
for(int i = 0; i < n; i++){
h /= 2;
if (i == 0)continue; //第一次高度特殊
s += 4 * h;
}
printf("%.3lf %.3lf", s, h);
return 0;
}
5、迭代法求平方根(题目编号:18049):
描述:
使用迭代法求a的平方根。求平方根的迭代公式如下,要求计算到相邻两次求出的x的差的绝对值小于1E-5时停止,结果显示4位小数
输入格式:
输入一个非负实数a
输出格式:
计算并输出平方根
输入样例:
16
输出样例:
4.0000
代码实现(参考):
#include <stdio.h>
#include <math.h>
int main()
{
double a, xn = 1, xnL; //可以思考一下这里xn为什么=1
scanf("%lf",&a);;
do{
xnL=xn;
xn=(xn+a/xn)/2.0;
}while(fabs(xnL-xn)>=1e-5);
printf("%.4lf", xn);
return 0;
}
6、打印三角形(题目编号:18050):
描述:
编写程序,输入整数n,输出n行的字符图案。例如n=5时输出:
*
**
***
****
*****
****
***
**
*
输入格式:
输入一个整数
输出格式:
输出2*n-1行的三角形
输入样例:
16
输出样例:
*
**
*
代码实现(参考):
#include <stdio.h>
#include <math.h>
int main()
{
int n, k ,x;
scanf("%d",&n);
for(int i = -n+1; i <= n; i++){ //此方法不建议使用
k = fabs(i);
for(int j = 0; j < k; j++){
printf(" ");
}
x = fabs(n) - fabs(i);
for(int j = 0; j < x; j++){
printf("*");
}
printf("\n");
}
return 0;
}
7、勾股数(题目编号:18051):
描述:
若三个正整数a、b、c,其中a<=b<=c,满足a^2+ b^2 = c^2 ,其中^表示上标,称这三个数为“勾股数”,例如:3、4、5是勾股数。编程输出不大于n的所有勾股数
输入格式:
输入一个数(n<=100)
输出格式:
输出所有勾股数,按第1个数字由小到大排列(若第1个数字相同,按第2个数字排)
输入样例:
16
输出样例:
3 4 5
5 12 13
6 8 10
9 12 15
代码实现(参考):
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);;
for(int a = 1; a <= n; a++){ //这里注意要是<=
for(int b = a; b <= n; b++){
for(int c = b; c <= n; c++){
if (a * a + b * b == c * c){
printf("%d %d %d\n", a, b, c);
}
}
}
}
return 0;
}