麦穗科技驱动笔试题
选择题((1)~(5)每小题4分,共 20分)
1.请选出以下程序的输出结果b
#include <stdio.h>
sub(int x, int y, int "z)
{*z=y-x)
Main{}(
int a,b,C:
sub(10,5,&a); sub(7,a,&b); sub(a,b,&C);
printf("%d,%d,%d\n",a,b,C);
}
A)5,2,3
- -5,-12,-7
- -5,-12,-17
- 5,-2,-7
2.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是a
A)pb=&xx;B)pb=x;C)*pb=&x;D)*pb=*x
若要用下面的程序片段使指针变量 p 指向一个存储整型变量的动态存储单元
3.d
int*p;
p= malloc(sizeof(im)):
则应填入
A)int B)intC(int)D)(int*)
4.若有以下定义和语句:a
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a
则值为3的表达式是
- p+=2,*(p++)
B)p+=2,*++P
C)p+=3,*p++
D)p+=2,++*p
5.设有以下语句,其中不是对a 数组元素的正确引用的是:(其中0≤i≤10)d
int a[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;
A)a[p-a]B)(&a[i]) C)p[i])D)*(*(a+i))
二、问答及编程题((1)~(10)每小题8分,共80分)
1.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果
要求要以数组A作为函数的入口.(建议用冒泡排序法)
7. 请问以下代码有什么问题:
char*s="AAA":
printf("%s",s);
s[0]=’B’
printf("%s",s);
有什么错?段错误,s是常量 不能改变内容
- void getmemory(char *p)
{
p=(char*)malloc(100);
strcpy(p,“hello world”);
}
int main( )
{
char*str=NULL;
getmemory(str);
printf( “%s/n”,str);
free(str);
return 0;
}会出现什么问题?段错误,函数传过去的是值不是地址,
- int main()
{
char a;
char*str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}会出现什么问题?数组越界,向一个字符a,cpy一个字符串。
10. void GetMemory2(char **p, int num)
{
*p=(char*)malloc(num);
printf("*p=%p\n”*p)://-----------------地址1
}
void Test(void)
{
char*str = NULL;
GetMemory(&str, 100);
printf("str=%p\n”str);//-----------------地址2==地址1
strcpy(str, "hello");
printf(str);
}
请问运行 Test函数会有什么样的结果?第一个是堆空间的地址,第二个是hello。