大一課程設計的幾個題目

同學說要幫大一的學弟學妹做課程設計,出了幾個題目,很奇怪他們大一爲什麼就開始出關於數據結構的題目,還有加密解密的,感覺很誇張,因爲我們是到大二的時候才學的數據結構,最近實習結束比較閒,所以就拿來寫了下

題目要求: 

1一司機出車禍後駕車逃離現場,第一位目擊者記得車牌號前兩位數字相同,且後兩位數字也相同;第二位目擊者是一位數學家,他看出車牌號是四位完全平方數。試編程推算肇事車的車牌號。
2、將輸入的N個整數採用冒泡排序和選擇排序兩種方法按照從小到大的順序排列並且輸出。並進行折半查找
要求:將冒泡排序,選擇排序和折半查找分別定義成相應的函數
                     void bubble_sort     void selection_sort int binary_search
3、從字符串A中定位特定的子串B。
4、編寫密碼加密和解密函數,對一個明碼串,根據其ASCⅡ碼值在反轉 ASCⅡ碼錶ASC(255)、ASC(254)、ASC(253)、······ASC(0)中對應位置進行加密或解密。如明碼串”abf1243,其ASCⅡ碼分別爲97、98、99、49、50、51、52,根據反轉ASCⅡ碼錶,將其換成ASCⅡ碼是255-97、255-98、255-99、255-49、255-50、255-51、255-52的明碼串。
5、求解方程ax2+bx+c=0的根
6、使用命令行形式將一個文本文件的內容連接到另一個文本文件的末尾。
7、輸入密碼,將待加密文件打開進行異或加密。執行第2次即解密。
8、求兩個矩陣的乘積。
9、有n個人圍成一圈,順序排號。從第1個開始報數,凡報到k的人退出。然後重新開始新一輪報數。最後剩下的是原來的第幾號。
/*矩陣相乘:
 矩陣相乘的要求是:第一個矩陣的列數和第二個矩陣的行數相等
 設矩陣爲:a[m][n],b[n][m'],相乘後的結果爲:c[m][m']
*/

 
 #include
<stdio.h>
 
 
#define m 4
 
#define n 3
 
#define l 2

 
 
int i,j,k;
 
 
int a[m][n]={{11,8,5},{4,5,8},{2,14,9},{4,5,8}};
 
int b[n][l]={{4,8},{8,5},{9,9}};
 
int c[m][l];
 
 main()
 
{
 
 
for(i=0;i<m;i++)
     
for(j=0;j<l;j++)
         
for(k=0;k<n;k++)
         c[i][j]
+=a[i][k]*b[k][j];
         
printf(
"矩陣a的數字如下 ");
for(i=0;i<m;i++)  /*輸出開始的矩陣a*/
     
{
     
for(j=0;j<n;j++)
      printf(
"%d ",a[i][j]);     
      printf(
" ");
     }
     
printf(
"矩陣b的數字如下 ");
for(i=0;i<n;i++)  /*輸出開始的矩陣b*/
     
{for(j=0;j<l;j++)
      printf(
"%d ",b[i][j]);
      printf(
" ");         
     }

     
printf(
"矩陣c的數字如下 ");
for(i=0;i<m;i++/*輸出開始的矩陣b*/
  
{    for(j=0;j<l;j++)
      printf(
"%d ",c[i][j]);
      printf(
" ");
  }

}

     

 

/*編程題目:
一司機出車禍後駕車逃離現場,第一位目擊者記得車牌號前兩位數字相同,
且後兩位數字也相同;第二位目擊者是一位數學家,他看出車牌號是四位完
全平方數。試編程推算肇事車的車牌號
*/


/*設計思路:
因爲四位的平方數所對應的數字恰好是從 32 到 99 的,所以可以列出這些數字,
順次遍歷,看是否有符合條件的值,有則輸出 
*/




#include
<stdio.h>
#include
<string.h>

#define M 100
int num[M];  /*用來存放四位的平方整數*/


main(
int argc,int argv[])
{
int i,j;
    
for( j=0, i=32;i<100;i++,j++/*將四位的平方數存到num 數組中*/
    
{
        num[j]
=i*i;
//        printf("數字 %d 的平方數爲:%d ",j,num[j]);
    }


    
    
for(j=0;j<(100-32);j++)
    
{
        
if( (num[j]/1000== ((num[j]/100)%10))
        
{
            
if( (num[j]%10== ((num[j]%100)/10))
                printf(
"%d",num[j]);
        }


    }


}

這個題目還有很多的實現方法,折半查找的方法

 

#include <stdio.h>
#include 
<math.h>

bool IsThere(int n);
int shu[100];
main()
{
    
    
int i = 0;
    
for(int j = 0; j < 100 ; j++)
    
{
        shu[i] 
= j*j;
        i
++;
    }
    
    
for (int r = 0 ; r<=9; r ++)
    
{
        
for(int t = 0; t<= 9 ;t++)
        
{
            
int p = r*1000+r*100+t*10+t;
            
if(IsThere(p))
                printf(
"%d ",p);
        }

    }

}


bool IsThere(int n)
{
    
int low = 0;
    
int high = 100;
    
while(low <= high)
    
{
        
int p = (low+high)/2;
        
if( shu [p] == n)
        
{
            
return true;
        }

        
else if( shu [p] > n)
        
{
            high 
= p-1;
        }

        
else if( shu[p] < n)
        
{
            low 
= p+1;
        }

    }

    
return false;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章