SCAU程序设计在线实训平台_实验_高级语言程序设计_教材习题_第五章

写在前面:

本系列博客所有代码均为个人学习记录。并非标准例程,也不是最优解。遇到问题多点思考、少点借鉴,才能向前冲冲冲!

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

本文尝试了新的排版方式QAQ

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值