c语言 worksheet

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 C语言 正文

C 语言核心概念练习工作表

第一部分:基础语法与数据类型

目标: 掌握变量、常量、基本数据类型、运算符和输入输出。

c语言 worksheet
(图片来源网络,侵删)

练习 1: 变量与数据类型

  1. 编写一个 C 程序,声明以下变量,并为它们赋值,然后打印出来。

    • 一个 int 类型的整数,值为 42
    • 一个 float 类型的单精度浮点数,值为 14
    • 一个 double 类型的双精度浮点数,值为 87654321
    • 一个 char 类型的字符,值为 'A'
    • 一个 char 类型的字符串(使用字符数组),值为 "Hello, World!"
  2. 解释 intchar 的区别。


练习 2: 常量与修饰符

c语言 worksheet
(图片来源网络,侵删)
  1. 使用 #define 预处理指令定义一个名为 PI 的浮点常量,值为 14159
  2. 使用 const 关键字定义一个整型常量 MAX_STUDENTS,值为 30
  3. 声明一个 long long 类型的变量来存储一个很大的整数(12345678901234),并打印它。

练习 3: 运算符

  1. 算术运算符:

    • 编写程序,计算 10 + 5, 20 - 8, 7 * 3, 15 / 4 (注意结果类型), 15 % 4
    • 使用复合赋值运算符(, , , )将一个变量的值增加 10。
  2. 关系与逻辑运算符:

    • 编写程序,判断一个整数是否在 10 到 20 之间(包含 10 和 20)。
    • 使用逻辑运算符 && (与) 和 (或) 判断两个条件是否同时成立或至少一个成立。
  3. 自增/自减运算符:

    c语言 worksheet
    (图片来源网络,侵删)
    • 解释 int a = 5; printf("%d, %d", a++, ++a); 的输出结果,并说明原因。

练习 4: 输入与输出

  1. 使用 printf 函数,以以下格式打印一个学生的信息:

    Name: Alice
    Age: 20
    GPA: 3.85

    (提示:使用 %s, %d, %f 格式化符号)。

  2. 使用 scanf 函数从用户那里获取一个整数和一个浮点数,然后将它们打印出来。


第二部分:流程控制

目标: 掌握条件判断和循环结构。


练习 5: 条件语句 (if-else, switch)

  1. if-else:编写一个程序,获取用户输入的一个整数,判断它是正数、负数还是零,并打印相应的信息。
  2. switch:编写一个程序,获取用户输入的一个数字(1-7),然后打印对应的星期几(1 是 "Monday"),如果输入的数字不在 1-7 范围内,打印 "Invalid input"。

练习 6: 循环 (for, while, do-while)

  1. for 循环

    • 使用 for 循环打印 1 到 100 之间所有 3 的倍数。
    • 使用 for 循环打印 10 到 1 的倒计时。
  2. while 循环

    • 使用 while 循环计算 1 到 100 的累加和。
    • 使用 while 循环让用户不断输入数字,直到输入 0 为止,并统计输入了多少个非零数字。
  3. do-while 循环

    • 使用 do-while 循环实现一个简单的菜单系统,让用户可以选择 "1. Add", "2. Subtract", "3. Exit",当用户输入 3 时,程序退出。

第三部分:函数

目标: 理解函数的定义、声明、调用和参数传递。


练习 7: 函数基础

  1. 编写一个名为 isEven 的函数,它接收一个整数作为参数,如果该数是偶数则返回 1(真),否则返回 0(假),在 main 函数中调用它并测试。
  2. 编写一个名为 printGreeting 的函数,它没有参数,也没有返回值(void),功能是打印 "Hello, C Programmer!"。
  3. 编写一个名为 add 的函数,它接收两个整数参数,返回它们的和,在 main 函数中调用它并打印结果。

练习 8: 递归

  1. 编写一个递归函数 factorial 来计算一个非负整数的阶乘。n! = n * (n-1) * ... * 1
  2. 编写一个递归函数 fibonacci 来计算斐波那契数列的第 n 项。fib(n) = fib(n-1) + fib(n-2)fib(0)=0, fib(1)=1

