浙大版《C语言程序设计(第3版)》题目集(编程题q31-q40)

浙大版《C语言程序设计(第3版)》题目集(编程题q31-q40)
习题3-5 三角形判断 (15分)
给定平面上任意三个点的坐标(x​1​​ ,y​1​​ )、(x​2​​ ,y​2​​ )、(x​3​​ ,y​3​​ ),检验它们能否构成三角形。

#include "stdio.h"
#include "math.h"
int main()
{
	float x1, x2, x3, y1, y2, y3;
    float a, b, c, s, l, area;  //定义三边,半周长,周长,面积 
    scanf("%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3);
    a = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    b = sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
    c = sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
    if (a + b > c && a + c > b && b + c > a) {
        s = (a + b + c) / 2;
        area = sqrt(s * (s - a) * (s - b) * (s - c));  //海伦公式求面积 
        l = a + b + c;
        printf("L = %.2f, A = %.2f\n", l, area);
    } else {
        printf("Impossible\n");
    }
	return 0;
}

练习4-3 求给定精度的简单交错序列部分和 (15分)
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。

#include "stdio.h"
int main()
{
	int fenmu, flag;  //定义分母,符号判断 
	double eps, item, sum;  //定义正实数 
	scanf("%lf", &eps);
	flag=1;
	fenmu=1;
	sum=0;
	item=1.0; 
	do{
		item=flag*1.0/fenmu;
		sum=sum+item;
		flag=-flag;
		fenmu=fenmu+3;
		}while(fabs(item)>eps);
	printf("sum = %.6f\n", sum);
	
	return 0;
}

练习4-6 猜数字游戏 (15分)
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

#include 
int main()
{
    int rand_number, n;   //定义随机数,猜的次数 
    scanf("%d %d", &rand_number, &n);
    int i;
    int m;
    int flag = 0;   
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &m);
        if (m < 0)
            break;
        if (m > rand_number)
            printf("Too big\n");
        if (m < rand_number)
            printf("Too small\n");
        if (m == rand_number)
        {
            if (i == 1)
            {
                flag = 1;
                printf("Bingo!\n");
                break;
            }
            if (i == 2 || i == 3)
            {
                flag = 1;
                printf("Lucky You!\n");
                break;
            }
            if (i > 3)
            {
                flag = 1;
                printf("Good Guess!\n");
                break;
            }
        }
    }
    if (flag == 0)
        printf("Game Over\n");
    return 0;
}

练习4-7 求e的近似值 (15分)
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。

#include "stdio.h"
int main()
{
	int i, j, n;
	double item, sum;
	sum=1;
	scanf("%d", &n);
	for(i=1; i<=n; i++){
		item=1;
		for(j=1; j<=i; j++){    //算出阶乘 
			item=item*j;
		}
		item=1.0/item;
		sum=sum+item;
	}
	printf("%.8f", sum);
	
	return 0;	
}

练习4-10 找出最小值 (20分)
本题要求编写程序,找出给定一系列整数中的最小值。

#include "stdio.h"
int main()
{
	int n,m,min;   //定义输入个数,输入数,最小值 
	scanf("%d",&n);
	int cnt=1;
	for(int i=1;i<=n;i++,cnt++){
		scanf("%d",&m);
		if(cnt==1){   //只有一个数则它为最小数 
			min=m;
		}
		if(m<min){
			min=m;
		}
	}
	printf("min = %d",min);
	return 0;
}

练习4-11 统计素数并求和 (20分)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。

#include "stdio.h"
#include "math.h"
int isPrime(int n)   //判断素数函数 
{
	int flag=1;
	if(n==1){
		flag=0;
	}else{
		for(int i=2;i<=sqrt(n);i++){
			if(n%i==0){   //能整除则不为素数 
				flag=0;
			}
		}
		return flag;		
	}
}

int main()
{
	int m,n;
	int sum=0,cnt=0;
	scanf("%d %d",&m,&n);
	for (int i=m;i<=n;i++){
		if(isPrime(i)){
			cnt++;
			sum+=i;
		}
	}
	printf("%d %d",cnt,sum);
	return 0;
}

习题4-1 求奇数和 (15分)
本题要求计算给定的一系列正整数中奇数的和。

#include"stdio.h"
int main()
{
	int num,sum=0;
	for (int i=1; ;i++){
	   scanf("%d",&num);
	   if(num<=0){
	   	 break;
	   }
	   if(num%2!=0){
	   	sum+=num;
	   }	
	}
	printf("%d",sum);
	return 0;
}

习题4-2 求幂级数展开的部分和 (20分)
在这里插入图片描述

#include "stdio.h"
#include "math.h"
double fun(double x,double n)//求数列每一项的值
{
	double y = 0;   //每项值 
	double  i = 0;
	double num = 1;
	for (i = 1; i <=n; i++)  //求阶乘 
	{
		num = num*i;
	}
	y = pow(x, n) / num;//数列每一项的值
	return y;
}
int main()
{
	double x = 0;
	double sum = 0;
	double n = 0;
	scanf("%lf", &x);
	do
	{
		sum = sum + fun(x, n);
		n++;
	} while (fabs(fun(x, n)) >= 0.00001);
	sum = sum + fun(x, n);//最后一项的绝对值必须小于0.00001
	printf("%.4f\n", sum);
	return 0;
}

习题4-3 求分数序列前N项和 (15分)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

#include "stdio.h"
//分子,分母为斐波那契数列, 
int main()
{
	int n;
	double sum=0;
	double x=2,y=1,t=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		sum+=x/y;
		t=x;
		x=x+y;
		y=t;
	}
	printf("%0.2f",sum);
	return 0;
}

习题4-4 特殊a串数列求和 (20分)
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

#include "stdio.h"
#include "math.h"
int main()
{
	int a,n;
	int num=0;
	int sum = 0;
	scanf("%d %d",&a,&n);
	for (int i=1;i<=n;i++){   
		num=num+pow(10,i-1)*a;
		sum+=num;
	}
	printf("s = %d",sum);
	return 0;
	
}

你可能感兴趣的:(C语言)