2025年華為上機(jī)考試題庫_第1頁
2025年華為上機(jī)考試題庫_第2頁
2025年華為上機(jī)考試題庫_第3頁
2025年華為上機(jī)考試題庫_第4頁
2025年華為上機(jī)考試題庫_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2025年華為上機(jī)考試題庫本文借鑒了近年相關(guān)經(jīng)典試題創(chuàng)作而成,力求幫助考生深入理解測試題型,掌握答題技巧,提升應(yīng)試能力。---2025年華為上機(jī)考試題庫一、編程語言基礎(chǔ)(C/C++)1.選擇題:題目1:以下關(guān)于C語言變量的描述,正確的是?A.變量必須在使用前聲明B.變量可以在任何位置聲明C.變量名區(qū)分大小寫D.以上都是題目2:以下哪個運(yùn)算符的優(yōu)先級最高?A.``(乘法)B.`+`(加法)C.`=`(賦值)D.`==`(等于)題目3:以下哪個是正確的自增運(yùn)算符用法?A.`i++`或`++i`B.`i--`或`--i`C.`++i`或`i++`或`i--`或`--i`D.以上都是題目4:以下哪個是正確的字符串定義?A.`charstr[]="Hello";`B.`charstr="Hello";`C.`charstr={"Hello"};`D.以上都是題目5:以下哪個是正確的指針定義?A.`intp;`B.`intp=NULL;`C.`intp=0;`D.以上都是答案:1.D2.A3.D4.AB5.D解析:1.變量必須在使用前聲明,變量可以在任何位置聲明,變量名區(qū)分大小寫,所以選D。2.乘法運(yùn)算符的優(yōu)先級最高,其次是加法、賦值、等于,所以選A。3.自增運(yùn)算符可以是前置或后置,所以選D。4.字符串可以定義為字符數(shù)組或指針,所以選AB。5.指針可以定義為整型指針并初始化為NULL或0,所以選D。2.填空題:題目6:`inti=5;intp=&i;printf("%d",p);`輸出結(jié)果是______。題目7:`charstr[]="Hello";`數(shù)組str的長度是______。題目8:`for(inti=0;i<5;i++){printf("");}`輸出結(jié)果是______。題目9:`intarr[5]={1,2,3,4,5};`訪問arr[3]的結(jié)果是______。題目10:`chars="Hello";s[0]='h';`修改后`s`的值是______。答案:.410."ello"解析:6.`p`訪問的是變量`i`的值,所以輸出5。7.字符串的長度包括結(jié)尾的`\0`,所以是6。8.循環(huán)輸出5個``。9.數(shù)組索引從0開始,arr[3]是4。10.字符指針`s`指向的是字符串常量,修改`s[0]`會改變字符串的值,但常量字符串通常存儲在只讀內(nèi)存,實(shí)際效果取決于編譯器,但題目假設(shè)可以修改,所以輸出"ello"。3.編程題:題目11:編寫一個C程序,實(shí)現(xiàn)判斷一個整數(shù)是否為偶數(shù),如果是偶數(shù)輸出"Yes",否則輸出"No"。題目12:編寫一個C程序,實(shí)現(xiàn)將一個字符串翻轉(zhuǎn),例如輸入"Hello",輸出"olleH"。題目13:編寫一個C程序,實(shí)現(xiàn)計(jì)算1到100的累加和。題目14:編寫一個C程序,實(shí)現(xiàn)查找一個數(shù)組中的最大值和最小值,并輸出。題目15:編寫一個C程序,實(shí)現(xiàn)冒泡排序算法,對數(shù)組進(jìn)行升序排序。答案:```c//題目11include<stdio.h>intmain(){intnum;printf("Enteraninteger:");scanf("%d",&num);if(num%2==0){printf("Yes\n");}else{printf("No\n");}return0;}``````c//題目12include<stdio.h>include<string.h>intmain(){charstr[100];printf("Enterastring:");scanf("%s",str);intlen=strlen(str);for(inti=0;i<len/2;i++){chartemp=str[i];str[i]=str[len-i-1];str[len-i-1]=temp;}printf("Reversedstring:%s\n",str);return0;}``````c//題目13include<stdio.h>intmain(){intsum=0;for(inti=1;i<=100;i++){sum+=i;}printf("Sumof1to100is:%d\n",sum);return0;}``````c//題目14include<stdio.h>intmain(){intarr[100];printf("Enter100integers:\n");for(inti=0;i<100;i++){scanf("%d",&arr[i]);}intmax=arr[0],min=arr[0];for(inti=1;i<100;i++){if(arr[i]>max)max=arr[i];if(arr[i]<min)min=arr[i];}printf("Max:%d,Min:%d\n",max,min);return0;}``````c//題目15include<stdio.h>voidbubbleSort(intarr[],intn){for(inti=0;i<n-1;i++){for(intj=0;j<n-i-1;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}intmain(){intarr[100];printf("Enter100integers:\n");for(inti=0;i<100;i++){scanf("%d",&arr[i]);}bubbleSort(arr,100);printf("Sortedarray:\n");for(inti=0;i<100;i++){printf("%d",arr[i]);}printf("\n");return0;}```---二、算法與數(shù)據(jù)結(jié)構(gòu)1.選擇題:題目16:以下哪個數(shù)據(jù)結(jié)構(gòu)適合表示樹?A.隊(duì)列B.棧C.鏈表D.二叉樹題目17:快速排序的平均時間復(fù)雜度是?A.O(n)B.O(nlogn)C.O(n^2)D.O(logn)題目18:二分查找的時間復(fù)雜度是?A.O(n)B.O(nlogn)C.O(n^2)D.O(logn)題目19:以下哪個算法適合解決最短路徑問題?A.冒泡排序B.快速排序C.Dijkstra算法D.二分查找題目20:以下哪個算法適合解決拓?fù)渑判騿栴}?A.深度優(yōu)先搜索B.廣度優(yōu)先搜索C.Dijkstra算法D.二分查找答案:16.D17.B18.D19.C20.A解析:16.二叉樹是樹的一種常見表示方式,適合表示樹結(jié)構(gòu)。17.快速排序的平均時間復(fù)雜度是O(nlogn)。18.二分查找的時間復(fù)雜度是O(logn)。19.Dijkstra算法適合解決最短路徑問題。20.深度優(yōu)先搜索適合解決拓?fù)渑判騿栴}。2.填空題:題目21:在一個長度為n的數(shù)組中查找一個元素的最壞情況時間復(fù)雜度是______。題目22:一個棧的最大容量是m,棧的初始狀態(tài)為空,經(jīng)過一系列的push和pop操作后,棧的容量為k,棧的最大深度是______。題目23:在一個無向圖中,每個頂點(diǎn)的度數(shù)是k,該圖有n個頂點(diǎn),圖中的邊數(shù)是______。題目24:堆是一種特殊的______樹,分為最大堆和最小堆。題目25:在一個長度為n的數(shù)組中查找一個元素的最佳情況時間復(fù)雜度是______。答案:21.O(n)22.m23.nk/224.二叉25.O(1)解析:21.最壞情況下需要遍歷整個數(shù)組,時間復(fù)雜度是O(n)。22.棧的最大深度等于初始容量,即m。23.無向圖中,邊數(shù)是頂點(diǎn)度數(shù)之和的一半,即nk/2。24.堆是一種特殊的二叉樹。25.最佳情況下可以直接找到元素,時間復(fù)雜度是O(1)。3.編程題:題目26:編寫一個C程序,實(shí)現(xiàn)二分查找算法,在一個有序數(shù)組中查找一個元素,如果找到返回其索引,否則返回-1。題目27:編寫一個C程序,實(shí)現(xiàn)深度優(yōu)先搜索(DFS)遍歷一個無向圖,使用鄰接矩陣表示圖。題目28:編寫一個C程序,實(shí)現(xiàn)計(jì)算一個無向圖的度數(shù),使用鄰接矩陣表示圖。題目29:編寫一個C程序,實(shí)現(xiàn)堆排序算法,對數(shù)組進(jìn)行升序排序。題目30:編寫一個C程序,實(shí)現(xiàn)將一個數(shù)組轉(zhuǎn)換為最小堆。答案:```c//題目26include<stdio.h>intbinarySearch(intarr[],intl,intr,intx){while(l<=r){intm=l+(r-l)/2;if(arr[m]==x)returnm;if(arr[m]<x)l=m+1;elser=m-1;}return-1;}intmain(){intarr[]={2,3,4,10,40};intn=sizeof(arr)/sizeof(arr[0]);intx=10;intresult=binarySearch(arr,0,n-1,x);if(result==-1){printf("Elementisnotpresentinarray");}else{printf("Elementispresentatindex%d",result);}return0;}``````c//題目27include<stdio.h>voidDFS(intadjMatrix[][5],intvisited[],intcurrentVertex){visited[currentVertex]=1;printf("%d",currentVertex);for(inti=0;i<5;i++){if(adjMatrix[currentVertex][i]==1&&!visited[i]){DFS(adjMatrix,visited,i);}}}intmain(){intadjMatrix[5][5]={{0,1,1,0,0},{1,0,1,1,0},{1,1,0,1,0},{0,1,1,0,1},{0,0,0,1,0}};intvisited[5]={0};DFS(adjMatrix,visited,0);return0;}``````c//題目28include<stdio.h>voidcalculateDegree(intadjMatrix[][5],intn){for(inti=0;i<n;i++){intdegree=0;for(intj=0;j<n;j++){degree+=adjMatrix[i][j];}printf("Degreeofvertex%dis%d\n",i,degree);}}intmain(){intadjMatrix[5][5]={{0,1,1,0,0},{1,0,1,1,0},{1,1,0,1,0},{0,1,1,0,1},{0,0,0,1,0}};calculateDegree(adjMatrix,5);return0;}``````c//題目29include<stdio.h>voidheapify(intarr[],intn,inti){intlargest=i;intleft=2i+1;intright=2i+2;if(left<n&&arr[left]>arr[largest])largest=left;if(right<n&&arr[right]>arr[largest])largest=right;if(largest!=i){inttemp=arr[i];arr[i]=arr[largest];arr[largest]=temp;heapify(arr,n,largest);}}voidheapSort(intarr[],intn){for(inti=n/2-1;i>=0;i--){heapify(arr,n,i);}for(inti=n-1;i>=0;i--){inttemp=arr[0];arr[0]=arr[i];arr[i]=temp;heapify(arr,i,0);}}intmain(){intarr[]={12,11,13,5,6,7};intn=sizeof(arr)/sizeof(arr[0]);heapSort(arr,n);printf("Sortedarrayis\n");for(inti=0;i<n;++i)printf("%d",arr[i]);printf("\n");return0;}``````c//題目30include<stdio.h>voidswap(inta,intb){inttemp=a;a=b;b=temp;}voidheapify(intarr[],intn,inti){intlargest=i;intleft=2i+1;intright=2i+2;if(left<n&&arr[left]>arr[largest])largest=left;if(right<n&&arr[right]>arr[largest])largest=right;if(largest!=i){swap(&arr[i],&arr[largest]);heapify(arr,n,largest);}}voidbuildHeap(intarr[],intn){for(inti=n/2-1;i>=0;i--){heapify(arr,n,i);}}intmain(){intarr[]={12,11,13,5,6,7};intn=sizeof(arr)/sizeof(arr[0]);buildHeap(arr,n);printf("MinHeaparrayis\n");for(inti=0;i<n;++i)printf("%d",arr[i]);printf("\n");return0;}```---三、數(shù)據(jù)庫(SQL)1.選擇題:題目31:以下哪個是正確的SQL查詢語句?A.`SELECTFROMtable;`B.`SELECTcolumn1,column2FROMtableWHEREcolumn1='value';`C.`SELECTCOUNT()FROMtable;`D.以上都是題目32:以下哪個是正確的SQL插入語句?A.`INSERTINTOtable(column1,column2)VALUES('value1','value2');`B.`INSERTINTOtableVALUES('value1','value2');`C.`INSERTFROMtable2;`D.以上都是題目33:以下哪個是正確的SQL更新語句?A.`UPDATEtableSETcolumn1='value1'WHEREcolumn2='value2';`B.`UPDATEtableSETcolumn1='value1';`C.`UPDATEFROMtable2;`D.以上都是題目34:以下哪個是正確的SQL刪除語句?A.`DELETEFROMtableWHEREcolumn1='value1';`B.`DELETEtable;`C.`DELETEFROMtable;`D.以上都是題目35:以下哪個是正確的SQL連接查詢?A.`SELECTFROMtable1JOINtable2ONtable1.id=table2.id;`B.`SELECTFROMtable1,table2WHEREtable1.id=table2.id;`C.以上都是D.以上都不是答案:31.D32.A33.A34.A35.C解析:31.三個選項(xiàng)都是正確的SQL查詢語句。32.正確的插入語句是A。33.正確的更新語句是A。34.正確的刪除語句是A。35.兩個選項(xiàng)都是正確的SQL連接查詢。2.填空題:題目36:`SELECTDISTINCTcolumn1FROMtable;`查詢的結(jié)果是______。題目37:`SELECTcolumn1FROMtableWHEREcolumn1>10ANDcolumn1<20;`查詢的結(jié)果是______。題目38:`SELECTCOUNT(column1)FROMtable;`查詢的結(jié)果是______。題目39:`SELECTcolumn1,column2FROMtableORDERBYcolumn1DESC;`查詢的結(jié)果是______。題目40:`SELECTtable1.column1,table2.column2FROMtable1JOINtable2ONtable1.id=table2.id;`查詢的結(jié)果是______。答案:36.column1的唯一值37.column1在10和20之間的值38.column1的計(jì)數(shù)39.按column1降序排列的結(jié)果40.table1.column1和table2.column2的連接結(jié)果3.編程題:題目41:編寫一個SQL查詢語句,查詢表`students`中所有學(xué)生的姓名和年齡,年齡大于18歲的學(xué)生。題目42:編寫一個SQL查詢語句,查詢表`orders`中所有訂單的總金額,并按總金額降序排列。題目43:編寫一個SQL查詢語句,查詢表`employees`中每個部門的員工人數(shù)。題目44:編寫一個SQL查詢語句,查詢表`products`中每個產(chǎn)品的總庫存量。題目45:編寫一個SQL查詢語句,查詢表`customers`和`orders`的連接結(jié)果,顯示客戶姓名、訂單日期和訂單金額。答案:```sql--題目41SELECTname,ageFROMstudentsWHEREage>18;``````sql--題目42SELECTorder_id,SUM(amount)AStotal_amountFROMordersGROUPBYorder_idORDERBYtotal_amountDESC;``````sql--題目43SELECTdepartment,COUNT()ASemployee_countFROMemployeesGROUPBYdepartment;``````sql--題目44SELECTproduct_id,SUM(stock)AStotal_stockFROMproductsGROUPBYproduct_id;``````sql--題目45SELECT,orders.order_date,orders.amountFROMcustomersJOINordersONcustomers.customer_id=orders.customer_id;```---四、網(wǎng)絡(luò)編程1.選擇題:題目46:以下哪個協(xié)議用于傳輸超文本?A.FTPB.HTTPC.SMTPD.DNS題目47:以下哪個協(xié)議用于電子郵件傳輸?A.FTPB.HTTPC.SMTPD.DNS題目48:以下哪個協(xié)議用于域名解析?A.FTPB.HTTPC.SMTPD.DNS題目49:以下哪個協(xié)議用于文件傳輸?A.FTPB.HTTPC.SMTPD.DNS題目50:以下哪個協(xié)議用于實(shí)時通信?A.FTPB.HTTPC.SIPD.DNS答案:46.B47.C48.D49.A50.C解析:46.HTTP用于傳輸超文本。47.SMTP用于電子郵件傳輸。48.DNS用于域名解析。49.FTP用于文件傳輸。50.SIP用于實(shí)時通信。2.填空題:題目51:TCP協(xié)議提供______連接。題目52:UDP協(xié)議提供______連接。題目53:IP協(xié)議負(fù)責(zé)______。題目54:HTTP協(xié)議的默認(rèn)端口號是______。題目55:DNS協(xié)議的默認(rèn)端口號是______。答案:51.可靠52.無連接53.數(shù)據(jù)包傳輸54.8055.533.編程題:題目56:編寫一個C程序,使用socket編程實(shí)現(xiàn)客戶端和服務(wù)器之間的簡單通信,客戶端發(fā)送一條消息給服務(wù)器,服務(wù)器回復(fù)一條消息給客戶端。題目57:編寫一個C程序,使用socket編程實(shí)現(xiàn)HTTP請求和響應(yīng),客戶端發(fā)送一個簡單的HTTPGET請求,服務(wù)器回復(fù)一個簡單的HTTP響應(yīng)。題目58:編寫一個C程序,使用socket編程實(shí)現(xiàn)UDP客戶端和服務(wù)器之間的簡單通信,客戶端發(fā)送一條消息給服務(wù)器,服務(wù)器回復(fù)一條消息給客戶端。題目59:編寫一個C程序,使用socket編程實(shí)現(xiàn)DNS查詢,客戶端發(fā)送一個DNS查詢請求,服務(wù)器回復(fù)一個DNS查詢結(jié)果。題目60:編寫一個C程序,使用socket編程實(shí)現(xiàn)FTP客戶端,客戶端連接到FTP服務(wù)器,并發(fā)送一個簡單的FTP命令。答案:```c//題目56include<stdio.h>include<stdlib.h>include<string.h>include<unistd.h>include<sys/types.h>include<sys/socket.h>include<netinet/in.h>voiderror(constcharmsg){perror(msg);exit(1);}intmain(){intsockfd,portno,n;structsockaddr_inserv_addr;charbuffer[256];sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd<0)error("ERRORopeningsocket");portno=8080;memset(&serv_addr,0,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(portno);if(connect(sockfd,(structsockaddr)&serv_addr,sizeof(serv_addr))<0)error("ERRORconnecting");printf("Pleaseenterthemessage:");bzero(buffer,256);fgets(buffer,255,stdin);n=write(sockfd,buffer,strlen(buffer));if(n<0)error("ERRORwritingtosocket");bzero(buffer,256);n=read(sockfd,buffer,255);if(n<0)error("ERRORreadingfromsocket");printf("%s\n",buffer);close(sockfd);return0;}``````c//題目57include<stdio.h>include<stdlib.h>include<string.h>include<unistd.h>include<sys/types.h>include<sys/socket.h>include<netinet/in.h>voiderror(constcharmsg){perror(msg);exit(1);}intmain(){intsockfd,portno,n;structsockaddr_inserv_addr;charbuffer[256];sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd<0)error("ERRORopeningsocket");portno=8080;memset(&serv_addr,0,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(portno);if(connect(sockfd,(structsockaddr)&serv_addr,sizeof(serv_addr))<0)error("ERRORconnecting");strcpy(buffer,"GET/HTTP/1.1\r\nHost:localhost\r\n\r\n");n=write(sockfd,buffer,strlen(buffer));if(n<0)error("ERRORwritingtosocket");bzero(buffer,256);n=read(sockfd,buffer,255);if(n<0)error("ERRORreadingfromsocket");printf("%s\n",buffer);close(sockfd);return0;}``````c//題目58include<stdio.h>include<stdlib.h>include<string.h>include<unistd.h>include<sys/types.h>include<sys/socket.h>include<netinet/in.h>voiderror(constcharmsg){perror(msg);exit(1);}intmain(){intsockfd,portno;structsockaddr_inserv_addr;charbuffer[256];sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0)error("ERRORopeningsocket");portno=8080;memset(&serv_addr,0,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(portno);serv_addr.sin_addr.s_addr=INADDR_ANY;if(bind(sockfd,(structsockaddr)&serv_addr,sizeof(serv_addr))<0)error("ERRORonbinding");printf("Pleaseenterthemessage:");bzero(buffer,256);fgets(buffer,255,stdin);sendto(sockfd,buffer,strlen(buffer),0,(structsockaddr)&serv_addr,sizeof(serv_addr));bzero(buffer,256);socklen_tlen=sizeof(serv_addr);n=recvfrom(sockfd,buffer,255,0,(structsockaddr)&serv_addr,&len);if(n<0)error("ERRORreadingfromsocket");printf("%s\n",buffer);close(sockfd);return0;}``````c//題目59include<stdio.h>include<stdlib.h>include<string.h>include<unistd.h>include<sys/types.h>include<sys/socket.h>include<netinet/in.h>voiderror(constcharmsg){perror(msg);exit(1);}intmain(){intsockfd,portno;structsockaddr_inserv_addr;charbuffer[256];sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd<0)error("ERRORopeningsocket");portno=53;memset(&serv_addr,0,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(portno);serv_addr.sin_addr.s_addr=INADDR_ANY;if(connect(sockfd,(structsockaddr)&serv_addr,sizeof(serv_addr))<0)error("ERRORconnecting");strcpy(buffer,"\n");n=write(sockfd,buffer,strlen(buffer));if(n<0)error("ERRORwritingtosocket");bzero(buffer,256);n=read(sockfd,buffer,255);if(n<0)error("ERRORreadingfromsocket");printf("%s\n",buffer);close(sockfd);return0;}``````c//題目60include<stdio.h>include<stdlib.h>include<string.h>include<unistd.h>include<sys/types.h>include<sys/socket.h>include<netinet/in.h>voiderror(constcharmsg){perror(msg);exit(1);}intmain(){intsockfd,portno;structsockaddr_inserv_addr;charbuffer[256];sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd<0)error("ERRORopeningsocket");portno=21;memset(&serv_addr,0,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(portno);serv_addr.sin_addr.s_addr=INADDR_ANY;if(connect(sockfd,(structsockaddr)&serv_addr,sizeof(serv_addr))<0)error("ERRORconnecting");strcpy(buffer,"USERanonymous\r\n");n=write(sockfd,buffer,strlen(buffer));if(n<0)error("ERRORwritingtosocket");bzero(buffer,256);n=read(sockfd,buffer,255);if(n<0)error("ERRORreadingfromsocket");printf("%s\n",buffer);close(sockfd);return0;}```---五、操作系統(tǒng)1.選擇題:題目61:以下哪個是進(jìn)程的狀態(tài)?A.創(chuàng)建B.就緒C.運(yùn)行D.以上都是題目62:以下哪個是線程的狀態(tài)?A.創(chuàng)建B.就緒C.運(yùn)行D.以上都是題目63:以下哪個是進(jìn)程的調(diào)度算法?A.先來先服務(wù)B.短作業(yè)優(yōu)先C.時間片輪轉(zhuǎn)D.以上都是題目64:以下哪個是內(nèi)存管理的技術(shù)?A.分段B.分頁C.虛擬內(nèi)存D.以上都是題目65:以下哪個是文件系統(tǒng)的類型?A.FAT32B.NTFSC.ext4D.以上都是答案:61.D62.D63.D64.D65.D解析:61.進(jìn)程的狀態(tài)包括創(chuàng)建、就緒、運(yùn)行等。62.線程的狀態(tài)包括創(chuàng)建、就緒、運(yùn)行等。63.進(jìn)程的調(diào)度算法包括先來先服務(wù)、短作業(yè)優(yōu)先、時間片輪轉(zhuǎn)等。64.內(nèi)存管理的技術(shù)包括分段、分頁、虛擬內(nèi)存等。65.文件系統(tǒng)的類型包括FAT32、NTFS、ext4等。2.填空題:題目66:進(jìn)程是______的實(shí)例。題目67:線程是______的實(shí)例。題目68:死鎖是指兩個或兩個以上的進(jìn)程在______狀態(tài)。題目69:內(nèi)存分段的目的是______。題目70:虛擬內(nèi)存的目的是______。答案:66.操作系統(tǒng)67.進(jìn)程68.互相等待69.提高內(nèi)存利用率70.擴(kuò)展內(nèi)存尋址空間3.編程題:題目71:編寫一個C程序,使用多進(jìn)程編程實(shí)現(xiàn)并發(fā)打印數(shù)字1到10,每個進(jìn)程打印一個數(shù)字。題目72:編寫一個C程序,使用多線程編程實(shí)現(xiàn)并發(fā)打印數(shù)字1到10,每個線程打印一個數(shù)字。題目73:編寫一個C程序,使用互斥鎖實(shí)現(xiàn)多線程安全打印數(shù)字1到10,每個線程打印一個數(shù)字。題目74:編寫一個C程序,使用信號量實(shí)現(xiàn)多線程安全打印數(shù)字1到10,每個線程打印一個數(shù)字。題目75:編寫一個C程序,使用條件變量實(shí)現(xiàn)多線程同步,一個線程等待一個條件,另一個線程通知條件。答案:```c//題目71include<stdio.h>include<stdlib.h>include<sys/types.h>include<sys/wait.h>include<unistd.h>intmain(){for(inti=1;i<=10;i++){pid_tpid=fork();if(pid==0){printf("%d",i);exit(0);}}while(wait(NULL)>0);printf("\n");return0;}``````c//題目72include<stdio.h>include<stdlib.h>include<pthread.h>voidprint_number(voidarg){intnumber=((int)arg);printf("%d",number);returnNULL;}intmain(){pthread_tthreads[10];intnumbers[10];for(inti=0;i<10;i++){numbers[i]=i+1;if(pthread_create(&threads[i],NULL,print_number,&numbers[i])){fprintf(stderr,"Errorcreatingthread\n");return1;}}for(inti=0;i<10;i++){if(pthread_join(threads[i],NULL)){fprintf(stderr,"Errorjoiningthread\n");return2;}}printf("\n");return0;}``````c//題目73include<stdio.h>include<stdlib.h>include<pthread.h>pthread_mutex_tlock;intcounter=1;voidprint_number(voidarg){pthread_mutex_lock(&lock);intnumber=counter++;printf("%d",number);pthread_mutex_unlock(&lock);returnNULL;}intmain(){pthread_tthreads[10];pthread_mutex_init(&lock,NULL);for(inti=0;i<10;i++){if(pthread_create(&threads[i],NULL,print_number,NULL)){fprintf(stderr,"Errorcreatingthread\n");return1;}}for(inti=0;i<10;i++){if(pthread_join(threads[i],NULL)){fprintf(stderr,"Errorjoiningthread\n");return2;}}pthread_mutex_destroy(&lock);printf("\n");return0;}``````c//題目74include<stdio.h>include<stdlib.h>include<pthread.h>pthread_mutex_tlock;pthread_cond_tcond;intcounter=1;voidprint_number(voidarg){pthread_mutex_lock(&lock);while(counter<=10){pthread_cond_wait(&cond,&lock);intnumber=counter++;printf("%d",number);pthread_cond_signal(&cond);}pthread_mutex_unlock(&lock);returnNULL;}intmain(){pthread_tthreads[10];pthread_mutex_init(&lock,NULL);pthread_cond_init(&cond,NULL);for(inti=0;i<10;i++){if(pthread_create(&threads[i],NULL,print_number,NULL)){fprintf(stderr,"Errorcreatingthread\n");return1;}}pthread_cond_broadcast(&cond);for(inti=0;i<10;i++){if(pthread_join(threads[i],NULL)){fprintf(stderr,"Errorjoiningthread\n");return2;}}pthread_mutex_destroy(&lock);pthread_cond_destroy(&cond);printf("\n");return0;}``````c//題目75include<stdio.h>include<stdlib.h>include<pthread.h>pthread_mutex_tlock;pthread_cond_tcond;intflag=0;voidwaiter(voidarg){pthread_mutex_lock(&lock);while(!flag){pthread_cond_wait(&cond,&lock);}printf("Flagissetto1\n");pthread_mutex_unlock(&lock);returnNULL;}voidnotifier(voidarg){pthread_mutex_lock(&lock);printf("Flagissetto0\n");flag=1;pthread_cond_signal(&cond);pthread_mutex_unlock(&lock);returnNULL;}intmain(){pthread_twaiter_thread,notifier_thread;pthread_mutex_init(&lock,NULL);pthread_cond_init(&cond,NULL);if(pthread_create(&waiter_thread,NULL,waiter,NULL)){fprintf(stderr,"Errorcreatingwaiterthread\n");return1;}if(pthread_create(¬ifier_thread,NULL,notifier,NULL)){fprintf(stderr,"Errorcreatingnotifierthread\n");return2;}pthread_join(waiter_thread,NULL);pthread_join(notifier_thread,NULL);pthread_mutex_destroy(&lock);pthread_cond_destroy(&cond);return0;}```---六、信息安全1.選擇題:題目76:以下哪個是加密算法?A.AESB.RSAC.SHA-256D.以上都是題目77:以下哪個是散列算法?A.AESB.RSAC.SHA-256D.以上都是題目78:以下哪個是對稱加密算法?A.AESB.RSAC.SHA-256D.以上都是題目79:以下哪個是非對稱加密算法?A.AESB.RSAC.SHA-256D.以上都是題目80:以下哪個是數(shù)字簽名算法?A.AESB.RSAC.SHA-256D.以上都是答案:76.D77.C78.A79.B80.B解析:76.AES、RSA和SHA-256都是加密算法。77.SHA-256是散列算法。78.AES是對稱加密算法。79.RSA是非對稱加密算法。80.RSA是數(shù)字簽名算法。2.填空題:題目81:加密算法分為______和______。題目82:散列算法的特點(diǎn)是______。題目83:對稱加密算法的密鑰長度通常為______。題目84:非對稱加密算法的密鑰分為______和______。題目85:數(shù)字簽名的目的是______。答案:81.對稱加密82.單向性83.128位或256位84.公鑰85.證明數(shù)據(jù)的完整性和真實(shí)性3.編程題:題目86:編寫一個C程序,使用AES加密算法加密一條消息。題目87:編寫一個C程序,使用RSA加密算法加密一條消息。題目88:編寫一個C程序,使用SHA-256散列算法計(jì)算一條消息的散列值。題目89:編寫一個C程序,使用RSA非對稱加密算法生成密鑰對,并使用公鑰加密一條消息。題目90:編寫一個C程序,使用RSA數(shù)字簽名算法對一條消息進(jìn)行簽名,并驗(yàn)證簽名。答案:```c//題目86include<stdio.h>include<stdlib.h>include<string.h>include<openssl/aes.h>voidaes_encrypt(constcharinput,constcharkey,unsignedcharoutput){AES_KEYaes_key;unsignedcharivec[AES_BLOCK_SIZE];memset(ivec,0,AES_BLOCK_SIZE);if(AES_set_encrypt_key((unsignedchar)key,256,&aes_key)<0){fprintf(stderr,"Errorsettingencryptionkey\n");exit(1);}AES_cbc_encrypt((unsignedchar)input,output,strlen(input),&aes_key,ivec,AES_ENCRYPT);}intmain(){constcharinput="Hello,World!";constcharkey="0123456789abcdef0123456789abcdef";unsignedcharoutput[1024];aes_encrypt(input,key,output);printf("Encryptedmessage:");for(inti=0;i<strlen(input);i++){printf("%02x",output[i]);}printf("\n");return0;}``````c//題目87include<stdio.h>include<stdlib.h>include<string.h>include<openssl/rsa.h>include<openssl/pem.h>voidrsa_encrypt(constcharinput,RSArsa,unsignedcharoutput){if(RSA_public_encrypt(strlen(input),(unsignedchar)input,output,rsa,RSA_PKCS1_OAEP_PADDING)!=RSA_PKCS1_OAEP_PADDING){fprintf(stderr,"ErrorencryptingwithRSA\n");exit(1);}}intmain(){constcharinput="Hello,World!";RSArsa;unsignedcharoutput;BIGNUMbn=BN_new();BN_set_word(bn,65537);if(!RSA_new()){fprintf(stderr,"ErrorcreatingRSAkey\n");exit(1);}if(!RSA_generate_key_ex(rsa,2048,bn,NULL)){fprintf(stderr,"ErrorgeneratingRSAkey\n");exit(1);}output=(unsignedchar)malloc(RSA_size(rsa)2);rsa_encrypt(input,rsa,output);printf("Encryptedmessage:");for(inti=0;i<RSA_size(rsa);i++){printf("%02x",output[i]);}printf("\n");RSA_free(rsa);BN_free(bn);free(output);return0;}``````c//題目88include<stdio.h>include<stdlib.h>include<string.h>include<openssl/sha.h>voidsha256(constcharinput,unsignedcharoutput){SHA256_CTXsha256;unsignedcharhash[SHA256_DIGEST_LENGTH];SHA256_Init(&sha256);SHA256_Update(&sha256,input,strlen(input));SHA256_Final(hash,&sha256);memcpy(output,hash,SHA256_DIGEST_LENGTH);}intmain(){constcharinput="Hello,World!";unsignedcharoutput[SHA256_DIGEST_LENGTH];sha256(input,output);printf("SHA-256hash:");for(inti=0;i<SHA256_DIGEST_LENGTH;i++){printf("%02x",output[i]);}printf("\n");return0;}``````c//題目89include<stdio.h>include<stdlib.h>include<string.h>include<openssl/rsa.h>include<openssl/pem.h>voidrsa_encrypt(constcharinput,RSArsa,unsignedcharoutput){if(RSA_public_encrypt(strlen(input),(unsignedchar)input,output,rsa,RSA_PKCS1_OAEP_PADDING)!=RSA_PKCS1_OAEP_PADDING){fprintf(stderr,"ErrorencryptingwithRSA\n");exit(1);}}intmain(){constcharinput="Hello,World!"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論