1、若有以下定义和语句,且0≤i<10则对数组元素的错误引用是
int a[10]={1,2,3,4,5,6,7,8,9,10},p,i; p=a;(B)
A、(a+i)/相当于在a的首地址程度下进行往后寻址,“” 号指向存储元素故而对*/
B、a[p-a]/因为p是一个指针,所以p也就是一个内存地址,内存地址是一个数据,然后因为p与a的内存地址相同故而相减为零,故在打印时显示为1,因为这个缘故我选了c其实答案为B*/
C、p+i/因为当时看到这一道题,脑子就浮现出少一个号怎么引用就选上了c但其实他的地址值没有错误引用正确*/
D、*(&a[i])
2、以下选项中非法的表达式是______。(B)
A、0<=x<100/因为关系运算符是从左向右的优先级,所以应为(0<=x)<100=>1<100=>1,当时错误的原因,因为误把他当成判断语句中的不能连续比较/
B、i=j==0/无法判断其优先级,赋值优先级是从右到左,关系运算符相反,在一个等式中出现两个且没有加上括号故而非法/
C、(char)(65+3)
D、x+=x+1
3、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______(B)
A、地址传递
B、单向值传递/举一个简单的例子在进行建立两个数据交换的函数块的时候我们有建立过直接的数据类型接受形参,接受过来一个地址值但是进行交换后数值却没有发生变化说明只从外界读取,却没有改变这就是单项值传递/
C、由实参传给形,再由形参传回实参
D、传递方式由用户指定
4、要求函数的功能是交换x 和y 中的值,且通过正确调用返回交换结果.能正确执行此功能的函数是 (D) 。
A、funa (int *x,int *y) { int *p; *p=*x; *x=*y;*y=p; }/初始时没有理解,在程序中跑过一便后,运行异常,发现实p的错误,因为p并没有初始值,他的p是一个空指针,无法指向,加上星号后相当于一个实参故而运行失败/
B、fund (int x,int y) { int t; t=x;x=y;y=t; }
C、func (int *x,int *y) { *x=*y;*y=*x;}
D、fund (int *x,int *y) { *x=*x+*y;*y=*x-*y;*x=*x-*y; }
5、分析下面函数,以下说法正确的是 (D) 。
swap(int *p1,int *p2)
{ int *p;
p=p1; p1=p2; p2=p;
}
A、交换p1和p2的值/这道题我检讨,是我之前的问题在上网课期间没有好好学,之前的错题没有理解/
B、正确,但无法改变p1和p2的值
C、交换p1和p2的地址
D、可能造成系统故障,因为使用了空指针
6、对如下定义,以下说法中正确的是 (C)。/再次重新做还是选择的老答案/
A、char *a[2]={ “abcd”,“ABCD”};/这应该改为a【1】吧毕竟是从0开始的/
B、数组a的元素值分别为"abcd"和"ABCD"/应该是两个指针/
C、a是指针变量,它指向含有两个数组元素的字符型数组
D、数组a的两个元素分别存放的是含有4个字符的一维数组的首地址
/数组a是一个char类型的他不可能是存放地址的/
7、在说明语句:int *f(); 中,标识符代表的是: (C) 。
A、一个用于指向整型数据的指针变量
B、一个用于指向一维数组的指针
C、一个用于指向函数的指针变量
D、一个返回值为指针型的函数名
8、程序中有下面的说明和定义
struct abc { int x;char y;}
struct abc s1,s2;
则会发生的情况是 (C) 。
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
/少了一个;在定义结构体时/
C语言错题本2020.06.14——疫情期间的大学生
最新推荐文章于 2023-11-12 00:00:00 发布