深圳技术大学oj作业循环结构1

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

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int arr[100100] = { 0 };
int com(const void* a, const void* b)
{
	return *(int*)a - *(int*)b;
}
int main()
{
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	qsort(arr, n, sizeof(arr[0]), com);
	printf("min = %d\n", arr[0]);
	return 0;
}

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

#include <stdio.h>
#include <stdlib.h>
int main()
{
	double a = 2;
	double b = 1;
	double mid = 0;
	double num = 0;
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		num += (a / b);
		mid = a + b;
		b = a;
		a = mid;
	}
	printf("%.2f\n", num);
	return 0;
}

本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	double a = 1;
	double b = 1;
	double num = 0;
	double n;
	scanf("%lf", &n);
	int i = 1;
	while (i)
	{
		if (i % 2 != 0)
		{
			num += (a / b);
			b = b + 3;	
		}
		else
		{
			num -= (a / b);
			b = b + 3;
		}
		i++;
		if ((a / b) <= n)
		{
			if (i % 2 != 0)
			{
				num += (a / b);
				b = b + 3;
			}
			else
			{
				num -= (a / b);
				b = b + 3;
			}
			break;
		}
	}
	printf("sum = %.6f\n", num);
	return 0;
}

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

输入

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	int a, b;
	int flag = 0;
	scanf("%d%d", &a, &b);
	int n;
	for (int i = 1; i <= b; i++)
	{
		scanf("%d", &n);
		if (n < 0)
		{
			printf("Game Over\n");
			flag = 0;
			break;
		}
		else if (n == a && i == 1)
		{
			printf("Bingo!\n");
			flag = 0;
			break;
		}
		else if (n < a)
		{
			printf("Too small\n");
			flag = 1;
		}
		else if (n > a)
		{
			printf("Too big\n");
			flag = 1;
		}
		else if (n == a && i <= 3)
		{
			printf("Lucky You!\n");
			flag = 0;
			break;
		}
		else if (n == a && i > 3)
		{
			printf("Good Guess!\n");
			flag = 0;
			break;
		}
	}
	if (flag == 1)
	{
		printf("Game Over\n");
	}
	return 0;
}

 这一道题打表会发现是斐波那契数列

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对? 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int n, a = 2, b = 0, c = 0, i = 1;
    scanf("%d", &n);
    if (n > 1)
    {
        while (c < 2 * n)
        {
            c = a + b;
            b = a;
            a = c;
            i++;
        }
        printf("%d\n", i);
    }
    else
    {
        printf("1\n");
    }
    return 0;
}
/斐波那契数列数列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值