
1、打开Visual stdio软件,在空项目里新建一个c语言程序空文件:
2、d出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:
3、这里从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾,经过一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置,然后依次类推直到数组的最后一个数比较完,最后输出结果;
4、最后需要执行程序,按下crtl+F5d出程序的执行结果,就可以看到排序后的结果了:
在linux下GCC编译成功,如果你是VC的编译环境,应该也可以。#include <stdio.h>
/* 输出排序前和排序后的函数 */
void PrintfSort(int *a, int n)
{
int i, j, temp
printf("\n未排序的数组:\n\t")
for (i = 0i <ni++) /* 输出排序前的情况 */
printf("%d ", *(a+i))
printf("\n由小到大排序:\n\t")
/* 算法核心部分 */
for (j = n - 1j >0j--)/* 写成这样比较好 */
for (i = 0i <ji++)
if (*(a+i) >*(a+i+1))
{
temp = *(a+i)
*(a+i) = *(a+i+1)
*(a+i+1) = temp
}
for (i = 0i <ni++) /* 输出排序后的情况 */
printf("%d ", *(a+i))
printf("\n--END--\n\n")
printf("输入10个100以内的正数:\n") /* 循环输入 */
}
/* 获取输入字符的函数,带验证功能 */
void GetNumber(int *a, int n)
{/* 变量和函数声明 */
int i, j, power
int c/* 记录获取字符 */
int buff[3] = {0}/* 获取数字暂存在这里,如[24],储存为[2][4] */
void PrintfSort(int *, int) /* 要用到的输出函数 */
i = 0 /* 记录输入数字的个数,最大是10,因为要求输入10个数字 */
while (i <n) /* 循环输入n = 10次,就是10个数字 */
{
printf("\t输入第%2d个正数,然后按回车键: ", i+1)
while ((c = getchar()) == ' ' || c == '\n') /* 跳过开头输入的空格和回车,不写入数组 */
j = 0 /* 记录数字的位数,最多3位,因为最大的数是100,只有3位 */
/* 简单记录每次 输入的数字的位数+1,如19是两位,那么power值是100是三位 */
/* 由于输入的数字最大位数是三位 ,所以power值不会大于int型的最大值*/
power = 1
/* 判断输入的数字最大是三位数,缓存数组buff会记录每一位 */
/* 每位上的数是0至9的数,只要判断0至9就可以了 */
/* 允许输入空格,如“2 4”,实际是“24” */
while ((j <3 &&c - '0' >= 0 &&c - '0' <= 9) || c == ' ')
{
if (c == ' ') /* 当输入“2 4”,会跳过中间的空格,实际是“24” */
{
c = getchar()
continue
}
/* 记录这个数字到缓存数组 */
buff[j++] = c - '0'
power *= 10
c = getchar()
}
/* 每输入一个数字都要按回车确定结束 */
if (c == '\n')
{
j = 0
*(a+i) = 0
/* 如[2][4]最后将数字合并为[24],写入到数组a中
实际是和的累加,其中过程为4 * 1 加 2 * 10等于24 */
while (power >1)
{
power /= 10
buff[j] *= power
*(a+i) += buff[j]
j++
}
/* 第i个数大于100,会被要求重新输入第i个数 */
if(*(a+i) >100)
{
printf("不是0到100的数字!重新输入:\n")
continue
}
} else {/* 非数字的输入会被要求重新输入 */
printf("不是0到100的数字! 重新输入:\n")
/* 由于终端在回车后才显示内容 ,
while()可以避免连续多个错误输入在回车后出现多个printf() */
while (c != '\n')
c = getchar()
continue
}
i++ /* 如果顺利进行到这里,就记录一次成功输入 */
}
/* 上面 成功循环输入10次,就调用输出函数输出结果*/
PrintfSort(a, n)
}
/* 冒泡排序主函数 */
int main()
{ /* 声明变量和函数 */
int a[10]/* 记录10个数字 */
int n = 10
void GetNumber(int *, int)
printf("输入10个100以内的正数:\n")
while (1) /* 死循环输入,关闭就是关闭终端,比较简陋 */
GetNumber(a, n) /* 判断和记录都在这里进行 */
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)