栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言-函数,指针-选择题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言-函数,指针-选择题

注意:现在偷的懒以后都要补回来的! 希望大家认真学好C语言,不希望后悔!

数组选择题

1.若有函数fun的定义为void fun(…){static int a=1;…}则下列叙述中不正确的是( )
 【 正确答案: B】
A 在每次调用fun函数时,变量a的值是上次调用结束时a的值
B 在fun函数之外,可以用变量名a直接引用a的值
C 在其他函数中,可以出现声明double a=2.5;
D fun函数的形式参数不能取名为a
2.在C语言中,只有在使用时才占用内存单元的变量,其存储类别是()
 【 正确答案: A】
A auto和register
B extern和register
C auto和static
D static和register
3.下面函数定义中正确的是
 【 正确答案: a】
A double fun(double f1, double f2){ }
B double fun(double f1; double f2){ }
C double fun(double f1, double f2); { }
D double fun(double f1, f2){ }
4.以下叙述中错误的是()
 【 正确答案: B】
A 用户定义的函数中可以没有return语句
B 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C 用户定义的函数中若没有return语句,则应当定义函数为void类型
D 函数的return语句中可以没有表达式
5.以下isprime函数的功能是判断形参a是否为素数,
是素数,函数返回1,否则返回0。则(1)(2)空为
int isprime(int a){
	int i;
	for(i=2;i<=a/2;i++)
		if (a%i==0) 
			(1);
	(2);
}
 【 正确答案: a】
A return 0 return 1
B return 1 return 0
6.C语言规定,变量作实参时,它和对应形参之间的数据传递方式是
 【 正确答案: b】
A 地址传递
B 单向值传递
C 由实参传给形参,再由形参传回给实参
D 由用户指定传递方式
7.若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是( )
 【 正确答案: D】
A 实参和其对应的形参占用同一存储单元
B 形参不占用存储单元
C 同名的实参和形参占用同一存储单元
D 形参和实参占用不同的存储单元
8.在C语言中,函数返回值的类型最终取决于()
 【 正确答案: A】
A 函数定义时在函数首部所说明的函数类型
B return语句中表达式值的类型
C 调用函数时主函数所传递的实参类型
D 函数定义时形参的类型
9.下面关于return语句的叙述正确的是
 【 正确答案: b】
A 一个自定义函数中必须有一条return语句
B 一个自定义函数中可以根据不同情况设置多条return语句
C 定义成void类型的函数中可以有带返回值的return语句
D 没有return语句的自定义函数在执行结束时不能返回到调用处
10.设有函数f的定义如下;
void f(int x,int *y){
	*y=x*x*x;
}
int main(){
	int i,c[4]={1,2,3,4},s[4]={0};
	for(i=0;i<4;i++){
		_________
		printf("%d",s[i]);
	}
}
若在main函数中欲调用f函数,则正确的调用语句是( )
 【 正确答案: C】
A f(c,s);
B f(c[i],s[i]);
C f(*(c+i),&s[i]);
D f(c+i,s+i);
11.下面叙述中正确的是
 【 正确答案: c】
A C语言处理系统以函数为单位编译源程序
B main()函数必须放在程序开始
C 用户定义的函数可以被一个或多个函数调用任意多次
D 在一个函数体内可以定义另外一个函数
12.在一个C源程序文件中所定义的全局变量,其作用域为()
 【 正确答案: D】
A 所在文件的全部范围
B 所在程序的全部范围
C 所在函数的全部范围
D 由具体定义位置和extern说明来决定范围

指针选择题

1.以下声明中正确的是( )。
 【 正确答案: D】
A int n=2,a[n]={10};
B int n=10,*p[2]=&n;
C int n=10,a[2]={n};
D int a[2][2]={10},(*p)[2]=a+1;
2.已知有声明 int i,a[10],*p=a; ,现需要将1到l0保存到元素a[0]到a[9]中,
以下程序段中不能实现这一功能的是( )。
 【 正确答案: D】
