(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 (27)B (28)C 29)C (30)C
【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。
【解析】 argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。
【解析】 p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。
【解析】函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void 型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。
【解析】此题考查了指针引用一维数组元素的方法。*p+9因为运算符"*"的优先级高于"+",所以输出结果为p指向的元素1,然后加9,值为10。