A. c语言关于指针和数组的题
懒得开程序写
提供点思路吧
先设定两个整形变量分别用来储存最大的元素以及其下标
然后用循环语句进行逐一判别大小
使的其中表示元素的大小的变量的值保持最大 同时使下标为对应下标
B. C语言关于指针指向数组的题,拜托详细讲解
应选B,p1+3相当于把p1往后移动三个整型元素的位置,即a[1][3],再用*输出对应元素的值。
C. C语言选择题,关于指针数组。求详解
int a[2][3]; 定义了一个二维函数,每一维数组有三个元素。
int (*pt)[3]; 定义了一个数组指针,也就是定义了一个指向有三个元素的指针,即该指针,每次自加1,地址跳过三个int
pt=a; 就是让pt指向a[0],注意a[0]是一个数组地址,里面有三个元素
对于A选项,pt[0][0]是正确的,pt[0][0]等价于a[0][0]
对于B选项,不正确,因为pt+1就是a[1], *(pt+1)[2]相当于a[3][0]不对。
因为运算符优先级,[]大于*,因此*(pt+1)[2]就是*pt[1+2] 也就是*a[1+2]。而*a[3]就等价于a[3][0]。越界了
改成(*(pt+1))[2]就对了,相当于a[1][2]
对于C选项,正确,*(pt[1]+2) 相当于a[1][2]
对于D选项,正确,*(a[0]+2)相当于a[0][2]
D. c语言指针数组相关的题
选D)编译出错。 s="abcd"; 错了,s是数组名,不能为其整体赋值,只能整体初始化,写成char s[6]="abcd";才可以。若不初始化,就只能一个一个赋值,如s[0]='a';s[1]='b';s[2]='c';s[3]='d';这样或用一个循环来完成。
E. c语言指针数组题
A)int *b[ ]={1,3,5,7,9};//错,指针必须是指向一 个可控的已知内存地址
B)int a[5], *num[5]={&a[0], &a[1], &a[2], &a[3], &a[4]};//正确
C)int a[ ]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]};//错,和A一样
D)int a[3][4], (*num)[4]; num[1]=&a[1][3];错,num[1]步长为4,代表整行地址,而&a[1][3]是获取a的每一行第四列的地址,是单一元素的地址
F. C语言指针与数组的题
#include<stdio.h>
#define n 3
#define m 5
void main()
{ int i=0,j=0,k;
char *str;
scanf("%s",str);
j=n+m-2;
for(i=n-1;i<n-1+m/2;i++) //第n个 字符开始,数组、指针第一个地址是从0开始,所以要n-1
{
k=*(str+i);
*(str+i)=*(str+j);
*(str+j)=k;
j--;
}
printf("%s\n",str);
}
G. 求助几道c语言有关指针数组的题目
答案如下:第二题没有给出矩阵C的取值方程,所以免答了……
(a)The sky is the limit.
(b) The sky is //前面是25个空
(c) //运行将出错
(d) //编译不会过.若"."是'.'的话输出The sky is the limit
(e)//编译不会过.若"