试题列表:题型数:程序设计
1
试题要求(试题分数:50分,程序设计下第2题,共2题)
/米一
【程序设计】
功能:为整形数组a[6]输入数值,并使用冒泡排序将其从小到大排序。特别注意,请务必在
*****Begin禾**木米
*******End **********
中作答,并使用已定义好的变量,注意不介许定义新变单。
:#include <stdio.h> Eint main0
int a[6],i,j,temp; //i,j是循环变量,temp是中间变量
/Begin/
/End*** { return 0:
管题区 上一题 下一题
清空本题所做操作
题主问题描述不是很清晰,不知道是否写的正确
```c
for (int i=0; i<6; i++) {
printf("请输入第%d个数字:", i+1);
scanf("%d", &a[i]);
}
// 冒泡排序
for (int i=0; i<5; i++) {
for (int j=0; j<5-i; j++) {
if (a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
// 输出结果
printf("排序后的数组为:");
for (int i=0; i<6; i++) {
printf(" %d", a[i]);
}
printf("\n");
```
供参考:
#include <stdio.h>
int main()
{
int a[6], i, j, temp; //i,j是循环变量,temp是中间变量
/* Begin*/
for (i = 0; i < 6; i++)
scanf("%d", &a[i]);
for (i = 5; i > 0; i--)
{
for (j = 0; j < i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (i = 0; i < 6; i++)
printf("%d ", a[i]);
/*End***/
return 0;
}
解决方案:
冒泡排序的基本思路是依次比较相邻的两个数,如果前一个数比后一个数大,则交换这两个数。
由于题目限制不允许定义新变量,我们可以考虑使用输入数组的元素实现冒泡排序。具体步骤如下:
int arr[100]; // 定义用来存放输入整形数组的数组
int len; // 存放数组的长度
int i;
printf("请输入数组长度:");
scanf("%d", &len);
printf("请输入数组元素:");
for(i = 0; i < len; i++) {
scanf("%d", &arr[i]);
}
int j;
for(i = 0; i < len - 1; i++)
{
for(j = 0; j < len - i - 1; j++)
{
if(arr[j] > arr[j+1]) // 如果前一个数比后一个数大,则交换这两个数
{
arr[j] ^= arr[j+1];
arr[j+1] ^= arr[j];
arr[j] ^= arr[j+1];
}
}
}
#include<stdio.h>
int main()
{
int arr[100]; // 定义用来存放输入整形数组的数组
int len; // 存放数组的长度
int i, j;
printf("请输入数组长度:");
scanf("%d", &len);
printf("请输入数组元素:");
for(i = 0; i < len; i++) {
scanf("%d", &arr[i]);
}
for(i = 0; i < len - 1; i++)
{
for(j = 0; j < len - i - 1; j++)
{
if(arr[j] > arr[j+1]) // 如果前一个数比后一个数大,则交换这两个数
{
arr[j] ^= arr[j+1];
arr[j+1] ^= arr[j];
arr[j] ^= arr[j+1];
}
}
}
printf("排序后的数组元素为:");
for(i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}