河南农业大学2021-2022第一学期程序设计基础-实验3


7-1 求1到100的和 (10 分)

本题要求编写程序,计算表达式 1 + 2 + 3 + ... + 100 的值。

输入格式:
本题无输入。
输出格式:
sum = 累加和
实验代码:

#include
int main()
{
	int sum=0;
	for(int i=1;i<=100;i++)
	{
		sum+=i;
	}
	printf("sum = %d",sum);
	return 0;
 } 

7-2 求平方根序列前N项和 (15 分)

输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum = 22.47
实验代码:

#include
#include
int main()
{
	double sum=0;
	int n;
	scanf("%d",&n);
	 for(int i=1;i<=n;i++)
	 {
	 	sum+=sqrt(i);
	 }
	 printf("sum = %.2lf",sum);
	return 0;
 } 

7-3 求N分之一序列前N项和 (15 分)

输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
6
输出样例:
sum = 2.450000
实验代码:

#include
#include
int main()
{
	double sum=0;
	double n;
	scanf("%lf",&n);
	 for(int i=1;i<=n;i++)
	 {
	 	sum+=1.0/i;
	 }
	 printf("sum = %lf",sum);
	return 0;
 } 

7-4 求奇数分之一序列前N项和 (15 分)

输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
23
输出样例:
sum = 2.549541
实验代码:

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

7-5 求简单交错序列前N项和 (15 分)

输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum = 0.819
实验代码:

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

7-6 求平方与倒数序列的部分和 (15 分)

输入格式:

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

#include
#include
int main()
{
	double m,n,sum=0;
	scanf("%lf%lf",&m,&n);
	for(m;m<=n;m++)
	{
		sum+=m*m+1/m;
	}
	printf("sum = %lf",sum);
	return 0;
 } 

7-7 求交错序列前N项和 (15 分)

输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,结果保留三位小数。
输入样例:
5
输出样例:
0.917
实验代码:

#include
#include
int main()
{
	int a,b;
	double sum=0,sign=1.0;
	scanf("%d",&a);
	for(int i=1;i<=a;i++)
	{
		sum+=sign*i/(2*i-1);
		sign=-sign;
	}
	printf("%.3lf",sum);
	return 0;
 } 

7-8 求分数序列前N项和 (15 分)

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

输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
实验代码:

#include
int main(){
    int N;
    scanf("%d",&N);
    double a=2;
    double b=1;
    double sum=0;
    double exchange=0;
    for (double i=1;i<=N;i++){
        sum+=a/b;
        exchange=a;
        a+=b;
        b=exchange;
    }
    printf("%.2f",sum);
    return 0;
}

7-9 计算阶乘和 (10 分)

输入格式:
输入在一行中给出一个不超过10的正整数N
输出格式:
在一行中输出S的值。
输入样例:
3
输出样例:
9
实验代码:

#include
int main(){
int n;
int sum=0,sum2=1;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
	sum2=1;
	for(int j=1;j<=i;j++)
	{
		sum2*=j;
		//printf("%d\n",sum2);
	}
	sum+= sum2;
	//printf("%d\n",sum);
}
    printf("%d",sum);
    return 0;
}

7-10 求整数段和 (10 分)

给定两个整数A和B,输出从A到B的所有整数以及这些数的和

输入格式:
输入在一行中给出2个整数A和B,其中?100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X
输入样例:
-3 8
输出样例:
-3 -2 -1 0 1 2 3 4 5 6 7 8 Sum = 30
实验代码:

#include 
int main()
{
  int x,y,i,a=0,sum=0;
  scanf("%d %d",&x,&y);
  for(i=x;i<=y;i++)
  {
    printf("%5d",i);
    a++;
    sum+=i;
    if(a%5==0)
    {
      printf("\n");
    }
  }if(a%5!=0) printf("\n");
  printf("Sum = %d",sum);
  return 0;
 }



7-11 输出闰年 (15 分)

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。

输入格式:
输入在一行中给出21世纪的某个截止年份
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例:
2048
输出样例:
2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048
实验代码:

