本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
#include <stdio.h>
#include <stdlib.h>
# define MAX 11
int main(int argc, char *argv[])
{
int n, a[MAX], i, max, j, x;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
max = a[0];
x = 0;
for (j = 1; j < n; j++)
{
if (max < a[j])
{
max = a[j];
x = j;
}
}
printf("%d %d", max, x);
return 0;
}
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入在第一行先给出非负整数N(<=10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输入在第一行先给出非负整数N(<=10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
#include <stdio.h>
#include <stdlib.h>
# define MAX 11
int main(int argc, char *argv[])
{
int N, X, a[MAX], i, j, k, y, z;
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &X);
for (y = 0; y < N; y++)
{
if (X >= a[y] && X <= a[y + 1])
{
for (j = N; j > y + 1; j--)
{
a[j] = a[j - 1];
}
a[y + 1] = X;
break;
}
else if (X < a[y])
{
printf("%d ", X);
for (k = 0; k < N; k++)
{
printf("%d ", a[k]);
}
return 0;
}
}
for (k = 0; k <= N; k++)
{
printf("%d ", a[k]);
}
return 0;
}
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。
注意:题目保证最大和最小值都是唯一的。
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。
在一行中顺序输出交换后的序列,每个整数后跟一个空格。
#include <stdio.h>
#include <stdlib.h>
# define MAX 11
int main(int argc, char *argv[])
{
int N, a[MAX], i, min, max, j, x, y, z, t, s, g;
scanf("%d", &N);
x = 0;
y = 0;
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
min = a[0];
for (j = 1; j < N; j++)
{
if (min > a[j])
{
min = a[j];
y = j;
}
}
z = a[0];
a[0] = min;
a[y] = z;
max = a[0];
for (g = 1; g < N; g++)
{
if (max < a[g])
{
max = a[g];
x = g;
}
}
t = a[N - 1];
a[N - 1] = max;
a[x] = t;
for (s = 0; s < N; s++)
{
printf("%d ", a[s]);
}
return 0;
}
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
#include <stdio.h>
#include <stdlib.h>
# define MAX 1001
int main(int argc, char *argv[])
{
int N, a[MAX], i, j, k, count, x, y;
scanf("%d", &N);
x = 0;
count = 0;
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
for (j = 0; j < N; j++)
{
for (k = 0; k < N; k++)
{
if (a[j] == a[k])
{
count++;
if (count > x)
{
x = count;
y = a[j];
}
}
}
count = 0;
}
printf("%d %d", y, x);
return 0;
}
给定两个整型数组,本题要求找出不是两者共有的元素。
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
#include <stdio.h>
#include <stdlib.h>
# define M 21
# define N 21
int main(int argc, char *argv[])
{
int m, n, a[M], b[N], i, j, k, x, y, z, printed[M+N];
scanf("%d", &m);
y = 0;
z = 0;
for (i = 0; i < m; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &n);
for (j = 0; j < n; j++)
{
scanf("%d", &b[j]);
}
for (k = 0; k < m; k++)
{
for (x = 0; x < n; x++)
{
if (a[k] == b[x])
{
y = 1;
break;
}
}
for (x = 0; x < z; x++)
{
if (a[k] == printed[x])
{
y = 1;
break;
}
}
if (y == 0)
{
if (z == 0)
{
printf("%d", a[k]);
}
else
{
printf(" %d", a[k]);
}
printed[z++] = a[k];
}
y = 0;
}
for (k = 0; k < n; k++)
{
for (x = 0; x < m; x++)
{
if (b[k] == a[x])
{
y = 1;
break;
}
}
for (x = 0; x < z; x++)
{
if (b[k] == printed[x])
{
y = 1;
break;
}
}
if (y == 0)
{
printf(" %d", b[k]);
printed[z++] = b[k];
}
y = 0;
}
return 0;
}