该文章不适合小白看,适合有一定基础的人来练习基础,该代码包含对gets函数、键盘输入的缓冲区、指针和数组的理解,代码可能会很难看,但是难看的代码都看得得心应手何尝不是对自己基础的巩固?
#include<stdio.h>
#include<windows.h>
#include<math.h>
int PanDuan(char a){
if(a==' ' || a=='\0'){
if(a=='\0'){
return 2;
}else{
return 1;
}
}else{
return 0;
}
}
int charToInt(char x){
return x-'0';
}
int arrMaoPao(int* arr,int flag){
int i=flag;
for(i;i>0;i--){
int*now=(arr+i),j=1;
for(j;j<=i;j++){
int*nows=now,ken=0;
if (*nows<* (arr+i-j)){
ken=*nows;
*nows=* (arr+i-j);
* (arr+i-j)=ken;
*nows--;
}
}
}
return 0;
}
int main()
{
int i=0,j=0,h=0;
char arr[200];
int num[200];
printf("输入一串正数,以空格分隔:\n");
gets(arr);
for(i;i<sizeof(arr)/sizeof(arr[0]);i++){
if(PanDuan(arr[i])){
int sum=0,flag=0,k=i;
for(k=k-1;k>=0;k--){
if(PanDuan(arr[k])==1){break;}
else if(0==flag){
sum+=charToInt(arr[k]);
flag=flag+1;
}else{
sum+=(charToInt(arr[k]))*((int)pow(10.0,flag));
flag++;
}
}
num[j]=sum;
if(PanDuan(arr[i])==2){break;}
j++;
}
}
/*for(h;h<=j;h++){
printf("%d\n",num[h]);
}*/
/*int num[200]={3,25,45,98,21,12,43,62,10,7},j=9;*/
arrMaoPao(num,j);
while(j>=0){
printf("%d\n",num[j]);
j--;
}
return 0;
}
该代码实现的功能是输入一组数字,以空格为间隔,进行冒泡排序。该文章只作为本人笔记,有问题和错误请指出,本人很菜。
运行成效如下: