当前位置:首页 » 编程语言 » c语言笔试题指针数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言笔试题指针数组

发布时间: 2022-06-29 09:39:09

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的取值方程,所以免答了……

  1. (a)The sky is the limit.

    (b) The sky is //前面是25个空

    (c) //运行将出错

    (d) //编译不会过.若"."是'.'的话输出The sky is the limit

    (e)//编译不会过.若""是''的话一行一个地输出The sky is the limit.对应的ASCII十进制数

    (f) //有四处错误:1.strlen(string]应是strlen(string);2.=I应是='I';3.<=应是=,不然会产生溢出错误;4.printf(“%s ”,string[i]);似乎应为printf(“%s ”,string+i);。若无这些错误,则一行一行地、每一行从前面少一个字符地输出The sky is the limit.,直到最后一行只输出一个"."。

    (g) x

  2. 免答

  3. 代码如下

//#include "stdafx.h"//vc++6.0加上这一行.

#include "stdio.h"

void main(void){

int a[11]={0},i,j;

for(a[1]=i=1;i<=10;i++){

for(j=i;j>=1;j--)

printf("%d ",a[j]=a[j-1]+a[j]);

printf(" ");

}

}

H. 关于C语言中指针数组的选择题!

int k[2][3],*pk[3],k是一个2行3列的2维数组,pk是一个长度为3的数组指针,也就是有三个指针
关键就是pk数组元素是指针,那么pk[0]=&k[1][2]把元素k[1][2]的地址给指针pk[0]赋值是正确的。
楼主可以参考下下面的意义
pk:长度为3的指针数组的地址
pk[i]:指针数组的元素,也就是一个指针
k:2行3列的2维数组的地址
k[i]:长度为3的数组的地址
k[i][j]:一个整形变量

I. 有趣的笔试题(关于C语言字符数组和字符指针)

这两个都存在错误
先说不报错的情况:第1个程序开设了长度为12的数组,并且在进入函数时初始化成了那个字符串。这时修改这个数组是ok的,但返回的指针的前提是被废弃的p数组内容还没被别的函数冲掉。一般不要返回函数自己定义的变量地址、数组,可以返回它们的值(只能一个),否则这个数组会在函数结束运行时被舍弃,普通这个数组可以从调用者那里申请并将指针传进来。
程序2错误的原因是,p只是一个指针变量,它没有空间来存储字符串,p被赋值成字符串首地址,但这个字符串是位于整个程序的常量区(例1在函数初始化时有个将常量区字符串复制到数组p的过程),而常量区是受保护的,只读,试图改变p指针指向的内容时会报错,这个错就是试图修改常量类型的数据。而这个程序返回的p值,因为是指向常量区的,调用者是可以使用的,这个区域不存在失效问题。