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个正整数lower
和upper
(lower
≤upper
≤100),请输出一张取值范围为[lower
,upper
]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。
输入格式:
在一行中输入2个整数,分别表示lower
和upper
的值,中间用空格分开。
输出格式:
第一行输出:"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;
}