测试(一)
2016-12-14 12:28
141 查看
一.简答题.
1. 请描述什么是嵌入式?嵌入式开发的优点有哪些?
答:嵌入式即为在已有的硬件平台上移植操作系统。
优点:
①开发人员无需了解硬件的工作原理
②提高软件代码的可移植性,从而提高开发效率, 降低开发成本
③操作系统是个资源库,有很多开源的软件和工具
嵌入式开发中为什么选择C语言作为开发语言,C语言有哪些缺点?
答:C语言的优点:
①出色的可移植性,可在多种不同体系结构的软/硬件平台上运行
②可直接访问硬件
③很高的运行效率
C语言的缺点: 维护性差、扩展性差、复用性差
将一个 .C 文件到可执行文件需要经历哪几步? 每一步的作用是什么?
答:①预处理:头文件展开,宏替换,条件编译等
②编译:源文件编程目标文件(.O .obj)
③汇编:.O–>.S
④链接:将 .S =>可执行文件
头文件#include< > 和#include “” 中的 < > 和 “ ” 有什么区别?
答: < > 表示在系统头文件目录下搜索,议案包括系统自带的头文件
“ ” 表示现在当前目录下搜素,找不到再去系统头文件目录下搜索
Makefile的功能是什么?分为哪几类?请描述一下每类的基本功能。
答:三类Makefile文件:
①总控Makefile: 1. 进入各个子目录(功能子目录)里执行make 命令
2. 将所有的.o文件链接生成最终可执行文件
②功能子目录Makefile: 将src目录下的.c文件编译生成.o文件
③scripts目录的Makefile:定义许多变量(相当于C语言中的头文件)
二.变量定义声明解读
1. float ( ( e[ 10 ] ) ( int * ) )[ 5 ]
答:函数指针数组,指向的函数形参为int *,返回值为一个数组指针,指向的数组包含5个float型数据 .
int * ( * ( * f ) (int )) [ 10 ]
答:函数指针变量,该函数形参为int, 返回值为数组指针,该指针指向一个10个元素的整型指针数组 .
void * ( * c)( char, int (*) ( ) )
答:函数指针变量,该函数形参为char, 和函数指针( 形参为空,返回值为int), 返回值为void * .
三.程序阅读题 .(4+6+6)
1.
请写出此程序的输出结果是什么,并简述判断过程
输出结果为2 2 1
因为函数传参时没有传变量地址,调用函数中修改变量对主函数中的变量并没有影响
2.
请问此程序是否有问题,能否通过编译,若不能,请简述理由
答:
有问题,不能通过编译,因为scanf少了一个&,而且if中的=要用== 否则结果出错
3.
请问此函数想要实现什么功能,此函数有无问题,若有,错在哪里,请简单说明
答:
目的是实现比较出数组中最大的一个元素。
程序中的问题
①在for循环中规定了循环次数,容易出现数组越界
②for循环后面不能加 ;
四.编程题
1. 完全数是指其因数的和等于自身,如6是完全数,其因数为1, 2, 3,1+2+3 = 6。如28是完全数,其因数为1, 2, 4, 7, 14, 1+2+4+7+14 = 28。请编程输出1000以内的完全数.
n个小伙伴围坐一圈,按1, 2, 3报数,报到3的人出局,请问最后留在圈中的人是最初n个人中的第几个?用C语言实现。
如何将形如 “this is a string”的字符串变成 “string a is this” ?请编程实现. ( 20 )
1. 请描述什么是嵌入式?嵌入式开发的优点有哪些?
答:嵌入式即为在已有的硬件平台上移植操作系统。
优点:
①开发人员无需了解硬件的工作原理
②提高软件代码的可移植性,从而提高开发效率, 降低开发成本
③操作系统是个资源库,有很多开源的软件和工具
嵌入式开发中为什么选择C语言作为开发语言,C语言有哪些缺点?
答:C语言的优点:
①出色的可移植性,可在多种不同体系结构的软/硬件平台上运行
②可直接访问硬件
③很高的运行效率
C语言的缺点: 维护性差、扩展性差、复用性差
将一个 .C 文件到可执行文件需要经历哪几步? 每一步的作用是什么?
答:①预处理:头文件展开,宏替换,条件编译等
②编译:源文件编程目标文件(.O .obj)
③汇编:.O–>.S
④链接:将 .S =>可执行文件
头文件#include< > 和#include “” 中的 < > 和 “ ” 有什么区别?
答: < > 表示在系统头文件目录下搜索,议案包括系统自带的头文件
“ ” 表示现在当前目录下搜素,找不到再去系统头文件目录下搜索
Makefile的功能是什么?分为哪几类?请描述一下每类的基本功能。
答:三类Makefile文件:
①总控Makefile: 1. 进入各个子目录(功能子目录)里执行make 命令
2. 将所有的.o文件链接生成最终可执行文件
②功能子目录Makefile: 将src目录下的.c文件编译生成.o文件
③scripts目录的Makefile:定义许多变量(相当于C语言中的头文件)
二.变量定义声明解读
1. float ( ( e[ 10 ] ) ( int * ) )[ 5 ]
答:函数指针数组,指向的函数形参为int *,返回值为一个数组指针,指向的数组包含5个float型数据 .
int * ( * ( * f ) (int )) [ 10 ]
答:函数指针变量,该函数形参为int, 返回值为数组指针,该指针指向一个10个元素的整型指针数组 .
void * ( * c)( char, int (*) ( ) )
答:函数指针变量,该函数形参为char, 和函数指针( 形参为空,返回值为int), 返回值为void * .
三.程序阅读题 .(4+6+6)
1.
void num_add(int num) { num++; printf(“%d\n”,num); } int main() { int num = 1; int i = 0; for(i = 0; i < 2;i++) { num_add(num); } printf(“%d\n”,num); }
请写出此程序的输出结果是什么,并简述判断过程
输出结果为2 2 1
因为函数传参时没有传变量地址,调用函数中修改变量对主函数中的变量并没有影响
2.
int main() { int num1,num2; printf(“please input number1:\n”); scanf(“%d”,num1); printf(“please input number2:\n”); scanf(“%d”,num2); if(num1 = num2) { printf(“the two number is equal\n”); } else if(num1 > num2) { printf(“num1 is bigger than num2\n”); } else { printf(“num2 is bigger than num1\n”); } return 0; }
请问此程序是否有问题,能否通过编译,若不能,请简述理由
答:
有问题,不能通过编译,因为scanf少了一个&,而且if中的=要用== 否则结果出错
3.
int function(int array[10]) { int i; int max = array[0]; for(i = 1;i < 10;i += 1); { if(array[i] > max) { max = array[i]; } } return max; }
请问此函数想要实现什么功能,此函数有无问题,若有,错在哪里,请简单说明
答:
目的是实现比较出数组中最大的一个元素。
程序中的问题
①在for循环中规定了循环次数,容易出现数组越界
②for循环后面不能加 ;
四.编程题
1. 完全数是指其因数的和等于自身,如6是完全数,其因数为1, 2, 3,1+2+3 = 6。如28是完全数,其因数为1, 2, 4, 7, 14, 1+2+4+7+14 = 28。请编程输出1000以内的完全数.
#include <stdio.h> int main() { int n; int i; for(n = 0; n < 1000; i++) { for(i = 0; i < n; i++) { if(n % i == 0) { sum += i; } } if(n == sum) { printf("%d ", n); } } return 0; }
n个小伙伴围坐一圈,按1, 2, 3报数,报到3的人出局,请问最后留在圈中的人是最初n个人中的第几个?用C语言实现。
#include <stdio.h> int main() { int a[100]; int n; int i; int count = 0; printf("please input n:\n"); scanf("%d",&n); for(i = 0; i < n; i++) { a[i] = i + 1; } int temp = n; while(n > 0) { if(a[i] > 0) { count++; i++; } if(count == 3) { count = 0; a[i] = 0; n--; } i++; if(i == temp) { i = 0; } } for(i = 0; i < n; i++) { if(a[i] > 0) { printf("the last is %d \n",i); break; } } }
如何将形如 “this is a string”的字符串变成 “string a is this” ?请编程实现. ( 20 )
#include <stdio.h> void reseve_str(char *str,int slen) { int i; char temp; for(i = 0; i < slen / 2;i++) { temp = a[i]; a[i] = a[slen - 1 - i] a[slen - 1 - i] = temp; } } void reseve_ch(char *str) { char *pstr = str; int i; int count = 0; while(*pstr != '\0') { if(*pstr == ' ') { reseve_str(pstr - count,count); count = 0; } else { count++; } pstr++; } reseve_string(src - count,count); } int main() { char str[MAX_SIZE]; printf("please input this is a string:\n"); gets(str); reseve_str(str,strlen(str)); reseve_ch(str); printf("%s\n",str); return 0; }
相关文章推荐
- 理解并选择测试-Zee
- 开发自动测试工具心得
- JSP,PHP详细性能测试
- Windows 下使用 KCachegrind/WinCachegrind 和 XDebug 测试php程序性能。
- vs2008软件测试实战 1
- CMMI中与测试直接相关的两个PA VER VAL
- Tomcat性能的测试
- 给svn添加钩子同步文件到测试环境
- Robotium 测试资料
- Loadrunner 接口测试的两种方法
- 关于css伪类的一些兼容性测试
- gtkmm安装与测试
- 软件集成、确认和系统测试方法
- 测试家庭流媒体服务器Windows7
- 性能测试分享: Jmeter的源码分析main函数参数
- 知道什么网站并发量吗?如何测试呢?这个必须了解了解。。。。
- Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照
- Cobertura 统计多模块maven项目测试覆盖率
- 接口测试之基础篇1