浙大版C语言题目集2-4

2-4-1

本题要求编写程序,计算序列 1 + 2 + 3 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,请注意等号的左右各有一个空格。题目保证计算结果不超过长整型整数的范围。

#include <stdio.h> 

int main()
{
	int n=0;
	scanf("%d",&n);
	int sum=0;
	for (;n!=0;n--){
		sum+=n;
	}
	printf("sum = %d",sum);
	return 0;
}

2-4-2

本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

#include <stdio.h> 

int main()
{
	int n=0;
	scanf("%d",&n);
	double sum=0;
	for (;n!=0;n--){
		sum+=1.0/n;
	}
	printf("sum = %.6f",sum);
	return 0;
}

2-4-3

本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

#include <stdio.h> 

int main()
{
	int n=0;
	scanf("%d",&n);
	double sum=0;
	int i=1;
	for (;i<=(2*n-1);i+=2){
		sum+=1.0/i;
	}
	printf("sum = %.6f",sum);
	return 0;
}

2-4-4

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。

#include <stdio.h> 

int main()
{
	int n=0;
	scanf("%d",&n);
	double sum=0;
	int i=1,j=1;
	for (;i<=(3*n-2);i+=3){
		sum+=1.0/i*j;
		j=-j;
	}
	printf("sum = %.3f",sum);
	return 0;
}

2-4-5

输入2个正整数lowerupperlowerupper≤100),请输出一张取值范围为[lowerupper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。

输入格式:

在一行中输入2个整数,分别表示lowerupper的值,中间用空格分开。

输出格式:

第一行输出:"fahr celsius"

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

#include <stdio.h> 

int main()
{
	int f1=0,f2=0;
	double c1=0;
	int i=0;
	scanf("%d %d",&f1,&f2);
	if (f1<=f2 && f2<=100){
		printf("fahr celsius\n");
		for (i=f1;i<(f2-1);i+=2){
			c1=5*(i-32)/9.0;
			printf("%d%6.1f\n",i,c1);
		}
		if (i==(f2-1) || i==f2){
			c1=5*(i-32)/9.0;
			printf("%d%6.1f",i,c1);
		}
	}else {
		printf("Invalid");
	}
	return 0;
}

2-4-6

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,结果保留三位小数。

#include <stdio.h>

int main()
{
    int n=0;
    scanf("%d",&n);
    int i=1,j=1;
    double sum=0;
    for (;i<=n;i++){
    	sum+=i*1.0/(2*i-1)*j;
    	j=-j;
	}
    printf("%.3f",sum); 
    return 0;
}

2-4-7

本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m2+1/m+(m+1)2+1/(m+1)+⋯+n2+1/n。

输入格式:

输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。

#include <stdio.h>

int main()
{
    int m=0,n=0;
    scanf("%d %d",&m,&n);
    int i=0;
    double sum=0;
    for (i=m;i<=n;i++){
    	sum+=i*i+1.0/i;
	}
	printf("sum = %.6f",sum);
    return 0;
}

2-4-8

本题要求编写程序,输出给定正整数M和N区间内的所有三位水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。

输入格式:

输入在一行中给出两个正整数M和N(100≤M≤N≤999)。

输出格式:

顺序输出M和N区间内所有三位水仙花数,每一行输出一个数。若该区间内没有三位水仙花数,则无输出。

如果M或者N不符合题目的要求,则输出Invalid Value.

#include <stdio.h>

int isNum(int);

int main()
{
    int m,n;
	scanf("%d %d",&m,&n); 
    if (100<=m && m<=n && n<=999){
    	int i,num;
		for (i=m;i<=n;i++){
			num=isNum(i);
			if (num==1){
				printf("%d\n",i);
			}
		}
	}else {
		printf("Invalid Value.");
	}
    return 0;
}

int isNum(int i)
{
	int n1,n2,n3,sum,num=0;
	n3=i/100;
	n2=i%100/10;
	n1=i%100%10;
	sum=n3*n3*n3+n2*n2*n2+n1*n1*n1;
	if (sum==i){
		num=1;
	}
	return num;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值