华为面试题C语言软件工程师由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“华为软件工程师面试题”。
那就是变量i没有定义,这在代码编译阶段编译器可以帮你发现,很容易搞定。然而很多问题是自己造成的漏洞,编译器是帮不上什么忙的。这里最大的问题还是str1没有结束符,因为strcpy的第二个参数应该是一个字符串常量。该函数就是利用判断第二个参数的结束符来得到是否拷贝完毕。所以在for循环后面应加上str1p[9] = ‘ ’;
PS:字符数组和字符串的最明显的区别就是字符串会被默认的加上结束符’ ’。void test3(char* str1){
char string[10];
if(strlen(str1)
{
strcpy(string, str1);
} }
这里的问题仍是越界问题。strlen函数得到字符串除结束符外的长度。如果这里是
小结:上面的三个找错的函数,主要是考查对字符串和字符数组的概念的掌握以及对strcpy函数和strlen函数的理解。
2、找错
DSN get_SRM_no(){
static int SRM_no;
int I;“>
for(I=0;I
{
SRM_no %= MAX_SRM;
if(MY_SRM.state==IDLE)
{
break;
}
}
if(I>=MAX_SRM)
return(NULL_SRM);
else
return SRM_no;} 这里for循环的判断语句是后来我加上的,估计在网上流传的时候被人给弄丢了,根据对程序的分析,给补上了。估计错误应该不是这儿。
简单的阅读一下这个函数,可以大概的可以猜测出这个函数的功能是分配一个空闲的SRAM块。方法:从上次分配的RAM块后的RAM块开始检测SRAM每个RAM块,看是否是IDLE状态,如果是IDLE则返回当前的RAM块的号SRM_no。如果所有的RAM块都不是IDLE状态,则意味着无法分配一个RAM给函数调用者,返回一个表示没有RAM可分配的标志(NULL_SRM)。
经过上面的分析,则这里可以知道,这个函数的错误是for循环里面没有给SRM_no这个变量累加1。
3、写出程序运行结果 int sum(int a){
auto int c=0;
static int b=3;
c+=1;b+=2;
return(a+b+c);} void main(){
int I;
int a=2;
for(I=0;I
{
printf(”%d,“, sum(a));
} } 运行结果是:8,10,12,14,16, 在求和函数sum里面c是auto变量,根据auto变量特性知每次调用sum函数时变量c都会自动赋值为0。b是static变量,根据static变量特性知每次调用sum函数时变量b都会使用上次调用sum函数时b保存的值。
简单的分析一下函数,可以知道,若传入的参数不变,则每次调用sum函数返回的结果,都比上次多2。所以答案是:8,10,12,14,16,4、func(1)= ? int func(int a){
int b;
switch(a)
{
case 1: 30;
case 2: 20;
case 3: 16;
default: 0;
}
return b;} 在 case 语句中可能忘记了对变量b赋值。如果改为下面的代码: int func(int a){
int b;
switch(a)
{
case 1: b = 30;
case 2: b = 20;
case 3: b = 16;
default: b = 0;
}
return b;} 因为case语句中漏掉了break语句,所以无论传给函数的参数是多少,运行结果均为0。
5、a[qp] = a[2] = 2;
6、内存空间占用问题
定义 int **a[3][4], 则变量占有的内存空间为:16位系统24,32位编译系统中是48。PS:公式:3 * 4 * sizeof(int **)。
7、程序编写
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
void ResetTheTime(int *year,int *month,int *date,int *hour,int *minute,int*second){
int dayOfMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(*year 12 ||
*date 31 || *hour 23 ||
*minute 59|| *second 60)
return;if(*year%400 == 0 || *year%100!= 0 && *year%4 == 0)
dayOfMonth[1] = 29;
if(*second >= 60)
{
*second = 0;
*minute += 1;
if(*minute >= 60)
{
*minute = 0;
*hour += 1;
if(*hour >= 24)
{
*hour = 0;
*date += 1;
if(*date > dayOfMonth[*month-1])
{
*date = 1;
*month += 1;
if(*month > 12)
{
*month=1;
*year += 1;
}
}
} } return }
刀豆文库小编为你整合推荐3篇C语言软件工程师简历,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
刀豆文库小编为你整合推荐6篇C语言软件工程师岗位职责,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
软件工程师面试题1, CString 和 char* 之间的相互转换?2, 虚函数WindowProc 与 DefWindowProc 功能上有什么不同?3, 如何保证在应用程序中使用的某个类只有一个实例?4, 请问如何定......
1.C#中,string str = null 与 string str ="",请尽量用文字说明区别2.Override, Overload,的区别?3.a=10,b=15,在不用第三方变量的前提下,把a,b的值互换4.请编程遍历页面上所有......
C语言软件工程师岗位职责(合集)随着社会不断地进步,越来越多地方需要用到岗位职责,岗位职责是指工作者具体工作的内容、所负的责任,及达到上级要求的标准,完成上级交付的任务。......