⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 练习(五).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
   (A) *&a[5]
   (B) a+2
   (C) *(p+5)
   (D) *(a+2)
62、若有以下定义,则对a数组元素地址的正确引用是(   )
	int a[5],*p=a;
   (A) p+5
   (B) *a+1
   (C) &a+1
   (D) &a[0]
63、若有定义:int a[2][3]; 则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为(   )
   (A) *(*(a+i)+j)
   (B) (a+i)[j]
   (C) *(a+i+j)
   (D) *(a+i)+j
64、若有定义:int a[2][3]; 则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为(   )
   (A) *(a[i]+j)
   (B) (a+i)
   (C) *(a+j)
   (D) a[i]+j
65、若有以下定义和语句,则对a数组元素地址的正确引用为(   )
	int a[2][3],(*p)[3];
	p=a;
   (A) *(p+2)
   (B) p[2]
   (C) p[1]+1
   (D) (p+1)+2
66、若有以下定义和语句,则对a数组元素的正确引用为(   )
	int a[2][3],(*p)[3];
	p=a;
   (A) (p+1)[0]
   (B) *(*(p+2)+1)
   (C) *(p[1]+1)
   (D) p[1]+2
67、若有定义:int a[5]; 则a数组中首元素的地址可以表示为(   )
   (A) &a
   (B) a+1
   (C) &a[1]
68、若有定义:int (*p)[4]; 则标识符p(   )
   (A) 是一个指向整型变量的指针
   (B) 是一个指针数组名
   (C) 是一个指针,它指向一个含有四个整型元素的一维数组
   (D) 定义不合法
69、若有以下定义和赋值语句,则对s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为(   )
	int s[2][3]={0},(*p)[3];
	p=s;
   (A) *(*(p+i)+j)
   (B) *(p[i]+j)
   (C) (p+i)+j
   (D) (*(p+i))[j]
70、若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素的非法引用为(   )
	int b[2][3]={0},(*p)[3];
	p=b;
   (A) *(*(p+i)+j)
   (B) *(p[i]+j)
   (C) *(p+i)+j
   (D) (*(p+i))[j]
71、以下与int *q[5]; 等价的定义语句是(   )
   (A) int q[5];
   (B) int *q;
   (C) int *(q[5]);
   (D) int (*q)[5];
72、设有以下程序段:
	char str[4][10]={"first","secone","third","fourh"},*strp[4];
	int n;
	for(n=0;n<4;n++) strp[n]=str[n];
    若k为int型变量且0 ≤ k < 4,则对字符串的不正确引用是(   )
   (A) strp
   (B) str[k]
   (C) strp[k]
   (D) *strp
73、若有以下定义,则*(p+5)表示(   )
	int a[10],*p=a;
   (A) 元素a[5]的地址
   (B) 元素a[5]的值
   (C) 元素a[6]的地址
   (D) 元素a[6]的值
74、若有定义:int *p[4]; 则标识符p(   )
   (A) 是一个指向整型变量的指针
   (B) 是一个指针数组名
   (C) 是一个指针,它指向一个含有四个元素的一维数组
   (D) 说明不合法
75、以下正确的说明语句是(   )
   (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]};
   (D) int a[3][4],(*num)[4]; num[1]=&a[1][3];
76、若有以下定义,且 0 ≤ i < 4,则不正确的赋值语句是(   )
	int b[4][6],*p,*q[4];
   (A) q[i]=b[i];
   (B) p=b;
   (C) p=b[i];
   (D) q[i]=&b[0][0];
77、以下正确的定义语句和赋值语句是(   )
   (A) int b[3][5],(*p)[3],(*q)[5]; p=b;q=b;
   (B) float b[3][5],*p[3]; p[0]=b[0]; p[2]=*b+4;
   (C) double b[3][5],s[5][3],*q; q=b; s=q;
   (D) int b[10],*q; char *s; q=b; s=b;
78、若有以下定义,则p+5表示(   )
	int a[10],*p=a;
   (A) 元素a[5]的地址
   (B) 元素a[5]的值
   (C) 元素a[6]的地址
   (D) 元素a[6]的值
79、若有以下定义,且 0 ≤ i < 6,则正确的赋值语句是(   )
	int s[4][6],t[6][4],(*p)[6];
   (A) p=t;
   (B) p=s;
   (C) p=s[i];
   (D) p=t[i];
80、若要对a进行一一运算,则a应具有下面说明(   )
   (A) int p[3];
       int *a=p;
   (B) int k;
       int *a=&k
   (C) char *a[3];
   (D) int b[10];
       int *a=b+1;
