收集的一些嵌入式软件C语言题目,代码均已经过验证正确无误

1、CPU大小端问题

#include <stdio.h>void main()
{union  {  int a;  char b;  }c;  c.a = 1;int d;d = c.b;if(d == 1)printf("CPU是小端,c.b = %d\n",c.b);if(d == 0)printf("CPU是大端,c.b = %d\n",c.b);return;
}

2、递归
求阶乘n!

int function1(int n)
{if (n == 0)return 1;while (n >= 1){return n*function1(n - 1);}
}

int function2(int n)
{if (n == 0)return 1;elsereturn n*function2(n - 1);
}

3、输入一个整数(任意位数),倒叙输出:

//计算位数
int length_num(int n)
{int num_temp = n;int flag = 0;while (num_temp > 0){ num_temp /= 10;flag++;}return flag;
}
//输入一个整数(任意位数),倒叙输出:
int fun3(int n)
{int flag = length_num(n);int *p = (int *)malloc(flag * sizeof(int));for (int i = 0; i < flag; i++){int temp = n % 10;*(p + i) = temp;n = n / 10;}//例如n=123,存储为321int n1 = 0;for (int i = 0; i < flag; i++){n1 = 10 * n1 + (*(p + i));}free(p);p = NULL;return n1;
}

4、将一个数组逆序放到原来数组中。(考虑复杂度)

void fun4(int *p, int length)
{int n = length / 2;for(int i=0;i<n;i++){int temp = *(p + i);*(p + i) = *(p + length - 1 - i);*(p + length - 1 - i) = temp;}
}

5、斐波那契数列:

Fib(0) = 0
Fib(1) = 1
Fib(n) = Fib(n-1) + Fib(n-2)F() = 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 …
//斐波那契,使用递归算法复杂度为 O(2n)。
int fun5(int n)
{if (n == 0)return 0;if (n == 1)return 1;if (n > 1)return fun5(n - 1) + fun5(n - 2);
}
//斐波那契,不用递归,算法复杂度O(n)
int fun6(int n)
{if (n <= 1)return n;else{int forward1 = 0, forward2 = 1;int sum = 0;for (int i = 1; i < n; i++){sum = forward1 + forward2;forward1 = forward2;forward2 = sum;}return sum;}
}

6、排序
6.1冒泡排序

//冒泡排序,顺序 小---大,比较相邻数,每次循环后,最后的数总是最大
void sort1(int *a, int N)
{for (int i = 0; i < N; i++){for (int j = 0; j < N-1 - i; j++){if (a[j + 1] < a[j]){int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}//j}//i
}

6.2、选择排序

//选择排序,每次选出i-N中最小值
void sort2(int *a, int N)
{for (int i = 0; i < N; i++){int min_flag = i;for (int j = i; j < N; j++){if (a[min_flag] > a[j]){min_flag = j;}}int temp = a[i];a[i] = a[min_flag];a[min_flag] = temp;}
}

7、字符串循环移动
编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh” 函数头是这样的:

//pStr是指向以’\0’结尾的字符串的指针
//steps是要求移动的n
void LoopMove ( char * pStr, int steps )
{//请填充…
}
//移动字符串循环1
void str_loop(char *p,int N,int loop_n)
{//求数组长度,包括\0int length = 0;for (int i = 0; i < N; i++){length++;if (p[i] == '\0')break;}char * temp;temp = (char*)malloc(length * sizeof(char));//求loop后的temploop_n = loop_n % (length - 1);int j = 0;for (int i =length-loop_n ; i < length - 1; i++){temp[j] = p[i];j++;}for (int i = 0; i < length - loop_n; i++)//temp前半段赋值{temp[j] = p[i];j++;} temp[j] = '\0';  for (int i = 0; i < length; i++)//temp后半段赋值{p[i] = temp[i];}free(temp);
}

8.写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于str2返回1,若str1小于str2返回-1

int strcmp(const char *src,const char *dst)
{int ret = 0;while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst){src++;dst++;}if(ret<0)ret = -1;if(ret>0)ret = 1;return(ret);
}

9.已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);
不调用库函数,实现strcpy函数。

