目录

  • 1 课程导学
    • 1.1 课程思政总体设计
    • 1.2 课程学习指南
    • 1.3 课程思维导图
  • 2 项目一 认识程序设计与C语言
    • 2.1 学习指导
    • 2.2 课程思政
      • 2.2.1 课程思政教学设计表
      • 2.2.2 融入教学思政案例:千里之行,始于足下
      • 2.2.3 扩展案例:不积跬步,无以至千里
    • 2.3 任务1 认识程序和程序设计
    • 2.4 任务2 认识C语言
      • 2.4.1 C语言产生与发展
      • 2.4.2 C语言的特点
    • 2.5 任务3 C程序开发与运行
      • 2.5.1 C程序组成
      • 2.5.2 C程序开发
    • 2.6 综合实践一 学生成绩管理系统界面设计
    • 2.7 章节测验
  • 3 项目二 顺序结构程序设计
    • 3.1 学习指导
    • 3.2 课程思政
      • 3.2.1 课程思政教学设计表
      • 3.2.2 融入教学思政案例:不以规矩,不能成方圆
      • 3.2.3 扩展案例:培养严谨的习惯
    • 3.3 任务1 认识常量和变量
    • 3.4 任务2 数据表现形式及应用
      • 3.4.1 整型数据表现形式及应用
      • 3.4.2 实型数据表现形式及应用
      • 3.4.3 字符型数据表现形式及应用
    • 3.5 任务3 运算符号及应用
      • 3.5.1 算术运算符及应用
      • 3.5.2 赋值和复合赋值运算符
      • 3.5.3 逗号及其他运算符
    • 3.6 任务4 数据输入与输出
      • 3.6.1 单个字符输入/输出函数
      • 3.6.2 格式化输入函数
      • 3.6.3 格式化输出函数
    • 3.7 任务5 顺序结构应用举例
    • 3.8 综合实践二 学生成绩信息描述与统计
    • 3.9 章节测验
  • 4 项目三 选择结构程序设计
    • 4.1 学习指导
    • 4.2 课程思政
      • 4.2.1 课程思政教学设计表
      • 4.2.2 思政案例:人生也是一道道选择题
    • 4.3 任务1 认识选择结构
    • 4.4 任务2 if语句应用
      • 4.4.1 if简单语句
      • 4.4.2 if标准语句和条件运算符
      • 4.4.3 if多分支语句
      • 4.4.4 if嵌套语句
    • 4.5 任务3 switch语句应用
    • 4.6 任务4 选择结构应用举例
    • 4.7 综合实践三 学生成绩管理系统菜单选择设计
    • 4.8 章节测验
  • 5 项目四 循环结构程序设计
    • 5.1 学习指导
    • 5.2 课程思政
      • 5.2.1 课程思政教学设计表
      • 5.2.2 融入教学思政案例:愚公移山
    • 5.3 任务1 认识循环结构
    • 5.4 任务2 while和do-while语句应用
      • 5.4.1 while语句
      • 5.4.2 do-while语句
    • 5.5 任务3 for语句应用
    • 5.6 任务4 break和continue语句应用
      • 5.6.1 break语句
      • 5.6.2 continue语句
    • 5.7 任务5 循环嵌套应用
    • 5.8 任务6 循环结构应用举例
    • 5.9 综合实践四 学生成绩管理系统菜单循环选择设计
    • 5.10 章节测验
  • 6 项目五 数组应用
    • 6.1 学习指导
    • 6.2 课程思政
      • 6.2.1 课程思政教学设计表
      • 6.2.2 思政案例:关于守序
      • 6.2.3 思政案例:关于同级能量汇聚理论
      • 6.2.4 思政案例:字符串与交友
    • 6.3 任务1 认识数组
    • 6.4 任务2 一维数组定义及应用
      • 6.4.1 一维数组定义与初始化
      • 6.4.2 一维数组应用
    • 6.5 任务3 二维数组定义及应用
      • 6.5.1 二维数组定义与初始化
      • 6.5.2 二维数组应用
    • 6.6 任务4 字符数组定义及应用
      • 6.6.1 字符数组定义与初始化
      • 6.6.2 字符数组输入与输出函数
      • 6.6.3 字符串处理函数
    • 6.7 任务5 数组应用举例
    • 6.8 综合实践五 学生多门成绩存储与处理设计
    • 6.9 章节测验
  • 7 项目六 函数应用
    • 7.1 学习指导
    • 7.2 课程思政
      • 7.2.1 课程思政教学设计表
      • 7.2.2 融入教学思政案例:归纳借鉴,分而治之,各取所长,团结协作
      • 7.2.3 扩展案例:建立自己人生中的各种“函数库”
      • 7.2.4 扩展案例:递归函数与榜样
    • 7.3 任务1 认识函数
    • 7.4 任务2 函数调用
    • 7.5 任务3 函数嵌套调用和递归调用
      • 7.5.1 函数嵌套调用
      • 7.5.2 函数递归调用
    • 7.6 任务4 数组名作为函数参数
    • 7.7 任务5 变量作用域和变量存储类别
    • 7.8 任务6 函数应用举例
    • 7.9 综合实践六 学生成绩管理系统功能模块化设计
    • 7.10 章节测验
  • 8 项目七 指针应用
    • 8.1 学习指导
    • 8.2 课程思政
      • 8.2.1 课程思政教学设计表
      • 8.2.2 思政案例:细节决定成败
    • 8.3 任务1 认识指针
    • 8.4 任务2 变量与指针应用
    • 8.5 任务3 数组与指针应用
    • 8.6 任务4 字符串与指针应用
    • 8.7 任务5 其他指针应用
    • 8.8 任务6 指针应用举例
    • 8.9 综合实践七 学生成绩管理系统指针应用设计
    • 8.10 章节测验
  • 9 项目八 自定义数据类型应用
    • 9.1 学习指导
    • 9.2 课程思政
      • 9.2.1 课程思政教学设计表
      • 9.2.2 思政案例:结构体与规范
    • 9.3 任务1 结构体类型定义与应用
      • 9.3.1 结构体类型定义
      • 9.3.2 结构体变量定义及应用
      • 9.3.3 结构体数组定义及应用
      • 9.3.4 结构体指针定义及应用
    • 9.4 任务2 共用体类型定义及应用
    • 9.5 任务3 枚举类型定义及应用
    • 9.6 任务4 typedef用法
    • 9.7 任务5 结构体应用举例
    • 9.8 综合实践八 学生成绩管理系统结构体应用设计
    • 9.9 章节测验
  • 10 项目九 文件应用
    • 10.1 学习指导
    • 10.2 课程思政
      • 10.2.1 课程思政教学设计表
      • 10.2.2 思政案例:文件管理与合作
    • 10.3 任务1 认识文件与文件指针
    • 10.4 任务2 文件打开与关闭
    • 10.5 任务3 文件读写函数应用
    • 10.6 任务4 文件位置定位与错误检测函数用法
    • 10.7 任务5 文件应用举例
    • 10.8 综合实践九 成绩管理系统文件应用
    • 10.9 章节测验
  • 11 试卷
    • 11.1 试卷一
    • 11.2 试卷二
    • 11.3 试卷三
    • 11.4 试卷四