A for(i=0;i<10;i++) a[i]=i+1;
B for(i=0;i<10;i++) p[i]=i+1;
C i=1;while(p 
3.若有定义语句:int a[4][10],*p,*q[4];且 0≤i<4,则错误的赋值是( )。
 【 正确答案: A】
A p=a
B q[i]=a[i]
C p=a[i]
D p=&a[2][1]
4.若有声明语句"int a=5,b=4,c=3,*p=&a;",则下列( )表达式语句是正确的。
 【 正确答案: B】
A (*p)++=c;
B printf(a%4==0?"%3dn":"%3d",*p);
C *(*p)++;
D a>20?return *p-20:return *p-1;
5.设有定义:char *c;,以下选项中能够使字符型指针 c 正确指向一个字符串的是( )。
 【 正确答案: A】
A char str[]="string";c=str;
B scanf("%s",c);
C c=getchar();
D c=*string";
6.已知有声明 int a[4][4]={{1,2,3,4},{5,6,7,8), {9,10,11,12},{13,14,15,16)}; 
若需要引用值为12的数组元素,则下列选项中错误的是( )。
 【 正确答案: A】
A *(a+2)+3
B *(*(a+2)+3)
C *(a[2]+3)
D a[2][3]
7.有以下程序:
void main (){
	int a[]={1,2,3,4},y,*p=&a[3];
	--p;
	y=*p;
	printf("y=%dn",y);
}
其运行结果是()
 【 正确答案: D】
A y=0
B y=1
C y=2
D y=3
8.下面选项中正确的赋值语句是(设 char a[5],*p=a;)( )。
 【 正确答案: A】
A p="abcd";
B a="abcd";
C *p="abcd";
D *a="abcd";
9.以下程序的输出结果是int a[5]={2,4,6,8,10}, *p=a; p++;printf("%d",*p);
 【 正确答案: b】
A 2
B 4
C 6
D 8
10.以下程序的输出结果是
main(){
	int m=1, n=2, *p=&m, *q=&n, *r;
	r=p; 
	p=q; 
	q=r;
	printf("%d,%d,%d,%dn",m,n,*p,*q);
}
 【 正确答案: b】
A 1,2,1,2
B 1,2,2,1
C x
D x
11.有以下程序:
void main (){
	char ch[]="uvwxyz",
	*pc;pc=ch;
	printf("%cn", *(pc+5));
}
其运行结果是()
 【 正确答案: A】
A z
B 0
C 元素ch[5]的地址
D 字符y的地址
12.已知:int *p, a;则语句“p= &a;”中的运算符“&”的含义是()
 【 正确答案: D】
A 位与运算
B 逻辑与运算
C 取指针内容
D 取变量地址
13.以下程序的输出结果是
# define N 5
int fun(int *s, int a, int n){
	int j;*s=a;j=n;
	while(a!=s[j]) j--;
	return j;
}
void main (){
	int s[N+1]; 
	int k;
	for(k=1;k<=N;k++)
		s[k]=k+1;
	printf("%dn",fun(s,4,N));
}
 【 正确答案: b】
A 3
B 4
C x
D x
14.若有声明"int a [5],*b=a,(*c)[3],*d[3];",则在以下表达式中有语法错误的是( )。
 【 正确答案: C】
A a[0]=0
B b[0]=0
C c[0]=0
D d[0]=0
15.若有定义语句:double x[5]={1.0, 2.0. 3.0, 4.0,5.0}, *p=x;,则错误引用x数组元素的是()
 【 正确答案: B】
A *p
B x[5]
C *(p+l)
D *x
16.以下程序的输出结果是
void fun (char **p){
	++p;
	printf("%sn",*p);
}
void main ( ){
	char *a[]={"Morning", "Afternoon", "Evening", "Night"};
	fun( a );
}
 【 正确答案: b】
A Morning
B Afternoon
C Eveningx
D Night
17.设有如下程序段: char s[20]="Bejing",*p;p=s;则执行p=s;语句后,以下叙述正确的是()
 【 正确答案: A】
A 可以用*p表示s[0]
B s数组中元素的个数和p所指的字符串长度相等
C s和p都是指针变量
D 数组s中的内容和指针变量p中的内容相等
18.有以下程序:
void main (){
	int i=5;
	do{
		if(i%3==1)
			if (i%5==2){
				printf("*%d",i); 
				break;
			}
		i++;
	}while (i!=0);
	printf("n");
}
其运行结果是()
 【 正确答案: A】
A *7
B *3*5
C *5
D *2*6
19.以下程序的输出结果是
void swap (int *a, int*b){
	int *t;
	t=a; 
	a=b; 
	b=t;
}
void main(){
	int i=3,j=5,*p=&i,*q=&j;
	swap(p,q);
	printf ("%d %dn", *p, *q);
}
 【 正确答案: a】
A 3 5
B 5 3
C x
D x
20.若要对a进行++运算,则a应具有以下说明( )。
 【 正确答案: C】
A int a[3][2];
B char *a[]={"12","ab"};
C int b[10],*a=b;
D char (*a)(char);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879360.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号