char *strcpy(char * strDest,const char * strSrc)
{assert( (strDest != NULL) && (strSrc != NULL) );char *address = strDest; while( (*strDest++ = * strSrc++) != '’ ); return address;
}

10.二分查找算法:

A、递归方法实现:

int BSearch(elemtype a[],elemtype x,int low,int high)
/*在下界为low,上界为high的数组a中折半查找数据元素x*/
{int mid;if(low>high)return -1;mid=(low+high)/2;if(x == a[mid])return mid;if(x<a[mid])return(Bsearch(a,x,low,mid-1));elsereturn(BSearch(a,x,mid+1,high));
}

B、非递归方法实现:

int BSearch(elemtype a[],keytype key,int n)
{int low,high,mid;low=0;high=n-1;while(low<=high){mid=(low+high)/2;if(a[mid].key==key)return mid;else if(a[mid].key<key)low=mid+1;elsehigh=mid-1;}return -1;
}

11.输入字符倒叙输出,输入’#'结束

#include<stdio.h>int main()
{char *ch;char a;int i = 0;puts("输入字符倒叙输出,输入'#'结束:");while((a = getchar()) != '#'){*ch = a;ch++;i++;}for(i;i>0;i--){ch--;printf("%c",*ch);}printf("\n");return 0;
}

12.链表的逆序

#include<stdio.h>
#include<malloc.h>typedef struct Node
{int data;struct Node *next;
}Node;Node* LinkList()
{Node *head,*r,*p;int i = 1;head = (Node *)malloc(sizeof(Node));r = head;puts("输入节点数据,输入字符结束:");while(i){p = (Node *)malloc(sizeof(Node));i = scanf("%d",&p -> data);if(i != 0){r -> next = p;r = p;}}r -> next = NULL;return(head);
}void print(Node* L)
{puts("print:");L = L -> next;while(L != NULL){printf("%d ",L -> data);L = L -> next;}puts("");
}void reverseOutputLinklist(Node* L)
{Node *r,*p;r = L -> next;L -> next = NULL;while(r != NULL){p = r;r = r -> next;p -> next = L -> next;L -> next = p;}
}void main()
{Node* a;a = LinkList();print(a);reverseOutputLinklist(a);puts("reverseOutputLinklist");print(a);return;
}

13.快速排序

#include <stdio.h>void swap(int *a,int *b)
{int temp;temp = *a;*a = *b;*b = temp;
}void quicksort(int array[],int begin,int end)
{int i = begin;int j = end;int pivotkey;if(begin < end){pivotkey = array[i];while(i < j){while((i < j)&&(array[j] >= pivotkey))j--;swap(&array[i],&array[j]);while((i < j)&&(array[i] <= pivotkey))i++;swap(&array[i],&array[j]);}quicksort(array,begin,i);quicksort(array,i+1,end);}
}void main()
{int i = 0;int a[15] = {6,5,8,1,16,3,19,87,56,4,64,11,24,52,7};for(i = 0;i < 15;i++)printf("%d ",a[i]);printf("\n");quicksort(a,0,14);for(i = 0;i < 15;i++)printf("%d ",a[i]);printf("\n");
}

14.16进制字符串转10进制数

#include<stdio.h>
#include<string.h>int fun(char *a)
{int len = 0;int i = 0;long b = 0;while((*(a+len)) != '\0'){len++;}for(;i<len;i++){if((*(a+i))>='a'&&(*(a+i))<='z')b = (b*16)+((*(a+i))-('a')+10);if((*(a+i))>='0'&&(*(a+i))<='9')b = (b*16)+((*(a+i))-('0'));}return(b);
}void main(void)
{int a,c,len,i;char b[10];scanf("%x",&a);sprintf(b,"%x",a);c = fun(b);printf("%d\n",c);
}

15.字符串压缩
eg:输入“aassssdccccvvttt”,输出“2a4sd4c2v3t”

#include <stdio.h>
#include<string.h>int count(int j);
char zip(char *stri,int len,char *stro);void main()
{int len;char stri[100]={},stro[100]={};scanf("%s",stri);len = strlen(stri);zip(stri,len,stro);printf("%s\n",stro);
}int count(int j)
{int count = 0;while(j>0){count++;j/=10;}return(count);
}char zip(char *stri,int len,char *stro)
{int i = 0,k = 0;int j = 1;char flag = 0;while(i<len){if((*(stri+i)) != flag){flag = *(stri+i);i++;}while(flag == *(stri+i)){j++;i++;}if(j>1){sprintf((stro+k),"%d",j);k = k+count(j);j = 1;}*(stro+k) = flag;k++;}
}

16、不使用 if,swtich,?: ,输出a,b中的较大值

//a、b两者之和加上a、b的差值除以二即为a、b中的较大值#include<main.h>int fun(int a,int b){int sum = a+b;int dif = sab(a-b);    //sab()为求绝对值函数int max = (sum+dif)/2;return(max);
}

