假设用下列语句申请了一片动态内存空间,并用指针变量指p向了它,用这片内存保存m×n个int型数据,即作为一个二维动态数组来使用,那么下面通过p访问这个二维动态数组第i行第j列元素的方法中正确的是()。 int *p; p=(int *)malloc(m*n*sizeof(int)); 或 int *p; p=(int *)calloc(m*n,sizeof(int));A.*(p+i*n+j)B.p+i*n+jC.p[j*n+i]D.p[i][j]
假设用下列语句申请了一片动态内存空间,并用指针变量指p向了它,用这片内存保存m×n个int型数据,即作为一个二维动态数组来使用,那么下面通过p访问这个二维动态数组第i行第j列元素的方法中正确的是()。 int *p; p=(int *)malloc(m*n*sizeof(int)); 或 int *p; p=(int *)calloc(m*n,sizeof(int));
A.*(p+i*n+j)
B.p+i*n+j
C.p[j*n+i]
D.p[i][j]
参考答案和解析
C
相关考题:
用calloc函数创建具有10个整型元素的一维数组的正确语句是()。 a. int *p=calloc(10,2);b. int *p=calloc(10);c. int *p=calloc(10,4);d. int *p=malloc(10)
以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=s;}B.main( ) { int *p; fun(p); ┆ } int fun(int **p) { int s; *p=s;}C.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}
请编一个函数void fun( int tt[M][N], int pp[N], tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <conio.h>include <stdio.h>define M 3define N 4void fun(int tt[M][N],int pp[N]){}main(){int t[M] [N]={{68,32,54,12},{14,24,88,58},{42, 22, 44, 56}};int p[N],i,j,k;clrscr();printf("The riginal data is:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%6d",t[i][j]);printf("\n");}fun(t,p);printf("\nThe result is:\n");for(k=0;k<N;k++)printf("%4d",p[k]);printf("\n");}
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是A.p=2*(int*)malloc(sizeof(int));B.p=(int*)mall0c(2*sizeof(int));C.p=(int*)malloc(2*2);D.p=(int*)calloc(2,sizeof(int));
请编写一个函数void fun(int p[],int n,int c),其中数组p的元素按由小到大的顺序排列,其元素个数为n。函数fun()的功能是将c插入到数组p中,且保持数组的升序排列。注意:部分源程序已存在文件PROC9.cpp中。请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句;文件PROC9.cpp的内容如下://PROC9.cppinclude <iostream>include <string>using namespace std;define M 30void fun(int p[ ],int n,int c);int main (){int pp[M],n,i;int fg, c;cout<<"Please input n:\n";cin>>n;cout<<"Please input the n data:\n";for (i=0; i<n; i++)cin>>pp [i];cout<<"Please input c:\n";cin>>c;fun (pp, n, c);for (i=0; i<n; i++)cout<<pp [i] << " " ;cout<<end1;return 0;}void fun(int p[ ],int n, int c){//* * * * * * * * *}
若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p p=______malloc(sizeof(int)); 则应填入______。A.intB.int*C.(*int)D.(int*)
若要用下面的程序片段指针变量p指向一个存储整型变量的动态存储单元int *p;p=______ malloc (sizeof (int));则应填入 ______。A.intB.int*C.(*int)D.(int*)
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是( )A.p=2 *(int *)malloc(sizeof(int));B.p=(int*)calloc(2*sizeof(int));C.p=(int*)malloc(2* sizeof(int));D.p=2 *(int*)calloc(sizeof(int));
有以下程序 include include int fun(int n) {int * 有以下程序 #include <stdio.h> #include <stdlib.h> int fun(int n) {int *p; p=(int*)malloc(sizeof(int)); *p=n; return *p; } { int a; a=fun(10); printf("%d\n",a+fun(10)); } 程序的运行结果是______。A.0B.10C.20D.出错
若要用下面的程序片段使指针变量p指向—个存储整型变量的动态存储单元 int *p; p=______malloc(sizeof(int)); 则应填入______。A.intB.int*C.(*int)D.(int*)
以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是A.main() { int *p; fun(p); … } int fun(int *p) { ints; p=s;}B.main() { int *p; fun(p); … } int fun(int **p) { int s; *p=s;)C.#include main() { int *p; fun(p); … } int fun(int **p) *p=(int*)malloc(2);}D.#include main() { iht *p; fun(p); … } iht fun(iht *p) { p=(int*)malloc(sizeof(int)); }
动态分配一整型数据长度的空间,使指针p指向该存储空间,则下列空缺处应填入的正确语句是( )。 int*p; p=______malloc (sizeof(int));A.intB.int*C.(*int)D.(int*)
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确的语句是( )。A.p=2*(int*)malloc (sixeof(int))B.p=(int*)calloc (2*sixeof(int))C.p=(int*)malloc (2*sizeof(int))D.p=2*(int*)calloc (sizeof(int))
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。[C函数]int psort(int a[],int n){int i,J,k,P;for(i=0,k=0;i<(1);i++){for(j=i+1, (2) ;j<n; j++)if(a[p]>a[j])p=j;if(p!=i){t=a[p];a[p]=a[i];a[i]=t;}if( (3) ) k++;else if( (4) <a[i])(5)=a[i];}return k;}int a[]={5,7,5,6,4,3,4,6,7};main(){int k,n;for(k=0;k<(Sizeof a)/Sizeof(int);k++)printf("%5d",a[k]);printf ("\n\n");n=psort(a,(sizeof(a))/sizeof(int));for(k=0;k<n;k++)printf("%5d",a[k]);printf("\n\n");}
阅读下列说明和C代码,回答下列问题。[说明]?? ?采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排序的子数组得到排序结果。?? ?下面的C代码是对上述归并算法的实现,其中的常量和变量说明如下:?? ?arr:待排序数组?? ?P,q,r:一个子数组的位置从P到q,另一个子数组的位置从q+1到r?? ?begin,end:待排序数组的起止位量?? ?left,right:临时存放待合并的两个子数组?? ?n1,n2:两个子数组的长度?? ?i,j,k:循环变量?? ?mid:临耐变量?? ?[C代码]?? ?#inciude<stdio, h>?? ?#include<stdlib, h>?? ?Define MAX 65536?? ?void merge(int arr [ ],int p,int q,int r) {?? ?int * left,* right;?? ?int n1,n2,I,j,k;?? ?n1=q-p+1;?? ?n2=r-q;?? ?If(left=(int *)malloc((n1+1) * sizeof(int)))=NULL) {?? ?Perror( "malloc error" );?? ?exit11?? ?}?? ?If((right = (int *)malloc((n2+1) * sizeof(int)))=NULL)?? ?Perror("malloc error");?? ?exit 11;?? ?}?? ?for(i=0;i<n1;i++){?? ?left[i]=arr [p+i];?? ?}?? ?left[i]=MAX;?? ?for(i=0;i<n2;i++){?? ?right[i]=arr[q+i+1]?? ?}?? ?right[i]=MAX;?? ?i=0;j=0;?? ?For(k=p;______;k++){?? ?If(left[i]>right[j] {?? ?______?? ?j++;?? ?}else{?? ?arr[k1]=left[i];?? ?i++;?? ?}?? ?}?? ?}?? ?Void merge Sort(int arr[ ], int begin, int end) {?? ?int mid;?? ?if(______){?? ?mid=(begin + end)/2;?? ?merge Sort(arr,begin,mid);?? ?______;?? ?Merge(arr,begin,mid,end);?? ?}?? ?}
假定指针变量p定义为“int *p=malloc(sizeof(int));”,要释放p所指向的动态存储空间,应调用的函数为()。Afree(p)Bdelete(p)Cfree(*p)Dfree(p)
下列程序的输出结果是()。 #include FUN(int **b,int p[2][3]) { **b=p[1][1]; } main( ) { int a[2][3]={2,4,6,8,10,12},*p; p=(int *)malloc(sizeof(int)); FUN(p,a); printf(“%d/n”,*p); }
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()。A、p=2*(int*)malloc(sizeof(int));B、p=(int*)malloc(2*sizeof(int));C、p=(int*)malloc(2*2);D、p=(int*)calloc(2,sizeof(int))。
单选题若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()。Ap=2*(int*)malloc(sizeof(int));Bp=(int*)malloc(2*sizeof(int));Cp=(int*)malloc(2*2);Dp=(int*)calloc(2,sizeof(int))。
单选题有说明语句int *p=new int[10];释放动态数组的正确语句是()Adelete []p;Bdelete p[]Cdelete int[]pDdelete p int[10]
单选题有以下程序段int*p;p=______malloc(sizeof(int));若要求使p指向一个int型的动态存储单元,在横线处应填入的是( )。AintB(int*)Cint*D(*int)