#4439. 指针课堂练习

指针课堂练习

指针课堂练习题

1.下列语句的输出结果是______。

  int **pp,*p,a=5,b=8;
  pp=&p;p=&a;p=&b;printf("%d,%d",*p,**pp);

{{ select(1) }}

  • 5,8
  • 8,5
  • 8,8
  • 5,5

2.如下程序的输出结果是______。

#include <stdio.h>
#include <ctype.h>
#include <string.h>
void fun(char *p) {
	int i, k;
	char s[30];
	for (i = 0, k = 0; p[i] != '\0'; i += 2)
		if (!isspace(*p + i) && (*(p + i) != 'a'))
			s[k++] = p[i];
	s[k] = '\0';
	strcpy(p, s);
}
int main() {
	char s[30] = "p r o g ra m e";
	fun(s);
	puts(s);
	return 0;
}

{{ select(2) }}

  • programe
  • progr
  • ame
  • emargorp

3.以下语句的输出结果是______。

  char s[]="one",*p=s;
  printf("%d\n",*(p+3));

{{ select(3) }}

  • 字符e的地址
  • 0
  • 12
  • 20

4.以下函数的功能是比较两个字符串s和t的大小,函数中应填入______。

int comp(char *s, char *t) {
	for (; *s == *t; ______)
		if (*s == '\0')
			return 0;
	return (*s - *t);
}

{{ select(4) }}

  • s++
  • t++
  • s++;t++
  • s++,t++

5.以下程序段的结果为______。

  static char s[]="language";
  char *p;
  for(p=s;p<s+8;p+=2)
  putchar(*p);

{{ select(5) }}

  • language
  • lnug
  • agae
  • 语法错误

6.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是______。

#include <stdio.h>
int main(){
  int *p,a;
  p=&a;
  printf("input a:");
  scanf("%d",*p);
  …   }

{{ select(6) }}

  • *p表示的是指针变量p的地址。
  • *p表示的是变量a的值,而不是变量a的地址。
  • *p表示的是指针变量p的值。
  • *p只能用来说明p是一个指针变量。

7.在int (*p)[3]; 定义中,标识符p ______。

{{ select(7) }}

  • 定义非法。
  • 是一个指针数组,每个元素是一个指向整型变量的指针。
  • 是一个指针,指向一个具有三个元素的一维数组。
  • 是一个指向整型变量的指针。

8.如下程序的执行结果是______。

#include <stdio.h>
int main() {
	int a[3][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};
	int (*p)[4] = a, i, j, k = 0;
	for (i = 0; i < 3; i++)
		for (j = 0; j < 2; j++)
			k += *(*(p + i) + j);
	printf("%d\n", k);
	return 0;
}

{{ select(8) }}

  • 27
  • 68
  • 99
  • 108

9.能正确执行x和y交换且返回结果的函数是______。

//第一个函数
fun(int *x, int *y)
{
	int p;
	p = *x;
	*x = *y;
	*y = p;
}
//第二个函数
fun(int x, int y)
{
	int t;
	t = x;
	x = y;
	y = t;
}
//第三个函数
fun(int *x, int *y)
{
	*x = *y;
	*y = *x;
}
//第四个函数
fun(int *x, int *y)
{
	*x = *x - *y;
}

{{ select(9) }}

  • 第一个函数
  • 第二个函素
  • 第三个函数
  • 第四个函数

10.有以下程序:

#include <stdio.h>
void fun( int *a, int i, int j) {
	int t;
	if (i < j) {
		t = a[i];
		a[i] = a[j];
		a[j] = t;
		fun(a, ++i, --j);
	}
}
int main() {
	int a[] = {1, 2, 3, 4, 5, 6}, i;
	fun(a, 0, 5);
	for (i = 0; i < 6; i++)
		printf("%d ", a[i]);
	return 0;
}

执行后输出结果是______。

{{ select(10) }}

  • 6 5 4 3 2 1
  • 4 3 2 1 5 6
  • 4 5 6 1 2 3
  • 1 2 3 4 5 6

11.以下语句的输出结果是______。

  char s[]="\t\ \chinese\ \girl\n";
  printf("%d",strlen(s));

{{ select(11) }}

  • 12
  • 15
  • 13
  • 14

12.有以下程序:

#include <stdio.h>
int main() {
	char *s[] = {"one", "two", "three"},*p;
	p = s[1];
	printf("%c,%s\n", *(p + 1), s[0]);
	return 0;
}

执行后输出结果是______。

{{ select(12) }}

  • n, two
  • t, one
  • w, one
  • o, two

13.若已知说明语句:int a, s[3][3]; 则不能将s[2][1]的值赋给变量a的语句是______。

{{ select(13) }}

  • a=s[2][1];
  • a=*(*(s+2)+1);
  • a=*(s[2]+1);
  • a=*(*(s+2));

14.以下程序的执行结果是______。

#include <stdio.h>
int main() {
	int  i,*p;
	p = &i;
	*p = 8;
	printf("i=%d ", i);
	return 0;
}

{{ select(14) }}

  • i为不定值
  • i=0
  • i=8
  • 程序有错误

15.以下程序:

#include <iostream>
using namespace std;
char fun(char *p) {
	if (*p >= 'A' && *p <= 'Z')
		*p -= 'A' - 'a';
	return *p;
}
int main() {
	char s[80], *p = s;
	fgets(s, sizeof(s), stdin);
	while (*p) {
		*p = fun(p);
		putchar(*p);
		p++;
	}
	return 0;
}

当输入BIG BIG WORLD回车,则输出结果是______。

{{ select(15) }}

  • big big WORLD
  • BIG BIG world
  • big big world
  • BIG BIG WORLD

16.以下程序的运行结果是______。

#include <stdio.h>
void abc(char *p) {
	int i, j;
	for (i = j = 0; * (p + i) != '\0'; i++)
		if (*(p + i) < 'n') {
			*(p + j) = *(p + i);
			j++;
		}
	*(p + j) = '\0';
}
int main() {
	char str[] = "morning";
	abc(str);
	puts(str);
	return 0;
}

{{ select(16) }}

  • morig
  • morning
  • mig
  • or

17.设int x []={4,2,3,1},q,*p=&x[1];则执行语句q=(*--p)++后,变量q的值为 ______。

{{ select(17) }}

  • 4
  • 3
  • 2
  • 1

18.有以下程序:

#include <stdio.h>
#include <string.h>
int main() {
	char str[][20] = {"Hello", "Beijing"},(*p)[20] = str;
	printf("%d\n", strlen(*(p+1)));
	return 0;
}

程序运行后的输出结果是______。

{{ select(18) }}

  • 0
  • 5
  • 7
  • 4