(26)下列程序是用来判断数组中特定元素的位置所在的。
#include
#include
int fun(int *s, int t, int *k)
{ int i;
*k=0;
for(i=0;i
if(s[*k]
return s[*k]; }
main()
{ int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
fun(a, 10, &k);
printf("%d, %d\n",k,a[k]);}
如果输入如下整数:876 675 896 101 301 401 980 431 451 777
则输出结果为
A)7,431 B)6 C)980 D)6,980
(27)下面程序的文件名为t.exe,在DOS下输入的命令行参数为:t to meet me<回车>
则程序输出的结果是
#include "stdio.h"
main(argc,argv)
int argc;char *argv[];
{ int i;
printf("%d\n",argc);}
A)3 B)4 C)2 D)以上答案都不正确
(28)有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=&a[3],b;b=p[5];
则b的值是
A)5 B)6 C)9 D)8
(29)以下叙述中错误的是
A)改变函数形参的值,不会改变对应实参的值 B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值 D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
(30)下面程序的输出结果是
#include
main()
{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%d\n",*p+9);}
A)0 B)1 C)10 D)9
参考答案
(26)D
【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。
(27)B
【解析】 argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。
(28)C
【解析】 p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。
29)C
【解析】函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void 型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。
(30)C
【解析】此题考查了指针引用一维数组元素的方法。*p+9因为运算符"*"的优先级高于"+",所以输出结果为p指向的元素1,然后加9,值为10。