第6章 循环结构作业题 (1)

1.

在选秀节目中有 10 个评委为参赛选手打分,分数为 1到 100 分,选手最后的得分为去掉一个最高分和去掉一个最低分后其余8个分数的平均分,编写程序,输入 10 个分数,输出选手的最后得分(保留 位小数)。

实现思路

  • 在for循环中使用if语句
  • 使用输入输出语句
  • #include <stdio.h>
    
    int main() {
    	float score, max, min, s = 0;
    	int i;
    	scanf("%f", &score);
    	max = min = score;/*这儿就相当于先输入了一个评委的分数,将这个分数先定为最大数和最小数*/
    	s+=score;
        for (i = 2; i <= 10; i++) {/*for循环,依次输入分数*/
    		scanf("%f", &score);
    		if (max < score)/*如果再次输入的这个数大于开头输入的那个数,这个数就被赋值给最大值*/
    			max = score;
    		if (min > score)/*如果再次输入的这个数小于开头输入的那个数,这个数就被赋值给最小值*/
    			min = score;
    		s = s + score;/*十个数之和*/
    	}
    	s = (s - max - min) / 8;
    	printf("%5.2f", s);
    }

    2.求(1 + 2 + ··· + k) + (1*1 + 2*2 + ··· + k*k) + (1/1 + 1/2 + ··· + 1/k)的值。其中 k 由键盘输入。

  • #include <stdio.h>
    int main()
    {
        int a, i = 1, sum= 0,sum1=0;
        double sum2 = 0;
        scanf("%d", &a);
        for (i = 1;i <= a;i++)
        {
            sum = sum + i;
        }
        for (i = 1;i <= a;i++)
        {
            sum1 = sum1 + i * i;
        }
        for (i = 1;i <= a;i++)
        {
            sum2 = sum2 + 1 /(double)i;
        }
        printf("%f", sum + sum1 + sum2);
    }

    3.输入两个正整数 m 和 n,求其最大公约数和最小公倍数。

  • #include <stdio.h>
    
    // 求最大公约数
    int gcd(int m, int n) {
    	int temp;
    	while (n != 0) {
    		temp = m % n;
    		m = n;
    		n = temp;
    	}
    	return m;
    }
    
    // 求最小公倍数
    int lcm(int m, int n) {
    	return m * n / gcd(m, n);
    }
    
    int main() {
    	int m, n;
    
    	printf("请输入两个正整数m和n:");
    	scanf("%d %d", &m, &n);
    
    	printf("它们的最大公约数为:%d\n", gcd(m, n));
    	printf("它们的最小公倍数为:%d\n", lcm(m, n));
    
    	return 0;
    }
    

    4.

    本题给出的程序是用π/4 ≈ 1 - 1/3 + 1/5 - 1/7 + ···公式求 π 的近似值,直到发现某一项的绝对值小于 10-6 为止。

    请在本题给出程序的基础上,统计出当fabs(t) >= pow(10, -6)fabs(t) >= pow(10, -8)时,执行循环体的次数。

    输出说明
    π 的近似值
    统计 fabs(t) 大于等于 10 的 -6 次方执行循环的次数
    统计 fabs(t) 大于等于 10 的 -8 次方执行循环的次数
    
    输出示例
    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        int sign = 1, i = 0, j = 0;
        double pi = 0.0, n = 1.0, term = 1.0,pi1 = 0.0, n1 = 1.0, term1 = 1.0;
        while (fabs(term) >= pow(10, -6))
        {
            pi = pi + term;
            n = n + 2;
            sign = -sign;
            term = sign / n;
            i= i + 1;
        }
        pi = pi * 4;
        printf("pi = %10.8f\n", pi);
        printf("le-6:%d\n", i);
        while (fabs(term1) >= pow(10, -8))
        {
            pi1 = pi1 + term1;
            n1 = n1 + 2;
            sign = -sign;
            term1 = sign / n1;
            j= j + 1;
        }
    
        printf("le-8:%d", j);
        return 0;
    }

5. 编写程序,从键盘输入一个一元二次方程 ax²+bx+c=0 的三个参数 a、b、c(均为整数),求此方程的实根。如果方程有实根,则输出实根(精确到小数点后 2 位,较大实根在前),如果没有实根,则输出方程没有实根

#include <math.h>
#include <stdio.h>

int main() {
	float a, b, c, x1, x2, m;
	scanf("%f %f %f", &a, &b, &c);
	m = sqrt(b * b - 4 * a * c);
	if ((b * b - 4 * a * c) > 0) {
		x1 = (-b - m) / (2 * a);
		x2 = (-b + m) / (2 * a);
		printf("%.2f %.2f", x2, x1);
	} else if ((b * b - 4 * a * c) == 0) {
		x1 = x2 = (-b - m) / (2 * a);
		printf("%.2f %.2f", x2, x1);
	} else
		printf("方程没有实根");
	return 0;
}

6.

 请输入一些整数(使用空格分隔数据),计算并输出其中所有偶数的和,并统计出累加的项数。

注:使用 do-while 语句完成本题;输入奇数时不累加个数;输入 0 时表示输入结束,且输入 0 时不累加偶数个数。

#include <stdio.h&g
  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为什么名字不能重复呢?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值