C语言之指针练习题

您所在的位置:网站首页 c语言中指针数组的使用方法 C语言之指针练习题

C语言之指针练习题

2023-07-15 13:19| 来源: 网络整理| 查看: 265

第1关:输出月份英文名

300

任务要求参考答案评论76 任务描述相关知识 指针指针数组数组指针指针变量的赋值指针运算符编程要求测试说明

任务描述

本关需要你编写一个用指针数组处理的c程序,然后从键盘输入月份时输出对应的英文名。

相关知识

指针

指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。就像其他变量或常量一样,你必须在使用指针存储其他变量地址之前,对其进行声明。

指针变量声明的一般形式为:

type *var-name;

在这里,type 是指针的基类型,它必须是一个有效的 C 数据类型,var-name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。以下是有效的指针声明:

int *ip; /* 一个整型的指针 */double *dp; /* 一个 double 型的指针 */float *fp; /* 一个浮点型的指针 */char *ch; /* 一个字符型的指针 */

指针数组

数组大家都清楚,但是指针数组是什么呢?在C语言中,数组元素全为指针的数组称为指针数组。

一维指针数组的定义形式为:

类型名 *数组标识符[数组长度]

例如:

char *arr[4] = {"hello", "world", "shannxi", "xian"};//arr就是我定义的一个指针数组,它有四个元素,每个元素是一个char *类型的指针,这些指针存放着其对应字符串的首地址。

运用:

指针数组可以作为函数的参量使用,使用方式与普通数组类似;

指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便。

数组指针

什么?还有数组指针?不是一样的吗?

指针数组和数组指针是不一样的,让我们来详细看一下什么是数组指针。

数组指针,指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针。

例如:

char (*pa)[4]; // pa即为指向数组的指针,又称数组指针

初学者总是分不出指针数组与数组指针的区别,其实很好理解:

指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称;

数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,但并不知道它指向的数组占多少字节,它是“指向数组的指针”的简称。

指针变量的赋值

指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。C语言中提供了地址运算符&来表示变量的地址。

其一般形式为: & 变量名;, 如&a变示变量a的地址,&b表示变量b的地址。

指针运算符

指针变量可以进行某些运算,但其运算的种类是有限的。它只能进行赋值运算和部分算术运算及关系运算。

取地址运算符&: 取地址运算符&是单目运算符,其结合性为自右至左,其功能是取变量的地址。在scanf函数及前面介绍指针变量赋值中,我们已经了解并使用了&运算符。

取内容运算符*: 取内容运算符*是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在*运算符之后跟的变量必须是指针变量。需要注意的是指针运算符*和指针变量说明中的指针说明符* 不是一回事。在指针变量说明中,*是类型说明符,表示其后的变量是指针类型。而表达式中出现的*则是一个运算符用以表示指针变量所指的变量。

例如:

main(){int a=5,*p=&a;printf ("%d",*p);}

表示指针变量p取得了整型变量a的地址。本语句表示输出变量a的值。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

编写一个用指针数组处理的c程序,实现从键盘输入月份时输出对应的英文名。 效果如下:

输入:3 输出:March

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。

开始你的任务吧,祝你成功!

第一种不用指针解法:

#include int main() { //»ñÈ¡²ÎÊý·½Ê½ scanf //int x =0; //int y = 0; //scanf("%d", &x); //½á¹ûÊä³öʹÓÃprinf //printf("%d",x); // ÇëÔÚ´ËÌí¼ÓÄãµÄ´úÂë /********** Begin *********/ char *arr[]={"January","February","March","April","May","June","July","August","September","October","November","December"}; int i; scanf("%d",&i); printf("%s",arr[i-1]); /********** End **********/ } 第二种用指针解法: #include int main() { //»ñÈ¡²ÎÊý·½Ê½ scanf //int x =0; //int y = 0; //scanf("%d", &x); //½á¹ûÊä³öʹÓÃprinf //printf("%d",x); // ÇëÔÚ´ËÌí¼ÓÄãµÄ´úÂë /********** Begin *********/ char *arr[]={"January","February","March","April","May","June","July","August","September","October","November","December"}; int i; scanf("%d",&i); printf("%s",*(arr+i-1)); /********** End **********/ } 第2关:差等生还是优等生

500

任务要求参考答案评论76 任务描述相关知识编程要求测试说明

任务描述

本关需要你使用指针方法来处理一道关于成绩的题目。

相关知识

相关知识略

编程要求

有一个班4个学生,5门课程。

求第n门课程的平均分(1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3