解题思路:
1、第一步:用gets()方法的到输入的字符串。
2、第二步:(此处为难点)将字符串中的数字拆解出来,放到新的定义的数组当中。
3、第三步:对定义的数组进行选择排序。
对第二步详解:假设输入的例子是:asdnnn123,58 oo 95或者是按照空格隔开的如45 52 1 455 354 369 21 54 6这样的例子都可以用第二步骤来进行拆解。定义temp的作用是。通过temp来表记是否一个数字后面是否还有数字,如123,当第一个是1的时候temp会修改为1,接着得到12,遇到3时temp依旧是1,得到123,当遇到不是数字的字符时,就会得到temp等于0.
代码解释:a[i]=b[j]-'0';这一句是将char型的数字改为int型数字。
对第三步详解:选择排序就是用两个for循环来解决问题,两层for循环得到数组中最小的数字的位置下表,记录在k中,然后将a[k]替换到前面就好。
参考代码:
#include
int main(){
int a[10],i=0,j=0,temp=0,p,q,k,temp1,r;
char b[100];
gets(b);//第一步
while(b[j]!='\0'){
if(b[j]>='0'&&b[j]<='9'){
if(temp==0){
temp=1;
a[i]=b[j]-'0';
i++;
}else{
a[i-1]=a[i-1]*10+b[j]-'0';
}
}else{
temp=0;
}
j++;
}//第二步结束
for(p=0;p<i;p++){
k=p;
for(q=p+1;q<i;q++){
if(a[k]>a[q])k=q;
}
temp1=a[p];
a[p]=a[k];
a[k]=temp1;
}//第三步结束
for(r=0;r<i;r++){
printf("%d\n",a[r]);
}
return 0;
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:641 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C++代码)(手动优化一下计算)浏览:1367 |
程序员的表白 (C语言代码)浏览:1519 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:643 |
【亲和数】 (C语言代码)浏览:932 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:807 |
Hello, world! (C++代码)浏览:1779 |
【偶数求和】 (C语言代码)浏览:460 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:569 |
找出最长的字符串来 (C语言代码)浏览:1848 |