嵌入式软件c语言笔试题相关推荐

  1. 【常见c语言笔试题嵌入式软件开发2】

    [常见c语言笔试题嵌入式软件开发2] 内容来自B站博主 C语言笔试嵌入式软件开发视频讲解 1>下面这段代码int main(){fork() || fork();}共创建几个进程 从运行结果来分 ...

  2. C语言笔试题--从CSDN转发

    C语言笔试题--从CSDN转发 关键字: 工作,C语言 4.static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7.引用与指针有什么区别? 1) 引用必须被初始化, ...

  3. c语言编写单词位置反转,C语言笔试题答案.docx

    C语言笔试题答案 C语言笔试题答案简答题程序的局部变量存在于(栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中.设有以下说明和定义:typedef union {long i; int ...

  4. 东软 c语言笔试题,C语言笔试题及参考答案-东软集团(最新整理)

    <C语言笔试题及参考答案-东软集团(最新整理)>由会员分享,可在线阅读,更多相关<C语言笔试题及参考答案-东软集团(最新整理)(7页珍藏版)>请在人人文库网上搜索. 1.C 语 ...

  5. c语言面试题下载,C语言笔试题A.doc

    C语言笔试题A 选择题(本大题共25小题,每小题2分,共50分) 1.C语言程序总是从 c 开始执行. A.书写顺序的第一个函数 B.书写顺序的第一条执行语句 C.主函数main D.不确定 2.以下 ...

  6. 华为 社招 C语言笔试,华为笔试C语言笔试题之3

    <华为笔试C语言笔试题之3>由会员分享,可在线阅读,更多相关<华为笔试C语言笔试题之3(10页珍藏版)>请在人人文库网上搜索. 1.C 语言笔试题之34. static 有什么 ...

  7. c语言while中100 95,C语言笔试题100道

    C语言笔试题100道 a) 30 b) 50 c) 40 d) 20 e) 10 18) #include void main() { int a=3,b=2,c=1; int x=10,y=20; ...

  8. 国二c语言是笔试还是机,2017最新国二c语言笔试题.doc

    2017最新国二c语言笔试题 2017最新国二c语言笔试题篇1 1一个C程序的执行是从( ). A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后 ...

  9. 国二和本专业的C语言的差距,2021最新国二c语言笔试题

    2021最新国二c语言笔试题 发布时间:2021-04-24 C语言是一门通用计算机编程语言,应用广泛.下面就由第一范文网小编为大家介绍一下20xx最新国二c语言笔试题的文章,欢迎阅读. 20xx最新 ...

  10. c语言书籍推荐国二,推荐国二c语言笔试题库(含答案)可转TXT.doc

    推荐国二c语言笔试题库(含答案)可转TXT 第一章 C语言概述 一 单项选择题 1.一个C程序的执行是从( A ). A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开 ...

最新文章

  1. python statsmodel 回归结果提取
  2. 心得体悟帖---12、志向还是太短浅,目光也是
  3. 计算机等级考试三级数据库考点,全国计算机等级考试辅导:三级数据库考点
  4. [eBook] SQL 2008
  5. Linux 常見的登錄檔檔名
  6. [jQuery] 说说看jQuery的选择器有哪些?
  7. 【BZOJ1146】网络管理,整体二分
  8. python 全局变量_python程序中用类变量代替global 定义全局变量
  9. printf(%d,5.01)和printf(%f,5)的输出结果
  10. WCF+Restfull服务 提交或获取数据时数据大小限制问题解决方案
  11. PCL——连接两个点云的字段
  12. 關於GoogleUpdate.exe
  13. 如何用公式编辑器打长等号
  14. mysql front下载,MySQL-Front下载
  15. matlab 求余函数mod
  16. 【基础】SAP 新增计量单位
  17. 大漠老师:2022 年的 CSS,到底有哪些特性
  18. 【Nmap的使用方法】
  19. 第六节 交叉分析和非参数检验
  20. 信号与系统 - 卷积运算

热门文章

  1. 易车网报价和4s店相比哪个低?
  2. CISSP 重点知识点总结2
  3. 联想笔记本linux无线网卡驱动下载,联想无线网卡驱动下载-联想 X1 Carbon网卡驱动下载v18.40.0 官方最新版-西西软件下载...
  4. YYKit 源码学习使用 1
  5. MySql常用语句汇总
  6. linux网络配置putty,PuTTY配置详解
  7. Win10/WinServer2016安装wireshark报“KB2999226 和 KB3118401”补丁未安装解决方式
  8. SAP PP制造生产教程
  9. cs229吴恩达机器学习课件
  10. 科学计算器 java_用Java编写的标准计算器、科学计算器、时间转换。