欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      實驗四 Linux下的C語言編程以及GCC工具的使用

      時間:2019-05-13 03:47:44下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《實驗四 Linux下的C語言編程以及GCC工具的使用》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《實驗四 Linux下的C語言編程以及GCC工具的使用》。

      第一篇:實驗四 Linux下的C語言編程以及GCC工具的使用

      實驗四 Linux下的C語言編程以及GCC工具的使用

      【實驗目的】了解Linux下的用戶管理機制,熟練掌握Linux下的C語言編程以及GCC工具的使用。

      【預備知識】復習C/C++語言的基本技能、用戶管理知識和GCC使用的內(nèi)容。

      【實驗要求】Linux系統(tǒng)管理的一項重要工作就是用戶管理。用戶的口令以加密的形式存儲在/etc/shadow文件中.弱口令就是很容易被猜出來的口令,比如與用戶名相同的口令、常用的單詞口令等。管理員應該定期檢測系統(tǒng)中是否存在弱口令。試編寫一個C語言程序,主動檢查自己的Linux系統(tǒng)中是否存在弱口令。

      【實驗步驟】

      1)分析/etc/shadow文件的格式??梢圆榭醋约旱南到y(tǒng)中該文件的格式,根據(jù)8.1節(jié)的介紹,該文件的每一行對應一個用戶,下面是一個系統(tǒng)中/etc/shadow文件的實例:root:$1$j33ff543SWQ/C7Swn6jR9xyfoEcLaS.:12912:0:99999:7:::bin:*:12834:0:99999:7:::

      daemon:*:12834:0:99999:7:::

      2)了解Linux下口令加密的原理。

      口令的加密是使用Linux系統(tǒng)的crypt函數(shù)實現(xiàn)的。使用info或者man可以了解該命令的工作原理。它使用包含12個字符的字符串作為種子salt,將用戶輸入的口令key進行加密pwd=crypt(key.salt),將所得的包含34個字符的字符串存入,etc,shadow文件的第2個字段,這34個字符的前12個就是salt。當給用戶設置口令時,種子是由系統(tǒng)隨機選取的。

      當用戶在登錄界面中輸入自己的口令時,系統(tǒng)使用crypt進行上述計算,如果所得的結(jié)果與/etc/shadow中存儲的一致,則允許用戶登錄。

      3)檢查弱口令。弱口令就是很容易被猜出來的口令。比如admin、guest、fllower、123456、beauty等。在口令猜測或者破解時,一般不會窮盡所有字符的所有排列組合,一般使用弱口令字典,字典中包含常被用來作為口令的字符串??梢缘骄W(wǎng)上查找弱口令字典。

      下面介紹弱口令檢查的原理。對每個用戶而言,逐個將經(jīng)常被作為口令的詞,使用crypt做加密,如果加密結(jié)果與/etc/shadow所存儲的內(nèi)容相同,則口令被猜出來。

      4)用C語言編寫實現(xiàn)口令檢查,關(guān)鍵部分的代碼如下。通過讀取,etc/shadow的每一行,獲得一個關(guān)于

      用戶的數(shù)據(jù)結(jié)構(gòu),存放在pwd中。

      char saltstr[13];//存放種子

      saltstr[13]=’\0’;

      strncpy(saltstr,pwd->pw_passwd,12);//將口令的前12個字符作為種子 cp=crypt(guess,saltstr);//加密

      if(strncmp(cp,pwd->pw_passwd,34))//與存儲的不一致

      return(0);

      Printf(“Warninq!Password Problem:Guessed:\t%s\tpasswd:%s\n”,pwd->pw-name,guess);//找到口令,顯示信息

      5)編譯運行,命令為:

      gcc-o passchk pass.c-Icrypt

      6)執(zhí)行口令檢查程序。

      第二篇:C語言-實驗四

      課程名稱實驗項目

      學院 系別 班級/學號 學生姓名 實驗日期 成績 指導教師

      程序設計基礎(C語言)實驗四 數(shù)組

      (二)

      一、實驗目的

      1.掌握二維數(shù)組的定義和初始化。2.掌握二維數(shù)組元素的引用及其應用。

      二、實驗內(nèi)容

      注:本次實驗完成前三個題目或者僅完成第四個題目最高分為90分,完成全部四個題目最高分100分。

      題目1:輸入十個人的姓名,并按升序輸出。(用選擇法或者冒泡法排序)

      流程圖:

      代碼:

      #include #include int main(){

      { int i,j;char a[10][5],t[2];printf(“請輸入十個人的名字:n”);for(i=0;i<10;i++){ } for(j=0;j<10;j++){

      } printf(“排序輸出:n”);for(i=0;i<10;i++)for(i=0;i<10-j;i++){

      } if(strcmp(a[i],a[i+1])>0){

      } strcpy(t,a[i]);strcpy(a[i],a[i+1]);strcpy(a[i+1],t);gets(a[i]);} puts(a[i]);return 0;}

      題目2:求兩個矩陣的積。如:

      運算規(guī)則為:

      第i行第j列相乘得到結(jié)果矩陣中r[i][j]的值。比如:

      r[0][0] = 1*1+2*5+3*8=35;r[0][1] = 1*5+2*3+3*1=14;r[1][0] = 4*1+5*5+6*8=77;r[1][1] = 4*5+5*3+6*1=41;要求:

      1.數(shù)組的行數(shù)和列數(shù)不超過100。

      2.輸入第一行中,第一個正整數(shù)m,表示第一個矩陣的行數(shù),輸入第二個正整數(shù)n,表示第一個矩陣的列數(shù),也即是第二個矩陣的行數(shù),輸入第三個正整數(shù)p,表示第二個矩陣的列數(shù)。

      3.接下來的m*n個數(shù)是第一個矩陣中的數(shù)。4.再接下來的n*p個數(shù)是第二個矩陣中的數(shù)。5.輸出計算結(jié)果,為一個m行,p列的矩陣。流程圖:

      #include int main(){

      int a[100][100]={0},b[100][100]={0},c[100][100]={0},i,j,k,n,m,p;printf(“請輸入第一個矩陣的行數(shù)m:n”);scanf(“%d”,&m);printf(“請輸入正整數(shù)n(第一個矩陣的列數(shù),也是第二個矩陣的行數(shù)):n”);

      for(i=0;i

      for(j=0;j

      printf(“這兩個矩陣的和為:n”);for(i=0;i

      } for(j=0;j

      題目3:求矩陣的鞍點。鞍點位置上的元素在該行中值最大,在該列中值最小。如下面矩陣的鞍點為35。

      【輸入】前兩個數(shù)為行數(shù)和列數(shù),其后是矩陣中的元素

      【輸出】如果沒有鞍點,輸出NO;如果有輸出格式為:[值1,行下標1,列下標1],[值2,行下標2,列下標2]…… 流程圖:

      #include int main(){

      int a[100][100];int m,n,i,j,t,k;printf(“請輸入行數(shù)m和列數(shù)n:n”);scanf(“%d%d”,&m,&n);printf(“請輸入這個%d*%d矩陣:n”,m,n);for(i=0;i

      for(j=0;j

      for(t=0,j=1;ja[j][t])break;if(j>=m){

      } k=1;printf(“鞍點[%d]是%d:行下標%d,列下標%dn”,k,a[i][t],i,t);k++;} return 0;} 運行結(jié)果:

      題目4:學生成績統(tǒng)計

      ? 一個班共有6名學生,已知每個學生有5門課程的成績 ? 請輸出每個學生的平均成績 ? 請輸出每門課程的平均成績 ? 請輸出學生的最高平均成績和序號 ? 請輸出課程的最高平均成績和序號 流程圖:

      #include int main(){

      float a[7][6],b[7],c[6];int m,n,i;printf(“請輸入6名學生的5門課程的成績:n”);for(m=1;m<7;m++){

      } for(m=1;m<7;m++){

      } for(n=1;n<6;n++){

      } for(m=1;m<7;m++)c[n]=0;for(m=1;m<7;m++)c[n]+=a[m][n];b[m]=0;for(n=1;n<6;n++)b[m]+=a[m][n];for(n=1;n<6;n++)scanf(“%f”,&a[m][n]);b[m]=b[m]/5;printf(“第%d名學生的平均成績?yōu)?.1fn”,m,b[m]);c[n]=c[n]/6;printf(“第%d門課的平均成績?yōu)?.1fn”,n,c[n]);

      } {

      } for(m=1;m<6;m++){

      } return 0;i=0;for(n=1;n<6;n++){

      } if(i==5)printf(“第%d門課成績最高為%.1fn”,m,c[m]);if(c[m]>=c[n])i++;i=0;for(n=1;n<7;n++){

      } if(i==6)printf(“第%d名學生成績最高為%.1fn”,m,b[m]);if(b[m]>=b[n])i++;運行結(jié)果:

      題目5:井字格游戲

      程序大致的執(zhí)行過程如圖所示: 功能包括:

      1.允許兩個玩家下棋 2.允許玩家輸入下棋的坐標 3.顯示當前棋盤狀態(tài)

      4.判斷玩家是否下錯位置,即在已經(jīng)下過棋的位置再次下棋 5.判斷玩家下棋后,輸贏狀態(tài) 6.在屏幕提示中指導玩家交替下棋

      流程圖: 省列。代碼:

      #include #include int c,i,j,kongzhi=1,i=1;int basic[3][3]={0,0,0,0,0,0,0,0,0};int tasic[3][3]={0,0,0,0,0,0,0,0,0};char T[3][3];int printerA(int site1,int site2){ if(tasic[site1][site2]==0&&basic[site1][site2]==0){basic[site1][site2]=1;

      T[site1][site2]='X';for(i=0;i<3;i++){

      printf(“-------n”);for(j=0;j<3;j++){ printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2)

      } else return 99;} printf(“-------n”);} return 0;int printerB(int site1,int site2){

      if(tasic[site1][site2]==0&&basic[site1][site2]==0){ tasic[site1][site2]=-1;T[site1][site2]='O';for(i=0;i<3;i++){ printf(“-------n”);for(j=0;j<3;j++)

      { printf(“|”);printf(“%c”,T[i][j]);} printf(“|n”);if(i==2){ printf(“-------n”);} } return 0;} else return-99;} int main(){ int m,n,a,b;while(kongzhi==1){

      if((basic[0][0]+basic[0][1]+basic[0][2]==3)||(basic[1][0]+basic[1][1] do { a=0;printf(“請A下子:”);scanf(“%d%d”,&m,&n);

      a=printerA(m,n);if(a==99)printf(“對不起,您下錯位置了!n”);} while(a==99);+basic[1][2]==3)||(basic[2][0]+basic[2][1]+basic[2][2]==3)||(basic[0][0]+basic[1][1]+basic[2][2]==3)||(basic[0][2]+basic[1][1]+basic[2][0]==3)){ printf(“A贏了!n”);return 0;} do { b=0;printf(“請B下子:”);scanf(“%d%d”,&m,&n);

      b=printerB(m,n);if(b==-99)

      printf(“對不起,您下錯位置了!n”);} while(b==-99);if((tasic[0][0]+tasic[0][1]+tasic[0][2]==-3)||(tasic[1][0]+tasic[1][1]+tasic[1][2]==-3)||(tasic[2][0]+tasic[2][1]+tasic[2][2]==-3)||(tasic[0][0]+tasic[1][1]+tasic[2][2]==-3)||(tasic[0][2]+tasic[1][1]+tasic[2][0]==-3))

      { printf(“B贏了!n”);return 0;} i++;if(i==9){ printf(“平局!”);return 0;} } } 運行結(jié)果:

      心得體會:這幾道題加深了我對數(shù)組的理解,及其相關(guān)應用。

      第三篇:C語言程序設計實驗四(本站推薦)

      C語言程序設計實驗

      (四)[實驗1] scanf()、printf()函數(shù)的使用。

      1.實驗題目

      輸入1個學生學號和4門課程成績,輸出這個學生的學號、4門課程成績和平均成績。

      2.實驗要求

      (1)按表格的形式輸出,以行內(nèi)輸出一個學生的信息。

      (2)學號用長整型,各科成績用單精度型。

      3.實驗目標

      (1)掌握實現(xiàn)人機對話形式的方法,scanf()輸入。

      (2)體會根據(jù)需要控制輸出格式的方法,printf()輸出。

      4.實驗指導

      利用格式的數(shù)據(jù)寬度控制數(shù)據(jù)的對位輸出。輸出如下格式:

      The number and score of a student is:

      |---|

      |number | score1 | score2 | score3 | sco re4 | average |

      |---|

      |10011| 67.5|88.0 |93.5 |78.0|81.75 |

      |---|

      [實驗2] getchar()、putchar()函數(shù)的使用

      1.實驗題目

      用getchar()函數(shù)讀入a~v之間的一個字母,用putchar()函數(shù)輸出一個5行5列的矩陣,該矩陣第一行為讀入的字母,下一行為緊跟該字母后的字母,依此類推。如輸入a,則輸出的矩陣為:

      aaaaa

      bbbbb

      ccccc

      ddddd

      eeeee

      2.實驗要求

      (1)運用getchar()進行字符輸入。

      (2)運用putchar()進行字符輸出。

      3.實驗目標

      (1)體會根據(jù)需要控制輸出格式的方法。

      [實驗3] 3.6 下面程序運行時在鍵盤上如何輸入?如果a=3,b=4,x=8.5,y=71.82,c1=’A’,c2=’a’,請寫出對應每個scanf函數(shù)的輸入情況。

      main()

      { int a,b;float x,y;char c1,c2;

      scanf(“a=%d□b=%d”,&a,&b);

      scanf(“□%f %e”,&x,&y);

      scanf(“□%c %c”,&c1,&c2);

      }

      3.7編一程序,從鍵盤輸入一個圓半徑值,求圓周長、圓面積、圓球表面積、圓球體積。輸出結(jié)果時,要求有文字說明,保留2位小數(shù)。

      提示:設圓半徑為r,則圓周長=2πr,圓面積=πr2,圓球表面積=4πr2,圓球體積= 4πr3/3。

      第四篇:《C語言程序設計》實驗四

      電子科技大學 計算機 學院

      標 準 實 驗 報 告

      (實驗)課程名稱

      C語言程序設計

      電子科技大學教務處制表

      電 子 科 技 大 學 實

      學生姓名:

      學 號:

      指導教師:劉 勇 實驗地點: 計算機學院軟件306室

      實驗日期:

      ****年**月**日

      一、實驗室名稱:

      軟件實驗室

      二、實驗項目名稱:函數(shù)的應用及預處理

      三、實驗學時:2

      四、實驗原理:

      使用Turbo C軟件(簡稱TC),在微型計算機上,對其程序進行編輯、編譯、連接與運行。Turbo C是一個集成環(huán)境,它具有方便、直觀、易用的界面和豐富的庫函數(shù)。通過上機練習掌握在TC環(huán)境下編輯、編譯、連接、和運行C程序的方法和過程。

      五、實驗目的

      1. 掌握C語言中定義函數(shù)的方法; 2. 掌握函數(shù)傳值調(diào)用的方法; 3. 掌握函數(shù)傳址調(diào)用的方法; 4. 掌握遞歸函數(shù)的設計方法; 5. 掌握命令行參數(shù)的使用方法;

      6. 掌握函數(shù)在不同文件中的編譯、鏈接方法。

      六、實驗內(nèi)容

      編程實驗,完成以下上機內(nèi)容,調(diào)試運行程序并完成報告 1)、教材第七章習題7.4;

      2)、編寫一個實現(xiàn)冒泡法排序的函數(shù),并在主函數(shù)中從鍵盤上輸入6個數(shù)后進行排序輸出;

      3)、教材第七章習題7.11; 4)、教材第七章習題7.15; 5)、教材第七章習題7.24; 6)、求解漢渃塔(tower of Hanoi)問題。在一塊平板上立有3根立柱,從左到右分別標記為A,B,C。最初在A柱上放有6個大小不等的圓盤,并且大盤在下面,小盤在上面。要求將這些盤從A移到C(可以借助B柱)。條件是:每次只能移動一個盤,并且不允許把大盤放在小盤的上面。(提示:利用函數(shù)的遞歸調(diào)用);

      七、實驗器材(設備、元器件):

      pc硬件要求:CPU PII 以上,64M 內(nèi)存,1OOM 硬盤空間即可。

      軟件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。

      八、實驗步驟: 實驗編程與運行結(jié)果

      ⑴ 編寫一個求兩個整數(shù)的最小公倍數(shù)的函數(shù),兩個整數(shù)由鍵盤輸入,用主函數(shù)調(diào)用這個函數(shù),并輸出結(jié)果。

      程序文件名為7_4.c,源程序清單如下:

      #include lcd(int a,int b){ int temp,num1,num2;num1=a;num2=b;while(num2!=0){ temp=num1%num2;num1=num2;num2=temp;} return(a*b/num1);} main(){ int t,x,y;printf(“Please input two integers:”);scanf(“%d,%d”,&x,&y);if(x>y){t=x;x=y;y=t;} printf(“l(fā)cd(%d,%d)=%dn”,x,y,lcd(x,y));}

      運行結(jié)果:

      ⑵ 編寫一個實現(xiàn)冒泡法排序的函數(shù),并在主函數(shù)中從鍵盤上輸入6個數(shù)后進行排序輸出。

      程序文件名為testf3.c,源程序清單如下:

      main(){ int i,j,a[7];int temp;clrscr();for(i=1;i<7;i++){ printf(“nInput a[%d]=”,i);scanf(“%d”,&a[i]);} for(i=1;i<6;i++)for(j=1;j<7;j++){ if(a[j]

      temp=a[j];a[j]=a[j+1];a[j+1]=temp;} } for(i=1;i<7;i++){ printf(“n%5d”,a[i]);} }_

      運行結(jié)果:

      編寫一個通過函數(shù)調(diào)用把輸入的小寫字符串變?yōu)榇髮懽址某绦颉?/p>

      程序文件名為7_11.c,源程序清單如下:

      #include lowch_to_upch(char *str){ while(*str!='