在C语言中什么叫选择法

在C语言中什么叫选择法,第1张

选择法是每趟选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。

算法要求:用选择法对10个整数按降序排序。

基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。

c语言可以调用windows的api函数
有检测鼠标活动的函数
GetAsyncKeyState
这个不但可以检测键盘的按下,还能检测鼠标的按下
其实,类似的api很多,只要调用就行了
这个函数的用法百度百科有

用switch选择语句来要执行的函数,这样就可以让程序执行自己想运行的函数功能了。
例如:
switch(a)
{
case
1:s();
case
2:m();
}
这样如果你输入a值为1的话就执行s()函数,如果输入2的话就执行m()函数

应该是a[2][3]={{1,3,2},{8,0,3}} 吧
#include <iostream> //cout函数的头文件
#include <cstdlib>
#include <timeh> / srand函数与rand函数的头文件/
using namespace std;
int main()
{
int a[2][3]={{1,3,2},{8,0,3}},x,y,z;
srand ( (unsigned) time (NULL) );
x=rand()%2; //调用随机函数
y=rand()%3; //调用随机函数
z=a[x][y];
cout<<z<<"\n";
system ("pause");
return 0;
}
三楼,请注意素质
那是我的版权!!
楼主,一定要注意先来后到!
我本是2楼的,后因稍作修改,没想到3楼抄袭我。。。

1函数说明编辑函数原型:int
bioskey
(int
cmd)说明:bioskey()的函数原型在biosh中bioskey()完成直接键盘 *** 作,cmd的值决定执行什么 *** 作。cmd
=
0:当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。cmd
=
1:当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。cmd
=
2:当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。字节位
含义0
右边Shift键状态1
左边Shift键状态2
Ctrl键状态3
Alt键状态4
ScrollLock键状态5
NumLock键状态6
CapsLock键状态7
Insert键状态字节位为1表示该键被按下,为0表示松开。2函数例子编辑程序例:#include

// 我把你的程序修改了下,添加了些注释,你应该会看明白滴
// sort(int , int)函数是由大到小的排序方法。采用的算法
// 是第一次从x[0]x[4]中选出个最大的数,然后记录下它的索引,
// 如果第一个数不是最大的,就把第一个数和最大数进行交换,使得
// x[0]是五个书中的最大数,第二次就从x[1]x[4]中选一个最大的
// 然后把它放在x[1]的位置上。5个数,其实只需要四次就可以排好序滴
void sort(int x,int n)
{
// i,j都是循环变量temp是用于交换的临时变量,max是用于记录每一趟循环
// 中找到的最大值的下标。我这里的temp对应你原理的t,max对应你原来的k
int i, j, temp, max;
// 1外层的for循环用于控制查找的趟数,n个数排序,只需要n-1趟排序就可以滴
// 2你原来是 i<=n-1其实可以改为i<n-1可以少一趟滴。
// 3比如 1 2 3 这三个数排序,你可以先 假设第一个数即1是最大的,然后让1与第二个
// 4数进行比较即1与2比较1 < 2你记下2对应的下标,再让2与第三个数比较2 < 3再记下
// 5 3的下标所以3是最大的数字把3放到1的位置,把1放到3的位置,即交换位置。
// 6经过一次排序后变为3 1 2 第二次再排1 与2先假设1是1与2中最大的1<2记下2的下标
// 7交换1,2位置变为2 1 所以3个数进过两趟排序后已经变为有序了即3 2 1
// N个数只需N-1趟循环便可有序,外层循环用于控制循环趟数
for(i=0; i<n-1; i++)
{
// 先假设下标为i的数字是最大值
max = i;
// 也是用于控制循环次数,在第i趟中找出最大数的下标
// 第一次是从x[0]x[4]这5个数中找,第二次是从
// x[1]x[4]4个数中找这4个数的最大值第四次从x[3]与x[4]这两个数
// 中找最大值
for(j=i+1; j<n; j++)
{
// 用于找最大值的下标
if(x[j] > x[max])
max = j;
}
// 看第i趟循环中看x[i]是不是最大值如果是就不需要交换了
// 你也可以改为 if (x[i] < x[max]){交换两个数}
if(i!=max)
{
temp = x[i];
x[i] = x[max];
x[max] = temp;
}
}
}

以下代码能从0~9这10个数中随机选出3个数来。若有其他要求你可照猫画虎……

#include <stdioh>
#include "stdlibh"
#include "timeh"
int main(void){
    int a[]={1,2,3,4,5,6,7,8,9,0},i,j,k,t;
    srand((unsigned)time(NULL));
    for(k=10,i=0;i<3;i++){
        printf("%d ",a[j=rand()%k]);
        t=a[--k],a[k]=a[j],a[j]=t;
    }
    printf("\n");
    return 0;
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12702768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存