81、若有定义:int a[4][6]; 则能正确表示a数组中任一元素a[i][j](此处 0 ≤ i < 4 , 0 ≤ j < 6)地址的表达式是(   )
   (A) &a[0][0]+6*i+j
   (B) &a[0][0]+4*j+i
   (C) &a[0][0]+4*i+j
   (D) &a[0][0]+6*j+i
82、以下选项中,对指针变量p的不正确操作是(   )
   (A) int a[5],*p;
       p=&a;
   (B) int a[5],*p;
       p=a;
   (C) int a[5];
       int *p=a=1000;
   (D) int a[5];
       int *p1,*p2=a;
       *p1=*p2;
83、若有以下定义和语句,则能正确表示a数组元素地址的表达式是(   )
	double a[5],*p1;
	p1=a;
   (A) a
   (B) p1+5
   (C) *p1
   (D) &a[5]
84、若有以下定义,且 0 ≤ i < 5,则对a数组元素的非法引用是(   )
	int a[5],*p=a;
   (A) a[i]
   (B) *(a+i)
   (C) *(p+i)
   (D) *(&a+i)
85、若有以下定义,则数值不为3的表达式是(   )
	int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;
   (A) x[3]
   (B) p1=x+3,*p1++
   (C) p1=x+2,*(p1++)
   (D) p1=x+2,*++p1
86、若有定义:int a[]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k; 则下面程序段的输出是(   )
	for(k=0;k<4;k++) q[k]=&a[k*3];
	printf("%d\n",q[3][0]);
   (A) 8
   (B) 16
   (C) 20
   (D) 输出项不合法,结果不确定
87、若有以下定义,则正确的程序段是(   )
	int *p,*s,i,j;
	char *q,ch;
   (A) main()
       {
	  *p=100;
	   .
	   .
	   .
       }
   (B) main()
       {
	  p=&ch;
	  s=p;
	   .
	   .
	   .
       }
   (C) main()
       {
	  p=&i;
	  q=&ch;
	  p=q;
	   .
	   .
	   .
       }
   (D) main()
       {
	  p=&i;
	  q=&ch;
	  *p=40; *q=*p;
	   .
	   .
	   .
       }
88、若以下main函数经过编译,连接后得到的可执行文件名为echo.exe,若希望在系统的命令状态下输入某一命令行后得到的输出是china tianjin, 则明明行的内容应是(   )
	void main(int argc,char *argv[])
	{
		int i;
		for(i=1;i<argc;i++)
			printf("%s%c",argv[i],(i<argc-1)?' ':'\n');
	}
   (A) china tianjin
   (B) echo china tianjin
   (C) echo
       china tianjin
   (D) echo
       china
       tianjin
89、设有一个名为file1的C源程序,且已知命令行为:FILE1 CHINA BEIJING SHANGHAI,则可得到以下运行结果的C源程序为(   )
	CHINA
	BEIJING
	SHANGHAI
   (A) 	void main(int argc,char *argv[])
	{
		while(--argc>1)
		printf("%s%c",*argv,(argc>1)?'\n':' ');
	}
   (B) 	void main(int argc,char *argv[])
	{
		while(argc-->1)
			printf("%s\n",*++argv);
	}
   (C) 	void main(int argc,char *argv[])
	{
		while(++argc>0)
			printf("%s%c",*++argv,(argc>1)?' ':'\n');
	}
   (D) 	void main(int argc,char *argv[])
	{
		while(argc>1)
			printf("%s",*++argv);
	}
90、阅读以下程序:
	void main()
	{
		int a[10]={2,4,6,8,10,12,14,16,18,20},*p;
		p=a;
		printf("%x\n",p);
		printf("%x\n",p+9);
	}
    若第一个printf语句输出的是ffca,则第二个printf语句的输出是(   )
   (A) ffdd
   (B) ffdc
   (C) ffde
   (D) ffcd
91、设有以下定义:
	char *cc[2]={"1234","5678"};
    则正确的叙述是(   )
   (A) cc数组的两个元素中各自存放了字符串"1234"和"5678"的首地址
   (B) cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
   (C) cc是指针变量,它指向含有两个数组元素的字符型一维数组
   (D) cc数组元素的值分别是"1234"和"5678"
92、若有以下定义
	int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
	int (*p)[3]=x;
    则能够正确表示数组元素x[1][2]的表达式是(   )
   (A) *((*p+1)[2])
   (B) (*p+1)+2
   (C) *(*(p+5))
   (D) *(*(p+1)+2)
93、下面程序的运行结果是(   )
	void main()
	{
		int x[5]={2,4,6,8,10},*p,**pp;
		p=x;
		pp=&p;
		printf("%d",*(p++));
		printf("%3d\n",**pp);
	}
   (A) 4  4
   (B) 2  4
   (C) 2  2
   (D) 4  6
