第一种:
/*
将uchar niu[8]={1,28,8,4,100,79,89,11}; AD采用冒泡法进行排序;(两个for循环嵌套);
****************************************************
编程思路:用最后一个数与前一个数比较,若比前一个数小
则交换位置,然后再与前一个数比较,若比前一个数小再交换
位置,知道比前一个数大或者已经在最前面!如此循环8次就可以排好循序!
*/
#include
#define uchar unsigned char
uchar niu[8]={8,28,6,4,100,79,102,11};
main()
{
uchar a,b,c,j,k;
for(j=0;j<8;j++) //设置循环次数为8
{
for(k=7;k>j;k--) //从最后一个数开始与前一个数比较
{
if(niu[k] {
c=niu[k-1];
niu[k-1]=niu[k];
niu[k]=c;
}
}
}
for(j=0;j<8;j++)
{
printf("%d\t",niu[j]); //输出排好的数列
}
printf("\n");
}
第二种:/*
将uchar niu[8]={1,28,8,4,100,79,89,11};
该算法用途:AD采样时采样20次,选一个中间值作为最终采样的值,可以采取该算法。
采用冒泡法进行排序;(两个for循环嵌套);
****************************************************
编程思路:用最后一个数与前一个数比较,若比前一个数小
则交换位置,然后再与前一个数比较,若比前一个数小再交换
位置,知道比前一个数大或者已经在最前面!如此循环8次就可以排好循序!
*/
#include
#define uchar unsigned char
uchar a,b,c,j,k;
uchar nsd[8]={8,28,6,4,100,79,102,11};
uchar maopao(uchar niu[8]);
uchar maopao(uchar niu[8])
{
for(j=0;j<8;j++) //设置循环次数为8
{
for(k=7;k>j;k--) //从最后一个数开始与前一个数比较
{
if(niu[k] {
c=niu[k-1];
niu[k-1]=niu[k];
niu[k]=c;
}
}
}
return 0;//这条可以不要,空的
}
void main()
{
maopao(nsd);
for(j=0;j<8;j++)
{
printf("%d\t",nsd[j]); //输出排好的数列
}
printf("\n");
}
第三种:
/* 检测字符串是否是回文:
abcba. 如果是返回1.如果不是:0
***************************************************************************
编程思路:用输入的字符串中的第一个字符与最后一个字符比较,若不相同则跳出比较
当比较的次数与输入的字符个数的一半相等时 则认为是回文!
*/
#include
#define uchar unsigned char
uchar hw[20];
void main()
{
uchar i,j;
printf("请连续输入字符串,按回车结束输入!\n");
for(i=0;i<20;i++) //设置输入 并记录输入个数为i
{
scanf("%c",&hw[i]);
if(hw[i]=='\n') //输入回车时 结束输入
{
break;
}
}
for(j=0;j {
if(hw[j]!=hw[i-j-1]) //比较相对应的字符 若不相等 就跳出循环
//并记录相同的个数为j
{
break;
}
}
if(j==i/2) //比较输入个数与匹配次数从而判断是否为回文
{
printf("您输入的字符串是回文\n");
}
else
{
printf("您输入的字符串不是回文\n");
}
}
第四种:
/*
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
************************************************************************
编程思路:将输入值从左到右开始于数组比较,若小于或等于此数组元素,
则把输入值存到B数组的相应位置,再把A数组后面的元素传递到B数组相应的位置,
若输入值大于它则把A数组元素传递到B数组元素
相应位置,
*/
#include
#define uchar unsigned char
#define uint unsigned int
uchar a[10]={4,6,8,11,28,66,79,100,102},b[10];
main()
{
uint m;
uchar i=0,j,k;
printf("请输入一个数字!回车结束!\n");
scanf("%d",&m); //输入值存m
for(j=0;j<9;j++) //从数组左侧开始判断
{
if(m<=a[j]) //若输入值小于或等于此处数组元素 则把m赋值到b数组相应的位置 再跳出循环
{
b[j]=m;
break;
}
else //若输入值大于此处的数组元素 则把a数组中的元素传递到b的相对位置
b[j]=a[j];
i=i+1; //设置标志位
}
if(i==9) //若输入值小于数组最大值 则把m赋值到第10个元素
b[i]=m;
else
{
for(k=0;k<(9-j);k++) //数组元素从a传递到b数组
{
b[j+k+1]=a[j+k];
}
}
for(k=0;k<10;k++) //输出数组b
printf("%d\t",b[k]);
}