第八行的 do
修改为 while (1)
包含下 #include <conio.h>
28行的错误,看不到,你把后面的贴出来
代码修改如下,供参考:
#include <stdio.h>
void sort(int *a, int count);
int main()
{
int a[10] = {0}, i = 0, j;
printf("请输入待排序的数:\n");
do {
scanf("%d", &a[i]);
if (i > 9 || a[i] <= 0 || a[i] > 32627)
break;
i++;
}while (1);
printf("请输出排序前的各个元素的值:");
for (j = 0;j < i;j++)
printf("%5d", a[j]);
printf("\n");
sort(a , i);
printf("请输出排序后的各个元素的值:");
for (j = 0;j < i;j++)
printf("%5d", a[j]);
printf("\n");
return 0;
}
void sort(int *a, int count)
{
int i, j, tmp;
for (i = count - 1;i > 0;i--)
{
for (j = 0;j < i;j++)
{
if (a[j] > a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1]= tmp;
}
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:线性表(linear list )是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
对于如何计算两个数组的交集,可以考虑使用指针和循环来实现。具体步骤如下:
int a[] = {1, 2, 3, 4};
int b[] = {3, 4, 5, 6};
int size_a = sizeof(a) / sizeof(int);
int size_b = sizeof(b) / sizeof(int);
int result[size_a < size_b ? size_a : size_b]; // 取两个数组中较小的大小作为交集的最大可能大小
int count = 0; // 交集中元素的个数
int *p = a;
int *q = b;
while (p < a + size_a && q < b + size_b) {
// 比较p和q对应的值的大小,若相等则将该值添加到result数组中
if (*p == *q) {
result[count++] = *p;
p++;
q++;
}
// 否则将值较小的指针向后移动一位
else if (*p < *q) {
p++;
}
else {
q++;
}
}
printf("交集为:");
for (int i = 0; i < count; i++) {
printf("%d ", result[i]);
}
将以上步骤整合起来,得到完整代码如下:
#include <stdio.h>
int main() {
int a[] = {1, 2, 3, 4};
int b[] = {3, 4, 5, 6};
int size_a = sizeof(a) / sizeof(int);
int size_b = sizeof(b) / sizeof(int);
int result[size_a < size_b ? size_a : size_b]; // 取两个数组中较小的大小作为交集的最大可能大小
int count = 0; // 交集中元素的个数
int *p = a;
int *q = b;
while (p < a + size_a && q < b + size_b) {
// 比较p和q对应的值的大小,若相等则将该值添加到result数组中
if (*p == *q) {
result[count++] = *p;
p++;
q++;
}
// 否则将值较小的指针向后移动一位
else if (*p < *q) {
p++;
}
else {
q++;
}
}
printf("交集为:");
for (int i = 0; i < count; i++) {
printf("%d ", result[i]);
}
return 0;
}