来源于读者投稿,作者Angel
笔试时间:2020.09.12,19:00——21:00
岗位:嵌入式软件开发
题型:四道编程题,4*10=40分
题目
1、定义一个n*m矩阵,找到两个不在同一行同一列的数字,使得成绩最大。
2、输入一个数N,求数的二进制中1的个数(已AC)
代码语言:javascript复制//写一个函数返回参数的二进制中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、数组的排序(时间复杂度最小),应该是让你用冒泡或者选择排序。
题型是给了一种排序算法的中间过程,让你认出是哪一种排序,然后写代码。
代码语言:javascript复制#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
代码语言:javascript复制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 :%sn", str);
reverse_left_2(str, n, len);
printf("reverse_left string is :%sn", str);
system("pause");
return 0;
}
·················· END ··················