科大訊飛2021筆試題
來源于讀者投稿,作者Angel
筆試時間:2020.09.12,19:00——21:00
崗位:嵌入式軟件開發(fā)
題型:四道編程題,4*10=40分
題目
1、定義一個n*m矩陣,找到兩個不在同一行同一列的數字,使得成績最大。
2、輸入一個數N,求數的二進制中1的個數(已AC)
//寫一個函數返回參數的二進制中1的個數
#include<stdio.h>
#include<stdlib.h>
int count_one_bits(unsigned int value)
{
int count = 0;
while (value != 0)
{
if (value % 2 == 1)
{
count++;
}
value = value >>1;
}
return count;
}
int main()
{
int num;
int ret;
printf("請輸入一個大于0的數\n");
scanf("%d", &num);
ret=count_one_bits(num);
printf("%d", ret);
system("pause");
return 0;
}
3、數組的排序(時間復雜度最小),應該是讓你用冒泡或者選擇排序。
題型是給了一種排序算法的中間過程,讓你認出是哪一種排序,然后寫代碼。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void sortA1(int a[], int length){
int i, j, temp;
for(i = 0; i < length; ++i){
for(j = i + 1; j < length; ++j){
if(a[j] < a[i]){ //如果后一個元素小于前一個元素則交換
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
void printA1(int a[], int length){
int i;
for(i = 0; i < length; ++i){
printf("%d,", a[i]);
}
printf("\n");
}
void sortA2(int a[], int length){
int i, j, temp;
for(i = 0; i < length; ++i){
for(j = length - 1; j > i; --j){
if(a[j] > a[j - 1]){
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
}
}
int main(){
int length = 0;
int a[] = {12, 43, 8, 50, 100, 52,0};
length = sizeof(a) / sizeof(a[0]);
printf("排序前\n");
printA1(a, length);
sortA1(a, length);
printf("選擇排序后\n");
printA1(a, length);
sortA2(a, length);
printf("冒泡排序后\n");
printA1(a, length);
system("pause");
}
4、字符串左旋(case 20%,不知道是哪里沒考慮到,讀者可以嘗試)
輸入 1234abcd , 左旋3
輸出 4abcd123
void swap(char *start, char *end)
{
while (start < end)
{
*start ^= *end;
*end ^= *start;
*start ^= *end;
start++, end--;
}
}
void reverse_left_2(char *str, int n, int len)
{
char *mid = NULL;//定義一個指針,將指向左旋分段點
n %= len;//判斷左旋的有效次數
mid = str + n - 1;//指向分段點的最后一個字符
swap(str, mid);//逆置前一段字符串
swap(mid + 1, str + len - 1);//逆置后一段字符串
swap(str, str + len - 1);//整個字符串逆置
}
int main()
{
char str[] = "abcd1234";
int n = 0, len = strlen(str);
printf("please enter->");
scanf("%d", &n);//輸入左旋的次數
printf("before reverse_left string is :%s\n", str);
reverse_left_2(str, n, len);
printf("reverse_left string is :%s\n", str);
system("pause");
return 0;
}·················· END ··················
點擊關注公眾號,免費領學習資料
歡迎大家關注我的微信公眾號,定期給大家分享C語言、單片機、嵌入式Linux、硬件設計、代碼人生相關文章。公眾號內回復【電子書】即可獲得嵌入式全套500本全套電子書。回復【入群】即可加入嵌入式技術交流群。
我創(chuàng)建了知識星球,歡迎大家掃碼加入。在知識星球中有問必答。提供全套的嵌入式學習規(guī)劃、嵌入式學習資料、簡歷指導、嵌入式求職規(guī)劃、嵌入式筆試面試指導、公司推薦等。

評論
圖片
表情
