程序设计基础期中检测

7-1 温度转换

本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

输入格式:

本题目没有输入。

输出格式:

按照下列格式输出

fahr = 150, celsius = 计算所得摄氏温度的整数值

 源码:

#include
using namespace std;
int main()
{
    int F = 150, C;
    C = 5 * (F - 32) / 9;
    cout<<"fahr = 150, celsius = "<

7-2 猴子吃桃问题

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:

输入在一行中给出正整数N(1

输出格式:

在一行中输出第一天共摘了多少个桃子。

输入样例:

3

输出样例:

10

源码: 

#include
using namespace std;
int main()
{
    int N;
    cin>>N;
    int x = 1;
    while(N > 1)
    {
        x = 2 * (x + 1);
        N--;
    }
    cout<

7-3 同构数

一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。

输出格式:

在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。

输出样例:

     1     5     6    25    76   376   625

 源码:

1.偷懒

#include
using namespace std;
int main()
{
    cout<<"     1     5     6    25    76   376   625";
    return 0;
}

 2.正经

#include
using namespace std;
int main()
{
	int i, n;
	for(i = 1; i <= 1000; i++)
	{
		for(n = 1; n <= 1000; n = n * 10)
		{
		    if(i / n == 0)
            {
                break;
            }
		}
        if((i * i) % n == i)
        {
            printf("%6d",i);
        }
	}
    return 0;
}

7-4 计算阶乘和

对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。

输入格式:

输入在一行中给出一个不超过10的正整数N。

输出格式:

在一行中输出S的值。

输入样例:

3

输出样例:

9

源码: 

#include
using namespace std;
int main()
{
    int S = 0, m = 1, i, N;
    cin>>N;
    for (i = 1; i <= N; i++)
    {
        m = m * i;
        S = S + m;
    }
    cout<

 

7-5 回文数

判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。。

输入格式:

直接输入一个5位数正整数。

输出格式:

输出“yes”或“no”。此处均为小写字母

输入样例:

12521

输出样例:

yes

输入样例:

65432

输出样例:

no

 源码:

1.字符串处理

#include
using namespace std;
int main()
{
    char str[5];
    for(int i = 0; i < 5; i++)
    {
        cin>>str[i];

    }
    if (str[0] == str[4] && str[1] == str[3])
        printf("yes");
    else
        printf("no");
    return 0;
}

 2.逐位判断

#include
using namespace std;
int main()
{
    long long a, b, c, d, x;
    cin>>x;
    a = x / 10000;
    b = x % 10000 / 1000;
    c = x % 100 / 10;
    d = x % 10;
    if (a == d && b == c) 
    { 
        cout<<"yes";
    }
    else 
    {
        cout<<"no";
    }
    return 0;
}

3.逆序数列判断

#include
using namespace std;
int main()
{
    int x;
    int sum = 0;
    cin>>x;
    for (int i = x; i > 0; i /= 10)
    {
        //sum最终为逆序后各个位相加的结果
        sum = sum * 10 + i % 10;
        //若该数是回文数字,说明该数逆序后还是这个数本身
        // 所以这里直接判断sum与原数是否相等
    }   
    if (sum == x)
        cout<<"yes";
    else
        cout<<"no";
    return 0;
}

7-6 C程序设计教程与实训-数组-找最小值

从键盘输入10个整数,找出其中的最小数及其位置。

输入格式:

输入在一行中给出10个整数(不超过1000),用空格分隔。

输出格式:

在一行中输出最小数和位置(从0开始编号),用1个空格分隔。

输入样例:

21 34 12 45 23 43 89 70 98 87

输出样例:

12 2

源码: 

#include
using namespace std;
int main()
{
    int arr[10];
    int i, a = 1000, b;\
    for(i = 0; i < 10; i++)
    {
        cin>>arr[i];
    }
    for(i = 0; i < 10; i++)
    {
        if(arr[i] < a)
        {
            a = arr[i];
            b = i;
        }
    }
    cout<

 

7-7 百鸡问题扩展-N鸡问题

N元钱买N只鸡,公鸡每只5元,母鸡每只3元,小鸡1元3只,N元钱必须刚好买N只鸡,而且鸡必须整只买,不能劈开买。

有几种买法呢?这就是N鸡问题。

输入格式:

在一行中输入一个正整数N。(N<500

输出格式:

在一行中输出两个整数c s,中间用一个空格隔开,表示N元钱买N只鸡共有 c 种买法,且所有买法的公鸡数量之和是 s

如果无解,则 s 为 -1.

输入样例1:

100

输出样例1:

4 24

输入样例2:

1

输出样例2:

0 -1

源码: 

#include
using namespace std;
int main()
{
    int i, j ,k;
    int N, c = 0, s = 0;
    cin>>N;
    for(i = 0; i <= N / 5; i++)
    {
        for(j = 0; j <= N / 3; j++)
        {
            for(k = 0; k <= N * 3; k++)
            {
                if((i * 5 + j * 3 + k / 3 == N) && (i + j + k == N) && (k % 3 == 0))
     		    {
				    c++;
					s = s + i;
        	    }
            }

        }
    }
    if(c==0)
    {
	    s = -1;
    }
	 printf("%d %d", c, s);
    return 0;
}

 参考:(4条消息) 2022级程序设计基础练习1(编程题部分)_深夜码人的博客-CSDN博客

7-3 换硬币 

注意:

1.输出一定要和输出样例完全一样,否则会出现格式错误

2.

for(int i = 0; ; )
//部分编译环境可能会报错,i放在外面定义;
int i;
for(i = 0; ; )

你可能感兴趣的:(算法,c++,数据结构)