#include
using namespace std;
int main(){
	int year,flag=1;
	cin>>year;
	if(year>=2001 && year<=2100){
		for(int i=2001;i<=year;i++){
			if((i%4==0 && i%100!=0)||(i%400==0)){
				flag=0;
				cout<

7-12 找出三位水仙花数 (15 分)

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

输入格式:
输入在一行中给出两个正整数M和N(100≤M≤N≤999)。
输出格式:
`顺序输出M和N区间内所有三位水仙花数,每一行输出一个数。若该区间内没有三位水仙花数,则无输出。

如果M或者N不符合题目的要求,则输出Invalid Value.。**输入样例:**100 400**输出样例:**153
370
371`
实验代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
int main() {
    int m, n;
    scanf("%d%d", &m, &n);
    if (m <= n && m >= 100 && n <= 999) {
        int i;
 
        for (i = m; i <= n; i++) {
            int x, y, z;
            x = i / 100;
            y = i % 100 / 10;
            z = i % 10;
            if (pow(x, 3) + pow(y, 3) + pow(z, 3) == i) {
                printf("%d\n", i);
            }
        }
    }
    else {
        printf("Invalid Value.");
    }
    return 0;
}

7-13 找出最小值 (20 分)

本题要求编写程序,找出给定一系列整数中的最小值

输入格式:
输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
输出格式:
在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
输入样例:
4 -2 -123 100 0
输出样例:
min = -123
实验代码:


#include 
 
int main(void){
	int n, i, k, min=1000000;
	
	scanf("%d", &n);
	for(i = 0; i < n; i++){
		scanf("%d", &k);
		if( k < min )    min = k;
	}
	printf("min = %d", min);
	
	return 0;
}

7-14 百钱百鸡 (10 分)

百鸡问题:“今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁母雏各几何。”

百鸡问题是北魏数学家张丘建在《张丘建算经》中提出的一个世界著名的不定方程问题,它给出了由三个未知量的两个方程组成的不定方程组的解。

自张丘建以后,中国数学家对百鸡问题的研究不断深入,百鸡问题也几乎成了不定方程的代名词,从宋代到清代围绕百鸡问题的数学研究取得了很好的成就。

《张丘建算经》约成书于公元466—485年间,共三卷93题,包括测量、纺织、交换、纳税、冶炼、土木工程、利息等各方面的计算问题。其体例为问答式,条理精密,文词古雅,是中国古代数学史上的杰作,也是世界数学资料库中的一份宝贵的遗产。后世学者北周甄鸾、唐李淳风相继为该书做了注释。特别是唐代,经太史令李淳风注释整理,收入《算经十书》,成为当时算学馆先生的必读书目。《张丘建算经》现传本有92问,比较突出的成就有最大公约数与最小公倍数的计算,各种等差数列问题的解决、某些不定方程问题求解等。

(以上文字摘自百度百科)

百钱百鸡问题的白话版:100元钱买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只。问公鸡、母鸡、小鸡各多少只(某种鸡可以为0只)?

百钱百鸡的结果如输出样例所示。

现在把100改为n,即n元钱买n只鸡,各种鸡价格不变,结果又如何呢?

输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数n(100<=n<=1000)
输出格式:
对于每组测试,按公鸡、母鸡、小鸡的数量(按公鸡数从小到大的顺序)逐行输出各种买法(每行数据之间空一个空格)。
输入样例:
100
输出样例:
0 25 75 4 18 78 8 11 81 12 4 84
实验代码:

/*100块钱买100只鸡,公鸡5块,母鸡3块,三只小鸡1块*/
#include
int main() {
	int n;
	int count=1;
	scanf("%d",&n);
	int gj, mj, xj,i,j;
	for (i = 0; i < n;i++) {
		for (j = 0; j < n;j++) {
			if (i / 3 + j * 5 + (n - i - j) * 3 == n && i % 3 == 0  && i >= 0 && j >= 0 && (n-i-j)>=0) {
                
				printf("%d %d %d\n",j,(n-i-j),i);
                count++;
				break;
			}
		}
	}
	return 0;
}

相关