PTA实验5答案

7-1 sdut- C语言实验—最值

有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置。
请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

输入格式:

输入包括两行。
第一行为正整数n(1≤n≤10)。
第二行为n个正整数组成的序列。

输出格式:

输出转换好的序列。数据之间用空格隔开。

输入样例:

6
2 3 8 1 4 5

输出样例:

1 3 5 2 4 8
#include <stdio.h>
int main()
{
	int n, i, t, m, max = 0, min = 0;
	int a[10];
	scanf("%d\n", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%d ", &a[i]);
		if (a[i] > a[max])
		{
			max = i;
		}
		if (a[i] < a[min])
		{
			min = i;
		}
	}
	t = a[n-1];
	a[n-1]=a[max];
	a[max] = t;
	m = a[0];
	a[0] = a[min];
	a[min] = m;
	for (i = 0; i < n; i++)
	{
		printf("%d", a[i]);
		if (i < n - 1)
			printf(" ");
	}
	return 0;
}

 7-2 sdut-C语言实验-整数位

输入一个不多于5位的正整数,要求:
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆序输出各位数字。

输入格式:

输入一个不多于5位的正整数。

输出格式:

输出数据有3行,第一行为正整数位数,第二行为各位数字,第三行为逆序的各位数字。

输入样例:

123

输出样例:

3
1 2 3
3 2 1
#include <stdio.h>
int main()
{
	int n, i, cnt = 0;
	int a[5];
	scanf("%d", &n);
	for(i=0;n>0;i++)
	{
        a[i] = n % 10;
		n /= 10;
		cnt++;
	}
	printf("%d\n", cnt);
	for (i = cnt - 1; i >= 0; i--)
	{
		printf("%d", a[i]);
        if(i>0)
            printf(" ");
	}
    printf("\n");
	for (i = 0; i < cnt; i++)
	{
		printf("%d", a[i]);
        if(i<cnt-1)
            printf(" ");
	}
	return 0;
}

 7-3 sdut-C语言实验-区间之和

给定一个由 n 个整数组成的序列A1,A2,……, An 和两个整数L,R,你的任务是写一个程序来计算序列号在L,R 这段位置区间内所有数的总和。

输入格式:

输入只有一组测试数据:

测试数据的第一行为一个整数 n (1< n < 10000);

第二行为 n 个 int 类型的整数;

第三行为两个整数 L,R(0 < L < R <= n)。

输出格式:

输出序列号在区间[L,R]内所有数的和,数据保证和在 int 类型范围内。

输入样例:

5
3 5 6 2 9
2 4

输出样例:

13

#include <stdio.h>
int main()
{
	int n, m, i, L, R, sum = 0;
	int a[10005];
	scanf("%d\n", &n);
	for (i = 0; i < n; i++)
	{
		scanf("%d ", &m);
        a[i]=m;
	}
	scanf("\n");
	scanf("%d %d", &L, &R);
	for (i = L - 1; i <= R - 1; i++)
	{
		sum += a[i];
	}
	printf("%d", sum);
	return 0;
}

暂时只有这些,期望对大家有所帮助

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘心不灭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值