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;
}
暂时只有这些,期望对大家有所帮助