本文目录一览:
- 1、C语言实现ADC采样问题
- 2、无放回简单随机抽样方法抽出4个随机数用C语言怎么写,意要求采用编程语言自己设计程序完成
- 3、c语言中定义一个长度为200的数组,数组的值在每采样一次之后删除最先采集的,而保留最后采集的。最快的方法
C语言实现ADC采样问题
我的理解是这样的:
我不知道ADC_TEMP 是否已经被初始化为零了。如果是,思路就是这样 0000 0000 0000 0000 0000 0000 这是ADC_temp,AD_DATA 应该就是采样的 每一位 的数 比如采样你说的 101101,其实应该把前面的0补齐,也就是0000 0000 0000 0000 0010 1101 。然后经过for循环,从第一位开始取,当遇到1的时候,执行ADC_temp|= 1; 我们知道或运算的规则,1和什么都是1。所以就从第一位0开始取,直到取完最后一位,每取一位左移一位,再和输出的AD_DATA 或运算。前提是,这个AD_DATA是高位输出。
无放回简单随机抽样方法抽出4个随机数用C语言怎么写,意要求采用编程语言自己设计程序完成
(1)
#include "stdio.h"
#include stdlib.h
#include "time.h"
int main(int argc,char *argv[]){
int a[]={20,31,50,52,56,60,63,72,110,112},i,k,t,x;
srand((unsigned)time(NULL));
for(k=10,i=0;i4;i++){
printf("%d ",a[t=rand()%k]);
x=a[t],a[t]=a[--k],a[k]=x;
}
printf("\n");
return 0;
}
运行样例:
(2)
#include "stdio.h"
#include stdlib.h
#include "time.h"
int main(int argc,char *argv[]){
int a[]={20,31,50,52,56,60,63,72,110,112},i;
srand((unsigned)time(NULL));
for(i=0;i4;i++)
printf("%d ",a[rand()%10]);
printf("\n");
return 0;
}
运行样例:
(3)
#include "stdio.h"
#include stdlib.h
#include "time.h"
int main(int argc,char *argv[]){
int a[]={20,31,50,52,56,60,63,72,110,112},i,k,t[10];
srand((unsigned)time(NULL));
for(k=i=0;i10;i++)
if(a[i]45)
t[k++]=a[i];
if(!k){
printf("No qualified data, exit...\n");
return 0;
}
printf("%d ",t[rand()%k]);
for(k=i=0;i10;i++)
if(a[i]=45 a[i]=65)
t[k++]=a[i];
if(!k){
printf("No qualified data, exit...\n");
return 0;
}
printf("%d %d ",t[rand()%k],t[rand()%k]);
for(k=i=0;i10;i++)
if(a[i]65)
t[k++]=a[i];
if(!k){
printf("No qualified data, exit...\n");
return 0;
}
printf("%d\n",t[rand()%k]);
return 0;
}
运行样例:
c语言中定义一个长度为200的数组,数组的值在每采样一次之后删除最先采集的,而保留最后采集的。最快的方法
可以定义3个变量,一个标记数组的实际存放数值的大小a,一个标记存放数值的起始位置b,一个标记存放下一个数值的位置c,你按照循环的方式存放数据,比如现在存放160个数据,又来了一个数据并删除第一个数据,那么a不变为160,b变为(b+1)%200,把数组m[c]变为你新采集的数,然后c变为(c+1)%200,