从键盘上输入三个数,使用数组的形式,并让他们从大到小输出,怎么做

作者&投稿:诺览 (若有异议请与网页底部的电邮联系)
  从键盘输入三个数放入一维数组a[3]中,然后按从大到小的顺序排序并输出,c语言题目~



#include int _tmain(int argc, _TCHAR* argv[]){int a[3] = {0};int nTemp = 0;// 输入scanf("%d %d %d",&a[0],&a[1],&a[2]);// 冒泡排序for (int i = 0; i a[j]){nTemp = a[i];a[i] = a[j];a[j] = nTemp;}}}// 输出printf("a[0]=%d, a[1]=%d, a[2]=%d
",a[0],a[1],a[2]);system("pause");return 0;}

请将int *p1=&word1,*p2=&word2,*p3=word3;改成int *p1=&word1,*p2=&word2,*p3=&word3;
将cin>>word1>>word2>>word3>>endl;改成cin>>word1>>word2>>word3;
这个程序还有种写法:
void main()
{ int word1,word2,word3,*p1,*p2,*p3,*temp;
cin>>word1>>word2>>word3; p1=&word1; p2=&word2; p3=&word3;
if ( *p1 < *p2 ) { temp=p1; p1=p2; p2=temp; }
if ( *p1 < *p3 ) { temp=p1; p1=p3; p3=temp; }
if ( *p2 < *p3 ) { temp=p2; p2=p3; p3=temp; }
cout<<(*p1)<<(*p2)<<(*p3)<<endl;

}

当然不对了。你的循环,for(i=0;i<3;i++) scanf("%d",&a[i]);成功读入了三个数字没错。可是得仔细理解一个这个for循环是怎么结束的。第一次的时候 i =0 是初始化,i<3是维持循环继续的条件, i++ 是改判断循环与否的值的。 那么仔细说这三次循环,第一次, i =0; 判断一下,< 3 于是i++;i变为1,然后你读入第一个数。第二次循环,i是1,满足小于三,i++,i成2,你读取了第二个数,第三次循环,i=2;满足了小于三,i++变成3,你读入了第三个数。然后第四次循环,i=3;不满足条件,所以你的循环终止了。所以很明显 现在你的i是3;而数组呢,a[3]如果是定义,那么表示三个元素的一个数组,它包含 a[0] a[1] a[2], 很明显,s=max(p,a[i]);, 这个时候你用的a[i]就是a[3],它已经超出数组的范围了。所以错了。

还要说的是,你如果吧a[i]改成a[i-1],也只是让a[0]跟a[2]比较了,没有涉及到a[1]。更直观来说,你就调用了一次max函数,这个函数里一共就输出了两个数,不管你穿进去的是哪两个,都不可能把三个数从小打到输出啊~

声明一个中间值Temp
给你看个例子吧
#include<stdio.h>
void main()
{
int a=3;
int b=2;
int c=5;
int temp=0;
if(a<c)
{
temp=c;
c=a;
a=temp;
}
if(b<a)
{
temp=a;
a=b;
b=temp;
}
if(b<c)
{
temp=c;
c=b;
b=temp;
}
printf("%d\n%d\n%d",a,b,c);
getchar();

用C++编个程序,使用数组从键盘输入若干正数,输入一个负数结束输入,然后...
答://源码如下:include <iostream> using namespace std;int main(){ int num[100];int i=0,j,count=0;while (1){ cin>>num[i];if (num[i]<0)break;i++;count++;} for (i=0;i<=count-1;i++)for (j=i+1;j<=count-1;j++)if(num[i]>num[j]){ int temp = num[i];n...

定义一个数组,用循环实现从键盘上输入10个正整数并放入数组。怎么做...
答:2、使用int[] i=new int[6],定义一个长度为6的整型数组,其它类型类似,如下图所示。3、也可以在定义数组的时候,直接对数组进行赋值,使用String[] str=new String[]{"a","b","c"}定义一个长度为3的字符串数组,如下图所示。4、使用int[] ii=new int[]{0,1,2,3}定义一个长度为4...

键盘输入5个浮点数送入数组+把第一个数移到最后,后面的数都往前移动一...
答:代码分析:1,数据结构 定义一个数组保存输入的浮点数,并同时用于输出 float arr[5];2,数据输入 使用for循环输入5个浮点数 for(i=0; i<5; i++)scanf("%f",arr+i);3, 实现数组的循环移位 两种方法:一种使用中间变量保存第一个被移入的数据,最后放入需要移入的空位 第二种,数组本身多...

c语言程序设计,先从键盘上输入一个3行3列数组的各元素的值,然后按主
答:j<N;j++)a[i][j]=i+j;mPrint(a);for(i=0,m=N-1;i<N;i++,m--)for(j=0,k=N-1;i<k;j++,k--){ temp=a[i][j];a[i][j]=a[k][m];a[k][m]=temp;} mPrint(a);} main(){ mArray();} 输入的那个函数你自己写。我懒得输入... N=3,N=5的两张结果图 ...

C程序,从键盘上输入任意整型数组3x3型,从中找出所在行是最大,所在列...
答:printf("请任意输入一个3*3的整型数组:");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]); //输入数字,对数组进行初始化 for(i=0;i<3;i++){ row=i; //先假定row的值等于当前行 flag=1;for(j=1;j<3;j++){ //从当前行中找出该行的最小值,即要...

c语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序。
答:C的字符串是用字符数组操作的,所以排序应该用指针数组完成,以避免字符串拷贝。由于只有3个字符串,用直接操作的办法而不用循环以避免不必要的开销;输入函数选用fgets,既可以方便地控制输入长度不越界,又能允许字符串中存在空格。代码如下:include "stdio.h"#include "string.h"int main(int argc,...

...运用数组实现此程序,从键盘上输入不超过50个数字,统计其中的英文字符...
答:include<stdio.h> void main(){ int i,blank=0,letter=0,figure=0;char a[50];printf("pleass input array!\n");gets(a);for(i=0;a[i]!='\0';i++){ if(a[i]==' ')blank++;if(a[i]>'a'&&a[i]<'z'||a[i]>'A'&&a[i]<'Z')letter++;if(a[i]>'0'&&a[i]<...

从键盘上输入十个整数放入数组,找出最小数和它的下标,然后将最小数移动...
答:// 输出移动后的数组 printf("移动后的数组为:\n");for(int i = 0; i < 10; i++) { printf("%d ", arr[i]);} printf("\n");return 0;} ```这个程序使用循环实现从键盘上读入十个整数,并在读入过程中找出最小数及其下标。随后,使用另一个循环将最小数移动到数组的第一个位置...

c语言:输入5个整数,放入数组中,输出最大元素和最小元素的值
答:思路:先定义一个数组,并键盘输入一个数赋值给数组的第一个数,且把该数赋值给最大值和最小数,接着for循环输出剩下4个数,并判断该数和最大值最小值的大小关系,更新最大值和最小值,最后输出最大值和最小值。参考代码:include "stdio.h"int main(){int a[5],max,min,i;scanf("%d",...

...键盘上任意输入10个2位或3位整数存放在array数组中,找出array数组中...
答:程序:include<stdio.h> int sort(int word,int a[]){ int j,h,t;for(h=0;h<word;h++){ for(t=0;t<word-h;t++){ if(a[h]<a[h+1]){ t=a[h];a[h]=a[h+1];a[h+1]=t;} } } } main(){ int i,k,array[9],b[9];printf("please enter nine numbers:\n")...