⑴ c語言休眠函數怎麼寫
1、sleep()函數:秒級休眠函數
#include <unistd.h >
unsigned int sleep(unsigned int unSeconds);
參數unSeconds表示需要休眠的秒數;
2、usleep()函數:微秒級休眠函數;
#include <unistd.h>
int usleep(useconds_t lMicroSeconds);
參數lMicroSeconds表示要休眠的微秒數;
#ifndef _SUSECONDS_T
#define _SUSECONDS_T
typedef long suseconds_t; /* signed # of microseconds */
#endif /* _SUSECONDS_T */
類型useconds_t定義在頭文件/usr/include/sys/types.h中;
3、nanosleep()函數:納秒級休眠函數;
#include <time.h>
int nanosleep(const struct timespec* rqtp, struct timespec* rmtp);
4、其它休眠函數:
select()、pselect()、poll();等;
select()函數也可以精確到微秒,pselect()函數也可以精確到納秒。
⑵ c語言 linux 中 poll 的參數
ufds 指向 struct pollfd 數組
nfds 指定 pollfd 數組元素的個數,也就是要監測幾個 pollfd
⑶ 兩個水壺,一個容量是5升的 另一個容量是 4升的 如何在5升的壺中裝入3升的水,C語言實現
#include"stdio.h"
typedefstructtong{
intval;
intmaxval;
}TONG;
//倒空水
#defineEMPTY(A)(A).val=0
//裝滿
#defineFULL(A)(A).val=(A).maxval
//獲取桶中水
intgetTongVal(TONG*a)
{
returna->val;
}
//用A桶的水灌滿B桶
voidpollAtoB(TONG*a,TONG*b)
{
//a中的水與b中的水可以裝滿b桶
if(a->val+b->val>b->maxval){
//a中剩餘
a->val=a->val+b->val-b->maxval;
//b裝滿
FULL(*b);
}else{//不能將b裝滿
b->val+=a->val;
EMPTY(*a);
}
}
intmain()
{
//初始化兩個桶
TONGa5,b4;
a5.val=0;
a5.maxval=5;
b4.val=0;
b4.maxval=4;
//結果
intresult=0;
//向a5中裝水
FULL(a5);
//用a5中的水灌滿b4桶
pollAtoB(&a5,&b4);
//取a5中剩餘的水,看是否達到目的
result=getTongVal(&a5);
printf("當前桶中水:%d ",result);
//循環
while(result!=3){
//清空b4
EMPTY(b4);
//將a中剩餘的水倒入b
pollAtoB(&a5,&b4);
//裝滿a
FULL(a5);
//用a裝滿b
pollAtoB(&a5,&b4);
//取a中剩餘的水
result=getTongVal(&a5);
printf("當前桶中水:%d ",result);
}
printf("完成取水! ");
return0;
}
⑷ C語言問題,求解答
第二個if為假的時候,不會執行POLL_WRITE_BYTE (E0CSR, ControlReg);啊,除非
if (EP_STATUS[0] != EP_STALL) POLL_WRITE_BYTE (E0CSR, ControlReg);後面還有一句
POLL_WRITE_BYTE (E0CSR, ControlReg);
⑸ 求編寫一個C語言程序。
/*
前3名的票數:
候選人 1: 14票。
候選人 2: 10票。
候選人 8: 8票。
Press any key to continue
/*
#include<stdio.h>
#defineN21//選舉人數
intisLegal(inta[3]){//選票合法性檢查
inti;
for(i=0;i<3;++i){
if(a[i]<0||a[0]>9)//未投選舉人,作廢
return0;
if(a[i]&&a[i]==a[(i+1)%3])//有重復票,作廢
return0;
}
return1;//其餘的都是有效票
}
voidsort(inta[],intb[],intn){
inti,j,k,t;
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j)
if(a[k]<a[j])k=j;
if(k!=i){
t=a[k];
a[k]=a[i];
a[i]=t;
t=b[k];
b[k]=b[i];
b[i]=t;
}
}
}
intmain(){
intcandidates[11];//10名候選人
intelectors[N][3]={//選舉人及投票情況,0表示不投任何人的票
{3,2,1},{1,2,8},{3,2,5},{2,1,8},{3,1,6},{5,3,1},{8,6,9},
{6,8,9},{3,8,9},{5,1,4},{0,1,2},{1,1,2},{3,2,5},{2,2,8},
{5,2,1},{0,0,1},{1,0,2},{8,1,2},{2,1,8},{3,1,4},{8,1,7},
};
inti,j,poll[11]={0};
for(i=1;i<11;++i)candidates[i]=i;
for(i=0;i<N;++i){
if(isLegal(electors[i])){
for(j=0;j<3;++j){
if(electors[i][j])//0表示不投任何人的票
++poll[electors[i][j]];
}
}
}
sort(poll+1,candidates+1,10);
printf("前3名的票數: ");
for(i=1;i<4;++i)
printf("候選人%3d:%d票。 ",candidates[i],poll[i]);
return0;
}
⑹ C語言 epoll和多線程有什麼關系
1、epoll處理並發事件,多線程處理並發業務。
2、poll是Linux內核為處理大批量文件描述符而作了改進的poll,是Linux下多路復用IO介面select/poll的增強版本,它能顯著提高程序在大量並發連接中只有少量活躍的情況下的系統CPU利用率。另一點原因就是獲取事件的時候,它無須遍歷整個被偵聽的描述符集,只要遍歷那些被內核IO事件非同步喚醒而加入Ready隊列的描述符集合就行了。epoll除了提供select/poll那種IO事件的水平觸發(Level
Triggered)外,還提供了邊緣觸發(Edge
Triggered),這就使得用戶空間程序有可能緩存IO狀態,減少epoll_wait/epoll_pwait的調用,提高應用程序效率。
⑺ c語言1)按成績高低排序,輸出排序後的成績;2)統計並輸出不及格成績、人數;3)輸出最高分、最低分
根據題目中信息所示:僅輸入一科目成績;人數不作為參數輸入;
現在假設:及格線為60分(題目未明確給出)
#include<stdio.h>
//#include< cstring>
//#include<algorithm>
typedef struct {
int grade;
}student;
//選擇排序
void selectSort(student stu[10],int n){
for(int i=0;i<=n;i++)
{int k=i;
for(int j=k+1;j<=n;j++){
if(stu[j].grade>stu[k].grade)
{k=j;
}}
int temp=stu[i].grade;
stu[i].grade=stu[k].grade;
stu[k].grade=temp;}}
//數據輸出
void display(student stu[10],int n)
{
for(int j=0;j<n;++j)
printf("%d ",stu[j].grade);
printf(" ");}
//數據最大值與最小值
void poll_values(student stu[2],int n){
printf("%d %d",stu[0].grade,stu[n].grade);
printf(" ");
}
int main(){
student stu[10];
student fail[10];
student poll[2];
int n=0;//總人數
int m=0;//不及格人數
while(n<10){
scanf("%d",&stu[n].grade);
if(stu[n].grade<0){
break;
}
++n;}
selectSort(stu,n);
//--------------------------------------
for(int i=0;i<n;i++)
if(stu[i].grade<60){
fail[m]=stu[i];
++m;}
selectSort(fail,m);
display(stu,n);
display(fail,m);
poll[0]=stu[0];
poll[1]=stu[n-1];
display(poll,2);
//poll_values(stu,n)
return 0;
}
運行結果如下
⑻ c語言數組求冪謝謝
#include<stdio.h>
#include<string.h>
int poll(int a,int b)
{
int i,s=1;
for(i=1;i<=b;i++)
s=s*a;
return s;
}//自定義的求冪函數
int main()
{
int i,j,k,l,n,m;
int t;
char a[100];
int poll(int a,int b);
while(scanf("%d %s",&n,a)!=EOF)//輸入
{
t=0;
l=strlen(a)-1;
printf("%d\n%s\n",n,a);//將輸入輸出
for(i=0;a[i]!='\0';i++)//轉換過程
{
if(n!=16)
{
t=t+(a[i]-'0')*poll(n,l);
l--;
}
else
{
if(a[i]>='A'&&a[i]<='f')
t=t+(a[i]-'A'+10)*poll(n,l);
else
t=t+(a[i]-'0')*poll(n,l);
l--;
}
}
printf("%d\n",t);//所求的結果
}
}
這個代碼沒有問題,不懂的話,在問我吧
其中n就是2或8或16,也可以是別的數,而a[]就是與n相對應的進制數
下面是輸入輸出樣例
2 10101010110
2
10101010110
1366
8 777777777
8
777777777
134217727
16 F08F89FAD
16
F08F89FAD
150511533
⑼ c語言 linux 中 poll 的參數
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
#include <sys/poll.h>int poll(struct pollfd *ufds, unsigned int nfds, int timeout);struct pollfd{int fd; /* 想查詢的文件描述符. */short int events; /* fd 上,我們感興趣的事件*/short int revents; /* Types of events that actually occurred. */};請問第二個參數unsigned int nfds的含義,它傳遞什麼信息?
解析:
ufds 指向 struct pollfd 數組
nfds 指定 pollfd 數組元素的個數,也就是要監測幾個 pollfd
⑽ 有C語言高手能幫解釋下第3行代碼的意思嗎
聲明一個消息代碼變數,if (bsp_GetMsg(&ucMsg)) /* 讀取消息代碼 */
這一句裡面有用到。
這個地方是消息驅動的,只有接到消息才會執行相應操作
switch (ucMsg.MsgCode) 就是根據消息的不同類型進行不同的操作