第四部分:数组与字符串

目标: 掌握一维数组、多维数组和字符串的处理。


练习 9: 一维数组

  1. 声明一个包含 5 个整数的数组,并初始化它。
  2. 使用 for 循环遍历数组,找出其中的最大值和最小值。
  3. 将数组中的所有元素反转([1, 2, 3, 4] 变成 [4, 3, 2, 1])。

练习 10: 字符串

  1. 使用字符数组声明一个字符串 "C Programming",并打印它。
  2. 编写一个程序,使用 strlen (来自 <string.h>) 计算用户输入的字符串的长度。
  3. 编写一个函数 myStrcpy,实现字符串的复制功能(不使用 strcpy)。

练习 11: 多维数组

  1. 声明一个 3x3 的二维整型数组,并按行初始化。
  2. 使用嵌套的 for 循环打印这个二维数组(矩阵)。
  3. 计算这个 3x3 矩阵对角线元素的和。

第五部分:指针

目标: 深入理解指针的概念、指针运算和指针与数组的关系。


练习 12: 指针基础

  1. 声明一个整型变量 x 和一个指向整型的指针 ptr,将 x 的地址赋给 ptr,通过指针 ptr 修改 x 的值,然后打印 x 的值。
  2. 解释 *ptrptr 的区别。
  3. 编写一个函数 swap,它接收两个整型指针作为参数,交换这两个指针所指向的变量的值,在 main 函数中调用它来交换两个变量的值。

练习 13: 指针与数组

  1. 声明一个整型数组 arr[5],声明一个指针 p 并让它指向数组的第一个元素,使用指针 p 来遍历并打印数组的所有元素。
  2. 解释 arr[i]*(arr + i) 为什么是等价的。

第六部分:结构体与文件 I/O

目标: 掌握自定义数据类型和基本的文件操作。


练习 14: 结构体

  1. 定义一个名为 Student 的结构体,包含以下成员:
    • char name[50]
    • int id
    • float gpa
  2. main 函数中声明一个 Student 类型的变量,为其赋值,然后打印其内容。

练习 15: 文件 I/O

  1. 编写一个程序,将 "This is a test line." 写入到一个名为 output.txt 的文件中。
  2. 编写另一个程序,从 output.txt 文件中读取内容,并将其打印到控制台。

综合挑战题

目标: 综合运用所学知识解决一个实际问题。


挑战:学生成绩管理系统

  1. 使用 struct 定义一个 Student 结构体,包含学号、姓名和三门课程的成绩。
  2. 在程序中创建一个 Student 类型的数组,用于存储多个学生的信息。
  3. 实现一个简单的菜单:
    • Add Student: 允许用户输入一个学生的信息并添加到数组中。
    • Display All Students: 遍历数组并打印所有学生的信息,同时计算并显示每个学生的平均分。
    • Exit: 退出程序。
  4. 将所有学生的信息(包括平均分)保存到一个名为 students.dat 的文件中。

答案提示

  • 练习 1: 声明变量时指定类型,如 int num = 42;,字符串使用 char str[] = "Hello";
  • 练习 3: 是除法, 是取模(求余数)。a++ 是先用后加,++a 是先加后用。
  • 练习 5: if-else 用于范围判断,switch 用于固定选项判断,别忘了 break;
  • 练习 6: for 循环次数确定,while 循环次数不确定,do-while 至少执行一次。
  • 练习 7: 函数声明:int isEven(int num);,函数定义:int isEven(int num) { return num % 2 == 0; }
  • 练习 12: int *ptr = &x;*ptr 解引用,ptr 是地址。
  • 练习 14: struct Student { ... };,声明变量:struct Student s1;
  • 挑战题: 使用 switch 语句实现菜单,文件操作使用 fopen, fprintf, fscanf, fclose,注意处理文件打开失败的情况。

祝你练习顺利!如果对某个练习有疑问,可以随时提问。

-- 展开阅读全文 --
头像
dede404页面模板如何自定义?
« 上一篇 02-28
dede小说文件夹名是1该怎么修改?
下一篇 » 02-28

相关文章

取消
微信二维码
支付宝二维码

目录[+]