33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#define gradeNum 10
int main()
{
int raw[gradeNum], sorted[gradeNum];
int i, j, j2, temp;
int minNum, maxNum;
for(i=0; i<gradeNum; i++)
{
printf("Enter the %d number: \n", i);
scanf("%d", &raw[i]);
}
minNum=raw[0];
maxNum=raw[2];
for(i=0; i<gradeNum; i++)
{
if(raw[i]>maxNum)
maxNum=raw[i];
}
printf("The max number is %d\n", maxNum);
for(i=0; i<gradeNum; i++)
{
for(j=0; j<gradeNum; j++)
{
if(raw[j]<minNum)
{
minNum=raw[j];
j2=j;
}
}
sorted[i]=minNum;
raw[j2]=raw[j2]+maxNum;
minNum=raw[j2];
printf("The value stored in %d position is %d\n", i, sorted[i]);
}
return 0;
}
这几天在忙别的,今天一看,发现问题很简单,就是在判断为真的时候把值存到另一个变量中,再改变最小值就可以了,一会结贴。
# include <stdio.h>
int main()
{
double raw[10];
double sorted[10];
double min = 0;
double selected;
int i;
int j;
printf("input 10 double: ");
for (i = 0; i < 10; i++)
scanf("%lf", raw + i);
for (i = 0; i < 10; i++)
{
selected = raw[0];
for (j = 0; j < 10; j++)
{
if (raw[j] > min && raw[j] < selected)
selected = raw[j];
}
min = selected;
sorted[i] = selected;
}
for (i = 0; i < 10; i++)
printf("%lf\n", sorted[i]);
return 0;
}
// Win32ApplicationTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <map>
#include <queue>
//#include <Psapi.h>
#include <fstream>
#include <vector>
#include <comdef.h>
#include <Winsock2.h>
#pragma comment ( lib, "psapi.lib" )
#pragma comment(lib, "ws2_32")
#include <windows.h>
//#include <stdio.h>
#include <string>
#include <locale>
#include <float.h>
using namespace std;
#define ArrSize 3
int _tmain(int argc, _TCHAR* argv[])
{
double raw[ArrSize]={0};
double sorted[ArrSize]={0};
cout<<"Please enter ten double values:"<<endl;
for (int i = 0;i <ArrSize;i++)
{
cout<<"the "<<i+1<<"th double value:";
cin>>raw[i];
//cout<<endl;
}
double tempValue = raw[0];
for (int j = 0;j < ArrSize; j++)
{
tempValue = DBL_MAX;
for (int i = 0;i <ArrSize;i++)
{
if (tempValue > raw[i] && raw[i] > sorted[j-1])
{
tempValue = raw[i];
}
cout<<raw[i]<<endl;
}
sorted[j] = tempValue;
}
for (int i = 0;i <ArrSize;i++)
{
cout<<"the sorted double value:";
cout<<sorted[i]<<" ";
}
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x;
int i;
int j;
int k;
int raw[11]={0};
int sorted[100]={0};
for(i=0;i<10;i++)
{
scanf("%d",&x);
raw[i]=x;
if(i==0)
sorted[i]=x;
sorted[i]=x;
for(j=0;j<i;j++)
{
if(sorted[i]<sorted[j])
{
int temp;
temp=sorted[j];
sorted[j]=sorted[i];
for(k=i;k>j;k--) //对于已经排好序的,只需要把后面的每位往后移动一个,然后再把交换的值放到刚输入的值之后就行了。。
{
sorted[k]=sorted[k-1];
}
sorted[j+1]=temp;
}
}
}
printf("The original order is:\n");
for(i=0;i<10;i++)
{
printf("%d ",raw[i]);
}
printf("\n");
printf("After sorted:\n");
for(i=0;i<10;i++)
{
printf("%d ",sorted[i]);
}
system("pause");
return 0;
}
for(t=0; t<gradeNum; t++)
{
for(i=0; i<gradeNum; i++)
{
if(raw[i]<minNum && raw[i] > stored[t - 1])
minNum=raw[i];
}
stored[t]=minNum;
printf("The value stored in %d position is %d\n", t, stored[t]);
}
我这样改你认为对不对
for(i=0;i<10;i++)
{
scanf("%d",x);
raw[i]=d;
for(j=0;j<i;j++)
{
if(d<sorted[j])
{
int temp;
temp=sorted[j];
sorted[j]=d;
for(k=i+1;k>j;k--) //对于已经排好序的,只需要把后面的每位往后移动一个,然后再把交换的值放到刚输入的值之后就行了。。
{
sorted[k]=sorted[k-1];
}
sorted[j+1]=temp;
}
else
sorted[i]=d;
}
}
额。。发现好像有点复杂。没有编译啊。。
for(t=0; t<gradeNum; t++)
{
for(i=0; i<gradeNum; i++)
{
if(raw[i]<minNum)
minNum=raw[i];
}
stored[t]=minNum;
printf("The value stored in %d position is %d\n", t, stored[t]);
}
自增的语句写在哪里?我已经计算出最大值,准备把它等于最大值,但是不知道出现最小值时是循环到哪里了。