C语言问题:从键盘输入十个整数,用选择排序法对输入的数据从小到大的顺序进行排序,将排序后的结果输出

作者&投稿:养世 (若有异议请与网页底部的电邮联系)
从键盘输入十个整数,用选择法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出~

#include
#include
using namespace std;
void collocate(int a[]);

int main()
{
int i,a[10];
cout<<"Please input 10 number: "<<endl;

for(i=0;i<10;i++)
cin>>a[i];

collocate(a);

for(i=0;i<10;i++)
cout<<setw(3)<<a[i];
cout<<endl;

return 0;
}

void collocate(int a[])
{
int i,j,temp;

for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[j]<a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
}

#include
main()
{
int s[10],t,i,j,x;
printf("input 10 numbers:
");
for(t=0;t<10;t++)
scanf("%d",&s[t]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(s[j]>s[j+1])
{t=s[j];s[j]=s[j+1];s[j+1]=t;}
printf("the result is:
");
for(j=0;j<10;j++)
printf("%d",s[j]);
printf("
");
}

#include<stdio.h>

void SelectSort(int a[],int n)

{

int i,j,temp,min;

for(i=0;i<n-1;i++)

{

min=i;

for(j=i+1;j<n;j++)//找到最小元素的位置

while(a[j]<a[min])

min=j;

if(min!=i)

{

temp=a[min];//元素的交换

a[min]=a[i];

a[i]=temp;

}

}

}

void main()

{

int a[10],i;

printf("please input 10 numbers:
");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("The array is:
");

for(i=0;i<10;i++)

printf("%-4d",a[i]);

SelectSort(a,10);

printf("
After sort the array is:
");

for(i=0;i<10;i++)

printf("%-4d",a[i]);

printf("
");

}

运行效果:

扩展资料:

scanf函数用法:

scanf("输入控制符",输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。



问题是在scanf("%d\n",&a[i]);,其实还是识别10个输入数。

问题关键是输入格式,\n,输入完10个数必须要有一个\n,但是单独的\n是不能识别的,所以需要至少加一个字符,引出\n,也就是你误以为的第十一个数。
修改意见:scanf("%d\n",&a[i]);改为scanf("%d",&a[i]);

//该带的括号都带好 注意编码规范
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) 
{
int a[10],t,i,j;

for(i=0;i<=9;i++)
{
scanf("%d",&a[i]); // 
去掉
}

for(i=0;i<=9;i++)
{
for(j=i+1;j<=9;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;

}
}
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
return 0;
}
23 45 67 43 87 88 86
43 87 69
23 43 43 45 67 69 86 87 87 88 Press any key to continue


scanf("%d\n",&a[i]);你这里输入格式不要加‘\n’,直接写scanf("%d",&a[i]);

#include <stdio.h>
#include <stdlib.h>
#define N 10
/* run this program using the console pauser or add your 
own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
  int a[N],t,i,j;
  for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    
  for(i=0;i<N;i++)
    for(j=i+1;j<N;j++)
      if(a[i]>a[j])
      {
          t=a[i];a[i]=a[j];a[j]=t;
      }
      
  for(i=0;i<N;i++)
    printf("%d",a[i]);
    
return 0;
}


用c语言编程。。急求。。。从键盘输入任意10个正整数,输出它们中高于该...
答:2013-10-15 c语言 从键盘输入10个数,求其中最大数,并输出。 2 2015-12-22 C语言编程:从键盘输入10个数,求最大值,最小值和平均值 5 2015-12-21 题目内容: 由键盘输入10个整数到一维整型数组a[10],输... 3 更多类似问题 > c语言编程的相关知识2009...

...类型为整形长度为10.要求从键盘输入10个整数到数组,并打印(要求...
答:include <stdio.h> int main(void){ int i;int array[10];printf("Please Input 10 Integers:\n");for (i = 0; i < 10; i++)scanf("%d", array+i);printf("Array Elements:\n");for (i = 0; i < 10; i++)printf("%d ", array[i]);printf("\n");return 0;} /* ...

输入10个整数,按照由大到小的顺序输出C语言编写
答:} 本回答由提问者推荐 举报| 答案纠错 | 评论 2 3 寂寞而莫我知也 采纳率:36% 来自团队:CppExpert 擅长: C/C++ 电脑/网络 汇编语言 互联网 常见软件 其他回答 #include<isostream.h>void main(){int data[10];cout<<endl<<"请输入10个整数:";int i;for(i=0;i<10;i++)cin>>data[10];...

用C语言编程:从键盘上输入10个整数,输出偶数的个数。求大神给过程啊,最...
答:include<cstdio>int a[20];int main(){printf("请输入十个整数\n");for(int i=0;i<=9;i++)scanf("%d",&a[i]);int sum=0;for(int i=0;i++;i<10){if(a[i]%2==0)sum++;}printf("偶数的个数是 %d\n",sum);return 0;} ...

用C语言编写一个程序: 从键盘输入 10 个整数,求出其中的最大值...
答:程序:include<stdio.h> int main(){ int arr[10] = {0};int i = 0;int max = 0;int min = 0;printf("请输入10个整数:");for (i = 0; i < sizeof(arr)/ sizeof(arr[0]); i++){ scanf("%d",&arr[i]);} max = arr[0];for (i = 0; i < sizeof(arr) / ...

C语言:从键盘输入10个整数,计算它们的总和。
答:include <stdio.h>int main( ){ int i,x,s=0; for(i=0;i<10;i++) {scanf("%d",&x); s+=x; } printf("sum=%d\n",s); return 0;}

C语言 从键盘输入十个整数,求这十个整数之和
答:include "stdio.h"main(){ int a[10],i,sum=0;for(i=0;i<=9;i++)scanf("%d",&a[i]);for(i=0;i<=9;i++)sum=sum+a[i];printf("sum=%d",sum);}

C语言编程:任意输入10个整数放入数组中,然后求其中的最大值和最小值...
答:1、任意输入10个整数放入数组中求其中的最大值和最小值的源代码如下:include <stdio.h> void main(){ int array[10];//用来存储输入的数据 int max;//用来存放最大的数 int i;//用于循环 for(i=0;i<10;i++) //一次输入10个数 { //输入一个数并按回车键 scanf("%d",&a[i])...

用c语言编程从键盘输入任意10个正整数?
答:定义一个变量a,接受键盘输入和变量sum保存a的各位数字之和,并依次对a进行除10操作,把a除10的余数加到sum中,直到a为0为止,sum最终的值就是a个位数字之和。 #include<math.h>#include<stdio.h>int main(){int a,sum=0;scanf("%d",&a);while(a){sum+=a%10;a/=10;}printf("%d\n...

求大神⊙▽⊙(C语言程序) 编程:从键盘输入10个整数存入整型数组中,统 ...
答:>0){ printf("%d,",a[i]);j++;} printf("\n");for(i=0;i<10;i++)if(a[i]<0){ printf("%d,",a[i]);n++;} printf("\n");for(i=0;i<10;i++)if(a[i]==0){ printf("%d,",a[i]);c++;} printf("共计%d个负数,%d个整数,%d个0",n,j,c);return 0;} ...