大一课程设计的几个题目

同学说要帮大一的学弟学妹做课程设计,出了几个题目,很奇怪他们大一为什么就开始出关于数据结构的题目,还有加密解密的,感觉很夸张,因为我们是到大二的时候才学的数据结构,最近实习结束比较闲,所以就拿来写了下

题目要求: 

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;
}

你可能感兴趣的:(C/C++)