章节测验

【习题】

一、选择题

1.变量的指针,其含义是指该变量的( )。

A.值 B.地址 C.名 D. 一个标志

2.若有定义:int i,j=2,*p=&i;则能完成 i=j 赋值功能的语句是( )。

A.i=*p; B.*p=j; C. i=&j; D. i=**p;

3.如果有如下程序段:

int *p,a=10,b=1;

p=&a;

a=*p+b;

执行该程序后,a 的值为( )。

A.12 B.10 C.11 D.编译出错

4.若已定义 int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i; 其中则对 a 数

组元素不正确的引用是( )。

A.a[p-a] B.*(&a[i]) C.p[i] D.a[10]

5.下面程序段的输出结果是( )。

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

printf("%d\n",*(p+2));

A.3 B.4 C.1 D.2

6.若有说明:int *p,m=5,n;,以下正确的程序段是

A.p=&n;scanf("%d",&p); B.p=&n;*p=m;

C.scanf("%d",&n);*p=n; D.p=&n;scanf("%d",*p);

7.下面程序段的运行结果是( )。

char str[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67 B.0 C.字符′C′的地址 D.字符′C′

8.下面说明不正确的是( )。

A.char a[10]="china"; B.char a[10],*p=a;p="china"

C.char *a;a="china" D.char a[10],*p;p=a="china"

9.下列叙述中错误的是( )。

A.若有 char *str=“C language”;str 的值是 C language。

B.若有一个二维数组 arr,则*(arr+i)与 arr[i]的值相同。

C.int(*p)[5]表示 p 是一个指向含有 5 个元素的一维整型数组的指针。

D.指针是指一个变量的地址,存放这个地址的变量就是指针变量。

10.有以下定义语句:int var,arr[10],*p;则下列语句中合法的是( )。

A.p=var B.p=arr C.p=10 D.p=arr[5]

11.两个指针变量不可以进行的操作是( )。

A.相减 B.相加 C.指向同一个地址 D.比较

12.运行以下程序输出的结果是( )。

main(){

int a[]={ 1,2,3,4,5,6},*p;

p=a; *p+=2;

printf(“%d,%d\n”,*p,*(p+3));}

A.1,6 B.2,5 C.3,4 D.3,5

13.若有定义:char s1[4]=”ab”,*p;则执行以下语句后输出为( )。

ptr=s1;

printf(“%c\n”,*(ptr+1));

A.a B.b C.字符’a’的地址 D.不确定

14.下面判断正确的是( )。

A.char *a="china";等价于 char *a;*a="china";

B.char str[5]={"china"};等价于 char str[]={"china"};

C.char *s="china";等价于 char *s;s="china";

D.char c[4]="abc",d[4]="abc";等价于 char c[4]=d[4]="abc";

15.下面程序段中,输出*的个数是( )。

char *s="\ta\018bc";

for(;*s!='\0';s++)printf("*");

A.9 B.5 C.6 D.7

二、运行结果题

1.以下程序的运行结果是( )。

#include <stdio.h>

main(){

int a[ ]={1,2,3,4},y,*p=&a[3];

--p;

y=*p;

printf("y=%d\n",y);}

2.下列程序的运行结果为( )。

#include<stdio.h>

void fun(char*str){

int a,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

void main(){

char str[]="abcdef";

fun(str);

printf("str[]=%s",str); }

三、编程题

1. 编写程序用指针变量对 3 个整数按照从小到大的顺序排序并输出。

2.用指针变量作为函数参数求 10 个整数的最大值。

3.用指向字符串的指针变量作为函数参数,编写函数实现字符串的连接

功能。