94、下面程序的运行结果是(   )
	#include<stdio.h>
	fun(int **a,int p[2][3])
	{
		**a=p[1][1];
	}
	void main()
	{
		int x[2][3]={2,4,6,8,10,12},*p;
		p=(int *)malloc(sizeof(int));
		fun(&p,x);
		printf("%d\n",*p);
	}
   (A) 10
   (B) 12
   (C) 6
   (D) 8
95、设有一个名为file1的C源程序,且已知命令行为:FILE1 CHINA BEIJING SHANGHAI,则可得到以下运行结果的C源程序为(   )
	CHINA BEIJING SHANGHAI
   (A) 	void main(int argc,char *argv[])
	{
		while(--argc>0)
			printf("%s%c",*++argv,(argc>1)?' ":'\n');
	}
   (B) 	void main(int argc,char *argv[])
	{
		while(argc-->1)
			printf("%s\n",*argv);
	}
   (C) 	void main(int argc,char *argv[])
	{
		while(argc>0)
			printf("%s%c\n",*++argv,(argc>1)?' ':'\n');
	}
   (D) 	void main(int argc,char *argv[])
	{
		while(argc>1)
		{
			++argv;
			printf("%s\n",*argv);
			--argc;
		}
	}
96、以下正确的叙述是(   )
   (A) C语言允许main函数带形参,且形参个数和形参名均可由用户指定
   (B) C语言允许main函数带形参,形参名只能是argc和argv
   (C) 当main函数带有形参时,传给形参的值只能从命令行中得到
   (D) 若有说明:main(int argc,char *argv),则形参argc的值必须大于1
97、main函数的正确说明形式是(   )
   (A) main(int argc,char *argv)
   (B) main(int abc,char **abv)
   (C) main(int argc,char argv)
   (D) main(int c,char v[])
98、以下程序能找出数组x中的最大值和该值所在的元素下标,数组元素值从键盘输入。请填空。
	void main()
	{
		int x[10],*p1,*p2,k;
		for(k=0;k<10;k++) scanf("%d",x+k);
		for(p1=x,p2=x;p1-x<10;p1++)
			if(*p1>*p2) p2= ① ;
		printf("MAX=%d,INDEX=%d\n",*p2, ② );
	}
① (A) p1
   (B) p2[p1]
   (C) x[p2]
   (D) x-p1
② (A) p1-x
   (B) p1
   (C) p2-x
   (D) x-p2
99、若有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则表达式*language[1]>*language[3]比较的是(   )
   (A) 字符F和字符P
   (B) 字符串BASIC和字符串JAVA
   (C) 字符B和字符J
   (D) 字符串FORTRAN和字符串PASCAL
100、若有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则language[2]的值是(   )
   (A) 一个字符
   (B) 一个地址
   (C) 一个字符串
   (D) 一个不定值
101、若有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 则以下不正确的叙述是(   )
   (A) language+2表示字符串"PASCAL"的首地址
   (B) *language[2]的值是字母P
   (C) language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针
   (D) language是一个字符型指针数组,它包含5个元素,其初值分别是:"FORTRAN","BASIC","PASCAL","JAVA","C"
102、语句int(*ptr)(); 的含义是(   )
   (A) ptr是指向一维数组的指针变量
   (B) ptr是指向int型数据的指针变量
   (C) ptr是指向函数的指针,该函数返回一个int型数据
   (D) ptr是一个函数名,该函数的返回值是指向int型数据的指针
103、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是(   )
   (A) (*p)max(a,b);
   (B) *pmax(a,b);
   (C) (*p)(a,b);
   (D) *p(a,b);
104、已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是(   )
   (A) p=max;
   (B) *p=max;
   (C) p=max(a,b);
   (D) *p=max(a,b);
105、已有定义int(*p)(); 指针p可以(   )
   (A) 代表函数的返回值
   (B) 指向函数的入口地址
   (C) 表示函数的类型
   (D) 表示函数返回值的类型
106、若有以下说明和语句:
	char *language[]=""FORTRAN","BASIC","PASCAL","JAVA","C"};
	char **q; q=language+2;
     则语句printf("%o\n",*q); (   )
   (A) 输出的是language[2]元素的地址
   (B) 输出的是字符串PASCAL
   (C) 输出的是language[2]元素的值,它是字符串PASCAL的首地址
   (D) 格式说明不正确,无法得到确定的输出
107、若要对a进行++运算,则a应具有下面说明(   )
   (A) int a[3][2];
   (B) char *a[]={"12","ab"};
   (C) char (*a)[3];
   (D) int b[10],*a=b;
































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -