求各位大佬帮忙解译下这个程序

#include<math.h>
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#include<windows.h>

int main()
{
void m1();void m2();void line(int x[]);
int sum=0; float s=0,k=0;int i,m;char g;

for(;;)
{
m1();
scanf("%d",&m);
switch(m)
{case 1:
int a[10];
for(i=0;i<=9;i++)
{printf("请输入第%d个数:\n",i+1);
scanf("%d",&a[i]);}
fflush(stdin);
getchar();
m2();
break;

case 2:line(a);
fflush(stdin);
g=getchar();m2();break;

case 3:
{int n;
printf("你想更改第几个数:",n);
scanf("%d",&n);
if(n<=10&&n>=1)
{printf("你想把第%d个数改为:",n);
scanf("%d",&a[n-1]);}
else
printf("error!!!");} fflush(stdin);
g=getchar();m2();break;

case 4:
line(a);
for(i=0;i<10;i++)
sum+=a[i];
printf("输入的数据和为%d\n",sum);
printf("输入的最大值为%d",a[9]);
printf("输入的最小值为%d",a[0]);
printf("输入的数据的黄金分割点为%f",(a[0]+a[9])*0.618);fflush(stdin);
g=getchar();
m2();break;
case 5:

for(i=0;i<10;i++)
s+=a[i];
for(i=0;i<10;i++)
k+=pow(a[i]-s/10,2);
printf("标准差等于%f",sqrt(k/10));
fflush(stdin);
g=getchar();
m2();break;
case 6:goto loop;

}
}
loop: ;

}
void m1()
{
printf("欢迎使用数据处理系统V1.00 alpha,请选择要使用的功能,并按回车键进入数据处理:\n");
printf("==================================\n");
printf("1.数据录入 |2.数据排序 |\n");
printf("==================================\n");
printf("3.修改数据 |4.数据特征计算 |\n");
printf("==================================\n");
printf("5.求标准偏差 |6.退出程序 |\n");
printf("==================================\n");
}
void m2()
{
system("cls");
}
void line(int x[])
{int b,c,d,i;
for(b=0;b<9;b++)
for(c=0;c<9-b;c++)
{if(x[c]>x[c+1])
d=x[c],x[c]=x[c+1],x[c+1]=d;}
printf("排列后的数列为:\n");
for(i=0;i<10;i++)
printf("%3d",x[i]);
}
加我q820238002,可以问下其中几个东西吗

第1个回答  2017-07-12
这个程序有两个双重循环,外循环用p控制,内循环用q控制。第一个双重循环的作用是对字符串str中的字符按字符顺序进行简单选择排序。第二个双重循环的作用是去除字符串str中重复的字符。

第一个双重循环中,p指针逐个指向字符串str中的字符,q从p位置开始到字符串结尾,寻找小于r位置字符的字符,如果r位置的字符不等于定位的p位置的字符,则交换r、p位置的字符。

第二个双重循环中,p指针逐个指向字符串str中的字符,q从p位置开始寻找与p位置字符不相同的字符,找到后将q开始的子串复制到p+1开始的位置,即p..q-1之间的位置为重复字符,只保留p位置的一个字符。

程序中有一个错误,“c=r”应该修改为“c=*r”。