Compare commits

...
340 Commits
Author SHA1 Message Date
smallkun c9dd5c8c83 Auto commit 2026-03-16 22:36:32 +08:00
smallkun e7aae27f87 Auto commit 2026-03-12 10:56:48 +08:00
smallkun c097a27e34 Auto commit 2025-05-08 17:47:28 +08:00
smallkun e6afc51134 Auto commit 2025-04-21 19:41:17 +08:00
smallkun db0782e5fc Auto commit 2025-04-06 18:37:03 +08:00
smallkun d7e3a5c9d9 Auto commit 2025-04-06 01:18:11 +08:00
smallkun 3d52dadba1 Auto commit 2025-04-06 01:17:50 +08:00
smallkun 3fbfc647b8 Auto commit 2025-04-06 01:15:20 +08:00
smallkun 2c43525475 Auto commit 2025-04-06 01:15:03 +08:00
smallkun 3f9704f1a4 Auto commit 2025-04-06 01:13:51 +08:00
smallkun f725ee8c97 Auto commit 2025-04-05 19:25:52 +08:00
smallkun 2c3e944e03 Auto commit 2025-04-05 19:14:42 +08:00
smallkun 1918e1e1e7 Auto commit 2025-04-05 18:10:11 +08:00
smallkun c96d28c005 Auto commit 2025-04-05 18:09:56 +08:00
smallkun 0ab49e8346 Auto commit 2025-04-03 11:55:09 +08:00
smallkun 1725b35ac9 Auto commit 2025-04-03 11:03:28 +08:00
smallkun 1a1a6c0409 Auto commit 2025-04-03 10:46:38 +08:00
smallkun 39672f95cb Auto commit 2025-04-03 10:23:32 +08:00
smallkun 712b37490c Auto commit 2025-04-03 10:19:55 +08:00
smallkun 449f17509e Auto commit 2025-04-02 19:51:05 +08:00
smallkun cd169b4904 Auto commit 2025-04-02 19:35:26 +08:00
smallkun d31fe4ec44 Auto commit 2025-04-02 19:34:45 +08:00
smallkun dc74003746 Auto commit 2025-04-02 00:23:03 +08:00
smallkun e8fd54dc02 Auto commit 2025-04-01 23:54:12 +08:00
smallkun c573ab7540 Auto commit 2025-04-01 20:11:46 +08:00
smallkun 53b34d917f Auto commit 2025-04-01 18:56:19 +08:00
smallkun 4079ff9b07 Auto commit 2025-04-01 17:02:00 +08:00
smallkun fc813427c5 Auto commit 2025-04-01 16:54:59 +08:00
smallkun 255a4afc97 Auto commit 2025-04-01 16:49:40 +08:00
smallkun dc8392a55c Auto commit 2025-04-01 16:39:57 +08:00
smallkun b5cc50f90d Auto commit 2025-04-01 16:38:21 +08:00
smallkun da63a1d634 Auto commit 2025-04-01 16:36:23 +08:00
smallkun fc66b14900 Auto commit 2025-04-01 16:27:10 +08:00
smallkun 49499ddb60 Auto commit 2025-04-01 16:23:28 +08:00
smallkun 0fca9c9a65 Auto commit 2025-04-01 16:16:54 +08:00
smallkun ad6ebb9fa2 Auto commit 2025-04-01 16:09:36 +08:00
smallkun e229bbbb5d Auto commit 2025-04-01 09:52:18 +08:00
smallkun dae819bf03 Auto commit 2025-03-31 20:03:24 +08:00
smallkun 984e4b5848 Auto commit 2025-03-31 19:37:23 +08:00
smallkun 2c6fa871fd Auto commit 2025-03-31 18:23:49 +08:00
smallkun 4afd009240 Auto commit 2025-03-31 18:13:34 +08:00
smallkun 7c1ff398ef Auto commit 2025-03-31 18:07:50 +08:00
smallkun b555d546f3 Auto commit 2025-03-31 13:06:12 +08:00
smallkun 7a89b6c6bd Auto commit 2025-03-30 22:00:18 +08:00
smallkun ca908905f0 Auto commit 2025-03-30 21:57:13 +08:00
smallkun e98ec49be5 Auto commit 2025-03-30 21:36:26 +08:00
smallkun 562f6156ce Auto commit 2025-03-30 19:25:28 +08:00
smallkun 12172b99ca Auto commit 2025-03-30 19:23:53 +08:00
smallkun 0f66c6b6d8 Auto commit 2025-03-30 14:20:49 +08:00
smallkun 631b95b9a1 Auto commit 2025-03-30 14:16:08 +08:00
smallkun dba08dadf4 Auto commit 2025-03-30 14:15:36 +08:00
smallkun ee5bf925ef Auto commit 2025-03-30 14:15:19 +08:00
smallkun 36a2f799e1 Auto commit 2025-03-30 14:13:39 +08:00
smallkun 9050c876b1 Auto commit 2025-03-30 14:11:55 +08:00
smallkun 1101eebe94 Auto commit 2025-03-28 10:38:36 +08:00
smallkun 3fd783abc5 Auto commit 2025-03-28 10:35:45 +08:00
smallkun 67e45ace21 Auto commit 2025-03-28 09:57:33 +08:00
smallkun 05299e024a Auto commit 2025-03-28 09:57:22 +08:00
smallkun c0663bc99c Auto commit 2025-03-28 09:12:20 +08:00
smallkun 4732388b07 Auto commit 2025-03-28 09:07:47 +08:00
smallkun 2a43e05b5f Auto commit 2025-03-28 08:36:03 +08:00
smallkun 5f169e30ac Auto commit 2025-03-28 08:32:24 +08:00
smallkun c4547a80fc Auto commit 2025-03-28 08:15:20 +08:00
smallkun d06b6fc13d Auto commit 2025-03-28 08:06:46 +08:00
smallkun 195f784173 Auto commit 2025-03-27 18:25:58 +08:00
smallkun abfd593f38 Auto commit 2025-03-27 16:05:58 +08:00
smallkun 542dd24e8d Merge branch 'main' of git.smallkun.cn:smallkun/class-notes 2025-03-27 08:00:02 +08:00
smallkun 9aa26a9fbe Auto commit 2025-03-27 07:54:53 +08:00
smallkun cc59f1a38b Auto commit 2025-03-26 09:18:31 +08:00
smallkun 947c7e78d2 Auto commit 2025-03-26 09:17:09 +08:00
smallkun 0ed3a59e2c Auto commit 2025-03-26 09:14:45 +08:00
smallkun 932fcc500c Auto commit 2025-03-26 09:07:14 +08:00
smallkun be5497370f Auto commit 2025-03-26 08:50:26 +08:00
smallkun ba7a5971be Auto commit 2025-03-26 08:47:15 +08:00
smallkun eaa1811ce7 Auto commit 2025-03-25 19:00:16 +08:00
smallkun 0699f7825b Auto commit 2025-03-25 09:44:29 +08:00
smallkun 537578994c Auto commit 2025-03-25 09:38:23 +08:00
smallkun 57e8628eec Auto commit 2025-03-25 08:35:44 +08:00
smallkun 6b086283b9 Auto commit 2025-03-25 08:31:24 +08:00
smallkun eb6a1ba10c Auto commit 2025-03-25 08:26:45 +08:00
smallkun 85aedd7dcf Auto commit 2025-03-24 20:07:56 +08:00
smallkun 4ebb1c8c83 Auto commit 2025-03-24 19:59:35 +08:00
smallkun 9a03816526 Auto commit 2025-03-24 19:51:23 +08:00
smallkun 1455f339be Auto commit 2025-03-24 19:46:42 +08:00
smallkun 21eab878bf Auto commit 2025-03-24 19:32:31 +08:00
smallkun 777fefdcef Auto commit 2025-03-24 18:55:09 +08:00
smallkun f9f35929ed Auto commit 2025-03-24 17:55:46 +08:00
smallkun 03e8200eb7 Auto commit 2025-03-24 07:50:54 +08:00
smallkun 7826824d2f Auto commit 2025-03-23 17:31:54 +08:00
smallkun 3f10d8ce73 Auto commit 2025-03-23 17:14:21 +08:00
smallkun ce7fcd525a Auto commit 2025-03-23 17:12:25 +08:00
smallkun b42341556b Auto commit 2025-03-23 17:09:40 +08:00
smallkun 04dfcd275e Auto commit 2025-03-23 00:58:09 +08:00
smallkun 8333736ef2 Auto commit 2025-03-22 22:31:45 +08:00
smallkun 2fd8dd0574 Auto commit 2025-03-22 22:30:16 +08:00
smallkun 1697d05c41 Auto commit 2025-03-22 22:29:36 +08:00
smallkun ef57fdc6da Auto commit 2025-03-22 20:08:03 +08:00
smallkun fb7ce8d575 Auto commit 2025-03-22 20:01:54 +08:00
smallkun 72d7281a50 Auto commit 2025-03-22 19:59:05 +08:00
smallkun 2e57bf8a24 Auto commit 2025-03-22 19:55:39 +08:00
smallkun 8da3011a4f Auto commit 2025-03-22 19:50:42 +08:00
smallkun f6f91c0fd4 Auto commit 2025-03-22 19:49:55 +08:00
smallkun 92bbbfb089 Auto commit 2025-03-22 19:15:32 +08:00
smallkun 281083bf85 Auto commit 2025-03-21 10:34:07 +08:00
smallkun 448f49d644 Auto commit 2025-03-21 09:38:42 +08:00
smallkun 727db1bb4a Auto commit 2025-03-21 09:35:23 +08:00
smallkun fbb09280fd Auto commit 2025-03-21 09:34:54 +08:00
smallkun b030ae136a Auto commit 2025-03-21 09:29:19 +08:00
smallkun a3837c3a77 Auto commit 2025-03-21 09:18:10 +08:00
smallkun ce0f22d5f5 Auto commit 2025-03-21 09:16:48 +08:00
smallkun 37fccb1898 Auto commit 2025-03-21 08:55:39 +08:00
smallkun 5072cd79b1 Auto commit 2025-03-21 08:51:50 +08:00
smallkun 2cafec9ae9 Auto commit 2025-03-21 08:48:40 +08:00
smallkun 983e28df10 Auto commit 2025-03-21 08:45:56 +08:00
smallkun 37f68f467b Auto commit 2025-03-21 08:25:06 +08:00
smallkun 68e4508eaf Auto commit 2025-03-20 20:00:14 +08:00
smallkun 6aa71ed621 Auto commit 2025-03-20 19:47:42 +08:00
smallkun 02788e2bb2 Auto commit 2025-03-20 19:41:17 +08:00
smallkun 95aa201cf4 Auto commit 2025-03-20 19:37:29 +08:00
smallkun 26b0159c32 Auto commit 2025-03-20 19:29:28 +08:00
smallkun 6733da3ec5 Auto commit 2025-03-20 19:11:16 +08:00
smallkun 1b42d49ba9 Auto commit 2025-03-20 18:57:01 +08:00
smallkun 4cf78065f1 Auto commit 2025-03-20 16:55:24 +08:00
smallkun da1fcd8e75 Auto commit 2025-03-20 16:54:53 +08:00
smallkun 8fa209f213 Auto commit 2025-03-20 16:47:57 +08:00
smallkun 5d16a365de Auto commit 2025-03-20 16:47:18 +08:00
smallkun 077f0330f5 Auto commit 2025-03-20 16:46:44 +08:00
smallkun 43b718db0c Auto commit 2025-03-20 16:45:59 +08:00
smallkun a192d96e71 Auto commit 2025-03-20 16:45:10 +08:00
smallkun 7e85346487 Auto commit 2025-03-20 16:42:33 +08:00
smallkun a19a2490e0 Auto commit 2025-03-20 16:36:24 +08:00
smallkun bf07420a5e Auto commit 2025-03-20 16:33:58 +08:00
smallkun d9e06991e9 Auto commit 2025-03-20 16:31:34 +08:00
smallkun 49853d7338 Auto commit 2025-03-20 14:54:00 +08:00
smallkun 2be46d87e0 Auto commit 2025-03-20 14:53:26 +08:00
smallkun 297f2784fb 2025-03-20 2025-03-20 11:23:46 +08:00
smallkun 2f7f806aab 2025-03-20 2025-03-20 11:21:09 +08:00
smallkun 72b6014ddf 2025-03-20 2025-03-20 11:01:11 +08:00
smallkun caa10b19b2 2025-03-20 2025-03-20 10:47:49 +08:00
smallkun cbf371e29d 2025-03-20 2025-03-20 10:45:11 +08:00
smallkun 5e39adead8 2025-03-20 2025-03-20 10:33:39 +08:00
smallkun 6b6d78b340 2025-03-20 2025-03-20 10:29:51 +08:00
smallkun 525c0edd1d Auto commit 2025-03-19 19:15:27 +08:00
smallkun 53224e1642 Auto commit 2025-03-19 08:00:31 +08:00
smallkun 72ad4426fe Auto commit 2025-03-19 07:59:01 +08:00
smallkun df4fea3437 Auto commit 2025-03-18 19:41:55 +08:00
smallkun 8b030d5a28 Auto commit 2025-03-18 19:12:14 +08:00
smallkun 721a9d8fb7 Auto commit 2025-03-18 18:51:27 +08:00
smallkun f93fce1ea6 Auto commit 2025-03-18 18:23:20 +08:00
smallkun 4b5e81f1b3 Auto commit 2025-03-18 17:19:54 +08:00
smallkun 55230c94e4 Auto commit 2025-03-18 09:48:39 +08:00
smallkun a580bebc74 Auto commit 2025-03-18 09:23:10 +08:00
smallkun 31af716c23 Auto commit 2025-03-18 09:18:30 +08:00
smallkun 09d0f90697 Auto commit 2025-03-18 08:52:39 +08:00
smallkun adb07f27c5 Auto commit 2025-03-18 08:37:39 +08:00
smallkun 152541650a Auto commit 2025-03-18 08:30:48 +08:00
smallkun 777ac955d0 Auto commit 2025-03-17 19:57:04 +08:00
smallkun d76940406d Auto commit 2025-03-17 19:47:22 +08:00
smallkun 86d4341146 Auto commit 2025-03-17 19:31:35 +08:00
smallkun d2970d183d Auto commit 2025-03-17 18:51:31 +08:00
smallkun cfdebb17f7 Auto commit 2025-03-17 18:50:51 +08:00
smallkun 1843d42e7e Auto commit 2025-03-16 01:26:23 +08:00
smallkun fd10dcce9e Auto commit 2025-03-16 01:19:31 +08:00
smallkun fb31fcc8c7 Auto commit 2025-03-15 23:14:59 +08:00
smallkun 4e10137543 Auto commit 2025-03-15 23:03:03 +08:00
smallkun 5f5abd6f79 Auto commit 2025-03-15 22:10:41 +08:00
smallkun 8a715c2f80 Auto commit 2025-03-15 22:07:07 +08:00
smallkun 08685dda81 Auto commit 2025-03-14 22:28:06 +08:00
smallkun bf3450efd7 Auto commit 2025-03-14 21:46:52 +08:00
smallkun ade0d7fa4b Auto commit 2025-03-14 21:36:55 +08:00
smallkun 6f7f7f2892 Auto commit 2025-03-14 21:36:07 +08:00
smallkun 3fc5a99e37 Auto commit 2025-03-14 12:14:58 +08:00
smallkun f10b80e114 Auto commit 2025-03-14 11:18:41 +08:00
smallkun baf429e8a2 Auto commit 2025-03-14 09:56:37 +08:00
smallkun 1ba7f30de6 Auto commit 2025-03-14 09:36:27 +08:00
smallkun 88350396ba Auto commit 2025-03-14 09:32:00 +08:00
smallkun 4958a07e62 Auto commit 2025-03-14 09:06:09 +08:00
smallkun c2fd89cd97 Auto commit 2025-03-14 08:53:36 +08:00
smallkun d7bb147d7f Auto commit 2025-03-14 08:46:52 +08:00
smallkun f2edb6f1f4 Auto commit 2025-03-14 08:18:40 +08:00
smallkun 2ae0682fa6 Auto commit 2025-03-14 08:15:19 +08:00
smallkun ae9579fe10 Auto commit 2025-03-14 07:59:56 +08:00
smallkun 4df646d4cf Auto commit 2025-03-14 07:55:53 +08:00
smallkun cd6b19e43c Auto commit 2025-03-13 16:46:35 +08:00
smallkun d198c8044c Auto commit 2025-03-11 08:27:21 +08:00
smallkun ffbffcdfc8 Auto commit 2025-03-10 20:07:09 +08:00
smallkun 4549e5412c Auto commit 2025-03-10 19:57:37 +08:00
smallkun 7b67a5fe21 Auto commit 2025-03-10 19:10:36 +08:00
smallkun 634e5a21fb Auto commit 2025-03-10 19:07:30 +08:00
smallkun 64c22c4d2f Auto commit 2025-03-10 18:59:05 +08:00
smallkun bfcf16acfa Auto commit 2025-03-10 18:53:27 +08:00
smallkun 246399c0c7 Auto commit 2025-03-09 21:31:44 +08:00
smallkun 116db0da21 Auto commit 2025-03-07 11:34:49 +08:00
smallkun 232d23ceca Auto commit 2025-03-07 10:07:40 +08:00
smallkun 70d5054036 Auto commit 2025-03-07 10:01:02 +08:00
smallkun 8c0d6360a2 Auto commit 2025-03-07 09:53:57 +08:00
smallkun fe970ef1a1 Auto commit 2025-03-07 09:31:53 +08:00
smallkun 13abb8ed50 Auto commit 2025-03-07 00:00:47 +08:00
smallkun eaaf651831 Auto commit 2025-03-06 23:55:54 +08:00
smallkun 3dae5b6d37 2025-03-06 2025-03-06 23:49:18 +08:00
smallkun 533f6eabc4 Auto commit 2025-03-06 23:47:59 +08:00
smallkun d12a28496d Auto commit 2025-03-06 22:46:33 +08:00
smallkun 4e21fb0e95 Auto commit 2025-03-06 22:45:36 +08:00
smallkun a86c4778f8 Auto commit 2025-03-06 22:45:14 +08:00
smallkun 5deb7de5b9 Auto commit 2025-03-06 21:56:21 +08:00
smallkun fd1b4626a6 Auto commit 2025-03-06 21:44:05 +08:00
smallkun b7c041bb94 2025-03-06 2025-03-06 20:00:31 +08:00
smallkun bbedce7b34 2025-03-06 2025-03-06 19:58:58 +08:00
smallkun 5f28bf3ec9 Auto commit 2025-03-06 19:56:07 +08:00
smallkun 5626077db1 Auto commit 2025-03-06 17:37:07 +08:00
smallkun 1f7190eff5 2025-03-06 2025-03-06 12:48:09 +08:00
smallkun 9229598107 Auto commit 2025-03-06 12:46:40 +08:00
smallkun 43a25c48b0 Auto commit 2025-03-05 09:11:17 +08:00
smallkun 29925804ff Auto commit 2025-03-05 09:07:22 +08:00
smallkun 783148afe6 Auto commit 2025-03-05 08:54:50 +08:00
smallkun 3a32020d4e Auto commit 2025-03-05 08:49:26 +08:00
smallkun c82388d6b2 Auto commit 2025-03-05 08:44:20 +08:00
smallkun 506ac8cc25 Auto commit 2025-03-04 23:18:10 +08:00
smallkun b535bc9dae Auto commit 2025-03-04 22:51:38 +08:00
smallkun 02627c7840 2025-03-04 2025-03-04 22:34:39 +08:00
smallkun ecef67c3a5 2025-03-04 2025-03-04 22:33:39 +08:00
smallkun 2491d0e09c Auto commit 2025-03-04 22:18:35 +08:00
smallkun 01227d38ab Auto commit 2025-03-04 22:16:00 +08:00
smallkun ec68bc0763 Auto commit 2025-03-04 20:10:05 +08:00
smallkun b6af2f583e Auto commit 2025-03-04 09:21:43 +08:00
smallkun 29d62ac5fe Auto commit 2025-03-04 08:56:57 +08:00
smallkun 1360a5ff09 Auto commit 2025-03-04 08:06:23 +08:00
smallkun a4ab6c3031 Auto commit 2025-03-04 08:00:29 +08:00
smallkun c05eef2b12 Auto commit 2025-02-28 11:46:50 +08:00
smallkun de4844ecad Auto commit 2025-02-28 11:29:41 +08:00
smallkun 7fb72c827d Auto commit 2025-02-28 10:49:20 +08:00
smallkun 1a337cdb21 Auto commit 2025-02-28 10:29:56 +08:00
smallkun 77130d67f9 Auto commit 2025-02-28 09:57:16 +08:00
smallkun b66b096327 Auto commit 2025-02-28 09:53:19 +08:00
smallkun 23fb17e13c Auto commit 2025-02-28 09:26:27 +08:00
smallkun 5b4d574902 Auto commit 2025-02-28 09:25:33 +08:00
smallkun dcf8569b07 Auto commit 2025-02-28 09:15:39 +08:00
smallkun 0b308fc718 Auto commit 2025-02-28 08:52:59 +08:00
smallkun a3a4f6edea Auto commit 2025-02-28 08:51:47 +08:00
smallkun 6c863dd1ce Merge branch 'main' of git.smallkun.cn:smallkun/class-notes 2025-02-28 08:41:57 +08:00
smallkun ff53142ba1 Auto commit 2025-02-28 08:41:06 +08:00
smallkun bc252f8f6c Auto commit 2025-02-27 23:36:28 +08:00
smallkun 5854a8189c Auto commit 2025-02-27 23:15:51 +08:00
smallkun ae9af0c5da Auto commit 2025-02-27 20:06:15 +08:00
smallkun 3a41de0e49 Auto commit 2025-02-27 19:38:17 +08:00
smallkun ee576351d9 Auto commit 2025-02-27 19:27:28 +08:00
smallkun 25cbe06f6c Auto commit 2025-02-27 19:27:03 +08:00
smallkun 22b99cb301 Auto commit 2025-02-27 19:24:55 +08:00
smallkun 71ea2b0d21 Auto commit 2025-02-27 18:44:58 +08:00
smallkun 5859485f29 update 2025-02-27 18:35:25 +08:00
smallkun 621b846797 Auto commit 2025-02-27 17:41:29 +08:00
smallkun 522e2388ca Auto commit 2025-02-27 17:40:50 +08:00
smallkun 53aacb1dee Auto commit 2025-02-27 17:28:52 +08:00
smallkun 9219d6cc3c Auto commit 2025-02-27 17:25:03 +08:00
smallkun 813d3b3be4 Auto commit 2025-02-27 17:21:28 +08:00
smallkun fe55e3aad9 Auto commit 2025-02-27 17:06:08 +08:00
smallkun 04dd9290d0 Auto commit 2025-02-27 16:15:38 +08:00
smallkun a98fd5bb17 Auto commit 2025-02-27 11:50:52 +08:00
smallkun cbfc0a1669 Auto commit 2025-02-27 10:56:55 +08:00
smallkun 669136154c Auto commit 2025-02-27 10:34:54 +08:00
smallkun d59764c856 Auto commit 2025-02-27 10:17:04 +08:00
smallkun a2e6ffbfde Auto commit 2025-02-26 09:17:16 +08:00
smallkun dceb62f983 Auto commit 2025-02-26 08:31:43 +08:00
smallkun 854e7b4f1b Auto commit 2025-02-25 19:58:01 +08:00
smallkun 5627a1c82e Auto commit 2025-02-25 18:43:00 +08:00
smallkun d44aeed220 Auto commit 2025-02-25 09:51:43 +08:00
smallkun 10a4acf101 Auto commit 2025-02-25 09:29:35 +08:00
smallkun 02b5667ffc Auto commit 2025-02-25 09:12:11 +08:00
smallkun c57e611d42 Auto commit 2025-02-25 08:58:39 +08:00
smallkun 0c901eeaaa Auto commit 2025-02-25 08:30:32 +08:00
smallkun 5e7ef30e2c Auto commit 2025-02-25 08:29:45 +08:00
smallkun 0fe5855aea Auto commit 2025-02-24 22:33:16 +08:00
smallkun 5d520d977f Auto commit 2025-02-24 20:06:13 +08:00
smallkun 049a9c4108 Auto commit 2025-02-24 19:34:56 +08:00
smallkun 7fd11e7618 Auto commit 2025-02-22 12:53:27 +08:00
smallkun e1993df158 Auto commit 2025-02-21 20:11:37 +08:00
smallkun c7ec5eb71f 2025-02-21 2025-02-21 20:05:39 +08:00
smallkun a546c2f47c Auto commit 2025-02-21 11:47:48 +08:00
smallkun d494b911e0 Auto commit 2025-02-21 11:42:10 +08:00
smallkun e65236340b Auto commit 2025-02-21 11:35:03 +08:00
smallkun 124501634a Auto commit 2025-02-21 11:26:27 +08:00
smallkun 470ff460d9 Auto commit 2025-02-21 11:22:06 +08:00
smallkun 017d98f41f Auto commit 2025-02-21 10:38:51 +08:00
smallkun 2b23eadf39 Auto commit 2025-02-21 09:51:15 +08:00
smallkun 88a9ab7957 Auto commit 2025-02-21 09:42:11 +08:00
smallkun aac550fd91 Auto commit 2025-02-21 09:40:36 +08:00
smallkun 6a22303f9a Auto commit 2025-02-21 09:14:54 +08:00
smallkun 4e52aad31a Auto commit 2025-02-21 08:31:41 +08:00
smallkun e3beb59bcf Auto commit 2025-02-21 08:21:06 +08:00
smallkun dfcc6d7c50 Auto commit 2025-02-20 23:51:04 +08:00
smallkun 9728c58e6b Auto commit 2025-02-20 23:44:25 +08:00
smallkun f25d1ac3e0 Auto commit 2025-02-20 23:18:47 +08:00
smallkun 26cfc26beb Auto commit 2025-02-20 22:55:22 +08:00
smallkun 6daef8f2f6 Auto commit 2025-02-20 22:40:17 +08:00
smallkun a4e5ecdb04 Auto commit 2025-02-20 22:39:23 +08:00
smallkun 67b1d802c2 Auto commit 2025-02-20 22:22:20 +08:00
smallkun 3004a37525 Auto commit 2025-02-20 22:16:42 +08:00
smallkun 5c7f46be42 Auto commit 2025-02-20 22:15:05 +08:00
smallkun a800cf8ba5 Auto commit 2025-02-20 22:02:41 +08:00
smallkun cec338f3d2 Auto commit 2025-02-20 22:01:36 +08:00
smallkun 66572f8aa0 Auto commit 2025-02-20 20:09:29 +08:00
smallkun f63c5070c4 Auto commit 2025-02-20 19:51:58 +08:00
smallkun 67bbdeca62 Auto commit 2025-02-20 19:51:06 +08:00
smallkun d099950411 Auto commit 2025-02-20 19:43:38 +08:00
smallkun 9110054b2c Auto commit 2025-02-20 19:29:03 +08:00
smallkun d7b3392f59 Auto commit 2025-02-20 19:07:15 +08:00
smallkun 130450f639 Auto commit 2025-02-20 17:27:20 +08:00
smallkun ed95e210ff Auto commit 2025-02-20 16:58:46 +08:00
smallkun 7396f8a08a Auto commit 2025-02-20 16:40:48 +08:00
smallkun 18e2b8d571 Auto commit 2025-02-20 16:19:15 +08:00
smallkun 22fa03752e Auto commit 2025-02-20 15:50:49 +08:00
smallkun 0b77d04975 Auto commit 2025-02-19 09:50:24 +08:00
smallkun 59d1eeaabd Auto commit 2025-02-19 09:36:09 +08:00
smallkun 48bad49c40 2025-02-18 2025-02-18 13:55:01 +08:00
smallkun 067c331f93 2025-02-18 2025-02-18 11:05:55 +08:00
smallkun 48da8b8d59 更新 '2207/习题答案/2-18.md' 2025-02-18 09:49:43 +08:00
smallkun 167c79c70f 更新 '2207/习题答案/2-18.md' 2025-02-18 09:22:17 +08:00
smallkun 119f3966ff 添加 '2207/习题答案/2-18' 2025-02-18 09:22:01 +08:00
smallkun 9e6e566bc8 更新 '2207/C语言精通120题.md' 2025-02-17 20:04:55 +08:00
smallkun 33a49723d1 更新 '2207/C语言精通120题.md' 2025-02-17 20:01:46 +08:00
smallkun 87ba48dce5 更新 '2207/C语言精通120题.md' 2025-02-17 19:57:02 +08:00
smallkun 64f74b12fb 更新 '2207/C语言精通120题.md' 2025-02-17 19:52:50 +08:00
smallkun 2695e388c8 更新 '2207/C语言精通120题.md' 2025-02-17 19:44:55 +08:00
smallkun 5feafc6471 更新 '2207/C语言精通120题.md' 2025-02-17 19:33:33 +08:00
smallkun 073e71187b 更新 '2207/C语言精通120题.md' 2025-02-17 19:19:14 +08:00
smallkun 6e3df84904 更新 '2207/C语言练习题合集.md' 2025-02-17 19:05:49 +08:00
smallkun b53eef5971 2025-02-17 2025-02-17 17:21:08 +08:00
smallkun 08baf3be91 2025-02-17 2025-02-17 16:46:57 +08:00
smallkun ca89d61d67 2025-02-17 2025-02-17 16:39:29 +08:00
smallkun e22cf4129e 2025-02-17 2025-02-17 09:45:26 +08:00
smallkun 0fd57ac979 2025-02-17 2025-02-17 09:38:23 +08:00
smallkun 00239a8273 2025-02-17 2025-02-17 09:24:10 +08:00
smallkun 28b7a8221c 2025-02-16 2025-02-16 00:19:24 +08:00
smallkun 4818e60562 Auto commit 2025-02-16 00:15:35 +08:00
smallkun 565f33dc52 2025-02-16 2025-02-16 00:01:07 +08:00
smallkun ff64e126fc Auto commit 2025-02-15 02:38:52 +08:00
smallkun 544dfff138 2025-02-15 2025-02-15 02:29:29 +08:00
smallkun e3f5362eb9 2025-02-15 2025-02-15 02:29:18 +08:00
smallkun 9ecc263987 Auto commit 2025-02-15 02:13:45 +08:00
smallkun ebb71861e3 2025-02-15 2025-02-15 01:58:06 +08:00
283 changed files with 69414 additions and 3724 deletions
+1
View File
@@ -3,3 +3,4 @@
!*/ !*/
!.gitignore !.gitignore
.vscode .vscode
*.exe
Binary file not shown.
-24
View File
@@ -1,24 +0,0 @@
#include <stdio.h>
/*
定义结构体类型
*/
typedef struct Node{
int data;
struct Node * pNext;
}Node, *pNode;
int main(){
Node node;
pNode p;
p = &node;
node.data = 10;
node.pNext = NULL;
printf("%d\n", p->data);
return 0;
}
@@ -1,254 +0,0 @@
#include <stdio.h>
// 交换两个整数的值
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 冒泡排序
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
swap(&arr[j], &arr[j+1]);
}
}
}
}
// 选择排序
void selectionSort(int arr[], int n) {
int i, j, min_idx;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
swap(&arr[min_idx], &arr[i]);
}
}
// 插入排序
void insertionSort(int arr[], int n) {
int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i-1;
while (j >= 0 && arr[j] > key) {
arr[j+1] = arr[j];
j = j-1;
}
arr[j+1] = key;
}
}
// 归并排序
void merge(int arr[], int l, int m, int r) {
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
int L[n1], R[n2];
for (i = 0; i < n1; i++) {
L[i] = arr[l + i];
}
for (j = 0; j < n2; j++) {
R[j] = arr[m + 1 + j];
}
i = 0;
j = 0;
k = l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = L[i];
i++;
k++;
}
while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
}
void mergeSort(int arr[], int l, int r) {
if (l < r) {
int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
merge(arr, l, m, r);
}
}
// 快速排序
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// 希尔排序
void shellSort(int arr[], int n) {
for (int gap = n/2; gap > 0; gap /= 2) {
for (int i = gap; i < n; i++) {
int temp = arr[i];
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
}
}
}
// 计数排序
void countSort(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
int count[max+1];
for (int i = 0; i <= max; i++) {
count[i] = 0;
}
for (int i = 0; i < n; i++) {
count[arr[i]]++;
}
int index = 0;
for (int i = 0; i <= max; i++) {
while (count[i] > 0) {
arr[index++] = i;
count[i]--;
}
}
}
// 基数排序
void countingSortForRadix(int arr[], int n, int exp) {
int output[n];
int count[10] = {0};
for (int i = 0; i < n; i++) {
count[(arr[i] / exp) % 10]++;
}
for (int i = 1; i < 10; i++) {
count[i] += count[i - 1];
}
for (int i = n - 1; i >= 0; i--) {
output[count[(arr[i] / exp) % 10] - 1] = arr[i];
count[(arr[i] / exp) % 10]--;
}
for (int i = 0; i < n; i++) {
arr[i] = output[i];
}
}
void radixSort(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
for (int exp = 1; max / exp > 0; exp *= 10) {
countingSortForRadix(arr, n, exp);
}
}
// 堆排序
void heapify(int arr[], int n, int i) {
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if (left < n && arr[left] > arr[largest]) {
largest = left;
}
if (right < n && arr[right] > arr[largest]) {
largest = right;
}
if (largest != i) {
swap(&arr[i], &arr[largest]);
heapify(arr, n, largest);
}
}
void heapSort(int arr[], int n) {
for (int i = n / 2 - 1; i >= 0; i--) {
heapify(arr, n, i);
}
for (int i = n - 1; i >= 0; i--) {
swap(&arr[0], &arr[i]);
heapify(arr, i, 0);
}
}
// 打印数组
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// 测试排序函数
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
printf("Original array: \n");
printArray(arr, n);
bubbleSort(arr, n);
printf("Sorted array using Bubble Sort: \n");
printArray(arr, n);
// 你可以在这里测试其他排序函数
return 0;
}
@@ -1,879 +0,0 @@
## 一、顺序结构
1. 将华氏温度转换为摄氏温度和绝对温度的公式分别为:
c= (f-32) (摄氏温度)
k=273.16+c (绝对温度)
请编程序:当给出f 时,求其相应摄氏温度和绝对温度。
测试数据:① f=34
② f=100
2. 写一个程序把极坐标(r,θ) (θ之单位为度)转换为直角坐标( X,Y)。转换公式是:
x=r.cosθ
y=r.sinθ
测试数据:① r=10 θ=45°
② r=20 θ=90°
3. 写一个程序,按如下格式输出数据。
name number math english computer
zhanghua 9901 80.50 87.0 80
lina 9902 70.00 80.0 90
wanggang 9903 87.00 76.0 78
4. 输入3 个双精度实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输
出所求出各个值。
5. 输入一个3 位整数,求出该数每个位上的数字之和。如123,每个位上的数字和就是
1+2+3=6。
## 二、分支结构
1. 输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其
对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是
上述情况,输出“other”。
2. 有三个数a、b、c,由键盘输入,输出其中最大的数。
3. 输入一个数,判断它能否被 3 或者被 5 整除, 如至少能被这两个数中的一个整除则将
此数打印出来,否则不打印,编出程序。
4. 读入1 到7 之间的某个数,输出表示一星期中相应的某一天的单词:Monday、 Tuesday
等等,用switch 语句做。
5. 给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’,90 分以上为
A,8089 分为‘B,7079 分为‘C’,60~69 分为‘D’,60 分以下为‘E’。
6. 有一函数,请编程序计算y 的值(x 的值由键盘输入)。
<img src="https://yp.smallkun.cn/markdown/image-20241130003549906.png!compress" alt="image-20241130003549906" style="zoom:50%;" />
## 三、循环结构
1 计算n 的阶乘
2. 求 1 到 100 之间的奇数之和、偶数之积。
3. 输入一行字符,统计其中的英文字母、数字、空格和其他字符个数。
4. 用循环语句编写求下列表达式值的程序。
<img src="https://yp.smallkun.cn/markdown/image-20241130003536421.png!compress" alt="image-20241130003536421" style="zoom:50%;" />
5.求1!+2!+3!+...+20!
6.求下列分数序列的前20项之和。
<img src="https://yp.smallkun.cn/markdown/image-20241130003647576.png!compress" alt="image-20241130003647576" style="zoom:50%;" />
7. 任意十个数,打印出它们中的最大数、最小数。
测试数据:① 1,-12,20,30,-5,-23,33,125,200,-100
② 0,10,3,1,5,6,-10,90,9,-4
③ 12,13,14,15,10,-10,-11,-12,-9,9
8 判断一个数是否是素数
9 打印1-100 之间所有素数
10. 求1-100 之间所有非素数的和
11. 输入两个正整数 m 和 n,求其最大公约数和最小公倍数
提示:
求 m,n的最大公约数:首先将 m除以 n(m>n)得余数 R,再用余数 R 去除原来的除数,得新的余数,重复此过程直到余数为 0 时停止,此时的除数就是m 和 n的最大公约数。
求 m和 n的最小公倍数: m和 n的积除以 m和 n 的最大公约数。
测试数据: m12 n24
m100 n300
12. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方
和等于该数本身。例如 153 是一个水仙花数,因为 1531\*1\*1+5\*5\*5+3\*3\*3(要求分别用一重循环和三重循环实现)。
13. 一个数恰好等于它的平方数的右端,这个数称为同构数。如 5 的平方是25, 5 是25 中的右端的数, 5 就是同构数。找出1~1000 之间的全部同构数。
14. 3025 这个数具有一种独特的性质:将它平分为两段,即30 和25,使之相加后求平方,即(30+25),恰好等于3025 本身。请求出具有这样性质的全部四位数。
15. 两位数13 和62 具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变,即13*62=31*26。 编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如11、22,重复出现的不在此列,如 13*62 与62*13)。
16. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6 的因子为1、2、3,而6=1+2+3,因此6 是“完数”。编程序找出1000 之内的所有完数,并按下面格式输出其因子:
6 its factors are 1,2,3
17. 有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4 倍,请找出一个这样的四位数。
18. 给出一个不多于4 位的正整数,要求:① 求出它是几位数 ② 分别打印出每一位数字 ③ 按逆序打印出各位数字。
19. 在一个程序中计算出给定误差小于0.1,0.01,0.001,0.0001,0.00001 时,下式的值:
![image-20241130004016370](https://yp.smallkun.cn/markdown/image-20241130004016370.png!compress)
提示:本题中误差指前 n+1项之积与前 n项积之差。
20. 用泰勒展开式求sinx 的近似值
![image-20241130004040849](https://yp.smallkun.cn/markdown/image-20241130004040849.png!compress)
测试数据:① x0.3 n8
② x0.5 n20
21. 验证歌德巴赫猜想。一个充分大的偶数(大于或等于6)可以分解为两个素数之和。试编程序,将 6 至50 之间全部偶数表示为两个素数之和。
22. 用牛顿迭代法求方程在 1.5 附近的根(精度为<img src="https://yp.smallkun.cn/markdown/image-20241130004125210.png!compress" alt="image-20241130004125210" style="zoom: 40%;" />)。
![image-20241130004157841](https://yp.smallkun.cn/markdown/image-20241130004157841.png!compress)
23. 两个乒乓球队进行比赛,各出三人,甲队为A、B、C 三人,乙队为X、Y 、Z 三人,已知抽签决定比赛名单。有人向队员打听比赛的名单, A 说他不和 X 比,C 说他不和X、Z 比,请编程序找出三对赛手的名单。
## 四、数组
1. 有一个正整数数组,包含N 个元素,要求编程求出其中的素数之和以及所有素数的平均值。
2. 有一个数组,内放10 个整数。要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。
3. 有 N 个数已按由小到大的顺序排好,要求输入一个数, 把它插入到原有序列中,而且仍然保持有序。
4. 输入N 个数到数组中,输出所有大于N 个数平均值的数。
5. 输入N 个数到数组中,选出其中最大的数和最小的数,并分别将它们与最前面和最后面的数互换。
6. 用选择法对10 个整数由大到小排序。
7. 用筛选法求 2 到 100 之间的素数。方法如下:首先 2 是素数,凡 2 的倍数都不是素数,于是把这些数从数表中筛去, 2 以后没有被筛去的第一个数是 3, 然后把 3的倍数都从数表中筛去, 3 以后没被筛去的第一个数是 5,然后把 5 的倍数都从数表中筛去。如此下去,直到遇到某数 K(≤ N),其后没有数可筛选为止, 这时保留下的未被筛去的数就是 2 到 N 的素数。
8. 求一个 3×3 矩阵两条对角线上元素之和(每个元素只加一次)。
9 打印如下形式的杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输出前10行,从 0行开始,分别用一维数组和二维数组实现。
10.有一个二维数组整型数组中,每一行都有一个最大值,编程求出这些最大值以及它们的和。
11.把一个二维实型数组a 按照第0 列的元素进行排序(由小到大排序,用起泡法)。例如:如果a[i][0]大于a[i+1][0],则i 行与i+1 行中所有元素都要进行对换。
12.编程序将一个字符串的前 N 个子字符送到一个字符型数组中去, 然后再加上一个'\0'(不允许使用strcpy(str1,str2,n)函数)。
13.将字符数组 A 中下标为双号(0,2,4,6,8...) 的元素值传给另一个字符数组 B,然后将 B 数组的元素按逆序输出。
14.有一行字符,统计其中的单词个数(单词之间以空格分隔),并将每一个单词的第一个字母改为大写。
15.有 N 个国家名,要求按字母先后顺序排列(用起泡排序法)后输出。
16.有17 个人围成一圈(编号为0~16),从第 0 号的人开始从 1 报数, 凡报到 3 的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止。 问此人原来的位置是多少号?
17.编程产生如下形式的方阵。
1 2 2 2 2 2 1
3 1 2 2 2 1 4
3 3 1 2 1 4 4
3 3 3 1 4 4 4
3 3 1 5 1 4 4
3 1 5 5 5 1 4
1 5 5 5 5 5 1
要求:不允许使用键盘输入语句和静态赋值语句,尽量少用循环。
18.打印所有不超过 n( n<256)的其平方具有对称性的数(也称回文数)。
19.求N 个数中的最大值,最大值出现的次数,然后求出次大值(次大值一定存在)。
20.找出 M×N 数组中所有不相邻元素,并求出它们的和(相邻的数:前一个是偶数,后一个是素数)。
21.已知 100 个自然数 1~100,我们取 1, 2, 3, 4 时, 我们可将其排成一圈使每两个数之和都是素数,即→1→2→3→4→,问 1~100 内连续取 n 个数,即 1~ n(≤ 100)能满足上述要求的最大的 n 是多少?
22.打印魔方阵。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
例如:三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求打印由 1到N\* N的自然数构成的魔方阵。
提示:魔方阵中各数的排列规律如下:
⑴ 将“1”放在第一行中间一列;
⑵ 从“2”开始直到n×n为止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1;
⑶ 如果上一个数的行数为1,则下一个数的行数为 n(指最下一行);
⑷ 当一个数的列数为 n,下一个数的列数应为1,行数减1;
⑸ 如果按上面规则确定的位置已有数,或上一个数是第 1行第 n列时, 则把下一个数放在上一个数的下面。
23.统计一个单位职工的年龄,要求把相同年龄最多的那个年龄找出来(可能有几个这样的年龄),并统计出现的次数。
24.n×n 的拉丁方阵的每行、每列均为自然数的一个全排列, 每行(列)上均无重复数。
如 n=5 时, 5×5 的一种拉丁方阵可以为:
1 5 2 4 3
2 3 4 5 1
4 1 5 3 2
5 2 3 1 4
3 4 1 2 5
该数组的第一行 1,5,2,4,3 用程序自动生成,但产生的第一行不一定非得是 1,5,2,4,3,第一行填写完毕后,即以第一行作为全方阵索引, 即若第一行中的第 i 列的元素值为 j ,则 j在各行中的列号即为从第一行中元素值为 i的那一列开始读出的 n个自然数(到行末则从行头接着读),例如第一行第2列的元素值为5, 则从元素值为2的那一列(第3列)开始读出2,4,3,1,5,这就是元素5在各行中的列标号。
测试数据:① n5 ② n8
## 五、函数
1.编写一函数判断某数是否素数。
2.编写一函数求三个整数的最大值。
3.打印出3 到1100 之间的全部素数(判素数由函数实现)。
4.写一函数,使给定的一个二维数组(3×3)转置,即行列互换。
5.写一函数,将两个字符串连接,即编写一strcat 函数。
6.写一函数,求一字符串长度,即编写一strlen 函数。
7.写一函数将字符数组s1 中的全部字符复制到字符数组s2 中,不用strcpy 函数。
8.写一函数判断某数是否“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方和等于该数本身。
9.在主函数内任意输入一个5×6 矩阵,编写一函数求出每一行的和放到一个一维数组中,输出此矩阵及其每一行的和。
10.写一主函数输入一数组,写一子函数实现对该数组的冒泡排序并输出。
11.任意输入20 个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一
个数是否为素数用函数实现;排序用函数实现。
12.编写计算m 的n 次方的递归函数。
13.编一个程序,读入具有5 个元素的整型数组,然后调用一个函数,递归计算这些元素的积。
14.编一个程序,读入具有5 个元素的实型数组,然后调用一个函数,递归地找出其中的最大元素,并指出它位置。
## 六、指针
1、 输入三个整数,按由小到大的顺序输出。
```c
#include <stdio.h>
//定义一个函数 传入两个整型指针 交换 两个指针所指向的值
void swap(int *x, int *y){
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main(void){
int a, b, c;
printf("请输入三个数字(以空格间隔):");
scanf("%d %d %d", &a, &b, &c);
//由小到大 升序
if(a > b){//b为 a、b两个变量中 最大值
swap(&a, &b);
}
if(b > c){//c 为 a、b、c中最大值
swap(&b, &c);
}
if(a > b){//b为 a、b两个变量中 最大值
swap(&a, &b);
}
printf("%d %d %d\n", a, b, c);
return 0;
}
```
2、 输入10 个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10 个数;②进行处理;③输出10 个数。
```c
#include <stdio.h>
void swap(int *x, int *y){
int temp;
temp = *x;
*x = *y;
*y = temp;
}
//输入数组元素
void input(int *arr, int n){
int i;
for(i=0;i<n;i++){
scanf("%d", arr+i);
}
}
//处理数组元素 最大值和最后一个元素交换,最小值和最前一个元素交换
void process(int *arr, int n){
int *max, *min;//max 最大值的地址 min最小值的地址
int i;
max = min = arr;
//通过遍历数组的所有元素 求出最大值和最小值的地址
for(i = 1;i < n;i++){
if(*(arr+i) > *max){
max = arr+i;
}
if(*(arr+i) < *min){
min = arr+i;
}
}
//如果最大值的地址为数组的首地址 则最小值和首地址交换后 最大值地址为最小值地址
if(max == arr){
max = min;
}
swap(min, arr);//最小值和数组首元素交换
swap(max, arr+9);//最大值和数组最后一个元素交换
}
//输出数组元素
void output(int *arr, int n){
int i;
for(i=0;i<n;i++){
printf("%d ", *(arr+i));
}
printf("\n");
}
int main(void){
int num[10];
input(num, 10);
process(num, 10);
output(num, 10);
return 0;
}
```
3、 有n 个整数,使前面各数顺序向后移m 个位置,最后m 个数变成最前面m 个数,写一函数实现以上功能,在主函数中输入n 个整数和输出调整后的n 个数。
```c
#include <stdio.h>
#include <stdlib.h>
void move(int *arr, int n){
int i, temp;
temp = *(arr+n-1);
//1 2 3 4 5
// 1 2 3 4
for(i=n-1;i>0;i--){
arr[i] = arr[i-1];
}
arr[0] = temp;
}
void output(int *arr, int n){
int i;
for(i=0;i<n;i++){
printf("%d ", *(arr+i));
}
printf("\n");
}
int main(void){
int n, i, m;
int *num;
printf("请输入您需要输入的元素个数:");
scanf("%d", &n);
/*
1 2 3 4 5 n=5 m = 2
4 5 1 2 3
*/
num = (int *)malloc(sizeof(int)*n);//动态内存分配数组容量
printf("请输入%d个数字:", n);
for(i=0;i<n;i++){
scanf("%d", num+i);//遍历输入数组每一个元素
}
printf("移动前:");
output(num, n);
printf("请输入您需要移动的个数:");
scanf("%d", &m);
for(i = 0;i < m;i++){
move(num, n);
}
printf("移动后:");
output(num, n);
return 0;
}
```
4、 写一函数,求一个字符串的长度。在main 函数中输入字符串,并输出其长度。
```c
#include <stdio.h>
int getStrLen(char *str){
int n=0;
while(*str != '\0'){
str++;
n++;
}
return n;
}
int main(void){
char str[100];
gets(str);
printf("len=%d\n", getStrLen(str));
return 0;
}
```
5、 写一函数,将一个3×3 的矩阵转置。
```c
#include <stdio.h>
void revse(int (*num)[3]){
int *start, *end;
int temp;
start = *num;//第一个数组的首个元素地址
end = *(num+2)+2;//第三个数组的最后一个元素地址
while(start < end){
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main(void){
int num[3][3];
int i, j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d", *(num+i)+j);
}
}
printf("\n");
revse(num);
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ", *(*(num+i)+j));
}
printf("\n");
}
return 0;
}
```
6、 在主函数中输入10 个等长的字符串。用另一函数对它们排序。然后在主函数输出这10 个已排好序的字符串。
```c
#include <stdio.h>
#include <string.h>
/*
strcmp(字符串1, 字符串2); 比较两个字符串的大小 大于返回1 小于返回-1 等于返回0
strcpy(字符串1, 字符串2); 复制两个字符串 字符串2->字符串1
*/
void sort(char (*strs)[100]){
int i, j;
char temp[100];
for(i=0;i<10-1;i++){
for(j=0;j<10-i-1;j++){
if(strcmp(strs[j],strs[j+1]) > 0){
strcpy(temp ,strs[j]);
strcpy(strs[j], strs[j+1]);
strcpy(strs[j+1], temp);
}
}
}
}
int main(void){
char strs[10][100];
int i;
for(i=0;i<10;i++){
gets(*(strs+i));
}
sort(strs);
printf("\n");
for(i=0;i<10;i++){
puts(*(strs + i));
}
return 0;
}
```
7、 编一程序,打入月份号,输出该月的英文月名。例如,输入"3",则输出"March",要求用指针数组处理。
1: January, 2: February, 3: March, 4: April, 5: May, 6: June, 7: July, 8: August, 9: September, 10: October, 11: November, 12: December
```c
#include <stdio.h>
#include <stdlib.h>
int main(void){
//存着地址的数组 存储字符串的首地址的数组
char *month[12] = {"January", "February", "March", "April",
"May", "June", "July", "August", "September", "October",
"November", "December"};
int num;
printf("请输入月份数字形式:");
scanf("%d", &num);
printf("%s\n", *(month+num-1));
return 0;
}
```
8、 写一函数完成查找串s2 在串s1 中第一次出现的位置。
```c
#include <stdio.h>
#include <string.h>
int instr(char *dest, char *substr){
int i=0, j;
while(*(dest+i) != '\0'){
j=0;//对子串匹配从首个开始
while(*(substr+j)!='\0' && *(dest+i) == *(substr+j)){
i++;
j++;
}//暴力查找主串中和子串相等的字符 到子串结尾或遇到不相同元素时退出循环
if(j==0){//当前主串中没有和子串首元素相同的元素时 主串下标后移
i++;
}
//匹配到子串结尾标记时代表找到首个子串
if(*(substr+j) == '\0'){
return i-strlen(substr)+1;
}
}
return -1;//没有找到子串
}
int main(void){
char str[100];
char substr[100];
gets(str);
gets(substr);
printf("%d\n", instr(str, substr));
return 0;
}
```
9、 写一函数完成将无符号十进制整数转换成十六进制字符表示并存于字符串数组中。
```c
#include <stdio.h>
void decimalToHex(int dec, char *hex){
int i, j, temp, count=0;
//i, j, temp 用来数组倒置
//count 用来统计元素的个数
while(dec){
//模除十进制数字得余数后判断是否为数字 如果为 使用'0'加上该数之后存储为字符
if(dec%16 < 10){
*(hex+count++) = dec%16 + 48;
}else{
//得到A~F时,使用大写字符ASCALL值将其转换为字符
*(hex+count++) = dec%16-10 + 65;
}
dec /= 16;
}
//数组元素的倒置
i = 0;
j = count - 1;
while(i < j){
temp = *(hex + i);
*(hex + i) = *(hex + j);
*(hex + j) = temp;
i++;
j--;
}
*(hex+count) = '\0';//标记结束符
}
int main(void){
int dec;//用来存储需要转换的十进制数字
char hex[1000];//用来存储转换后的数字的
printf("请输入一个数字:");
scanf("%d", &dec);
decimalToHex(dec, hex);
puts(hex);
return 0;
}
```
10、 用指向指针的指针的方法对N 个整数排序并输出。要求排序单独写成一个函数。N 个整数和N 在主程序中输入,最后在主函数中输出。
```c
#include <stdio.h>
void sort(int (*arr)[10]){
int i, j, temp;
for(i=0;i<10-1;i++){
for(j=0;j<10-1-i;j++){
if((*arr)[j]> (*arr)[j+1]){
temp = (*arr)[j];
(*arr)[j] = (*arr)[j+1];
(*arr)[j+1] = temp;
}
}
}
}
int main(){
//指针->数组 int (*变量名)[数组的元素个数]
//数组指针 指向数组的指针
int num[10];
int i;
printf("请输入10个整数:");
for(i = 0;i<10;i++){
scanf("%d", num+i);
}
sort(&num);
for(i = 0;i<10;i++){
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
```
## 七、结构体与共用体
1.定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。按结构体类型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,然后逐个输出这些元素的数据(可设数组只有三个元素)。
2.有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据,希望输入后按书名的字母顺序将各书的记录排列好,供以后查询。今输入一本书的书名,如果查询到库中有此书,打印出此书的书名,作者,编号和出版日期。如果查不到此书,则打印出“无此书”。
3.13 个人围成一圈,从第一个人开始顺序报号1、2、3。 凡报到“3”者退出圈子。找出最后留在圈子里的人原来的序号。
4.编写一个程序,输入n 个(少于10 个)学生的姓名、性别、 成绩、出生年月日及入学年月日,输出成绩在80 分以上的学生的姓名、性别、成绩、出生和入学的年份。
5.将上题改为“输出成绩在80 分以上的18 岁以下的女生的姓名、成绩、出生和入学的年份”,试编写程序实现之。
6.有10 个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入10 个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、 姓名、三门课成绩、平均分数)。
7.设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序打印出链表中第1,3,5,7...结点。
8.设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序将大于平均成绩的各个结点打印出来。
9.设链表中每个结点包括学号、成绩、和指针三个字段, 试编程序将成绩最高的结点作为链表的第一个结点,成绩最低的结点作为尾结点。
10.建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
## 八、文件
1.将10 个整数写入数据文件f3.dat 中,再读出f3.dat 中的数据并求其和。
2.一个以%5d 格式存放20 个整数的文件f4.dat,顺序号定为0~19。输入某一顺序号之后,读出相应的数据并显示在屏幕上。
3.将10 名职工的数据从键盘输入, 然后送入磁盘文件worker1. rec 中保存。设职工数据包括:职工号、职工名、性别、年龄、工资,再从磁盘调入这些数据,依次打印出来(用 fread 和fwrite 函数)。
4.将存放在worker1.rec 中的职工数据按工资高低排序,将排好序的各记录存放在worker2.rec 中(用 fread 和fwrite 函数)。
5.用scanf 函数从键盘读入 5 个学生数据(包括:学生名、学号、三门课程的分数),然后求出平均分数。用 fprintf 函数输出所有信息到磁盘文件stud.rec 中,再用fscanf 函数从 stud.rec 中读入这些数据并在显示屏上显示出来。
6.在文件 worker2.rec 中插入一个新职工的数据,并使插入后仍保持原来的顺序(按工资高低顺序插入到原有文件中),然后写入worker3.rec 中。
7.删除worker2.rec 中某个序号的职工记录,再存入原文件中(用fread 和fwrite 函数)。
8.有两个磁盘文件,各自存放已排好序的若干个字符(如a1. dat 中放"abort" a2.dat中放 "boy")要求将两个文件合并,合并后仍保持有序,存放在a3.dat 文件中。
提示:可先将两个文件中的字符存入一个字符型数组中,而后对数组重新排序,再将该数组写入a3.dat文件中。
如果不引入一个中间数组进行重新排序,该如何编程?
## 附加题
1.编程序求 5X+2Y+Z=50 的所有非负整数解。
2.有一长度不大于40 的字符串,已知其中包含两个字符“A”,求处于这两个字符“A”中间的字符个数,并把这些字符依次打印出来。
3.把25 个字母A、B 、C、··· 、X、Y 按如下要求打印出来:从最中间的字母M开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,...。要求:初始化时按字母表顺序赋值。
4.编一个程序,把一批非零整数中的偶数、奇数的平均值分别计算出来。用零作为终止标记。
5.某单位排队形,开始排成3 路纵队,末尾多出了2 人。后改成5 路纵队,末尾又多出了3 人,最后改成7 路纵队,正好没有余数。编程序求出该单位至少有多少人。
6.将一个6×6 数组的第一行、第六行、主对角线和副对角线上的元素都存入1,其余的元素都存入-1。请编程序实现。
要求:1)不许对数组初始化。
2)尽量少用循环。
7.个位数是6,且能被3 整除的五位数共有多少个。
8.求100 至200 之间能同时被6 和8 整除的数,把这些数打印出来,并且打印这些数的和。
9.雨淋湿了一道算术题,9 个数字现在只能认清4 个(第一个数字虽模糊不清但肯定不是1):
<img src="https://yp.smallkun.cn/markdown/image-20241130010005134.png!compress" alt="image-20241130010005134" style="zoom:50%;" />
请编程序找出那些看不清的数字。
10.编程序计算下述函数在X=-7,-1,0,7 时的值。
11.判断一个给定的5×5 方阵是否以第3 列为轴线对称?
12.编写一个函数JOIN,让它实现字符串连接运算功能。
13.编写函数IND,让它判断一个字符串是否为另一个字符串的子串的功能,若是则返回第一次出现的起始位置,否则返回0。
14.编写一个函数,由参数传来一个字符串,分别求出此字符串中字母、数字和其它字符(不包括空格)的个数,输入和输出均由主函数实现。
15.已知某年不是闰年,给定该年某一天的月份和日期,求这一天是该年的第几天。
16.找规律,编程序打印6×6 的矩阵:
1 2 3 5 8 13
1 4 9 17 30 51
1 6 19 45 92 173
. . .
17.有人说在400,401,402,...499 这些数中4 这个数字共出现112 次,请编程序判定这种说法是否正确。若正确请打印出'YES',否则打印出'NO'及4 的出现次数。
18.设有8×8 的二维数组a,其中每个元素取值如下:
当 i=j 时 a[i\][j\]=M M 是你的学号)
当 i<j 时 a[i\][j\]=ij
当 i>j 时 a[i\][j\]=i×j
编程序求所有的数组元素之和。
19.找3 个数字,填在下面式子中,使等式成立。
<img src="https://yp.smallkun.cn/markdown/image-20241130010139383.png!compress!compress" alt="image-20241130010139383" style="zoom:50%;" />
① 若答案有多个,则打印一组即可;
② 若无满足条件的数字,则显示'NO DIGITALS'。
20.某航空公司规定:在旅游旺季7─9 月份,若订票超过20 张,优惠票价的15%,20 张以下,优惠5%;在旅游淡季1─5 月、10 月、11 月份订票超过20 张,优惠30%,20 张以下,优惠20%;其余月份不优惠。请编程序能根据月份和旅客订票张数决定优惠率。
21.请编程序按如下格式打印一个直角三角形的九九乘法表:
1 2 3 4 5 6 7 8 9
4 6 8 10 12 14 16 18
9 12 15 18 21 24 27
16 20 24 28 32 36
25 30 35 40 45
36 42 48 54
49 56 63
64 72
81
22.有一批实数,用零作终止标记。请编程序找出这批数中的最大值及最小值,并输出该最大值数是这批数中的第几个数(若最大值数多次出现,只打印出第一个的位置)。
23.有10 个两位整数,把这些数作以下变化,如果它是素数,则把它乘以2,若它是偶数则除以2,其余的数减1,请将变化后的10 个数按从小到大的次序打印出来。
24.已知有N 个无规律的正整数,请编程序求出其中的素数并打印出能被5 整除的数之积。
25.把一个偶数位的数从当中分开成为两个数,这两个数的和的平方等于原数。如(8+1)2=81,(20+252=2025。求10 至9999 之间满足这样条件的数是哪些? 共有多少个?
26.已知有9 个数,请求出这些数中的最大值、最小值及平均值,以及有多少个数等于平均值?
27.求二维数组中每行元素的平均值,不许引入其它的数组。
28.编程序计算函数
<img src="https://yp.smallkun.cn/markdown/image-20241130010348202.png!compress" alt="image-20241130010348202" style="zoom:50%;" />
的值。要求先将X 的各项系数先输入到数组B 中,然后再用循环结构求P(X)的值。
29.猜号码∶由随机函数产生一个1 至1000 之间的整数,让人猜之。计算机仅回答人猜的数大、小还是相等,当人猜对时,由计算机打印出人一共猜了几次。
30.编程序将一个正整数写成其它两个正整数的平方和,若不能成立时输出“NO”。
例如
![image-20241130010437816](https://yp.smallkun.cn/markdown/image-20241130010437816.png!compress)
31.将一个一维数组中的偶数依次交换。例如有8 个元素, 若其中第1、4、5 三元素是偶数时应按下图交换。
<img src="https://yp.smallkun.cn/markdown/image-20241130010458976.png!compress" alt="image-20241130010458976" style="zoom:50%;" />
32.编程序将一个6×6 的二维数组左下三角部分全赋值为-1,右上三角全赋值为1,主对角线(行,列下标相同)上的元素送入2。把数组中的值按列对齐方式输出。
要求: 不允许使用scanf 函数。
33.用随机函数求出10 组三位正整数,每组十个数,调用一函数打印出每组数,并编一函数求出每组中的最大数。
34.已知有三个数组A,B,C,A 为5 行5 列的二维数组,B、C 为只有5 个元素的一维数组,键盘输入数据的顺序如下:
23,45,6,1,-3,4,5,233,456,0,3,56,78,-56,5,6,77,8,89,9,3,6,8,9,90
请编写程序,求出A 的各行之和放至数组B 的相应元素中,求出数组A 的各列之和放至数组C 的相应元素之中。程序的输出部分要按下边形式显示:
![image-20241130010557737](https://yp.smallkun.cn/markdown/image-20241130010557737.png!compress)
35.假设a-1 和a+1 是大于10 的素数,验证<img src="https://yp.smallkun.cn/markdown/image-20241130010624492.png!compress" alt="image-20241130010624492" style="zoom:67%;" /> 可被120 整除。编程序输入a 的值,判a-1 和a+1 是否为素数。若不是输出“NOTPRIME!”;若都是素数,再验证<img src="https://yp.smallkun.cn/markdown/image-20241130010624492.png!compress!compress" alt="image-20241130010624492" style="zoom:67%;" />是否可被120 整除。
36.有n 个整数,编程序将前面的各个数依次向后移动k 个位置,最后k 个数移到最前边的k 个位置(见下图,其中n=8,k=3)。
<img src="https://yp.smallkun.cn/markdown/image-20241130010716416.png!compress!compress" alt="image-20241130010716416" style="zoom:50%;" />
思考: 程序中不许引入其它数组。
37.将一个数M 分解为质因数(M≠0)。
38.将一个整数(最多是10 位数)从低位到高位打印出来,如该数是12345 时,输出应是54321(只占一行)。
39.写一个函数比较两个字符串,如果s1=s2,则返回值0;如果s1>s2,则返回值1;如果s1<s2 则返回-1。
40.求n!的末尾有多少个零。可以通过检查n!含有多少个10 的因数来求它末尾零的个数。因为10=2×5,在n!中含有2 的因数显然多于含有5 的因数。一种求n!中5 的因数的个数的算法如下:
1)输入正整数n;
2)0=>k, n=>m;
3)若m<5,转第5 步,否则执行第4 步;
4)m/5(取整)=>m, k+m=>k, 转第3 步;
5)输出kn!末尾零的个数)。
41.分别输入N 和M 个数到数组A 和数组B 中。把只在其中一个数组中出现的那些数送入到数组C 中,并指出它们在A 或B 数组中的位置。
42.用记录来描述一个学生的成绩情况,内容包括:姓名、学号、数学成绩和PASCAL成绩。要求对一个小组的10 个学生的成绩进行统计处理:
1)计算学生的总平均分,并按平均分高低排出名次,打印出姓名。
2)打印出90 分以上和不及格者的名字。
要求用子程序来完成。
43.已知M1 是3×5 的矩阵, M2 是5×2 的矩阵, 编程序求出M1 与M2 之积。
44.百马百瓦问题。有100 匹马,100 块瓦,大马驮3 块,小马驮2 块,两个马驹驮1块。问大马、小马、马驹各多少?
要求:① 不许用for 循环; ② 循环次数尽量少。
45.找规律填写N×N 方阵。如N=8 时, 其方阵为:
<img src="https://yp.smallkun.cn/markdown/image-20241130011036567.png!compress" alt="image-20241130011036567" style="zoom:50%;" />
46.插入排序。许多玩牌的人是以这样的方式来对他们手中的牌进行排序的:设手中原有3张牌已排好序,抓1 张新牌,若这张新牌的次序在原来的第2 张牌之后,第3 张牌之前,那么就把这张新牌放在第3 张牌的位置上,原来的第3 张改为第4 张, 然后再抓新牌。按着这个算法,编写一个排序程序。
注:开始一张牌也没有,从第一张牌开始抓起。
47.求N 阶方阵(即N×N 数组)中各条反斜线上的元素之和。如4×4 数组共有7 条反斜线:
![image-20241130011108944](https://yp.smallkun.cn/markdown/image-20241130011108944.png!compress)
48.自然数N 一般写成如下形式:
![image-20241130011124712](https://yp.smallkun.cn/markdown/image-20241130011124712.png!compress!compress)
如果<img src="https://yp.smallkun.cn/markdown/image-20241130011207358.png!compress" alt="image-20241130011207358" style="zoom:50%;" />>di (i=k-1,k-2,...,1),则称N 是严格降序数;如果<img src="https://yp.smallkun.cn/markdown/image-20241130011207358.png!compress!compress" alt="image-20241130011207358" style="zoom:50%;" /><di (i=k-1,k-2,...,1),则称N 是严格升序数;如果<img src="https://yp.smallkun.cn/markdown/image-20241130011232509.png!compress" alt="image-20241130011232509" style="zoom:50%;" />=di (i=k-1,k-2,...,1),则称N 是等序数;此外,则称N是无序数。例如, 4321 是严格降序数,1234 是严格升序数,2222 是等序数,1243 是无序数。从键盘上输入一个大于9 的整数N,判它属于上述哪一类。
49.用简单迭代法解方程 <img src="https://yp.smallkun.cn/markdown/image-20241130011311960.png!compress" alt="image-20241130011311960" style="zoom:50%;" />它有两个根(如图),其迭代公式为:
![image-20241130011327616](https://yp.smallkun.cn/markdown/image-20241130011327616.png!compress!compress)
注:本程序中选取初值<img src="https://yp.smallkun.cn/markdown/image-20241130011341115.png!compress" alt="image-20241130011341115" style="zoom:50%;" /> 不同时,要分别使用公式1 或公式2 迭代,得原方程<0 或>0
的解。(公式由来略)
50.洗扑克牌。将54 张牌分别编号为1,2,…,54 号,并放在数组M 中。洗牌方法如下:产生[1,54]区间内的一个随机数K,将M[1]与M[K]交换;然后产生[2,54]之间的随机整数K,让M[2]与M[K]交换;…,直到剩下最后一张牌为止。请编写实现上述洗牌的程序。
51.有N 张牌,计算机和你轮流取牌,每次只能取 1─2 张,谁最后取完谁胜利。编写完成此功能的程序。
要求:
1)让计算机先取。
2)你取的张数由键盘输入。
3)计算机第一次取牌时由键盘输入来确定是取1 还是取2,以后它再取牌时由程序
判断来决定取几张牌。
52.已知A 是有30 个元素的整型数组,编写一个对A[I1]到A[I2](I1≤I2)之间的元素排序的函数(从大到小排序)。请调用上述函数先将A[5]至A[20]之间的元素排序,然后将A中的所有元素值输出。再调用上述函数对A[15]至A[30]之间的元素排序,最后再将A 中30 个元素值输出。
要求:1) 输入输出均由主函数实现。
2)输出时每10 个元素占1 行。
53.编程序求3 至39 之间满足下列条件的各组素数:每组有3 个素数,第2 个比第一个大2,第3 个比第2 个大4。例如 5,7,11 就是满足条件的一组。
要求:1) 不许使用数组。
2)打印满足条件的各组素数。
3)求出满足条件的素数共有多少组。
54.已知N 是正整数, 它可拆写成三个正整数N1、N2和N3 之和的形式N=N1+N2+N3。请编程序打印出满足上式的全部组合,并当N1、N2 和N3 中至少有两个是素数时打印“YES”否则打印“NO”。
<img src="https://yp.smallkun.cn/markdown/image-20241130011603125.png!compress" alt="image-20241130011603125" style="zoom:50%;" />
55.编写程序,按照 1,2, ... , 28 的顺序填一个7×7 数组的左上角,程序的输出结果为:
![image-20241130011618828](https://yp.smallkun.cn/markdown/image-20241130011618828.png!compress)
56.二维数组排序。设有4×5 的数组M,通过排序使M[1\][1\]≤M[1\][2\]≤...≤M[1\][5\]≤M[2\][1\]≤M[2\][2\]≤...≤M[2\][5\]≤...≤M[4\][1\]≤M[4\][2\]≤...≤M[4\][5\]。排序时不允许引入其它数组。
57.编写将一个十进制数M 转化成N 进制数(2≤N≤16)的程序。提示:转化成N 进制数的各位数可以分别放在数组的各个元素中。
注意:进制N 超过10 时, 用A 表示10,B 表示11,…,F 表示15。
58.在主函数中输入10 个不等长的字符串,用另一函数对它们排序。然后在主函数中输出这10 个已排好序的字符串,用指针数组完成。
59.建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,将此结点删除,输出最后的链表。
60.有两个链表a和b。设结点中包含学号、姓名。从a链表中删除与b链表中有相同学号的那些结点。
@@ -1,254 +0,0 @@
1.输入一小写字母,分别以字符形式与数值形式输出与该小写字母相应的大写字母
```sql
//
#include<stdio.h>
int main(void)
{
char c;
scanf("%c",&c);
if(c>='a'&&c<='z')
printf("%c\n",c-32);
else
printf("%c\n",c+32);
return 0;
}
```
2.输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)
3.写一个程序,输入实数X,输出Y,计算
<img src="https://yp.smallkun.cn/markdown/image-20250116004443767.png!compress" alt="image-20250116004443767" style="zoom:33%;" />
4.编写程序:读入三个整数a,b,c,然后交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。
5.编写程序:输入9时23分并把它化为分钟后输出。(从零点整开始计算)。
6.要将“Chiina”翻译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“ A”后面的4个字母是“E”,用“E”代替“A”。因此,“Chian”应译成“Glmre”。用赋初值的方法 是c1,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、 c3、c4、c5分别为‘G’、‘l’、‘m’、‘r’、‘e’,并输出
7.编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和prinf函数输出这两个字符以 及它们的ASCII值。
8.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
9.编写程序,输入两个整数 ,计算并输出它们的和、差、积、除(精确除)、整除及模的结果。
10.编一程序,对于一个给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为ˊAˊ,80~89 分为ˊBˊ,70~79分为ˊCˊ,60~69分为ˊDˊ,60分以下为ˊEˊ。
11.输入3个整数,要求按由小到大的顺序输出
12.输入4个数,输出其中的最大数和最小数。
13.有以函数y=x(x<1);2x-1(1<=x<10);3x-11(x>=10).写一程序,输入x,输出y.
14.给定一个不多于5的正整数,要求:(1)求它是几位数;(2)分别打印出每一位数字(3)按逆序打 印出各位数字.
15.编写程序,要求输入整数a和b.若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。
16.根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型
17.判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes,否则输出no
18.输入4个整数,求4个数中的偶数之和.
19.输入4个整数,求4个数中的奇数之和
20.假设奖金税率如下(a代表奖金,r代表税率)a<500 r=0%;500<=a<1000 r=5%;1000<=a<2000 r=8%;2000<=a<3000 r=10%;3000<=a r=15%编写程序用if语句实现:对输入的一个资金数,求税率和应交税款以及实际奖金数(扣除奖金税后)。
21.输入一个字符,如果是大写字母,转换为小写,如果不是不转换。最后输出。
22.键盘上输入三角形三边a,b,c 的值,计算三角形面积,并输出三角形的三边a,b,c及面积area的值。三 角形面积的公式:s=(a+b+c)/2 area=sqrt[s(s-a)(s-b)(s-c)].
23.编写一个程序,根据用户输入的一个字母判定它是星期几。要求用switch语句实现程序控制,当第一个字母相同时,如:T(t)uesday 和T(t)hursday故需要进一步输入U或u或H或h确认。
24.编写一个程序:输入某年某月,判断这一月有多少天?
25.从键盘上输入字母或0~9的数字,编写程序对其进行分类。字母可分为大写字母和小写字母,数字可分 为奇数和偶数。
26.编写程序:加密数据,方法:对给定数值,每一位数字均加2,且在[0,9]范围内,若加密后某位数字 大于9,则取其被10除的余数.
27.编写程序:计算从1995年1月1日至2000年12月10日共有多少天。闰年的2月有29天.闰年满足如下条件 :能被400整除或能被4 整除但不能被100整除。
28.编程求解一元二次方程 ax2+bx+c=0的根。
29.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
31.已知abc+cba=1333,其中a、b、c均为一位数,编写一个程序求出a、b、c分别代表什么数字。
32.鸡兔共有30只,脚共有90只,编写一程序计算鸡兔各有多少只。
33.输入两个正整数m和n,求其最大公约数和最小公倍数.
34.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。见87题
35.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程:找出1000以内的所 有完数。
36.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩 下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再 吃时,见只剩下一个桃子了。求第一天共摘了多少.
37.有一分数序列:2/13/25/38/513/821/13...求出这个数列的前20项之和.
38.编写一个程序显示ASCII码65~90(十进制)的字符对照表。并输出6个数换一行。
39.已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别代表什么数字。
40.已知四位数a2b3能被23整除,编写一程序求此四位数。
41.输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n
42.从两个红球,三个白球,四个黑球中任意取出五个球,且其中必有白球,编写程序输出所有可能方案
43.花数”是指一个三位数,其各位数字立方和等于该数。
44.编写一程序:求1-3+5-7+…-99+101的值。
45.编写一程序:输入一个正偶数n,将其分解成两个素数之和。
46.编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。
47.编程在屏幕上输出具有7行的正三角形。
48.若用0至9之间不同的三个数构成一个三位数,编写一个程序统计出共有多少种方法。
49.编程输出100—200之间第一个能被3整除的之前的所有整数。
50.把100—200之间的不能被3整除的整数输出。
51.求输入的10个整数中正数的个数以及其平均值。
52.求出1000以内的所有素数,要求一行输出30个。
53.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?。
54.4位反序数:设N是一个四位数,它的9倍恰好是其反序数,求N.
55.有限5位数:个位数为6且能被3整除的五位数共有多少?
56.编写一程序计算1到正整数n之间的奇数之和以及偶数之和。
57.编写一程序计算100到1000之间有多少个数其各位数字之和是5。
58.学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一程序求该 校的学生人数。
59.编写一程序实现从键盘输入10个数,找到第一个能被7整除的数。若,找到,打印此数后退出循环;若 未找到,打印“not exist”。
60.编写一程序:计算用一角、二角和五角凑成一元有多少种组合,并打印输出每种组合。
61.在数组a中按照顺序查找值为y的元素。若数组a中不存在该元素,则输出不存在;若存在这样的元素,则显示元素的下标,以及元素的总个数 见实验指导书P60必做题1。
62.数组中存放N个元素,编写程序删除掉下标为奇数的元素,使得数组中只存放下标为偶数的元素。.
63.数组s中存放有N个同学的某一门功课的成绩。要求编写程序,求出有多少个同学的成绩高于此门功课的平均分。
64.输入一个3行3列矩阵的所有元素,求该矩阵周边各元素的和。 见实验指导书P65必做题1。
65.判定一个字符串是否是回文串。(所谓回文串是指从开头读和从末尾读均为相同字符的字符串。例如:abcdcba。 见实验指导书P71必做题1。
66.读入一个字符串,要求将该字符中所有字符按照递增的顺序进行排序(采用冒泡排序算法)后输出。
67.编程将两个字符串连接起来,不准使用strcat函数。
68.有10个字符串,找出每个字符串中最大字符,并按顺序放入一维数组a[10]中,即第i个字符串中最大字符放入a[i]中,输出a[i]数组。
69.编程将任意十进制数转化成N进制。
70.设数组a中的元素均为正整数,编程求a数组中偶数的个数和偶数的平均值。
71.数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b.试编程。.
72.编程:从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b
73.输入一个正整数,按逆序输出各位的数字。
74.将二维数组行列元素互换,存到另一个数组中。
75.有一个3*4矩阵,求最大元素值及其行、列号。
76.有10个字符串,找出每个字符串中最大字符,依次存入一维字符数组a中,即第i个字符串中的最大字符放入a[i]中,输出数组a 同题68
77.设数组a中的元素均为正整数,编程求a数组中偶数的个数和偶数的平均值 同题70
78.编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不得使用strcpy函数。拷贝时,‘\0‘也要拷贝过去。
79.将一个字符串中下标值为偶数的元素由小到大排序,其它元素不变。
80.使用二维数组打印杨辉三角形
81.从键盘输入一个二维整型数组,如a[4\][4\]={ 1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4},试编程检查一个二维数组是否对称(即对所有i,j都有a[i\][j\]=a[j\][i\])。
82.输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数.
83.将字符串S中所有下标为奇数的位置上的字母大小写互换。
84.求矩阵a和b的和,结果存入矩阵c中并按矩阵形式输出。
85.有5个同学,每个同学有4门功课的考试成绩,求每人的平均成绩和每门功课的平均成绩。要求只用一个2维数组完成;
86. 编写一程序完成字符串处理函数(strcat字符串连接函数功能,不允许使用strcat函数实现),即连接两字符串a,b,将字符串b中字符连接到字符串a后成为一个字符串。(要求两字符串a,b 在主函数中输入,连接部分编写一函数完成,结果由主函数输出完成。)
87.编写函数统计字符串中字母、数字、空格和其他字符的个数。(要求在主函数中输入字符串以及输出上述结果,子函数完成统计功能。)
88.采用函数的方法实现“冒泡法”排序对输入的10个字符按从小到大的顺序进行排列。(要求在主函数中输入字符并输出排序结果。提示:字符从键盘接收到后放入数组中存放,数组名作为函数参数。)
89.编写一函数将一十进制数转换成2进制数并按顺序输出。(要求在主函数中输入此十进制数,由子函数进行转换并把结果传递给主函数。)
90.编写一程序实现:输入年、月、日,计算出该日是该年的第多少天。(要求在主函数中输入数据,计算过程由函数完成并将最后结果返回主函数输出。)
91.使用函数实现求n的阶乘。(主函数输入数据n,子函数求出阶乘的值并返回给主函数) 见实验指导书P80必做题第2题。
92.使用函数求两个整数的最大公约数和最小公倍数。(主函数输入两个数,子函数gongyue( )用来求最大公约数,子函数gongbei( )用来求最小公倍数) 见实验指导书P81选做题第1题。
93.使用函数求某长整型数据的各位数字之积。(主函数输入长整型数据,子函数func( )分离出各位数字,并将乘积返回给主函数) 见实验指导书P83选做题第3题。
94.使用函数求3名同学5门课的平均成绩。(主函数输入3名同学5门课的成绩,子函数计算出某名同学5门课的均分并返回给主函数)
95.使用函数实现字符串的颠倒存放操作。(主函数中使用字符串处理函数实现字符串的输入,子函数实现字符串的颠倒操作,使用字符串名作为函数参数。注意:应实现字符串的颠倒存放,而不是逆序输出)
96.子串删除。函数delete(s,i,n)实现从字符串s中删除下标为i的字符开始的n个字符。(主函数实现全局字符数组s和全局变量i、n的输入,并假设i 、n和i+n的值都小于字符串的
长度)
97.输入一字符串,如果该字符串中含有字符’s’,则返回该字符串的最后一个字符,否则输出“no”。(主函数输入一行字符,子函数getline( )的作用是判断是否含有’s’,返回最后一个字母或输出“no”。)
98.使用函数求解一元二次方程的根,方程的系数由主函数输入得到,并且设a、b均不等于0。
99.编写一程序完成字符串处理函数(strcpy字符串复制函数功能,不允许使用strcpy函数实现),即将字符串a的内容完整的复制到字符串b中(连同字符串a中’\0’也要复制)。(要求字符串a内容在主函数中输入,复制部分编写一函数完成,结果由主函数输出完成。)
100.编写一程序完成对于一个大于等于3的正整数,判断它是不是一个素数(要求数据由主函数输入,判断部分编写一函数实现,结果由主函数输出完成。)
101.编写一程序将一包含n个字符的字符串中从第m个字符开始的全部字符复制到另外一个字符串(n>m)。(要求数据由主函数输入,复制部分编写一函数实现,复制后结果由主函数输出完成。)
102.使用函数实现华氏温度向摄氏温度的转换,转换公式如下:C=(5/9)*(F-32),其中C为摄氏温度,F为华氏温度。(子函数实现温度转化,并将结果返回给主函数).见实验指导书P79必做题第1题。
103.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。.
104.用函数实现一些程序:计算10个学生的1门课程成绩的平均值.. 见实验指导书P85必做题第1题。
105.有15个数按由大到小顺序存放在一个数组int a={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}中,输入一个数用顺序查找法找出该数是数组中的第几个元素的值(元素下标值),若该数不在数组中则打印“无此数”。 (要求数据由主函数输入,查找部分编写一函数实现,结果由主函数输出完成。)
106.定义一个带参数的宏,完成从四个数中找出最大数的操作。
107.根据已知算法定义一个带参数的宏,用来判别程序中输入的年份是否闰年。
108.试定义一个带参数的宏swap(x,y),以实现两个整数之间的交换,并利用它将一维数组a和b的所有元素的值进行交换。
109.输入两个整数,求它们相除的余数.用带参数的宏来实现,编程序.
110.定义两个带参数的宏,一个用来求S(s=1/2(a+b+c)),另个用来求area(area为三角形的面积)。写程序,在程序中用带实参的宏名来求面积area。
111.已知字符串S中的内容为“Student!”,请用指针的方法将S中的内容逆序输出,且不能改变串中的内容。
112.输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符个数。(要求用指针实现)。
113.通过指针操作,将输入的3个字符串,按由大到小的顺序输出。
114.定义整型数组a,有10个元素,用指针实现数组中的全部元素的输出.
115.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。请用指针完成。
116.利用指针编写一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。
117.用指针法实现:输入10个数,按由小到大的顺序输出。
118.用指针法实现:写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度值。
119.从键盘输入10个学生的成绩,显示其中的最高分、最低分和平均分。用指针实现。
120.数组中存放N个元素,编写程序删除掉下标为奇数的元素,使得数组中只存放下标为偶数的元素。用指针实现。
@@ -0,0 +1,33 @@
#include <stdio.h>
/*
if(条件){
复合语句(条件为真时执行)
}else{
复合语句(条件为假时执行)
}
*/
int main(void){
int x, y, z, t;//定义三个整型变量
//数据类型 变量名1, 变量名2;
scanf("%d%d%d", &x, &y, &z);
if(x > y){
t = x;
x = y;
y = t;
}//实现x和y比较 大数放y位置
if(y > z){
t = y;
y = z;
z = t;
}//实现y和z比较 大数放z位置 z为三个数字中最大数
if(x > y){
t = x;
x = y;
y = t;
}
printf("%d %d %d\n", x, y, z);
return 0;
}
@@ -0,0 +1,26 @@
#include <stdio.h>
int main(void){
int a;
scanf("%d", &a);
printf("该数的位数为%d\n",
(a/10==0?1:(a/100==0?2:(a/1000==0?3:(a/10000==0?4:5)))));
printf("%d", a%10);
if(a%100/10 != 0){
printf("%d", a%100/10);
}
if(a%1000/100 != 0){
printf("%d", a%1000/100);
}
if(a%10000/1000 != 0){
printf("%d", a%10000/1000);
}
if(a/10000 != 0){
printf("%d", a/10000);
}
printf("\n");
return 0;
}
@@ -0,0 +1,19 @@
#include <stdio.h>
int main(void){
float a, b, result;
int flag;
printf("请输入两个数字:");
scanf("%f %f", &a, &b);
printf("请输入您要进行的操作(1.做加法 2.做乘法 3.做除法):");
scanf("%d", &flag);
switch(flag){
case 1:result = a+b;break;
case 2:result = a*b;break;
case 3:result = a/b;break;
}
printf("结果为%f\n", result);
return 0;
}
@@ -0,0 +1,31 @@
#include <stdio.h>
int main(void){
int year, month, day, days=0;
scanf("%d-%d-%d", &year, &month, &day);
days+=day;
//1 3 5 7 8 10 12
//从前一个月开始依次
switch(month-1){
case 11:days+=30;
case 10:days+=31;
case 9:days+=30;
case 8:days+=31;
case 7:days+=31;
case 6:days+=30;
case 5:days+=31;
case 4:days+=30;
case 3:days+=31;
case 2:days+=28;
case 1:days+=31;
}
if(month>3 && (year%4==0&&year%100!=0 || year%400==0)){
days++;
}
printf("%d\n", days);
return 0;
}
@@ -0,0 +1,30 @@
#include <stdio.h>
/*
1.解决字符的循环输入
while((ch=getchar())!='\n')
2.判断字符类型
ASCALL码范围
*/
int main(){
char ch;
int l, d, o;//l字母的个数 d为数字个数 o为其他字符个数
l=d=o=0;
while((ch=getchar()) != '\n'){
if(ch >= 'a' && ch<='z' || ch >= 'A' && ch<='Z' ){
l++;
}else if(ch >= '0' && ch <= '9'){
d++;
}else{
o++;
}
}
printf("字母个数:%d 数字个数:%d 其他个数%d\n", l, d, o);
return 0;
}
@@ -0,0 +1,14 @@
#include <stdio.h>
int main(){
int x;
while(1){
scanf("%d", &x);
if(x == 0){
break;
}
printf("%d:%s\n", x, (x%5==0&&x%7==0?"Yes":"No"));
}
return 0;
}
@@ -0,0 +1,32 @@
/*
暴力求解+枚举每一个台阶
for(i=0;i<1000;i++){
}
i=0;
while(i<1000){
i++;
}
&& || !
表达式1&&表达式2
左右都为真才为真
短路运算 表达式1为假 表达式2直接不运算 直接为假
*/
#include <stdio.h>
int main(){
int i;
for(i=0;i<1000;i++){
if(i%2==1 && i%3==2 && i%5==4 && i%6==5 && i%7==0){
printf("台阶数为%d\n", i);
break;
}
}
return 0;
}
@@ -0,0 +1,22 @@
#include <stdio.h>
/*
大马:i
中马:j
小马:k
*/
int main(){
int i, j , k;
for(i=0;i<=33;i++){
for(j=0;j<=50;j++){
for(k=0;k<=200;k+=2){
if(i+j+k==100 && i*3 + j*2 + k/2 == 100){
printf("大马:%-2d 中马:%-2d 小马:%-2d\n", i, j, k);
}
}
}
}
return 0;
}
@@ -0,0 +1,20 @@
#include <stdio.h>
int main(){
int i, s, t;//i用来遍历所有数, s用来存储数的位数,t是截取掉最高位之后的数
for(i=1;i<9999;i++){
t = i;
while(t > 0){
s = (t/10==0?1:(t/100==0?2:(t/1000==0?3:4)));//求出这个数字位数
t = i%(int)pow(10, s-1);//使用模除去掉最高位
if(t*t == i){
printf("%d:%d\n", t, i);
}
}
}
return 0;
}
@@ -0,0 +1,31 @@
#include <stdio.h>
int main(){
/*
int x, n, t=1;//t为2当前需要加入的位置
scanf("%d", &x);
n = x;//处理之后数
while(t < x){//判断位置是否超过的数的范围
n+=t*2;
//根据当前输入位置判断前一位是否溢出如果溢出则减一
if(n/(t*10) != x/(t*10)){
n-=(t*10);
}
t*=10;//继续处理下一位
}
printf("%d:%d\n", x, n);
*/
int x, s = 0;
scanf("%d", &x);
while(x){
s*=10;
s += (x%10+2)%10;
x /= 10;
}
for(;s;s/=10){
printf("%d", s%10);
}
return 0;
}
@@ -0,0 +1,13 @@
#include <stdio.h>
int main(){
int i;
for(i=5;i<=100;i++){
if(i%5==0 || i%7==0){
printf("%d ", i);
}
}
return 0;
}
@@ -0,0 +1,16 @@
#include <stdio.h>
int main(){
int month, total = 2, i;
scanf("%d", &month);
for(i=1;i<=month;i++){
if(i%3==0){
total *= 2;
}
printf("%d月:%d个数\n", i, total);
}
return 0;
}
@@ -0,0 +1,17 @@
#include <stdio.h>
int main(){
int i, j, k;
for(i=0;i<=3;i++){
for(j=1;j<=5;j++){
for(k=0;k<=6;k++){
if(i+j+k==8){
printf("ºì:%d °×:%d ºÚ:%d\n", i, j, k);
}
}
}
}
return 0;
}
@@ -0,0 +1,19 @@
#include <stdio.h>
int main(){
int num, n=2, first = 1;
scanf("%d", &num);
printf("%d=",num);
while(num > 1){
if(num%n==0){
first?printf("%d", n):printf("*%d", n);
first=0;
num/=n;
}else{
n++;
}
}
return 0;
}
@@ -0,0 +1,21 @@
#include <stdio.h>
int main(){
int num[30], i, j;
float result[6];
for(i=0;i<30;i++){
num[i] = 2+2*i;
}
for(i=0;i<30;i+=5){
result[i/5] = (num[i]+ num[i+1] + num[i+2] + num[i+3] + num[i+4])/5.0;
}
for(i=0;i<6;i++){
printf("%.2f ", result[i]);
}
printf("\n");
return 0;
}
@@ -0,0 +1,39 @@
#include <stdio.h>
int fib(int n){
if(n== 0 || n==1){
return 1;
}
return fib(n-1) + fib(n-2);
}
int main(){
int num[15], i;
for(i=0;i<15;i++){
num[i] = fib(i);
}
for(i=0;i<15;i++){
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
/*
int main(){
int num[15] = {1, 1}, i;
for(i=2;i<15;i++){
num[i] = num[i-1] + num[i-2];
}
for(i=0;i<15;i++){
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
*/
@@ -0,0 +1,30 @@
#include <stdio.h>
#include <string.h>
int main(){
char a[200], b[200];//定义两个字符数组用来读取字符串a和b
char *p, *q;//定义两个指针 分别存储字符串a和字符串b的首地址
gets(a);
gets(b);//从控制台获取输入
if(strlen(b) > 5){
b[5] = '\0';
}//判定字符串是否大于5 如果大于5 则将第六个元素改成结束符
p = a;//p指向a的首地址
q = b;//q指向b的首地址
while(*p != '\0'){//找到a结束符位置的地址
p++;
}
//从b的第一个元素开始赋值到a中
while(*q != '\0'){
*p++ = *q++;
}
*p = '\0';//标记结束符
printf("a=%s\n", a);
printf("b=%s\n", b);
//srand((unsigned)time(NULL));
return 0;
}
@@ -0,0 +1,17 @@
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int num[10], i;
srand((unsigned)time(NULL));
for(i=0;i<10;i++){
num[i] = rand()%101;
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
@@ -0,0 +1,25 @@
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <limits.h> //里面定义了基本数据类型的最大值和最小值
int main(){
int num[3][4], i, j, min=INT_MAX, i_index, j_index;
srand((unsigned)time(NULL));
for(i=0;i<3;i++){
for(j=0;j<4;j++){
num[i][j] = rand()%101;
printf("%2d ", num[i][j]);
if(num[i][j] < min){
min = num[i][j];
i_index = i;
j_index = j;
}
}
printf("\n");
}
printf("min=%d i=%d j=%d\n", min, i_index, j_index);
return 0;
}
@@ -0,0 +1,54 @@
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
/*
1 2 3 |6
4 5 6 |15
7 8 9 |24
-------------
12 15 18
*/
void getSum(int array[100][100], int n, int m){
int i, j, sum;
for(i=0;i<n;i++){
sum = 0;
for(j=0;j<m;j++){
printf("%-5d ", array[i][j]);
sum += array[i][j];
}
printf("| %-5d\n", sum);
}
for(j=0;j<m;j++){
printf("------");
}
printf("\n");
for(j=0;j<m;j++){//列的下标
sum =0;
for(i=0;i<n;i++){//行的下标
sum += array[i][j];
}
printf("%-5d ", sum);
}
printf("\n");
}
int main(){
int n, m, i, j;//n为行数 m为列数
int array[100][100] = {0};
printf("请输入行数和列数:");
scanf("%d %d", &n, &m);
srand((unsigned)time(NULL));
for(i=0;i<n;i++){
for(j=0;j<m;j++){
array[i][j] = rand()%100;
}
}
getSum(array, n, m);
return 0;
}
@@ -0,0 +1,25 @@
#include <stdio.h>
void change(char *p){
//alex apple
*p++ -= 32;//a-> -32 ->A
while(*p != '#'){
if(*(p-1) == ' '){
*p -= 32;
}
p++;
}
*p = '\0';
}
int main(){
char str[1024];
gets(str);//读取一行字符串 回车判定结束
change(str);
puts(str);
return 0;
}
@@ -0,0 +1,30 @@
#include <stdio.h>
//Ãݴη½
int power(int n){
int s = 1, i;
for(i=1;i<=n;i++){
s *= 2;
}
return s;
}
//½×³Ë
int factorial(int n){
int s = 1, i;
for(i=1;i<=n;i++){//1~n
s*=i;
}
return s;
}
int main(){
int n, i, s = 0;
scanf("%d", &n);
for(i=1;i<=n;i++){
s += power(i) * factorial(i);
}
printf("%d\n", s);
return 0;
}
@@ -0,0 +1,25 @@
#include <stdio.h>
int main(){
int a[10], b[10];
int i;
int *p, *q;
for(i=0, p=a;i<10;i++){
scanf("%d", p++);
}
for(i=0, p=a, q=b;i<10;i++){
if(*p%2==0){
*q++=*p;
}
p++;
}
for(i=0, p=b;i<q-b;i++){
printf("%d ", *p++);
}
printf("\n");
return 0;
}
@@ -0,0 +1,23 @@
#include <stdio.h>
/*
1 2 3 4 5 6 7 8 9 10
1 3 4 5 6 7 8 9 10
*/
int main(){
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 10;
int i;
int *p, *q;
p = a+1;
q = a+2;
for(i=0;i<8;i++){//用来控制循环的次数
*p++ = *q++;
}
n--;
for(i=0;i<n;i++){
printf("%d ", *(a+i));
}
printf("\n");
return 0;
}
@@ -0,0 +1,19 @@
#include <stdio.h>
int main(){
char str[] = "AbcDEfg";
char *p = str;
while(*p != '\0'){
if(*p >= 'a' && *p <= 'z'){
*p -= 32;
}else{
*p += 32;
}
p++;
}
puts(str);
return 0;
}
@@ -0,0 +1,23 @@
#include <stdio.h>
#include <string.h>
int main(){
char str[5][20];
char (*p)[20], (*max)[20];//数据类型 (*变量名)[长度];数组指针
int i;
for(i=0, p =str;i<5;i++){
scanf("%s", p++);
}
max = p;
for(i=1, p =str+1;i<5;i++){
if(strcmp(*p, *max)){
max = p;
}
p++;
}
printf("max = %s\n", max);
return 0;
}
@@ -0,0 +1,11 @@
#include <stdio.h>
#define MAXD(x, y) (x>y?x:y)
int main(){
int a, b;
scanf("%d %d", &a, &b);
//(1>2?1:2) 将MAXD替换成三目运算符
printf("%d \n", MAXD(a, b));
return 0;
}
@@ -0,0 +1,11 @@
#include <stdio.h>
#define f(n) (n%5==0 && n%7==0?"能被整除\n":"不能被整除\n")
int main(){
//#define 指令 语句序列 会在语句序列中将所有参数替换成传入的
int num;
scanf("%d", &num);
puts(f(num));
return 0;
}
@@ -0,0 +1,21 @@
#include <stdio.h>
#define CHANGE 0 //1代表打印密文 0明文
//! Ctrl + .注释
int main(){
char str[100], i=0;
scanf("%s", str);
#if CHANGE
while(str[i] != '\0'){
if(str[i] >= 'a' && str[i] <= 'y' || str[i] >= 'A' && str[i] <= 'Y' ){
str[i]++;
}else if(str[i] == 'z' || str[i] == 'Z'){
str[i]-=25;
}
i++;
}
#endif
puts(str);
return 0;
}
@@ -0,0 +1,33 @@
#include <stdio.h>
typedef struct student{
int num;
char name[20];
float socre[3];
}student;
//student 作为一个类型
//如果不写typedef则结构体类型为 struct student
void output(student stuList[5]){
int i;
for(i=0;i<5;i++){
printf("%d\t%s\t%f\t%f\t%f\n", stuList[i].num, stuList[i].name, stuList[i].socre[0],
stuList[i].socre[1], stuList[i].socre[2]);
}
}
void input(student stuList[5]){
int i;
for(i=0;i<5;i++){
scanf("%d %s %f %f %f", &stuList[i].num, stuList[i].name, &stuList[i].socre[0],
&stuList[i].socre[1], &stuList[i].socre[2]);
}
}
int main(){
student stuList[5];//定义了一个结构体数组里面可以容纳5个结构体变量
input(stuList);
output(stuList);
return 0;
}
@@ -0,0 +1,13 @@
#include <stdio.h>
typedef struct score{
float medScore;
float endScore;
}score;
int main(){
score s;
scanf("%f %f", &s.medScore, &s.endScore);
printf("avg=%.2f\n", (s.medScore + s.endScore)/2);
return 0;
}
@@ -0,0 +1,18 @@
#include <stdio.h>
int main(){
FILE *in, *out;
char str[100];
in = fopen("file1.c", "r");//r:只读
out = fopen("file2.c", "w");//w:覆盖
while(fgets(str, 100, in)){//fgets每次从文件获取一行并存储到str中
puts(str);//使用控制台输出
fputs(str, out);//向file2.c输出
}
fclose(in);//关闭文件指针
fclose(out);
return 0;
}
@@ -0,0 +1,19 @@
#include <stdio.h>
int main(){
FILE *fp;
char ch;
int count=0;
fp = fopen("letter.txt", "r");
while((ch=fgetc(fp)) != EOF){
if(ch == 'c'){
count++;
}
}
printf("c个数为:%d\n", count);
fclose(fp);//关闭文件指针
return 0;
}
@@ -0,0 +1,20 @@
#include <stdio.h>
int main(){
char str[100];
char *p = str;
FILE *fp;
fp = fopen("test.dat", "w");
gets(str);
while(*p != '\0'){
if(*p >= 'a' && *p <= 'z'){
*p-=32;
}
p++;
}
fputs(str, fp);
fclose(fp);
return 0;
}
@@ -1,5 +1,9 @@
#include <stdio.h> #include <stdio.h>
int main(){ int main(){
return 0; return 0;
} }
+9
View File
@@ -0,0 +1,9 @@
#include <stdio.h>
int main(){
return 0;
}
@@ -0,0 +1 @@
ccadfadsfasfadsfafa
+1
View File
@@ -0,0 +1 @@
ADFADFAAAFDAFDSFSDF
File diff suppressed because it is too large Load Diff
+101 -2
View File
@@ -1,29 +1,128 @@
1.输入一小写字母,分别以字符形式与数值形式输出与该小写字母相应的大写字母 1.输入一小写字母,分别以字符形式与数值形式输出与该小写字母相应的大写字母
```c
#include <stdio.h>
#include <ctype.h>
/*
1.输入一小写字母,分别以字符形式与数值形式输出
与该小写字母相应的大写字母
*/
int main(void){
char ch;//数据类型 变量名; 规定了变量的存储数据类型
//scanf("%c", &ch);//scanf(输入的格式, 地址1, 地址2)
//将占位符的格式从控制台存储到指定的内存地址
//%c 字符型 %d整型 %u 无符号整型 %f 单精度浮点型 %lf双精度浮点型 %s 字符串
ch = getchar();//getchar()用于从控制台读取单个字符 并返回该字符
//printf("%d %c\n", ch-32, ch-32);//A-65 a-97 差值32
printf("%d %c\n", toupper(ch), toupper(ch));//toupper用于将字符转换成大写字符
return 0;
}
```
2.输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32) 2.输入一个华氏温度,要求输出摄氏温度。公式为c=5/9*(f-32)
```c
#include <stdio.h>
int main(void){
float f, c;
scanf("%f", &f);
//c = 5.0/9*(f-32);
c = (double)5/9*(f-32);
printf("%f\n", c);
return 0;
}
```
3.写一个程序,输入实数X,输出Y,计算<img src="https://yp.smallkun.cn/markdown/image-20250116004443767.png!compress" alt="image-20250116004443767" style="zoom:33%;" /> 3.写一个程序,输入实数X,输出Y,计算<img src="https://yp.smallkun.cn/markdown/image-20250116004443767.png!compress" alt="image-20250116004443767" style="zoom:33%;" />
```c
#include <stdio.h>
int main(){
float x, y;
scanf("%f", &x);
y = 3*x*x*x+0.4*x*x-2*x/3;
printf("y=%.2f\n", y);
return 0;
}
```
4.编写程序:读入三个整数a,b,c,然后交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。 4.编写程序:读入三个整数a,b,c,然后交换它们中的数,使a存放b的值,b存放c的值,c存放a的值。
```c
#include <stdio.h>
/*
4.编写程序:读入三个整数a,b,c,然后交换它们中的数,
使a存放b的值,b存放c的值,c存放a的值。
*/
int main(){
int a, b, c, temp;
scanf("%d %d %d", &a, &b, &c);
temp = a;
a = b;
b = c;
c = temp;
printf("%d %d %d\n", a, b, c);
return 0;
}
```
5.编写程序:输入9时23分并把它化为分钟后输出。(从零点整开始计算)。 5.编写程序:输入9时23分并把它化为分钟后输出。(从零点整开始计算)。
```C
#include <stdio.h>
int main(){
int h, m;
scanf("%d时%d分", &h, &m);
printf("%d分钟\n", h*60+m);
return 0;
}
```
6.要将“China”翻译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“ A”后面的4个字母是“E”,用“E”代替“A”。因此,“Chian”应译成“Glmre”。用赋初值的方法 是c1,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、 c3、c4、c5分别为‘G’、‘l’、‘m’、‘r’、‘e’,并输出
```c
#include <stdio.h>
6.要将“Chiina”翻译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“ A”后面的4个字母是“E”,用“E”代替“A”。因此,“Chian”应译成“Glmre”。用赋初值的方法 是c1,c2,c3,c4,c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、 c3、c4、c5分别为‘G’、‘l’、‘m’、‘r’、‘e’,并输出 int main(){
char c1, c2, c3, c4, c5;
c1='C';
c2='h';
c3='i';
c4='n';
c5='a';
printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5);
c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;
printf("%c%c%c%c%c\n", c1, c2, c3, c4, c5);
return 0;
}
```
7.编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和prinf函数输出这两个字符以 及它们的ASCII值。 7.编写程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和prinf函数输出这两个字符以 及它们的ASCII值。
```c
#include <stdio.h>
int main(void){
char c1, c2;
c1=getchar();
c2=getchar();
putchar(c1);
printf(" %d\n", c1);
putchar(c2);
printf(" %d\n", c2);
return 0;
}
```
8.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积 8.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积
@@ -652,6 +652,41 @@ int main(){
## 七、结构体与共用体 ## 七、结构体与共用体
1.定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。按结构体类型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,然后逐个输出这些元素的数据(可设数组只有三个元素)。 1.定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。按结构体类型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,然后逐个输出这些元素的数据(可设数组只有三个元素)。
```c
/*
1.定义一个结构体其中包括: 职工号、职工名、性别、年龄、工资、地址。
按结构体类型定义一个结构体数组, 从键盘输入每个结构体元素所需的数据,
然后逐个输出这些元素的数据(可设数组只有三个元素)。
*/
#include <stdio.h>
typedef struct employee{
int eno;//职工号
char ename[20];//职工名
char sex[2];//性别
int age;//年龄
double salary;//薪资
char addres[20];//地址
}employee;
int mian(){
employee eList[3];//使用员工的结构体类型 定义了一个可以容纳三个元素的数组
int i;
//1.数组名[下标].成员变量名
//2.*(数组名+下标).成员变量名
//3.(数组名+下标)->成员变量名
for(i=0;i<3;i++){
scanf("%d %s", &(eList+i)->eno, (eList+i)->ename);
}
printf("----------------\n");
for(i=0;i<3;i++){
printf("%d %s\n", (eList+i)->eno, (eList+i)->ename);
}
return 0;
}
```
2.有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据,希望输入后按书名的字母顺序将各书的记录排列好,供以后查询。今输入一本书的书名,如果查询到库中有此书,打印出此书的书名,作者,编号和出版日期。如果查不到此书,则打印出“无此书”。 2.有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据,希望输入后按书名的字母顺序将各书的记录排列好,供以后查询。今输入一本书的书名,如果查询到库中有此书,打印出此书的书名,作者,编号和出版日期。如果查不到此书,则打印出“无此书”。
File diff suppressed because one or more lines are too long
+3
View File
@@ -15,6 +15,9 @@ CREATE TABLE 表名(
[ZEROFILL] DEFAULT COMMENT , [ZEROFILL] DEFAULT COMMENT ,
[ZEROFILL] DEFAULT COMMENT [ZEROFILL] DEFAULT COMMENT
); );
#
INSERT INTO (1, 2)
VALUES(1, 2);
# #
DROP TABLE ; DROP TABLE ;
# #
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,651 @@
### 练习一
![image-20250315225248590](https://yp.smallkun.cn/markdown/image-20250315225248590.png!compress)
```sql
#(1)
CREATE DATABASE test04_Market DEFAULT CHARACTER SET utf8;
USE test04_Market;
#(2)
CREATE TABLE customers(
c_num INT(11) PRIMARY KEY AUTO_INCREMENT,
c_name VARCHAR(50),
c_contact VARCHAR(50),
c_city VARCHAR(50),
c_birth DATETIME NOT NULL
);
#(3)
#AFTER/BEFORE /
ALTER TABLE MODIFY AFTER/BEFORE ;
ALTER TABLE customers MODIFY c_contact VARCHAR(50) AFTER c_birth;
#(4)
ALTER TABLE customers MODIFY c_name VARCHAR(70);
#(5)
ALTER TABLE customers CHANGE c_contact c_phone VARCHAR(50);
#(6)
ALTER TABLE customers ADD c_gender CHAR(1);
#(7)
ALTER TABLE customers RENAME TO customers_info;
#(8)
ALTER TABLE customers_info DROP c_city;
```
![image-20250315225304324](https://yp.smallkun.cn/markdown/image-20250315225304324.png!compress)
```sql
#(1)
CREATE TABLE orders(
o_num INT(11) PRIMARY KEY AUTO_INCREMENT,
o_date DATE,
c_id INT(11),
CONSTRAINT fk_cid FOREIGN KEY(c_id) REFERENCES customers_info(c_num)
);
#(2)
#
ALTER TABLE orders DROP FOREIGN KEY orders_ibfk_1;
#
DROP TABLE orders;
```
---
### 练习二
![image-20250315225318753](https://yp.smallkun.cn/markdown/image-20250315225318753.png!compress)
![image-20250315225328264](https://yp.smallkun.cn/markdown/image-20250315225328264.png!compress)
```sql
#(1)
CREATE TABLE pet(
`name` VARCHAR(20) NOT NULL COMMENT '宠物名称',
`owner` VARCHAR(20) COMMENT '宠物主人',
species VARCHAR(20) NOT NULL COMMENT '种类',
sex CHAR(1) NOT NULL COMMENT '性别',
birth YEAR NOT NULL COMMENT '出生日期',
death YEAR COMMENT '死亡日期'
);
INSERT INTO pet()
VALUES
('Fluffy', 'Harold', 'cat', 'f', 2003, 2010),
('Claws', 'Gwen', 'cat', 'm', 2004,NULL ),
('Buffy', NULL, 'dog', 'f', 2009, NULL),
('Fang', 'Benny', 'dog', 'm', 2000, NULL),
('Bowser', 'Diane', 'dog', 'm', 2003, 2009),
('Chirpy', NULL, 'bird', 'f', 2008, NULL);
#(2)
UPDATE pet
SET `owner` = 'Kevin'
WHERE `name` = 'Fang';
#(3)
UPDATE pet
SET `owner` = 'Kevin'
WHERE `owner` IS NULL;
#(4)
DELETE FROM pet
WHERE death IS NOT NULL;
#(5)
TRUNCATE pet;
```
---
### 练习三
![image-20250315225417117](https://yp.smallkun.cn/markdown/image-20250315225417117.png!compress)
![image-20250315225431297](https://yp.smallkun.cn/markdown/image-20250315225431297.png!compress)
```sql
#1.
CREATE DATABASE test_compay DEFAULT CHARACTER SET utf8;
#2.
CREATE TABLE department(
depid INT PRIMARY KEY AUTO_INCREMENT,
depname VARCHAR(20) NOT NULL,
deinfo VARCHAR(50)
);
CREATE TABLE employee(
empid INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
sex CHAR(1) NOT NULL DEFAULT '',
title VARCHAR(20) NOT NULL,
birthday DATE NOT NULL,
depid INT,
CONSTRAINT fk_eid_did FOREIGN KEY(depid) REFERENCES department(depid)
);
CREATE TABLE salary(
empid INT,
basesalary DECIMAL(10, 2),
titleSalary DECIMAL(10, 2),
decuction DECIMAL(10, 2)
);
#3
ALTER TABLE salary ADD CONSTRAINT fk_sal_eid FOREIGN KEY(empid)
REFERENCES employee(empid) ON UPDATE CASCADE ON DELETE CASCADE;
#4
INSERT INTO department (depid, depname, deinfo)
VALUES
(111, '生产部', NULL),
(222, '销售部', NULL),
(333, '人事部', NULL),
(444, '财务部', '负责公司财务管理'),
(555, '技术部', '负责技术研发与支持'),
(666, '市场部', '负责市场推广与品牌建设'),
(777, '客服部', '负责客户服务与支持'),
(888, '采购部', '负责公司物资采购'),
(999, '法务部', '负责公司法律事务'),
(1010, '行政部', '负责公司日常行政管理'),
(1011, '研发部', '负责新产品研发'),
(1012, '培训部', '负责员工培训与发展');
INSERT INTO employee (empid, name, sex, title, birthday, depid)
VALUES
(1001, '张三', '', '高级工程师', '1975-1-1', 111),
(1002, '李四', '', '助工', '1985-1-1', 111),
(1003, '王五', '', '工程师', '1978-11-11', 222),
(1004, '赵六', '', '工程师', '1999-1-1', 222),
(1005, '陈七', '', '会计师', '1980-5-15', 444),
(1006, '刘八', '', '软件工程师', '1990-8-20', 555),
(1007, '孙九', '', '市场经理', '1985-12-25', 666),
(1008, '周十', '', '客服专员', '1992-3-10', 777),
(1009, '吴十一', '', '采购经理', '1988-7-22', 888),
(1010, '郑十二', '', '法务顾问', '1983-9-30', 999),
(1011, '王十三', '', '行政助理', '1995-4-18', 1010),
(1012, '李十四', '', '研发工程师', '1991-11-5', 1011),
(1013, '赵十五', '', '培训讲师', '1987-6-12', 1012),
(1014, '孙十六', '', '技术支持', '1993-2-14', 555),
(1015, '杨十七', '', '销售代表', '1994-8-8', 222);
INSERT INTO salary (empid, basesalary, titleSalary, decuction)
VALUES
(1001, 2200, 1100, 200),
(1002, 1200, 200, NULL),
(1003, 2900, 700, 200),
(1004, 1950, 700, 150),
(1005, 2500, 800, 100),
(1006, 3000, 1200, 250),
(1007, 2800, 1000, 200),
(1008, 1800, 300, 50),
(1009, 3200, 900, 300),
(1010, 3500, 1000, 400),
(1011, 2000, 400, 100),
(1012, 3100, 1100, 200),
(1013, 2700, 800, 150),
(1014, 2300, 700, 100),
(1015, 2600, 600, 200);
```
![image-20250315225441802](https://yp.smallkun.cn/markdown/image-20250315225441802.png!compress)
```sql
#5
SELECT e.empid, e.`name`, e.title, d.depname, s.basesalary + s.titleSalary, s.basesalary + s.titleSalary-IFNULL(s.decuction, 0)
FROM employee e, department d, salary s
WHERE e.depid = d.depid AND e.empid = s.empid;
#6
SELECT e.`name`, s.basesalary
FROM employee e, department d, salary s
WHERE e.depid = d.depid AND e.empid = s.empid AND d.depname = '销售部';
#7
SELECT *
FROM employee e
WHERe e.`name` LIKE '张%' AND TIMESTAMPDIFF(YEAR,e.birthday, NOW()) < 40;
#8
SELECT e.`name`, s.basesalary, s.titleSalary
FROM employee e, salary s
WHERE e.sex = '' AND e.empid AND s.empid;
#9
SELECT e.`name`, e.title, d.depname
FROM employee e, department d, salary s
WHERE e.depid = d.depid AND e.empid = s.empid AND s.basesalary < 2000;
#10
SELECT COUNT(*)
FROM employee;
#11
SELECT COUNT(*)
FROM department d;
#12
SELECT AVG(s.basesalary + s.titleSalary), MAX(s.basesalary + s.titleSalary), MIN(s.basesalary + s.titleSalary)
FROM employee e, salary s
WHERE e.empid = s.empid;
#13
SELECT d.depname, AVG(s.basesalary + s.titleSalary)
FROM employee e, salary s, department d
WHERE e.empid = s.empid AND e.depid = d.depid
GROUP BY d.depid;
#14
SELECT d.depname, AVG(s.basesalary + s.titleSalary) avg
FROM employee e, salary s, department d
WHERE e.empid = s.empid AND e.depid = d.depid
GROUP BY d.depid
HAVING avg<2000;
#15
SELECT e.empid, e.`name`, s.basesalary, s.titleSalary, s.decuction
FROM employee e, salary s, department d
WHERE e.empid = s.empid AND e.depid = d.depid
ORDER BY s.titleSalary, s.basesalary;
#16
SELECT e.empid, e.`name`, e.birthday,
IF(YEAR(e.birthday) < 1980, '老年',
IF(YEAR(e.birthday)< 1990, '中年', '青壮年'))
FROM employee e;
#17
SELECT e.*, depname
FROM employee e, department d
WHERE e.depid = d.depid;
#18
SELECT d.*, e.*
FROM employee e, department d
WHERE e.depid = d.depid;
#19
SELECT *
FROM employee e
WHERE e.title LIKE '%工程师%' AND e.sex = '';
#20
SELECT d.depname, e.sex, COUNT(*), AVG(s.basesalary)
FROM employee e, department d, salary s
WHERE e.depid = d.depid AND e.empid = s.empid
GROUP BY d.depid, e.sex;
```
---
### 练习四
![image-20250315225803115](https://yp.smallkun.cn/markdown/image-20250315225803115.png!compress)
![image-20250315225818026](https://yp.smallkun.cn/markdown/image-20250315225818026.png!compress)
```sql
#1
CREATE DATABASE test_school DEFAULT CHARACTER SET 'UTF8';
#2
DROP TABLE department;
CREATE TABLE department(
depNo INT(10) PRIMARY KEY COMMENT '部门号',
depName VARCHAR(50) NOT NULL COMMENT '部门名称',
depNote VARCHAR(20) COMMENT '部门备注'
);
CREATE TABLE teacher(
number INT PRIMARY KEY COMMENT '教工号',
`name` VARCHAR(30) NOT NULL COMMENT '姓名',
sex VARCHAR(4) COMMENT '性别',
birth DATE COMMENT '出生日期',
depNo INT COMMENT '部门号',
salary FLOAT COMMENT '工资',
address VARCHAR(100) COMMENT '家庭住址'
);
INSERT INTO department()
VALUES
(601, '软件技术系', '软件技术等专业'),
(602, '网络技术系', '多媒体技术等专业'),
(603, '艺术设计系', '广告艺术设计等专业'),
(604, '管理工程系', '连锁经营管理等专业');
INSERT INTO teacher()
VALUES
(2001, 'Tom', '', '1970-01-10', 602, 4500, '四川省绵阳市'),
(2002, 'Lucy', '', '1983-12-18', 601, 2500, '北京市昌平区'),
(2003, 'Mike', '', '1990-06-01', 604, 1500, '重庆市渝中区'),
(2004, 'James', '', '1980-10-20', 602, 3500, '四川省成都市'),
(2005, 'Jack', '', '1975-05-30', 603, 1200, '重庆市南岸区');
```
![image-20250315225829272](https://yp.smallkun.cn/markdown/image-20250315225829272.png!compress)
```sql
#4
SELECT *
FROM teacher;
#5
SELECT t.number '教工号', d.depName '部门名称'
FROM teacher t, department d
WHERE t.depNo = d.depNo AND t.address LIKE '%北京%';
#6
SELECT t.number, t.`name`
FROM teacher t
ORDER BY t.salary DESC
LIMIT 1;
#7
SELECT t.number, t.`name`
FROM teacher t
WHERE t.salary BETWEEN 2500 AND 4000;
#8
SELECT t.`name`, t.sex, t.salary
FROM teacher t, department d
WHERE t.depNo = d.depNo AND d.depName = '网络技术系';
```
---
### 练习五
![image-20250315230015174](https://yp.smallkun.cn/markdown/image-20250315230015174.png!compress)
```sql
-- 创建数据库并设置字符集为 utf8mb4
CREATE DATABASE test_student CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE test_student;
-- 创建表 Classes
CREATE TABLE Classes (
VARCHAR(50),
VARCHAR(50),
VARCHAR(50),
VARCHAR(10),
INT
);
-- 向表 Classes 插入数据
INSERT INTO Classes (, , , , ) VALUES
('计算机网络', '1班', '张三', '', 8),
('软件工程', '2班', '李四', '', 12),
('计算机维护', '1班', '王五', '', 9),
('计算机网络', '2班', 'LILY', '', 15),
('软件工程', '1班', '小强', '', 20),
('计算机维护', '1班', 'CoCo', '', 18);
-- 创建表 Score
CREATE TABLE Score (
VARCHAR(50),
INT,
INT,
INT
);
-- 向表 Score 插入数据
INSERT INTO Score (, , , ) VALUES
('张三', 65, 75, 98),
('李四', 87, 45, 86),
('王五', 98, 85, 65),
('LILY', 75, 86, 87),
('小强', 85, 60, 58),
('CoCo', 96, 87, 70);
-- 创建表 Records
CREATE TABLE Records (
VARCHAR(50),
VARCHAR(50)
);
-- 向表 Records 插入数据
INSERT INTO Records (, ) VALUES
('小强', '迟到'),
('小强', '事假'),
('李四', '旷课'),
('李四', '旷课'),
('李四', '迟到'),
('CoCo', '病假'),
('LILY', '事假');
```
![image-20250315230025538](https://yp.smallkun.cn/markdown/image-20250315230025538.png!compress)
```sql
#3
UPDATE score s
SET s.`` = 88
WHERE s.`` = '张三';
#4
SELECT AVG(s.``), AVG(s.``), AVG(s.``)
FROM classes c, score s
WHERE c.`` = s.`` AND c.`` = 1 AND c.`` = '计算机维护';
#5
SELECT *
FROM score s
WHERE s.`` < 60 OR s.`` < 60 OR s.`` < 60;
#6
SELECT *
FROM score s
WHERE s.`` IN (
SELECT r.``
FROM records r
GROUP BY r.``
HAVING COUNT(*) > 2
);
```
---
### 练习六
![image-20250315230057816](https://yp.smallkun.cn/markdown/image-20250315230057816.png!compress)
```sql
-- 创建数据库 test_xuankedb 并设置字符集为 utf8mb4
CREATE DATABASE test_xuankedb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE test_xuankedb;
-- 创建学生表 Student
CREATE TABLE Student (
Sn0 VARCHAR(20) PRIMARY KEY, -- 学号,主键
Sname VARCHAR(50), -- 姓名
Ssex VARCHAR(10), -- 性别
Sage INT, -- 年龄
Sdept VARCHAR(50) -- 所在系
);
-- 创建课程表 Course
CREATE TABLE Course (
Cn0 VARCHAR(20) PRIMARY KEY, -- 课程号,主键
Cname VARCHAR(100), -- 课程名
Cpn0 VARCHAR(20), -- 选修课号
Ccredit INT -- 学分
);
-- 创建成绩表 SG
CREATE TABLE SG (
Sn0 VARCHAR(20), -- 学号
Cn0 VARCHAR(20), -- 课程号
Grade INT, -- 成绩
PRIMARY KEY (Sn0, Cn0), -- 复合主键 (学号, 课程号)
FOREIGN KEY (Sn0) REFERENCES Student(Sn0), -- 外键,引用 Student 表
FOREIGN KEY (Cn0) REFERENCES Course(Cn0) -- 外键,引用 Course 表
);
INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept, Scome) VALUES
('05001', '张三', '', 20, '计算机系', '2021-09-01'),
('05002', '李四', '', 21, '数学系', '2021-09-01'),
('05003', '王五', '', 22, '计算机系', '2021-09-01'),
('05004', '李洋', '', 19, '物理系', '2021-09-01'),
('05019', '赵六', '', 20, '计算机系', '2021-09-01');
INSERT INTO Course (Cno, Cname, Cpno, Ccredit) VALUES
('1', '数据库', NULL, 4),
('2', '数学', NULL, 3),
('3', '物理', NULL, 3),
('4', '操作系统', '1', 4);
INSERT INTO SG (Sno, Cno, Grade) VALUES
('05001', '1', 85),
('05001', '2', 90),
('05002', '1', 78),
('05002', '3', 88),
('05003', '1', 92),
('05003', '4', 76),
('05004', '3', 95),
('05019', '1', 80),
('05019', '4', 85);
```
---
### 练习七
![image-20250315230113710](https://yp.smallkun.cn/markdown/image-20250315230113710.png!compress)
![image-20250315230128412](https://yp.smallkun.cn/markdown/image-20250315230128412.png!compress)
```sql
-- 创建数据库 test_library 并设置字符集为 utf8mb4
CREATE DATABASE test_library CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE test_library;
-- 创建表 press(出版社)
CREATE TABLE press (
pressid INT PRIMARY KEY, -- 出版社编号,主键
pressname VARCHAR(100), -- 出版社名称
address VARCHAR(100) -- 出版社地址
);
-- 创建表 sort(种类)
CREATE TABLE sort (
sortno INT PRIMARY KEY, -- 种类编号,主键
scount INT, -- 数量
describes VARCHAR(100) -- 描述
);
-- 创建表 book(图书)
CREATE TABLE book (
bid INT PRIMARY KEY, -- 图书编号,主键
bname VARCHAR(100), -- 图书名称
bsortno INT, -- 种类编号
pressid INT, -- 出版社编号
FOREIGN KEY (bsortno) REFERENCES sort(sortno), -- 外键,引用 sort 表
FOREIGN KEY (pressid) REFERENCES press(pressid) -- 外键,引用 press 表
);
-- 向 press 表插入数据
INSERT INTO press (pressid, pressname, address) VALUES
(100, '外研社', '上海'),
(101, '北大出版社', '北京'),
(102, '教育出版社', '北京');
-- 向 sort 表插入数据
INSERT INTO sort (sortno, scount, describes) VALUES
(11, 50, '小说'),
(12, 100, '科幻'),
(13, 100, '神话');
-- 向 book 表插入数据
INSERT INTO book (bid, bname, bsortno, pressid) VALUES
(1, '红与黑', 11, 100),
(2, '幻城', 12, 102),
(3, '希腊神话', 13, 102);
#5
SELECT b.*
FROM book b, press p
WHERE p.pressid = b.pressid AND p.pressid = 100;
#6
SELECT b.*
FROM book b, press p
WHERE p.pressid = b.pressid AND p.pressname = '外研社';
#7
SELECT *
FROM sort s
WHERE s.scount > 100;
#8
SELECT p.*
FROM book b, press p
WHERE p.pressid = b.pressid
GROUP BY b.pressid
HAVING COUNT(*) = (
SELECT COUNT(*)
FROM book b, press p
WHERE p.pressid = b.pressid
GROUP BY b.pressid
ORDER BY COUNT(*) DESC
LIMIT 1
);
```
---
### 练习八
![image-20250315230214156](https://yp.smallkun.cn/markdown/image-20250315230214156.png!compress)
![image-20250315230227129](https://yp.smallkun.cn/markdown/image-20250315230227129.png!compress)
```sql
-- 创建数据库 test_tour 并设置字符集为 utf8mb4
CREATE DATABASE test_tour CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE test_tour;
-- 创建表 agency(旅行社表)
CREATE TABLE agency (
id INT PRIMARY KEY, -- 旅行社编号,主键
name VARCHAR(100) NOT NULL, -- 旅行社名
address VARCHAR(100) NOT NULL, -- 旅行社地址
areaid INT -- 所属区域编号
);
-- 创建表 travel(旅行线路表)
CREATE TABLE travel (
tid INT PRIMARY KEY, -- 旅行线路编号,主键
time VARCHAR(50) NOT NULL, -- 所需时间
position VARCHAR(100) NOT NULL, -- 目的地
money FLOAT, -- 花费
aid INT NOT NULL, -- 所属旅行社编号
count INT, -- 报名人数
FOREIGN KEY (aid) REFERENCES agency(id) -- 外键,引用 agency 表
);
-- 向 agency 表插入数据
INSERT INTO agency (id, name, address) VALUES
(101, '青年旅行社', '北京海淀'),
(102, '天天旅行社', '天津海院');
-- 向 travel 表插入数据
INSERT INTO travel (tid, time, position, money, aid, count) VALUES
(1, '5天', '八达岭', 3000, 101, 10),
(2, '7天', '水长城', 5000, 101, 14),
(3, '8天', '水长城', 6000, 102, 11);
#4
SELECT a.*
FROM travel t, agency a
WHERE t.aid =a.id
GROUP BY a.id
HAVING COUNT(*) = (
SELECT COUNT(*)
FROM travel t, agency a
WHERE t.aid =a.id
GROUP BY a.id
ORDER BY COUNT(*) DESC
LIMIT 1
);
#5
SELECT t.*
FROM travel t
WHERE t.count = (
SELECT t.count
FROM travel t
ORDER BY t.count DESC
LIMIT 1
);
#6
SELECT *
FROM travel t
WHERE t.money < 5000;
#7
SELECT a.`name`
FROM travel t, agency a
WHERE t.aid =a.id AND t.money = (
SELECT t.money
FROM travel t, agency a
WHERE t.aid =a.id
ORDER BY t.money DESC
LIMIT 1
);
#8
SELECT SUM(t.time)
FROM travel t, agency a
WHERE t.aid =a.id AND a.`name` = '青年旅行社';
```
+603
View File
@@ -0,0 +1,603 @@
### 1. 数据库表
1. 学生表:students (id, name, birth, gender) --> (学号, 学生姓名, 出生年月, 性别)
2. 教师表:teachers (id, name) --> (教师号, 教师姓名)
3. 课程表:courses (id, name, teacher_id) --> (课程号, 课程名称, 教师号)
4. 成绩表:scores (student_id, course_id, score) --> (学号, 课程号, 成绩)
### 2. 创建数据库表
```sql
CREATE TABLE students (
id VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL,
birth DATE NOT NULL,
gender VARCHAR(20) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE teachers (
id VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE courses (
id VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL,
teacher_id VARCHAR(20) NOT NULL,
FOREIGN KEY(teacher_id) REFERENCES teachers(id),
PRIMARY KEY(id)
);
CREATE TABLE scores (
student_id VARCHAR(20) NOT NULL,
course_id VARCHAR(20) NOT NULL,
score FLOAT(3) NOT NULL,
FOREIGN KEY(student_id) REFERENCES students(id),
FOREIGN KEY(course_id) REFERENCES courses(id)
);
insert into students values('01', '赵雷', '1990-01-01', '');
insert into students values('02', '钱电', '1990-12-21', '');
insert into students values('03', '孙风', '1990-05-20', '');
insert into students values('04', '李云', '1990-08-06', '');
insert into students values('05', '周梅', '1991-12-01', '');
insert into students values('06', '吴兰', '1992-03-01', '');
insert into students values('07', '郑竹', '1989-07-01', '');
insert into students values('08', '王菊', '1990-01-20', '');
insert into teachers values('01', '张三');
insert into teachers values('02', '李四');
insert into teachers values('03', '王五');
insert into courses values('01', '语文', '02');
insert into courses values('02', '数学', '01');
insert into courses values('03', '英语', '03');
insert into scores values('01', '01', 80);
insert into scores values('01', '02', 90);
insert into scores values('01', '03', 99);
insert into scores values('02', '01', 70);
insert into scores values('02', '02', 60);
insert into scores values('02', '03', 80);
insert into scores values('03', '01', 80);
insert into scores values('03', '02', 80);
insert into scores values('03', '03', 80);
insert into scores values('04', '01', 50);
insert into scores values('04', '02', 30);
insert into scores values('04', '03', 20);
insert into scores values('05', '01', 76);
insert into scores values('05', '02', 87);
insert into scores values('06', '01', 31);
insert into scores values('06', '03', 34);
insert into scores values('07', '02', 89);
insert into scores values('07', '03', 98);
```
练习题
1.查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数
1.1查询同时存在" 01 "课程和" 02 "课程的情况
1.2查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
1.3查询不存在" 01 "课程但存在" 02 "课程的情况
2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
3.查询在 scores 表存在成绩的学生信息
4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null )
4.1查有成绩的学生信息
5.查询「李」姓老师的数量
6.查询学过「张三」老师授课的同学的信息
7.查询没有学全所有课程的同学的信息
8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息
9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息
10.查询没学过"张三"老师讲授的任一门课程的学生姓名
11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
12.检索" 01 "课程分数小于 60,按分数降序排列的学生信息
13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
14.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率;(及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺
15.1按各科成绩进行排序,并显示排名, Score 重复时合并名次
16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺
16.1查询学生的总成绩,并进行排名,总分重复时不保留名次空缺
17.统计各科成绩各分数段人数:课程编号,课程名称,[100-85][85-70][70-60][60-0] 及所占百分比
18.查询各科成绩前三名的记录
19.查询每门课程被选修的学生数
20.查询出只选修两门课程的学生学号和姓名
21.查询男生、女生人数
22.查询名字中含有「风」字的学生信息
23.查询同名同性学生名单,并统计同名人数
24.查询 1990 年出生的学生名单
25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数
28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
30.查询不及格的课程
31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名
32.求每门课程的学生人数
33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩
35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
36.查询每门课成绩最好的前两名
37.统计每门课程的学生选修人数(超过 5 人的课程才统计)
38.检索至少选修两门课程的学生学号
39.查询选修了全部课程的学生信息
40.查询各学生的年龄,只按年份来算
41.查询各学生的年龄,按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
42.查询本周过生日的学生
43.查询下周过生日的学生
44.查询本月过生日的学生
45.查询下月过生日的学生
```sql
#1." 01 "" 02 "
SELECT st.*, c1.score '01课程', c2.score '02课程'
FROM students st, (
SELECT sc1.student_id, sc1.score
FROM scores sc1
WHERE sc1.course_id = '01'
)c1,
(
SELECT sc2.student_id, sc2.score
FROM scores sc2
WHERE sc2.course_id = '02'
)c2
WHERE st.id = c1.student_id AND st.id = c2.student_id AND c1.score > c2.score;
#1.1" 01 "" 02 "
SELECT st.*, c1.score '01课程', c2.score '02课程'
FROM students st, (
SELECT sc1.student_id, sc1.score
FROM scores sc1
WHERE sc1.course_id = '01'
)c1,
(
SELECT sc2.student_id, sc2.score
FROM scores sc2
WHERE sc2.course_id = '02'
)c2
WHERE st.id = c1.student_id AND st.id = c2.student_id;
#1.2" 01 "" 02 "( null )
SELECT st.*, c1.score '01课程', c2.score '02课程'
FROM students st
LEFT JOIN
(
SELECT sc1.student_id, sc1.score
FROM scores sc1
WHERE sc1.course_id = '01'
)c1 ON st.id = c1.student_id
LEFT JOIN
(
SELECT sc2.student_id, sc2.score
FROM scores sc2
WHERE sc2.course_id = '02'
)c2 ON st.id = c2.student_id
WHERE c1.score IS NOT NULL;
#1.3" 01 "" 02 "
SELECT st.*, c1.score '01课程', c2.score '02课程'
FROM students st
LEFT JOIN
(
SELECT sc1.student_id, sc1.score
FROM scores sc1
WHERE sc1.course_id = '01'
)c1 ON st.id = c1.student_id
LEFT JOIN
(
SELECT sc2.student_id, sc2.score
FROM scores sc2
WHERE sc2.course_id = '02'
)c2 ON st.id = c2.student_id
WHERE c1.score IS NULL AND c2.score IS NOT NULL;
#2. 60
SELECT st.`name`, AVG(sc.score)
FROM students st, scores sc
WHERE st.id = sc.student_id
GROUP BY st.id
HAVING AVG(sc.score) > 60;
#3. scores
SELECT *
FROM students
WHERE students.id IN (
SELECT student_id
FROM scores
);
#4.( null )
SELECT st.id, st.`name`, COUNT(*), SUM(sc.score)
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
GROUP BY st.id;
#4.1
SELECT st.id, st.`name`, COUNT(*), SUM(sc.score)
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
WHERE sc.score IS NOT NULL
GROUP BY st.id;
#5.
SELECT COUNT(*)
FROM teachers t
WHERE t.`name` LIKE '李%';
#6.
SELECT DISTINCT st.*
FROM students st, scores sc
WHERE st.id = sc.student_id AND sc.course_id = (
SELECT c.id
FROM courses c, teachers t
WHERE c.teacher_id = t.id AND t.`name` = '张三'
);
#7.
SELECT st.*
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
LEFT JOIN courses c ON sc.course_id = c.id
GROUP BY st.id
HAVING COUNT(*) < 3;
#8." 01 "
SELECT st.*
FROM students st, scores sc
WHERE st.id = sc.student_id AND st.id <> '01' AND sc.course_id IN(
SELECT course_id
FROM scores s
WHERE s.student_id = '01'
);
#9." 01 "
SELECT st.*
FROM students st, scores sc
WHERE st.id = sc.student_id AND sc.course_id AND st.id <> '01'
GROUP BY st.id
HAVING GROUP_CONCAT(sc.course_id) = (
SELECT GROUP_CONCAT(c.course_id)
FROM scores c
WHERE c.student_id = '01'
);
#10."张三"
SELECT s.`name`
FROM students s
WHERE s.id NOT IN (
SELECT st.id
FROM teachers t, courses c, students st, scores sc
WHERE t.id = c.teacher_id AND t.`name` = '张三' AND st.id = sc.student_id AND sc.course_id = c.id
);
#11.
SELECT sc.student_id, st.`name`,AVG(sc.score)
FROM scores sc, students st
WHERE sc.score < 60 AND sc.student_id = st.id
GROUP BY sc.student_id
HAVING COUNT(*) >= 2;
#12." 01 " 60
SELECT st.*
FROM scores sc, students st
WHERE sc.course_id = '01' AND sc.score < 60 AND sc.student_id = st.id
ORDER BY sc.score DESC;
#13.
SELECT c.`name`, AVG(sc.score)
FROM scores sc, courses c
WHERE sc.course_id = c.id
GROUP BY c.id
ORDER BY AVG(sc.score) DESC;
#14. ID name>=6070-8080-90>=90
SELECT c.id '课程ID', c.`name` '课程名称', MAX(s.score) '最高分', MIN(s.score) '最低分', ROUND(AVG(s.score), 1) '平均值',
s2.s1 '及格率', s2.s2 '中等率', s2.s3 '优良率', s2.s4 '优秀率'
FROM scores s, courses c,
(
SELECT s.course_id,
CONCAT(TRUNCATE(COUNT(IF(s.score >=60, TRUE, NULL))/sc.count*100,2), '%') s1,
CONCAT(TRUNCATE(COUNT(IF(s.score >=70 AND s.score < 80, TRUE, NULL))/sc.count*100,2), '%') s2,
CONCAT(TRUNCATE(COUNT(IF(s.score >=80 AND s.score < 90, TRUE, NULL))/sc.count*100,2), '%') s3,
CONCAT(TRUNCATE(COUNT(IF(s.score >=90, TRUE, NULL))/sc.count*100,2), '%') s4
FROM scores s, (
SELECT course_id, COUNT(*) count
FROM scores
GROUP BY course_id
) sc
WHERE s.course_id = sc.course_id
GROUP BY s.course_id
)s2
WHERE s.course_id = c.id AND c.id = s2.course_id
GROUP BY c.id;
#15. Score
#15.1 Score
#16.
#16.1
SELECT sc.`name`, sc.s, @rank:=@rank+1
FROM (
SELECT st.`name`, IFNULL(SUM(sc.score),0) s
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
GROUP BY st.id
ORDER BY s DESC
)sc, (SELECT @rank:=0) r;
#17.[100-85][85-70][70-60][60-0]
#18.
SELECT s1.sname, s1.cname, s1.score, s1.rank1
FROM (
SELECT st.`name` sname, c.`name` cname, sc.score, @rank1:=@rank1+1 rank1
FROM students st, scores sc, courses c, (SELECT @rank1:=0) r
WHERE st.id = sc.student_id AND c.id = sc.course_id AND course_id = '01'
ORDER BY sc.score DESC
LIMIT 3
)s1
UNION
SELECT s2.sname, s2.cname, s2.score, s2.rank1
FROM (
SELECT st.`name` sname, c.`name` cname, sc.score, @rank2:=@rank2+1 rank1
FROM students st, scores sc, courses c, (SELECT @rank2:=0) r
WHERE st.id = sc.student_id AND c.id = sc.course_id AND course_id = '02'
ORDER BY sc.score DESC
LIMIT 3
)s2
UNION
SELECT s3.sname, s3.cname, s3.score, s3.rank1
FROM (
SELECT st.`name` sname, c.`name` cname, sc.score, @rank3:=@rank3+1 rank1
FROM students st, scores sc, courses c, (SELECT @rank3:=0) r
WHERE st.id = sc.student_id AND c.id = sc.course_id AND course_id = '03'
ORDER BY sc.score DESC
LIMIT 3
)s3;
#19.
SELECT c.`name`, COUNT(*)
FROM courses c
LEFT JOIN scores sc ON sc.course_id = c.id
GROUP BY c.id;
#20.
SELECT st.id, st.`name`
FROM students st
WHERE (
SELECT COUNT(*)
FROM scores sc
WHERE sc.student_id = st.id
)=2;
#21.
SELECT st.gender, COUNT(*)
FROM students st
GROUP BY st.gender;
SELECT COUNT(IF(st.gender='', TRUE, NULL)) '男生人数',
COUNT(IF(st.gender='', TRUE, NULL)) '女生人数'
FROM students st;
#22.
SELECT *
FROM students st
WHERE st.`name` LIKE '%风%';
#23.
SELECT s.`name`, s.gender, COUNT(*)
FROM students s
GROUP BY s.`name`, s.gender
HAVING COUNT(*) > 1;
#24. 1990
SELECT *
FROM students s
WHERE YEAR(s.birth) = 1990;
#25.
SELECT c.`name`, AVG(s.score) avg
FROM scores s, courses c
WHERE s.course_id = c.id
GROUP BY c.id;
ORDER BY avg DESC, c.id;
#26. 85
SELECT st.id, st.`name`, AVG(sc.score) avg
FROM students st, scores sc
WHERE st.id = sc.student_id
GROUP BY st.id
HAVING avg>85;
#27. 60
SELECT st.`name`, sc.score
FROM students st, scores sc, courses c
WHERE st.id = sc.student_id AND sc.course_id = c.id
AND c.`name` = '数学' AND sc.score < 60;
#28.
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
LEFT JOIN courses c ON c.id = sc.course_id;
#29. 70
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
LEFT JOIN courses c ON c.id = sc.course_id
WHERE sc.score >= 70;
#30.
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
LEFT JOIN courses c ON c.id = sc.course_id
WHERE sc.score < 60;
#31. 01 80
SELECT st.`name` '学生姓名', c.`name` '课程名', sc.score
FROM students st
LEFT JOIN scores sc ON st.id = sc.student_id
LEFT JOIN courses c ON c.id = sc.course_id
WHERE sc.score > 80 AND c.id = '01';
#32.
SELECT c.`name`, COUNT(*)
FROM scores s, courses c
WHERE s.course_id = c.id
GROUP BY c.id;
#33.
SELECT st.`name`, sc.score
FROM students st, scores sc, courses c, teachers t
WHERE st.id = sc.student_id AND sc.course_id = c.id
AND c.teacher_id = t.id AND t.`name` = '张三'
ORDER BY sc.score DESC
LIMIT 1;
#34.
SELECT st.`name`, sc.score
FROM students st, scores sc
WHERE st.id = sc.student_id AND sc.score = (
SELECT MAX(score)
FROM scores, courses, teachers
WHERE scores.course_id = courses.id
AND courses.teacher_id = teachers.id AND teachers.`name` = '张三'
);
#35.
SELECT st.id, sc1.course_id, sc1.score
FROM students st, scores sc1
WHERE st.id = sc1.student_id AND sc1.score = ANY(
SELECT sc2.score
FROM scores sc2
WHERE sc2.student_id = st.id AND sc2.course_id != sc1.course_id
);
#36.
SELECT c1.`name`, c1.score
FROM (
SELECT c.`name`, sc.score
FROM scores sc, courses c
WHERE sc.course_id = c.id AND c.id = '01'
ORDER BY sc.score DESC
LIMIT 2
)c1
UNION ALL
SELECT c2.`name`, c2.score
FROM (
SELECT c.`name`, sc.score
FROM scores sc, courses c
WHERE sc.course_id = c.id AND c.id = '02'
ORDER BY sc.score DESC
LIMIT 2
)c2
UNION ALL
SELECT c3.`name`, c3.score
FROM (
SELECT c.`name`, sc.score
FROM scores sc, courses c
WHERE sc.course_id = c.id AND c.id = '03'
ORDER BY sc.score DESC
LIMIT 2
)c3;
#37. 5
SELECT c.`name`, COUNT(*) c
FROM scores s, courses c
WHERE s.course_id = c.id
GROUP BY c.id
HAVING c>5;
#38.
SELECT st.id, st.`name`
FROM students st
WHERE (
SELECT COUNT(*)
FROM scores sc
WHERE sc.student_id = st.id
)>=2;
#39.
SELECT st.*
FROM students st, scores sc
WHERE st.id = sc.student_id
GROUP BY st.id
HAVING COUNT(*) = 3;
#40.
SELECT s.`name`, TIMESTAMPDIFF(YEAR,s.birth,NOW())
FROM students s;
#41. <
SELECT s.`name`, IF(DATE_FORMAT(s.birth,'%m-%d') < DATE_FORMAT(NOW(),'%m-%d'),
TIMESTAMPDIFF(YEAR,s.birth,NOW())-1, TIMESTAMPDIFF(YEAR,s.birth,NOW()))
FROM students s;
#42.
SELECT *
FROM students s
WHERE WEEKOFYEAR(s.birth) = WEEKOFYEAR(NOW());
#43.
SELECT *
FROM students s
WHERE WEEKOFYEAR(s.birth) = WEEKOFYEAR(NOW()) + 1;
#44.
SELECT *
FROM students s
WHERE MONTH(s.birth) = MONTH(NOW());
#45.
SELECT *
FROM students s
WHERE MONTH(s.birth) = MONTH(NOW()) + 1;
```
+108
View File
@@ -0,0 +1,108 @@
### 创建数据库
```sql
CREATE DATABASE `emp`;
USE emp;
-- 建dept表
CREATE TABLE `dept`( `deptno` INT(2) NOT NULL, `dname` VARCHAR(14), `loc` VARCHAR(13), CONSTRAINT pk_dept PRIMARY KEY(deptno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 键emp表
CREATE TABLE `emp` ( `empno` int(4) NOT NULL PRIMARY KEY, `ename` VARCHAR(10), `job` VARCHAR(9), `mgr` int(4), `hiredate` DATE, `sal` float(7,2), `comm` float(7,2), `deptno` int(2), CONSTRAINT fk_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 建salgrade表
CREATE TABLE `salgrade` ( `grade` int, `losal` int, `hisal` int ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'1987-07-13',3000,NULL,20);
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'1981-11-07',5000,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
```
### 练习题
1.列出与“SCOTT”从事相同工作的所有员工及部门名称,部门人数。
2.列出公司各个工资等级雇员的数量、平均工资。
3.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
4.列出在每个部门工作的员工数量、平均工资和平均服务期限。
5.列出所有员工的姓名、部门名称和工资。
6.列出所有部门的详细信息和部门人数。
7.列出各种工作的最低工资及从事此工作的雇员姓名。
8.列出各个部门的MANAGER(经理)的最低薪金、姓名、部门名称、部门人数。
9.列出所有员工的年工资,所在部门名称,按年薪从低到高排序。
10.查出某个员工的上级主管及所在部门名称,并要求出这些主管中的薪水超过3000
11.求出部门名称中,带‘S’字符的部门员工的、工资合计、部门人数。
12.给任职日期超过30年或者在87年雇佣的雇员加薪,加薪原则:10部门增长10%,20部门增长20%, 30部门增长30%,依次类推。
13.列出至少有一个员工的所有部门的信息:
14.列出薪金比SMITH对的所有员工:
15.列出所有员工的姓名以及其直接上级的姓名:
16.列出受雇日期早于其直接上级的所有员工的编号、姓名,部门名称
17.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
18.列出所有"CLERK(职员)"的姓名以及部门名称,部门的人数
19.列出最低薪金大于1500的各种工作以及从事此工作的全部雇员人数
20.列出在部门"SALES"工作的员工的姓名,假定不知道销售部的部门编号
21.列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级
22.列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工 资。
23.列出薪金比“SMITH”或“ALLEN”多的所有员工的编号、姓名、部门名称、其领导姓名。
24.列出所有员工的编号、姓名及其直接上级的编号、姓名,显示的结果按领导年工资的降序排列。
25.列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。
26.列出部门名称和这些部门的员工信息(数量、平均工资),同时列出那些没有员工的部门。
27.列出所有“CLERK”(办事员)的姓名及其部门名称,部门的人数,工资等级。
28.列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数及所在部门名称、位置、平均工 资。
29.列出在部门“SALES”(销售部)工作的员工的姓名、基本工资、雇佣日期、部门名称,假定不知道 销售部的部门编号。
30.列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
31.列出与“SCOTT”从事相同工作的所有员工及部门名称,部门人数。
32.查询dept表的结构
33.检索emp表,用is a 这个字符串来连接员工姓名和工种两个字段
34.检索emp表中有提成的员工姓名、月收入及提成。
+52
View File
@@ -0,0 +1,52 @@
### 一、创建表
#### 1、创建一张员工表employee
字段 类型
id 整形
NAME 字符型
gender 字符型
birthday 日期型
entry_date 日期型
job 字符型
salary 小数型
RESUME 文本
#### 2、创建一张员工表employee2
字段 类型
id 整形
NAME 字符型
gender 字符型
birthday 日期型
entry_date 日期型
job 字符型
salary 小数型
RESUME 文本
要求:把id 设置成主键,并且自动增长。NAME不允许为空。
### 二、删除表
删除employee2表
### 三、数据表的结构的修改
1、在上面员工表的基本上增加一个image列。
2、修改job列,使其长度为60。
3、删除gender列。
4、表名改为USER。
5、修改表的字符集为utf8
6、列名NAME修改为username
### 四、查看表结构
1、查看数据库内的所有表
2、查看employee的建表语句
3、查看employee的表结构
+62
View File
@@ -0,0 +1,62 @@
/*----------------------------------------------------------------------
程序设计
------------------------------------------------------------------------
在餐桌上吃饭,每人一只饭碗,2人一只菜碗,3人一只汤碗,一共用了n个碗,请编写函数算一算,一共有几人吃饭,计算出使用了几个饭碗,几个菜碗,几个汤碗?请注意:计算过程中菜碗和汤碗的数量要保证够用且是整数
示例输入:
【请输入总碗数n: 】25
一共有13人吃饭
使用了13个饭碗
使用了7个菜碗
使用了5个汤碗
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
Program-End之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
// 函数声明,用于计算吃饭的人数以及饭碗、菜碗和汤碗的数量
int calculateDiningDetails(int n, int *riceBowls, int *vegetableBowls, int *soupBowls);
int main() {
int n;
int riceBowls, vegetableBowls, soupBowls,people;
printf("【请输入总碗数n: 】");
scanf("%d", &n);
// 调用函数计算吃饭的人数以及饭碗、菜碗和汤碗的数量
people = calculateDiningDetails(n, &riceBowls, &vegetableBowls, &soupBowls);
// 输出结果
if (people!= -1) {
printf("一共有%d人吃饭\n使用了%d个饭碗\n使用了%d个菜碗\n使用了%d个汤碗\n", people, riceBowls, vegetableBowls, soupBowls);
} else {
printf("没有符合条件的组合。\n");
}
return 0;
}
// 函数定义,用于计算吃饭的人数以及饭碗、菜碗和汤碗的数量
int calculateDiningDetails(int n, int *riceBowls, int *vegetableBowls, int *soupBowls) {
int x,totalBowls;
/**********Program**********/
for(x=3;x<n;x++){//n为碗的总数 x为当前吃饭人数
*riceBowls = x;//饭碗数量等于人数
*vegetableBowls = x%2==0?x/2:x/2+1;//菜碗数量计算 每2人一个碗不足2人也要有碗
*soupBowls = x%3==0?x/3:x/3+1;//汤碗数量计算
totalBowls = *riceBowls + *vegetableBowls + *soupBowls;
if(totalBowls == n){
return x;
}
}
return -1;
/********** End **********/
}
+82
View File
@@ -0,0 +1,82 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 动态分配内存以存储替换后的字符串
char* replaceSubstring(const char *str, const char *oldSubstr, const char *newSubstr) {
int strLen = strlen(str);
int oldLen = strlen(oldSubstr);
int newLen = strlen(newSubstr);
int count=0, i, j, k;
char *result, *p;
/**********Program**********/
//动态内存分配数组空间
result = (char *)malloc(10000);
p = result;//将数组首地址赋值给一个指针变量用来操作数组
for(i=0;i<strLen;i++){//主串的下标遍历
j = 0;//子串的下标遍历
//判断当前是否找到和主串中是否和子串开头的字符
if(oldSubstr[j] != str[i]){
*p++=str[i];//直接存到新字符串
continue;
}
while(oldSubstr[j] != '\0' && oldSubstr[j++] == str[i++]);
//如果找到和子串相同的元素
//则一一比较 一直比较到子串到结束符或者到字符不相等
if(oldSubstr[j] == '\0'){
//k为主串中子串的起始位置
k=0;
while(newSubstr[k] != '\0'){
*p++ = newSubstr[k++];
}
i--;
}else{//只是前面几个字符匹配 后续并不匹配 则需要从头开始存
i-=j;
*p++=str[i];
}
}
*p='\0';
/*
字符串:abcabc
需要替换的子串:a
替换后的子串:##
示例输出:##bc##bc
*/
/********** End **********/
return result;
}
int main() {
char str[10000];
char oldSubstr[100];
char newSubstr[100];
char *replacedStr;
// 获取用户输入
printf("【请输入原字符串:】");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = 0; // 去除换行符
printf("【请输入要替换的子串:】");
fgets(oldSubstr, sizeof(oldSubstr), stdin);
oldSubstr[strcspn(oldSubstr, "\n")] = 0; // 去除换行符
if (strstr(str, oldSubstr) == NULL) {
printf("原字符串不包含所输入的子串。\n");
return 0;
}
printf("【请输入替换后的子串:】");
fgets(newSubstr, sizeof(newSubstr), stdin);
newSubstr[strcspn(newSubstr, "\n")] = 0; // 去除换行符
replacedStr = replaceSubstring(str, oldSubstr, newSubstr);
printf("【示例输出:】%s\n", replacedStr);
// 释放动态分配的内存
free(replacedStr);
return 0;
}
-21
View File
@@ -1,21 +0,0 @@
```sql
#1.
ALTER TABLE t_student MODIFY sex ENUM('', '');
#2.
ALTER TABLE t_student ADD tel CHAR(20);
#3.
ALTER TABLE t_coach MODIFY salary INT(6) ZEROFILL;
#4.
INSERT INTO t_coach()
VALUES(DEFAULT, '赵欣彤', '', 25, 6000);
#5.
UPDATE t_class c
SET c.period = 18
WHERE c.id = 10005;
#6. tj11
#7. tj12
#8.
```
-246
View File
@@ -1,246 +0,0 @@
### C语言-1
```c
/*------------------------------------------------------------------------------
(1)【程序设计】定义一个大小为50的整型数组,将数字1~50存入该数组,利用指针将数组中的值输出,每行5个,每个数字占4个符号位,左对齐。
------------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,*p,array[50];
for(i=0;i<50;i++)
{
array[i]=i+1;
}
p=array;
/**********Program**********/
//p 一级指针 可以指向整型的一维数组
for(i=0;i<50;i++){//0~49
printf("%-4d ", p[i]);
if((i+1)%5==0){
printf("\n");
}
}
/********** End **********/
}
```
### C语言-2
```c
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
题目:要求实现一个函数,能够合并两个整数数组,合并后进行降序排序并删除重复元素。
示例1
输入输出如下所示:
请输入第一个数组的6个元素,每个元素之间用空格隔开:1 3 5 7 10 6
请输入第二个数组的6个元素,每个元素之间用空格隔开:10 4 2 6 11 30
合并后降序排列的数组:30 11 10 7 6 5 4 3 2 1
------------------------------------------------------------------------
注意:请勿改动程序中的其他内容。
----------------------------------------------------------------------*/
#include <stdio.h>
int* mergeArrays(int *arr1, int size1, int *arr2, int size2,int *newLen);
int main() {
int size1=6;
int size2=6;
int arr1[6];
int arr2[6];
int i;
int newLen = 0;
int* mergedArray;
printf("请输入第一个数组的6个元素,每个元素之间用空格隔开:");
for ( i = 0; i < size1; i++) {
scanf("%d", &arr1[i]);
}
printf("请输入第二个数组的6个元素,每个元素之间用空格隔开:");
for ( i = 0; i < size2; i++) {
scanf("%d", &arr2[i]);
}
mergedArray = mergeArrays(arr1, size1, arr2, size2, &newLen);
printf("合并后降序排列的数组:");
for (i = 0; i < newLen; i++) {
printf("%d ", mergedArray[i]);
}
printf("\n");
return 0;
}
int* mergeArrays(int *arr1,int size1,int *arr2,int size2,int *newLen) {
static int mergedArray[20];
/**********Program**********/
int i, j=0, temp;
//合并数组
for(i=0;i<size1;i++){
mergedArray[j++] = arr1[i];
mergedArray[j++] = arr2[i];
}
//降序排序
for(i=0;i<size1*2-1;i++){//已经有序的个数
for(j=0;j<size1*2-i-1;j++){//i每+1 代表最前面已经有一个最小的元素
if(mergedArray[j] < mergedArray[j+1]){ //无序的元素两两比较小值后移
temp = mergedArray[j];
mergedArray[j] = mergedArray[j+1];
mergedArray[j+1] = temp;
}
}
}
//去重
/*
默认第一个数字不用判断,从数组中第二个元素开始判断,
是否等于前一项如果不等于则进行赋值操作,然后元素个数加一
*/
*newLen = 1;//当前数组中已经过滤后的有效数字个数
for(i=1;i<size1*2;i++){//使用i变量从1下标元素开始 遍历数组中的所有数字
if(mergedArray[(*newLen) - 1] != mergedArray[i]){
//如果当前判断的元素不等于前一个元素则插入到有效数字位置
mergedArray[(*newLen)++] = mergedArray[i];
}
}
/********** End **********/
return mergedArray;
}
```
### MySQL-1
```sql
#1. +
ALTER TABLE t_user MODIFY uid INT(11) PRIMARY KEY AUTO_INCREMENT;
#
ALTER TABLE t_user ADD PRIMARY KEY(uid);
#2.
#DEFAULT //NULL
INSERT INTO t_user()
VALUES(DEFAULT, 'mike', 'mm123', '小明', DEFAULT);
#3.
UPDATE t_user u
SET u.`password` = '888888'
WHERE u.username = 'Dennis';
#4. tj11 +
SELECT u.nickname, c.mid, c.score, c.content
FROM t_user u, t_comment c
WHERE u.uid = c.uid AND u.nickname = '白色';
#5. tj12 +
SELECT m.mname, ROUND(AVG(c.score), 2)
FROM t_movie m, t_comment c
WHERE m.mid = c.mid
GROUP BY m.mid;
#6. tj13 +
SELECT m.mname, COUNT(*)
FROM t_movie m, t_comment c
WHERE m.mid = c.mid
GROUP BY m.mid;
#7
CREATE VIEW v_movie AS
SELECT m.mname, u.nickname, c.score, c.content
FROM t_user u, t_movie m , t_comment c
WHERE u.uid = c.uid AND m.mid = c.mid;
#8
DELIMITER $$
DROP PROCEDURE IF EXISTS pro_getUserNumber;
CREATE PROCEDURE pro_getUserNumber(IN in_uid INT, OUT out_number INT)
BEGIN
SET out_number = (
SELECT COUNT(*)
FROM t_user u, t_comment c
WHERE u.uid = c.uid AND u.uid = in_uid
);
END $$
DELIMITER ;
#9
DELIMITER $$
DROP TRIGGER IF EXISTS tri_userlog;
CREATE TRIGGER tri_userlog
AFTER INSERT ON t_user
FOR EACH ROW
BEGIN
INSERT INTO t_log()
VALUES(DEFAULT, NEW.uid, '新增用户', '2024-01-01');
END $$
DELIMITER ;
```
### MySQL-2
```sql
#1
ALTER TABLE t_examinee MODIFY sex CHAR(2);
DESC t_examinee;#
#2
INSERT INTO t_room()
VALUES(DEFAULT, '202教室', '2号教学楼');
#3
DELETE FROM t_teacher
WHERE rid IS NULL;
#4
UPDATE t_examinee
SET tel = '1396668888'
WHERE ename = '龚致远';
#5 tj11 +
SELECT e.ename, r.rname, r.site
FROM t_examinee e, t_room r
WHERE e.rid = r.rid AND e.ename = '陶宇宁';
#6 tj12
SELECT r.rname, r.site, t.tname, t.tel
FROM t_teacher t, t_room r
WHERE t.rid = r.rid AND r.rname = '402教室';
#7
CREATE VIEW v_exam AS
SELECT e.ename, e.sex, e.tel, e.examnum, r.rname, r.site
FROM t_examinee e, t_room r
WHERE e.rid = r.rid;
#8
DELIMITER $$
DROP PROCEDURE IF EXISTS pro_getExamNumber;
CREATE PROCEDURE pro_getExamNumber(IN in_rid INT, OUT out_number INT)
BEGIN
SELECT COUNT(*) INTO out_number
FROM t_examinee e
WHERE e.rid = in_rid;
END $$
DELIMITER ;
#9
DELIMITER $$
DROP TRIGGER IF EXISTS tri_examlog;
CREATE TRIGGER tri_examlog
BEFORE INSERT ON t_examinee
FOR EACH ROW
BEGIN
INSERT INTO t_log()
VALUES(DEFAULT, NEW.eid, '新增考生', '2024-01-01');
END $$
DELIMITER ;
```
-346
View File
@@ -1,346 +0,0 @@
### C语言-1
```c
/*------------------------------------------------------------------------------
【程序设计】输入一个1000以内的三位数,找出小于这个三位数且个位数字与十位数字之和
除以10所得的余数等于百位数字的数,并输出满足条件的数字之和。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
int main()
{
int a,b,c,d,i,j,sum=0;
scanf("%d",&j);
/**********Program**********/
for(i=100;i<j;i++){
a = i%10;//个位
b = i%100/10;//十位
c = i/100;//百位
d = (a+b)%10;//个位+十位 取模
if(c == d){
sum += i;
}
}
/********** End **********/
printf("%d\n",sum);
}
```
### C语言-2
```c
/*------------------------------------------------------------------------------
【程序设计】任意一个大于0的正整数,都可以写成若干个2的正整数次幂的和的形式。
例如:7=2^2+2^1+2^0
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
#define N 4
void binary_power(unsigned int x)
{
int flag =1;
unsigned int s,t,y;
printf("%u=",x);
/**********Program**********/
t = 1;
y = 0;
//二进制的权位值 2^2 2^1 2^0
//从末尾开始一直乘 乘到 大于传入的x就停止 同时记录下次方数
while(t <= x){
t*=2;
y++;
}
y--;//2^y 会正好大于x
printf("2^%d", y);//最高位
x -= (int)pow(2, y);//求2的y次方 同时对x进行减法运算
y--;
while(x > 0){
t = 1;
s = (int)pow(2, y);
if(x >= s){//当前权位值没有大于需要运算的数据
x -= s;
printf("+2^%d", y);
}
y--;
}
/********** End **********/
printf("\n");
}
int main()
{
unsigned int n[N]={1,15,32,144};
int i;
for(i=0;i<N;++i)
binary_power(n[i]);
return 0;
}
```
### C语言-3
```c
/*------------------------------------------------------------------------------
【程序设计】从键盘接收3个无序的整数,将这3个数据都插入到升序排列的数组中,并保持数组仍然有序。
输入输出如下:
4 6 9 12 15 18 23 26 32 39
1 5 6
1 4 5 6 6 9 12 15 18 23 26 32 39
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
#define N 10
void main( )
{
int a[N+5]={4,6,9,12,15,18,23,26,32,39},p,x,i,j;
for(i=0;i<N;i++){
printf("%d ",a[i]);
}
printf("\n");
/**********Program**********/
for(i=N;i<N+3;i++){
scanf("%d", a+i);
}
for(i=0;i<N+3-1;i++){
for(j=0;j<N+3-1-i;j++){
if(a[j] > a[j+1]){
x = a[j];
a[j] = a[j+1];
a[j+1] = x;
}
}
}
/********** End **********/
for(i=0;i<N+3;i++){
printf("%d ",a[i]);
}
printf("\n");
}
```
### C语言-4
```c
/*------------------------------------------------------------------------------
【程序设计】输入一个小于等于10000的整数n,在[100,n]之间打印出各位数字和为5的所有整数的个数.
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
void main()
{
int a,b,c,d,k,i,n;
k=0;
scanf("%d",&n);
/**********Program**********/
for(i=100;i<=n;i++){
a = i;//备份一遍i的数据
d = 0;
while(a){
d += (a%10);
a /= 10;
}
if(d == 5){
k++;
}
}
/********** End **********/
printf("%d\n",k);
}
```
### C语言-5
```c
/*------------------------------------------------------------------------------
【程序设计】编写函数rtrim,用来删除字符串尾部的空格,首部和中间的空格不删除。例如:字符串为:" A BC DEF "
删除后的结果是" A BC DEF"。要求函数形参采用指针变量。
测试输入: A BC DEF
测试输出: A BC DEF
说明:测试输入中,A前有4个空格,F后有5个空格
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void main()
{
void rtrim(char *p);
char s[100];
gets(s);
rtrim(s);
puts(s);
}
void rtrim(char *p)
{
int i;
/**********Program**********/
i=0;
while(*(p+i) != '\0'){
i++;
}
while(*(p+i-1) == ' '){
*(p+i-1) = '\0';
i--;
}
/********** End **********/
}
```
### C语言-6
```c
/*------------------------------------------------------------------------------
【程序设计】定义一个函数实现字符串的逆序存放(连续的字符串,中间不包含空格),要求用指针实现。
在主函数中调用函数实现字符串逆序存放。运行程序,输入字符串,输出逆序后的字符串。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdlib.h>
#include<stdio.h>
void reversed_str(char *str){
char *p=str,*q=str;
int temp;
while(*q!='\0'){
q++;
}
q--;
/**********Program**********/
while(p < q){
temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
/********** End **********/
}
int main(){
char s[50];
printf("输入字符串:");
scanf("%s",s);
printf("逆序前:%s\n",s);
reversed_str(s);
printf("逆序后:%s\n",s);
return 0;
}
```
### C语言-7
```c
/*------------------------------------------------------------------------------
【程序设计】从键盘输入一位整数i,计算其各位数字之和。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
#include <stdlib.h>
int main(){
int i,sum=0,a;
scanf("%d",&i);
/**********Program**********/
while(i){
sum += i%10;
i/=10;
}
/********** End **********/
printf("%d\n",sum);
return 0;
}
```
### C语言-8
```c
/*------------------------------------------------------------------------------
【程序设计】编写函数,判断一个字符串是否是回文。在主函数中输入一个字符串,调用自定义函数,输出结果。
所谓回文是指顺读和倒读都一样的字符串。如"XZYKYZX"是回文。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void main()
{
char s[50];
int hw(char *s);
gets(s);
if(hw(s))
printf("是回文!\n");
else
printf("不是回文!\n");
}
int hw(char *s)
{
int flag=1;
char *p,*q;
/**********Program**********/
p = s;//指向字符串首元素
q = s+strlen(s)-1;//指向末尾元素
while(p < q){
if(*p != *q){
flag = 0;
break;
}
p++;
q--;
}
return flag;
/********** End **********/
}
```
+588
View File
@@ -0,0 +1,588 @@
### C语言-1
```c
/*
-------------------------------------------------------
【程序填空】
---------------------------------------------------------
打印以下图案:
*****
*****
*****
*****
*****
*/
#include<stdio.h>
void main()
{
int i =0 , j =0 , k=0;
/**********Program**********/
for(i=0;i<5;i++){
for(j=0;j<i;j++){
printf(" ");
}
for(k=0;k<5;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
printf("\n");
}
```
### C语言-2
```c
/*-------------------------------------------------------
功能:编写程序,求两个非零整数之和。
-------------------------------------------------------*/
#include"stdio.h"
main()
{
int x,y,z=0;
scanf ("%d%d", &x,&y);
/**********Program**********/
if(x!=0 && y!=0){
z = x+y;
/********** End **********/
printf("z=%d\n", z);
}
else
printf("两个数中至少有一个数为零值\n");
}
```
### C语言-3
```c
/*------------------------------------------------------------------------
【程序设计】请编写函数sum,其功能是:用While循环语句求1到n之间(包括n)能
被3整除的所有整数之和,并将结果返回给主函数。(n值由主函数传入)
运行程序后若输入:10,则输出为:18
----------------------------------------------------------------------*/
#include "stdio.h"
long sum(int n)
{
/**********Program**********/
int i, s=0;
for(i=1;i<=n;i++){
if(i%3==0){
s+=i;
}
}
return s;
/********** End **********/
}
void main()
{
int x;
long f;
scanf("%d",&x);
f=sum(x);
printf("%ld\n",f);
}
```
### C语言-4
```c
/*-------------------------------------------------------
功能:设计程序打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j,k;
/**********Program**********/
for(i=-3;i<=3;i++){
for(j=0;j<(i<0?-i:i);j++){
printf(" ");
}
for(k=0;k<7-j*2;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
}
```
### C语言-5
```c
/*------------------------------------------------------
题目:从键盘输入一个整数n,求2 至 n-1内所有能被n整除的数。
例如:输入10 输出 2 5
输入99 输出 3 9 11 33
--------------------------------------------------------*/
#include "stdio.h"
int main ( )
{
int n,i;
printf("input a number:");
scanf ("%d", &n);
/**********Program**********/
for(i=2;i<n;i++)
if(n%i==0)
/********** End **********/
printf ("%d\n",i);
}
```
### C语言-6
```c
/*-------------------------------------------------------
【程序填空】 2、有一箱苹果(100—200之间),如果分成4个苹果一组的若干组,则多2个苹果;若分成7个苹果一组,则多3个苹果; 若分成9个苹果一组,则多5个苹果,编程实现求苹果的个数。
--------------------------------------------------------*/
# include <stdio.h>
main ()
{
int i;
for(i=100;i<200;i++)
/**********Program**********/
if(i%4==2 && i%7==3 && i%9==5)
/********** End **********/
printf ("%d",i);
}
```
### C语言-7
```c
/*-------------------------------------------------------
【程序填空】---------------------------------------------------------
功能:计算武汉城区出租车收费的程序,当里程在3公里以内含3公里时收费12元,超过3公里(在0和1之间均计1公里)的部分每公里收费2元。
备注:使用switch来实现
--------------------------------------------------------*/
#include<stdio.h>
main(){
int m,n;
scanf("%d",&m);
/**********Program**********/
n=0;
switch(m){
default: n+=(m-3)*2;
case 1:
case 2:
case 3:n+=12;
}
/********** End **********/
printf("本次收费为:%d",n);
}
```
### C语言-8
```c
/*-------------------------------------------------------
功能:从键盘输入2个整数相加,再输入答案,如果正确,显示"right",否则显示"error"。
--------------------------------------------------------*/
#include "stdio.h"
main( )
{
int a,b,c;
printf("please input a and b:\n");
scanf("%d,%d",&a , &b);
printf("please input the answer:\n");
scanf("%d",&c);
/**********Program**********/
if(a+b==c)
/********** End **********/
printf("right\n");
else
printf("error\n");
}
```
### C语言-9
```c
/*-------------------------------------------------------
功能:功能:输入三角形的三边长,判断能否构成三角形,若能,利用海伦公式计
算该三角形的面积,计算结果保留3位小数。
l=(a+b+c)/2s=sqrt(l*(l-a)*(l-b)*(l-c))
--------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c,s,l;
scanf("%f,%f,%f",&a , &b , &c);
if(a+b<c||a+c<b||b+c<a)
printf("该3个数据不能构成三角形\n");
else
{
/**********Program**********/
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
/********** End **********/
printf("该三角形的面积为%.3f\n",s);
}
}
```
### C语言-10
```c
/*------------------------------------------------------------------------
【程序设计】功能:使用for循环输出Fibonacci数列的前15项,要求每行输出5项。
Fibonacci数列:1,1,2,3,5,8,13...........
----------------------------------------------------------------------*/
#include <stdio.h>
main()
{
int fib[15],i;
fib[0]=1;fib[1]=1;
/**********Program**********/
for(i=2;i<15;i++){
fib[i]=fib[i-1]+fib[i-2];
}
/********** End **********/
for(i=0;i<15;i++)
{
printf("%d\t",fib[i] );
if ( i%5==4 ) printf("\n");
}
}
```
### C语言-11
```c
/*-------------------------------------------------------
1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法IsPrime:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 --------------------------------------------------------*/
#include <stdio.h>
#include<math.h>
int IsPrime (int n)
{
int i=2;
for(i=2;i<=sqrt(n);i++)
/**********Program**********/
if(n%i==0){
return 0;
}
/********** End **********/
return 1;
}
int main( )
{
int i ;
for(i=100;i<=200;i++ )
{
if ( IsPrime( i) )
{
printf("% d",i);
}
}
return 0;
}
```
### C语言-12
```c
/*-------------------------------------------------------
功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
输出:(每个数占5个字符)
159 168 177 186 195 249 258 267 276 285
294 339 348 357 366 375 384 393 429 438
447 456 465 474 483 492 519 528 537 546
555 564 573 582 591 609 618 627 636 645
654 663 672 681 690 708 717 726 735 744
753 762 771 780 807 816 825 834 843 852
861 870 906 915 924 933 942 951 960
-------------------------------------------------------*/
#include<stdio.h>
main()
{
int m,n,k,i=0;
for(m=100;m<=1000;m++)
{
k=0;
n=m;
/**********Program**********/
while(n){
k+=n%10;
n/=10;
}
if(k%15==0){
i++;
printf("%5d", m);
if(i%10==0){
printf("\n");
}
}
/********** End **********/
}
}
```
### C语言-13
```c
/*-------------------------------------------------------
题目: 打印以下图案:
*********
*******
*****
***
*
--------------------------------------------------------*/
#include<stdio.h>
void main()
{
int i,j,k;
for( i=0 ; i<5; i++ )
{
printf("\n");
/**********Program**********/
for(j=0;j<i*2;j++){
printf(" ");
}
for(k=0;k<9-j;k++){
printf("*");
}
/********** End **********/
}
printf("\n");
}
```
### C语言-14
```c
/*-------------------------------------------------------
1. 编写程序,打印以下图案:
*****
***
*
--------------------------------------------------------*/
#include<stdio.h>
void main()
{
int i,j,k;
/**********Program**********/
for(i=0;i<3;i++){
for(j=0;j<i;j++){
printf(" ");
}
for(k=0;k<5-j*2;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
printf("\n");
}
```
### C语言-15
```c
/*-------------------------------------------------------
功能:不用第三个变量,实现两个数的对调操作。
--------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b;
scanf("%d%d",&a , &b );
printf("a=%d,b=%d\n",a,b);
/**********Program**********/
a = a+b;
b = a-b;
a = a-b;
/********** End **********/
printf("a=%d,b=%d\n", a,b);
}
```
### C语言-16
```c
/*-------------------------------------------------------
题目:请将123-321之间偶数累加输出最终结果。
--------------------------------------------------------*/
#include <stdio.h>
int main()
{
int i;
long sum = 0;
for(i = 123; i <= 321; i++ )
{
/**********Program**********/
if(i%2==0){
sum += i;
}
/********** End **********/
}
printf ("总和为 : %ld.\n",sum);
return 0;
}
```
### C语言-17
```c
/*-------------------------------------------------------
题目:把123~321之间的可以被7整除的数输出。(使用for循环)
--------------------------------------------------------*/
#include <stdio.h>
void main()
{
int a=0;
/**********Program**********/
for(a=123;a<=321;a++){
if(a%7==0){
/********** End **********/
printf("%d\n",a);
}
}
}
```
### C语言-18
```c
/*-------------------------------------------------------
功能:依次输入十个整数,找出其平方最大的一个数并打印出来。
--------------------------------------------------------*/
#include <stdio.h>
void main()
{
int i;
float x,y,z=0;
printf("\n请输入10个数:");
for(i=1;i<=10;i++)
{
/**********Program**********/
scanf("%f", &x);
if(x*x > z){
z = x*x;
y = x;
}
/********** End **********/
}
printf("平方最大的一个数是:%f\n",y);
}
```
### C语言-19
```c
/*-------------------------------------------------------
功能:从键盘输入一位整数i,计算其各位数字之和。比如输入整数
31421,则打印结果为11。(使用while循环)
--------------------------------------------------------*/
#include<stdio.h>
main()
{
int i,sum=0,a;
scanf("%d",&i);
/**********Program**********/
while(i){
sum += i%10;
i/=10;
}
/********** End **********/
printf("%d\n",sum);
}
```
### C语言-20
```c
/*-------------------------------------------------------
功能:编写程序(使用Switch ),给出年月日,计算出该日是该年的第几天。判断是否为
闰年的条件是:能被 4 整除但是不能被100整除或者能被四百整除。
--------------------------------------------------------*/
#include"stdio.h"
main()
{
int year,month,day,days=0,i,d;
printf("请输入年-月-日:");
scanf("%d-%d-%d",&year,&month,&day);
for(i=1;i<month;i++)
{
/**********Program**********/
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10: days+=31;break;
case 2: days+=(28 + (year%4==0&&year%100!=0 || year%400==0?1:0));break;
default: days+=30;
}
/********** End **********/
}
printf("%d-%d-%d是该年第%d天\n",year,month,day,days + day);
}
```
+549
View File
@@ -0,0 +1,549 @@
### C语言-1
```c
/*-------------------------------------------------------
编程计算:s=1×2×3×……×n (n由键盘输入,使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,n,p;
p=1;
printf("请输入一个正整数n:");
scanf("%d",&n);
/**********Program**********/
for(i=2;i<=n;i++){
p*=i;
}
/********** End **********/
printf("1*2*...*%d = %d\n",n,p);
}
```
### C语言-2
```c
/*-------------------------------------------------------
编程计算π的近似值(直到最后一项的绝对值小于10-5为止),要求保留小数点后10位: (使用while)
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,f;
double t,s;
f=1;
s=0;
i=1;
t=1.0;
/**********Program**********/
while(fabs(t/i)>1e-5){
s+=t/i*f;//计算该项的值
f*=-1;//翻转符号
i+=2;
}
/********** End **********/
s=s*4;
printf("圆周率的近似值为:%.10f\n",s);
}
```
### C语言-3
```c
/*-------------------------------------------------------
编程计算π的近似值(直到最后一项的绝对值小于10-5为止,使用while):
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
#define N 1e-5
main()
{
int i,f;
double t,s;
f=1;
s=0;
i=1;
t=1.0;
/**********Program**********/
while(fabs(t/i)>N){
s+=t/i*f;//计算该项的值
f*=-1;//翻转符号
i+=2;
}
/********** End **********/
s=s*4 ;
printf("圆周率的近似值为:%f\n",s);
}
```
### C语言-4
```c
/*-------------------------------------------------------
功能:编程实现求1-10(包含1,不包含10)之间的所有数的乘积并输出。(使用while)
--------------------------------------------------------*/
#include <stdio.h>
main( )
{
int i=1, sum=1;
/**********Program**********/
while(i<10){
sum*=i;
i++;
}
/********** End **********/
printf("the sum of odd is :%d\n",sum);
}
```
### C语言-5
```c
/*-------------------------------------------------------
功能:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最
低成绩,当输入负数时结束输入。(使用while循环)
--------------------------------------------------------*/
#include <stdio.h>
main()
{
int x,max,min;
printf("please input x:\n");
scanf("%d",&x);
max=x;
min=x;
/**********Program**********/
while(x > 0){
if(x > max){
max = x;
}
if(x < min){
min = x;
}
scanf("%d", &x);
}
/********** End **********/
printf("max=%d,min=%d\n",max,min);
}
```
### C语言-6
```c
/*-------------------------------------------------------
编程计算:使用for计算,s=1+2+3+……+n n由键盘输入)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,n,sum;
sum=0;
printf("请输入一个正整数n:");
scanf("%d",&n);
/**********Program**********/
for(i=1;i<=n;i++){
sum+=i;
}
/********** End **********/
printf("1+2+...+%d = %d\n",n,sum);
}
```
### C语言-7
```c
/*-------------------------------------------------------
功能:编写比较a、b两个数的大小,且把大者赋给max,小者赋给min。
--------------------------------------------------------*/
#include"stdio.h"
main()
{
int a,b,min,max;
printf("输入两个数给a,b:");
scanf("%d,%d",&a,&b);
/**********Program**********/
if (a > b) {
max = a;
min = b;
} else {
max = b;
min = a;
}
/********** End **********/
printf("min=%d,max=%d\n",min,max);
}
```
### C语言-8
```c
/*-------------------------------------------------------
功能:输入三个整数x,y,z,请把这三个数由小到大输出。
--------------------------------------------------------*/
#include <stdio.h>
main()
{
int x,y,z,t;
scanf("%d%d%d",&x , &y , &z);
/**********Program**********/
if (x > y) {
t = x;
x = y;
y = t;
}
if (y > z) {
t = y;
y = z;
z = t;
}
if (x > y) {
t = x;
x = y;
y = t;
}
/********** End **********/
printf("small to big: %d %d %d\n",x,y,z);
}
```
### C语言-9
```c
/*-------------------------------------------------------
功能:从键盘输入整数n,输出n以内所有奇数的和。(使用for循环)
--------------------------------------------------------*/
#include<stdio.h>
void main()
{
int n,i,s;
s=0;
scanf("%d",&n);
/**********Program**********/
for(i=1;i<=n;i++){
if(i%2==1){
s+=i;
}
}
/********** End **********/
printf("s=%d\n",s);
}
```
### C语言-10
```c
/*-------------------------------------------------------
编程计算:s=1!+3!+5!+…n! n由键盘输入,使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j,n;
long p,sum;
sum=0;
printf("请输入一个正整数n:");
scanf("%d",&n);
/**********Program**********/
p = 1;
for ( i = 1;i <= n; i++ ) {
p *= i;
if ( i%2 == 1 ) {
sum += p;
}
}
/********** End **********/
printf("1!+3!+...+%d!= %d\n",n,sum);
}
```
### C语言-11
```c
/*-------------------------------------------------------
编程计算求e近似值:
用while语句求直到最后一项值小于10-5为止。
e=0+1+1/1+1/1/2+1/1/2/3...
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
double t,e;
i=1;
t=1.0;
e=0;
/**********Program**********/
e = 2;
i = 2;
while(t/i > 1e-5){
e += t/i;
t /= i++;
}
/********** End **********/
printf("e=%f\n",e);
}
```
### C语言-12
```c
/*-------------------------------------------------------
编程计算求e近似值: 用for语句求前50项之和。
e=0+1+1/1+1/1/2+1/1/2/3...
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
double t,e;
t=1.0;
e=0;
for(i=1;i<=50;i++)
{
/**********Program**********/
e += t;
t /= i;
/********** End **********/
}
printf("前50项之和为:%f\n",e);
}
```
### C语言-13
```c
/*-------------------------------------------------------
功能:输入一个圆半径(r),当r>=0时,计算并输出圆的面积(area)和周长(circumference),否则,输出提示信息。
--------------------------------------------------------*/
#include <stdio.h>
#define PI 3.14
main()
{
float r,s,l;
printf("please input r:\n");
scanf("%f",&r);
if (r>=0)
{
/**********Program**********/
s = PI * r*r;
l = 2*PI*r;
/********** End **********/
printf("the area is %f\n",s);
printf("the circumference is %f\n",l);
}
else
printf("input error!\n");
}
```
### C语言-14
```c
/*-------------------------------------------------------
功能:编写程序输入三位数(100-999),然后按数字逆序输出。(例:输入456↙,输出654)。
--------------------------------------------------------*/
#include <stdio.h>
void main()
{
int n,ge,shi,bai;
printf("请输入一个三位正整数:");
scanf("%d",&n);
if((n<100)||(n>999))
printf("输入数据有误!\n");
else
{
/**********Program**********/
ge = n % 10;
shi = n % 100 / 10;
bai = n / 100;
/********** End **********/
printf("此数的逆序输出结果为:%d%d%d\n",ge,shi,bai);
}
}
```
### C语言-15
```c
/*-------------------------------------------------------
编程计算:s=1!+2!+3!+…n! n由键盘输入,使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j,n;
long p,sum;
sum=0;
printf("请输入一个正整数n:");
scanf("%d",&n);
/**********Program**********/
p = 1;
for( i = 1;i <= n; i++ ){
p *= i;
sum += p;
}
/********** End **********/
printf("1!+2!+...+%d!= %d\n",n,sum);
}
```
### C语言-16
```c
/*-------------------------------------------------------
编程计算:s=1-3+5-7+……-99(使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,f,sum;
f=1;
sum=0;
/**********Program**********/
for(i=1;i<=99;i++){
if(i%2==1){
sum += i*f;
f*=-1;
}
}
/********** End **********/
printf("1-3+5-7+...-99 = %d\n",sum);
}
```
### C语言-17
```c
/*-------------------------------------------------------
功能:编写一个简单计算器程序,输入格式为:a op b。其中 a和b是
参加运算的两个数,op 为运算符,它的取值只能是+、-、*、/。
例:(注意输出格式)
输入:3+4
输出:3.000000+4.000000=7.000000
--------------------------------------------------------*/
#include<stdio.h>
main()
{
float a,b;
char op;
printf("Please enter a,b and op:");
scanf("%f,%c,%f",&a,&op,&b);
switch(op)
{
/**********Program**********/
case '+':printf("%f+%f=%f\n", a, b, a+b);break;
case '-':printf("%f-%f=%f\n", a, b, a-b);break;
case '*':printf("%f*%f=%f\n", a, b, a*b);break;
/********** End **********/
case '/':if(b!=0)
printf("%f/%f=%f\n",a,b,a/b);
else
printf("error!\n");break;
default:printf("error!\n");break;
}
}
```
### C语言-18
```c
/*-------------------------------------------------------
功能:编写程序,把三个整数中最大的打印出来。
--------------------------------------------------------*/
#include"stdio.h"
main()
{
int a,b,c,m;
scanf("%d,%d,%d", &a,&b,&c);
/**********Program**********/
m = a;
if( b > m ){
m = b;
}
if ( c > m ) {
m = c;
}
/********** End **********/
printf ("m=%d\n",m);
}
```
### C语言-19
```c
/*-------------------------------------------------------
功能::使用for循环打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
--------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j,k;
/**********Program**********/
for(i=-3;i<=3;i++){
for(j=0;j<(i<0?-i:i);j++){
printf(" ");
}
for(k=0;k<7-j*2;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
}
```
### C语言-20
```c
/*-------------------------------------------------------
功能:找出n个数中最大的数和最小的数,并将它们的值输出出来。
--------------------------------------------------------*/
#include<stdio.h>
int main()
{
int a,n,i,min,max;
scanf("%d",&n);
scanf("%d",&a);
min=a;
max=a;
for(i=1;i<n;i++)
{
/**********Program**********/
scanf("%d", &a);
if(a > max){
max = a;
}
if(a < min){
min = a;
}
/********** End **********/
}
printf("The maximum number is %d.\n",max);
printf("The minimum number is %d.\n",min);
}
```
+657
View File
@@ -0,0 +1,657 @@
### C语言-1
```c
/*-------------------------------------------------------
任意输入一个日期,计算这一天是这一年中的第几天(考虑闰年和平年)。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int y,m,d,s,f;
s=0;
printf("请输入一个日期(YYYY-MM-DD):");
scanf("%d-%d-%d",&y,&m,&d);
if(y%4==0&&y%100!=0||y%400==0)
f=1;
else
f=0;
switch(m-1)
{
/**********Program**********/
case 11: s+=30;
case 10: s+=31;
case 9: s+=30;
case 8: s+=31;
case 7: s+=31;
case 6: s+=30;
case 5: s+=31;
case 4: s+=30;
case 3: s+=31;
case 2: s+=f+28;
case 1: s+=31;
/********** End **********/
}
s=s+d ;
printf("%d-%d-%d是这一年中的第%d天\n",y,m,d,s);
}
```
### C语言-2
```c
/*-------------------------------------------------------
编程求s=a+aa+aaa+aaaa+aa…a的值。其中a为一个数字,例:3+33+333+3333+33333,要求a以及所加数字个数n由键盘输入,示例中a=3,n=5。(注:使用for
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,n,s,i,t;
s=t=0;
printf("请输入数字a:");
scanf("%d",&a);
printf("请输入求和的项数n:");
scanf("%d",&n);
/**********Program**********/
t = a;
for(i=0;i<n;i++){
s += t;
t*=10;
t+=a;
}
/********** End **********/
printf("s=%d\n",s);
}
```
### C语言-3
```c
/*-------------------------------------------------------
从键盘输入一个十进制整数,将其转换为二进制后反序再转成新的十进制后输出。(例:11→1011→1101→13)(注:使用while循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,s,t;
s=0;
printf("请输入一个整数:");
scanf("%d",&n);
/**********Program**********/
//1011 从最末尾开始 依次除出
//加入s之前将前加入的数*1
while(n){
s += s + n%2;
n /= 2;
}
/********** End **********/
printf("%d\n",s);
}
```
### C语言-4
```c
/*-------------------------------------------------------
编程判断m是否素数,m由键盘输入。(使用for)
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int m,i,k;
printf("请输入一个正整数 :");
scanf("%d",&m);
k=sqrt(m);
/**********Program**********/
for(i=2;i<=k;i++){
if(m % i == 0){
break;
}
}
/********** End **********/
if(i>k)
printf("%d是素数\n",m);
else
printf("%d不是素数\n",m);
}
```
### C语言-5
```c
/*-------------------------------------------------------
编程判断m是否素数,m由键盘输入。(使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int m,i;
printf("请输入一个正整数 :");
scanf("%d",&m);
/**********Program**********/
for(i=2;i<m;i++){
if(m%i==0){
break;
}
}
/********** End **********/
if(i==m)
printf("%d是素数\n",m);
else
printf("%d不是素数\n",m);
}
```
### C语言-6
```c
/*-------------------------------------------------------
使用for循环输出99乘法表,要求格式如图所示: (注:乘积占四个字符)
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
/**********Program**********/
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-7
```c
/*-------------------------------------------------------
从键盘输入5个整数,输出其最大值、最小值、平均值。(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,s,max,min,i;
double avg;
scanf("%d",&n);
s=max=min=n;
for(i=2;i<=5;i++)
{
scanf("%d",&n);
/**********Program**********/
if(n > max){
max = n;
}
if(n < min){
min = n;
}
s+=n;
/********** End **********/
}
avg=s/5.0;
printf("max=%d,min=%d,avg=%f\n",max,min,avg);
}
```
### C语言-8
```c
/*-------------------------------------------------------
编写程序,输出从公元2000年至3000年所有闰年的年号,每输出10个年号换一行。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int year,count;
count=0;
for(year=2000;year<=3000;year++)
{
if(year%4==0&&year%100!=0 || year%400==0) {
printf("%-6d",year);
/**********Program**********/
count++;
if(count%10==0){
printf("\n");
}
}
/********** End **********/
}
}
```
### C语言-9
```c
/*-------------------------------------------------------
输入一个年月日,要求输出这一天是该年的第几天。(例如:2000年3月2日是该年的第62天)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i, year,month,day,days;
days=0;
printf("请输入一年日期(格式为:yyyy-mm-dd):");
scanf("%d-%d-%d",&year,&month,&day);
for(i=1;i<month;i++)
{
switch(i)
{
/**********Program**********/
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:days+=31;break;
case 2: days+=28;days += (year%4==0&&year%100!=0||year%400==0)?1:0;break;
default:
days+=30;
/********** End **********/ }
}
days=days+day;
printf("%d-%d-%d是这一年中的第%d天\n",year,month,day,days);
}
```
### C语言-10
```c
/*-------------------------------------------------------
求前100个素数,输出时每个数占5个字符宽度,10个一行,并输出其平均值。
结果:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499 503 509 521 523 541
average=241.330000
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,m,sum;
double avg;
k=0;
sum=0;
for(i=2;k<100;i++)
{
m=sqrt(i);
/**********Program**********/
for(j=2;j<=m;j++){
if(i%j==0){
break;
}
}
if(j>m){
printf("%5d", i);
k++;
sum+=i;
if(k%10==0){
printf("\n");
}
}
/********** End **********/
}
avg=sum/100.0;
printf("\naverage=%f\n",avg);
}
```
### C语言-11
```c
/*-------------------------------------------------------
求100到200间的所有素数,输出时每个数占5个字符宽度,10个一行。要求在奇数中找素数。
结果:
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,m;
k=0;
for(i=101;i<200;i+=2 )
{
m=sqrt(i);
/**********Program**********/
for(j=2;j<=m;j++){
if(i%j==0){
break;
}
}
if(j > m){
printf("%5d", i);
k++;
if(k%10==0){
printf("\n");
}
}
/********** End **********/
}
}
```
### C语言-12
```c
/*-------------------------------------------------------
使用for循环输出99乘法表,要求格式如图所示: (注:乘积占四个字符)
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
/**********Program**********/
for(i=1;i<10;i++){
for(j=1;j<10;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-13
```c
/*-------------------------------------------------------
编写程序打印一个n行的菱形,n由键盘输入
输入:5
输出:
*
***
*****
***
*
-----------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,n;
printf("请输入一个奇数(行数)n:");
scanf("%d",&n);
for(i=-n/2; i<=n/2;i++)
{
/**********Program**********/
for(j=0;j<abs(i);j++){
printf(" ");
}
for(k=0;k<n-j*2;k++){
printf("*");
}
printf("\n");
/********** End **********/
}
}
```
### C语言-14
```c
/*-------------------------------------------------------
编程输出500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数字立方和等于该数本身(例:153=13+53+33)。(使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,i;
/**********Program**********/
for(i=100;i<500;i++){
a = i%10;
b = i%100/10;
c = i/100;
if(a*a*a + b*b*b + c*c*c == i)
/********** End **********/
printf("%d\n",i);
}
}
```
### C语言-15
```c
/*-------------------------------------------------------
斐波那契数列的前几项是:1、1、2、3、5、8、13、21……编程输出该数列,直到某项的值大于10000为止,每行输出4个。
结果:
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,i;
a=b=1;
printf("%d\t%d\t",a,b);
for(i=3;;i++)
{
c=a+b;
if(c>10000)
break;
printf("%d\t",c);
/**********Program**********/
if(i%4==0){
printf("\n");
}
a = b;
b = c;
}
/********** End **********/
}
```
### C语言-16
```c
/*-------------------------------------------------------
斐波那契数列的前几项是:1、1、2、3、5、8、13、21……编程输出该数列的前20项,每行输出4个。
结果:
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,i;
a=b=1;
printf("%d\t%d\t",a,b);
for(i=3;i<=20;i++)
{
c=a+b;
printf("%d\t",c);
/**********Program**********/
if(i%4==0){
printf("\n");
}
a = b;
b = c;
/********** End **********/
}
}
```
### C语言-17
```c
/*-------------------------------------------------------
使用for循环输出99乘法表,要求格式如图所示:(注:格式 %dx%d=%-4d)
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24
7x1=7 7x2=14 7x3=21
8x1=8 8x2=16
9x1=9
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
/**********Program**********/
for(i = 1;i<10;i++){
for(j=1;j<=10-i;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-18
```c
/*-------------------------------------------------------
使用for循环输出99乘法表,要求格式如图所示:
1x9=9
2x8=16 2x9=18
3x7=21 3x8=24 3x9=27
4x6=24 4x7=28 4x8=32 4x9=36
5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<10-i;j++)
{
printf("\t");
}
/**********Program**********/
for(j=10-i;j<10;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-19
```c
/*-------------------------------------------------------
使用for循环输出99乘法表,要求格式如图所示:
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x6=36 6x7=42 6x8=48 6x9=54
7x7=49 7x8=56 7x9=63
8x8=64 8x9=72
9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<i;j++)
{
printf("\t");
}
/**********Program**********/
for(j=i;j<10;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-20
```c
/*-------------------------------------------------------
请编写输出以下图案的程序。(注意:需要使用math库abs)
1
123
12345
1234567
12345
123
1
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j;
for(i=-3;i<=3;i++)
{
/**********Program**********/
for(j=0;j<7-abs(i)*2;j++){
printf("%d", j+1);
}
printf("\n");
/********** End **********/
}
}
```
+579
View File
@@ -0,0 +1,579 @@
### C语言-1
```c
/*-------------------------------------------------------
输入三角形三边长,判断能否构成三角形,如能构成则输出其面积,不能则给出错误提示。
(海伦公式):
一个三角形,边长分别为a、b、c,面积S可由一下公式求得
S=√p(p-a)(p-b)(p-c)
公式里p为半周长(周长的一半):P=(a+b+c)/2
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
/**********Program**********/
double S(int a, int b, int c){
return (a+b+c)/2;
}
double AREA(double t, int a, int b, int c){
return sqrt(t*(t-a)*(t-b)*(t-c));
}
/********** End **********/
main()
{
int a,b,c;
double t,area;
printf("请输入三个正整数,表示三角形的三个边长:");
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
t=S(a,b,c);
area=AREA(t,a,b,c);
printf("三角形的面积是:%f\n",area);
}
else
printf("不能构成三角形\n");
}
```
### C语言-2
```c
/*-------------------------------------------------------
将一张100元钞票换成等值的10元,5元,2元和1元的小钞,每次换成40张小钞,要求每一种小钞都要有,编程求出所有可能的换法总数输出并输出各换法的组合。(注:使用for循环)
结果:
10元钞票有1张,5元钞票有5张,2元钞票有31张,1元钞票有3张
10元钞票有1张,5元钞票有6张,2元钞票有27张,1元钞票有6张
10元钞票有1张,5元钞票有7张,2元钞票有23张,1元钞票有9张
总共有34种换法
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,d,s;
s=0;
/**********Program**********/
for(a=1;a<10;a++){
for(b=1;b<20;b++){
for(c=1;c<50;c++){
for(d=1;d<100;d++){
if(a*10+b*5+c*2+d == 100 && a+b+c+d==40){
s++;
/********** End **********/
printf("10元钞票有%d张,5元钞票有%d张,2元钞票有%d张,1元钞票有%d张\n",a,b,c,d);
}
}
}
}
}
printf("\n总共有%d种换法\n",s);
}
```
### C语言-3
```c
/*-------------------------------------------------------
编程将一个正整数分解成质因数(注:使用while循环)
例如:
输入 90
输出 90=2*3*3*5
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,i;
printf("请输入一个正整数:");
scanf("%d",&n);
printf("%d=",n);
i=2;
/**********Program**********/
while(n > i){
if(n%i==0){
printf("%d*", i);
n/=i;
}else{
i++;
}
}
/********** End **********/
printf("%d\n",n);
}
```
### C语言-4
```c
/*-------------------------------------------------------
韩信点兵,韩信带1500名士兵打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。编程计算还有多少士兵? (注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
/**********Program**********/
for(i=1000;i<1100;i++){
if(i%3==2 && i%5==4 && i%7==6)
/********** End **********/
printf("还有%d名士兵\n",i);
}
}
```
### C语言-5
```c
/*-------------------------------------------------------
百马百担,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,每匹马都要驮货,编程计算大马(dm)、中马(zm)、小马(xm)各有多少匹。 (注:使用for循环)
结果:
大马有2匹,中马有30匹,小马有68匹
大马有5匹,中马有25匹,小马有70匹
大马有8匹,中马有20匹,小马有72匹
大马有11匹,中马有15匹,小马有74匹
大马有14匹,中马有10匹,小马有76匹
大马有17匹,中马有5匹,小马有78匹
-------------------------------------------------------*/
#include <stdio.h>
void main() {
int dm,zm,xm;
/**********Program**********/
for(dm=1;dm<66;dm++){
for(zm=1;zm<100;zm++){
for(xm=2;xm<200;xm+=2){
if(dm*3+zm*2+xm/2 == 100 && dm+zm+xm==100)
/********** End **********/
printf("大马有%d匹,中马有%d匹,小马有%d匹\n",dm,zm,xm);
}
}
}
}
```
### C语言-6
```c
/*-------------------------------------------------------
鸡兔同笼,《孙子算经》中记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”,编程计算鸡和兔子各有多少只。(注:使用for循环)
结果:
鸡有23只,兔有12只
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int j,t;
/**********Program**********/
for(j=1;j<35;j++){
for(t=1;t<35;t++){
if(j*2+t*4==94 && j+t == 35)
/********** End **********/
printf("鸡有%d只,兔有%d只\n",j,t);
}
}
}
```
### C语言-7
```c
/*-------------------------------------------------------
编程输出1000以内的完数,所谓完数是指一个数的所有因子(包含1但不包含其本身)之和等于这个数本身。(例:28=1+2+4+7+14
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j,s;
for(i=2;i<=1000;i++)
{
s=0;
/**********Program**********/
for(j=1;j<i;j++){
if(i%j==0){
s+=j;
}
}
/********** End **********/
if(s==i)
printf("%d\n",i);
}
}
```
### C语言-8
```c
/*-------------------------------------------------------
编程求所有能被3且能被5且能被7整除的三位数并输出(每个数字占5字符宽度,5个一行)。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,k;
k=0;
for(i=100;i<=999;i++)
{
/**********Program**********/
if(i%3 ==0 && i%5==0 && i%7==0){
/********** End **********/
printf("%5d",i);
k++;
if(k%5==0)
printf("\n");
}
}
}
```
### C语言-9
```c
/*-------------------------------------------------------
输入一个整数,判断是否为回文数(所谓回文数就是左右对称的数)
(注:使用while循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,t,s;
s=0;
scanf("%d",&n);
t=n;
/**********Program**********/
while(n){
s*=10;
s+=n%10;
n/=10;
}
/********** End **********/
if( t==s )
printf("yes\n");
else
printf("no\n");
}
```
### C语言-10
```c
/*-------------------------------------------------------
百钱买百鸡,《算经》一书中记载
“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
要求每一种鸡都要有,编程输出公鸡(gj)、母鸡(mj)、小鸡(xj)各有多少只。
结果:(注:使用for循环)
公鸡有4只,母鸡有18只,小鸡有78只
公鸡有8只,母鸡有11只,小鸡有81只
公鸡有12只,母鸡有4只,小鸡有84只
-------------------------------------------------------*/
#include <stdio.h>
void main()
{
int gj,mj,xj;
/**********Program**********/
for(gj=1;gj<20;gj++){
for(mj=1;mj<34;mj++){
for(xj=3;xj<300;xj+=3){
if(gj+mj+xj==100 && gj*5+mj*3+xj/3 == 100)
/********** End **********/
printf("公鸡有%d只,母鸡有%d只,小鸡有%d只\n",gj,mj,xj);
}
}
}
}
```
### C语言-11
```c
/*-------------------------------------------------------
《孙子算经》中有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?” (注:使用while循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
i=1;
/**********Program**********/
while(1){
if(i%3==2&&i%5==3&&i%7==2)
/********** End **********/
{
printf("%d\n",i);
break;
}
i++;
}
}
```
### C语言-12
```c
/*-------------------------------------------------------
61.【程序功能】猴子吃桃,猴子第一天摘下若干个桃子, 吃了总数的一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都这样吃。到第十天时, 发现只有一个桃子了。编程求第一天摘了多少个桃子。(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
void main() {
int i,t;
t=1;
/**********Program**********/
for(i=0;i<9;i++){
t=(t+1)*2;
}
/********** End **********/
printf("第一天共摘了%d只桃\n",t);
}
```
### C语言-13
```c
/*-------------------------------------------------------
编写函数(sum),计算1+2+3+…+n的和,n由键盘输入。
-------------------------------------------------------*/
#include <stdio.h>
int sum(int n);
main()
{
int n,s;
printf("请输入一个整数n:");
scanf("%d",&n);
s=sum(n);
printf("1+2+...+%d=%d\n",n,s);
}
/**********Program**********/
int sum(int n){
int s = 0, i;
for(i=1;i<=n;i++){
s += i;
}
return s;
}
/********** End **********/
```
### C语言-14
```c
/*-------------------------------------------------------
编程用“碾转相除法”求两个整数的最大公约数,两个整数由键盘输入。(注:使用while循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int m,n,t;
printf("请输入两个整数:");
scanf("%d%d",&m,&n);
t=m%n;
/**********Program**********/
while(t){
m = n;
n = t;
t = m%n;
}
/********** End **********/
printf("最大公约数是:%d\n",n);
}
```
### C语言-15
```c
/*-------------------------------------------------------
一个正整数加上100后是完全平方数,加上268后还是一个完全平方数,编程求出这样的数并输出(在10000以内求)。
结果:
21
261
1581
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k;
for(i=1;i<=10000;i++)
{
/**********Program**********/
if(pow((int)sqrt(i+100), 2) == i+100 && pow((int)sqrt(i+268), 2) == i+268){
/********** End **********/
printf("%d\n",i);
}
}
}
```
### C语言-16
```c
/*-------------------------------------------------------
输入一个整数,输出该数所有因子(1和它本身除外)之和。例如6的因子有2和3,则输出5
(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,i,s;
printf("请输入一个整数n");
scanf("%d",&n);
s=0;
/**********Program**********/
for(i=2;i<n;i++){
if(n%i==0){
s+=i;
}
}
/********** End **********/
printf("s=%d\n",s);
}
```
### C语言-17
```c
/*-------------------------------------------------------
编程求100以内的所有奇数之和,以及偶数之和。(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,odd,even;
odd=even=0;
/**********Program**********/
for(i=1;i<=100;i++){
if(i%2){
odd+=i;
}else{
even+=i;
}
}
/********** End **********/
printf("奇数之和为:%d,偶数之和为:%d\n",odd,even);
}
```
### C语言-18
```c
/*-------------------------------------------------------
输出100-1000以内所有的回文数,一行10个。(注:每个数占5个字符)
101 111 121 131 141 151 161 171 181 191
202 212 222 232 242 252 262 272 282 292
303 313 323 333 343 353 363 373 383 393
404 414 424 434 444 454 464 474 484 494
505 515 525 535 545 555 565 575 585 595
606 616 626 636 646 656 666 676 686 696
707 717 727 737 747 757 767 777 787 797
808 818 828 838 848 858 868 878 888 898
909 919 929 939 949 959 969 979 989 999
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,s,t,k;
k=0;
/**********Program**********/
for(i=100;i<1000;i++){
s = 0;
t = i;
while(t){
s*=10;
s+=t%10;
t/=10;
}
if(s == i){
printf("%5d", i);
k++;
if(k%10==0){
printf("\n");
}
}
}
/********** End **********/
}
```
### C语言-19
```c
/*-------------------------------------------------------
编程求用1,2,3,4四个数字可以组成多少个无重复数字的四位数,并输出这些四位数。(注:使用for循环)
结果:
1234
1243
1324
可以组成24个无重复数字的四位数
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,d,count;
count=0;
/**********Program**********/
for(a=1;a<5;a++)
for(b=1;b<5;b++)
for(c=1;c<5;c++)
for(d=1;d<5;d++)
if(a!=b && a!=c && a!=d && b!=c && b!=d && c!=d){
printf("%d%d%d%d\n", a, b, c, d);
count++;
}
/********** End **********/
printf("可以组成%d个无重复数字的四位数\n",count);
}
```
### C语言-20
```c
/*-------------------------------------------------------
一小球从100米落下,每次弹跳原来一半高,求第10次落地时经过的距离及第10次弹跳的高度。
(注:使用for循环)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i;
double h,s;
s=100;
h=50;
/**********Program**********/
for(i=0;i<9;i++){
s+=h*2;
h/=2;
}
/********** End **********/
printf("第10次落地时经过的距离为%f米,第10次弹跳的高度为%f米\n",s,h);
}
```
+388
View File
@@ -0,0 +1,388 @@
### 第一套
```sql
#1
/*
主键自增字段:DEFAULT
设置成空值:NULL
*/
INSERT INTO t_employee()
VALUES('e0013', '刘红', '', 22, '实习生', 'd0002', NULL);
#2.
/*
修改表中字段的数据类型
ALTER TABLE 表名 MODIFY 字段名 数据类型 [约束];
*/
ALTER TABLE t_employee MODIFY sex ENUM('', '');
#3
/*
学生表(学号、姓名、班级编号)
班级表(班级编号、班级名称)
外键表:学生表 主键表:班级表
ALTER TABLE 学生表 ADD CONSTRAINT fk_st FOREIGN KEY(班级编号) REFERENCES 班级表(班级编号);
FOREIGN KEY(字段) 外键表中的字段
REFERENCES 表名(字段) 字段是表中的主键
*/
ALTER TABLE ADD CONSTRAINT FOREIGN KEY() REFERENCES ();
ALTER TABLE t_employee ADD CONSTRAINT fK_did FOREIGN KEY(did) REFERENCES t_department(did);
#4 tj11
/*
基础查询
SELECT 字段
FROM 表
ORDER BY 需要排序的字段 ASC/DESC(升序/降序)
LIMIT 起始位置,个数;
*/
#
SELECT *
FROM t_employee;
#
SELECT *
FROM t_employee
ORDER BY age DESC;
#
SELECT *
FROM t_employee
ORDER BY age DESC
LIMIT 5, 8;#0 使5
#5 tj12
/*
SELECT 字段
FROM 表
WHERE 条件;
*/
SELECT *
FROM t_salary
WHERE money >= 5000 AND money <= 8000;
#6 tj13
SELECT eid, MAX(money)
FROM t_salary
GROUP BY eid;
#7 tj14 +
SELECT d.dname, e.ename
FROM t_employee e, t_department d
WHERE e.did = d.did AND e.position = '经理';
#8
CREATE VIEW v_hrm AS
SELECT d.dname, e.ename, s.money, s.stime
FROM t_employee e, t_department d, t_salary s
WHERE e.did = d.did AND e.eid = s.eid
ORDER BY s.stime DESC;
#9
DELIMITER $$
DROP TRIGGER IF EXISTS tri_updateGroup;
CREATE TRIGGER tri_updateGroup
BEFORE UPDATE ON t_employee
FOR EACH ROW
BEGIN
IF NEW.age != OLD.age THEN
IF NEW.age<30 THEN
SET NEW.groups = '青年';
ELSEIF NEW.age<50 THEN
SET NEW.groups = '中年';
ELSE
SET NEW.groups = '老年';
END IF;
END IF;
END $$
DELIMITER ;
#10
DELIMITER $$ #
DROP PROCEDURE IF EXISTS pro_GetTopSalary;#
#
CREATE PROCEDURE pro_GetTopSalary(IN in_did CHAR(10), OUT out_ename VARCHAR(30))
BEGIN
#++
SELECT e.ename INTO out_ename
FROM t_employee e, t_salary s
WHERE e.eid = s.eid AND e.did = in_did
ORDER BY s.money DESC
LIMIT 1;
END $$
DELIMITER ;
# 使
CALL pro_GetTopSalary('d0001', @result);
SELECT @result;
```
### 第二套
```sql
#1
CREATE TABLE t_booking(
bid CHAR(10) PRIMARY KEY,
rid CHAR(10) NOT NULL,
customerName VARCHAR(50),
tel VARCHAR(30),
btime DATE
);
#2
INSERT INTO t_booking()
VALUES('b0001', 'r0002', '诸葛亮', '1821234567', '2023-10-01');
#3
ALTER TABLE t_hotel ADD introduce VARCHAR(255);
#4
UPDATE t_room r
SET r.price = 500
WHERE r.rid = 'r0003';
#5 tj11
SELECT *
FROM t_hotel h
WHERE h.`level` IN ('二星', '三星');
#6 tj12
SELECT h.hid, ROUND(AVG(r.price), 2)
FROM t_hotel h, t_room r
WHERE h.hid = r.hid
GROUP BY h.hid;
#7 +
CREATE VIEW v_hotel AS
SELECT h.hname, r.rname, r.price
FROM t_hotel h, t_room r
WHERE h.hid = r.hid AND r.price =(
SELECT MAX(price)
FROM t_room
WHERE hid = h.hid
);
#8
DELIMITER $$
DROP TRIGGER IF EXISTS tri_updateIntroduce;
CREATE TRIGGER tri_updateIntroduce
BEFORE UPDATE ON t_hotel
FOR EACH ROW
BEGIN
IF NEW.`level` = '一星' OR NEW.`level` = '二星' THEN
SET NEW.introduce = '实用';
ELSEIF NEW.`level` = '三星' OR NEW.`level` = '四星' THEN
SET NEW.introduce = '豪华';
ELSEIF NEW.`level` = '五星' THEN
SET NEW.introduce = '奢华';
END IF;
END $$
DELIMITER ;
#9
DELIMITER $$
DROP PROCEDURE IF EXISTS pro_GetLowPrice;
CREATE PROCEDURE pro_GetLowPrice(IN in_rname VARCHAR(30), OUT out_hname VARCHAR(30))
BEGIN
SELECT h.hname INTO out_hname
FROM t_hotel h, t_room r
WHERE h.hid = r.hid AND r.rname = in_rname
ORDER BY r.price
LIMIT 1;
END $$
DELIMITER ;
CALL pro_GetLowPrice('标准间', @result);
SELECT @result;
```
### 第三套
```sql
#1
CREATE TABLE tb_order(
oid INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID',
odate DATETIME NOT NULL COMMENT '下单日期',
quantity INT NOT NULL DEFAULT 1 COMMENT '下单数量'
);
#2
ALTER TABLE tb_books MODIFY price DECIMAL(10, 2);
#3
ALTER TABLE tb_book_authors ADD CONSTRAINT tB_ibfk_1 FOREIGN KEY(book_id) REFERENCES tb_books(book_id);
ALTER TABLE tb_book_authors ADD CONSTRAINT tB_ibfk_2 FOREIGN KEY(author_id) REFERENCES tb_authors(author_id);
#4
ALTER TABLE tb_authors ADD avatar MEDIUMBLOB;
#5
#使LOAD_FILE函数
SELECT LOAD_FILE('C:/TTLXExam/20501071168/MYSQLDB/3/jinyong.jpg');
UPDATE tb_authors a
SET a.avatar = LOAD_FILE('C:/TTLXExam/20501071168/MYSQLDB/3/jinyong.jpg')
WHERE a.author_name = '金庸';
#6
#INSTR(, )
#SUBSTR(, )
SELECT SUBSTR(b.note,INSTR(b.note,'-')+2)
FROM tb_books b;
UPDATE tb_books b
SET b.note = SUBSTR(b.note,INSTR(b.note,'-')+2);
#7 tj11 ++
SELECT b.book_id, b.title, a.author_id, a.author_name, b.publication_date
FROM tb_books b, tb_authors a
WHERE b.note = a.author_name AND YEAR(b.publication_date) BETWEEN 1980 AND 2010
ORDER BY b.publication_date DESC;
#8 tj12 ++
SELECT a.author_id, a.author_name, COUNT(*)
FROM tb_books b, tb_authors a
WHERE b.note = a.author_name
GROUP BY a.author_id
HAVING COUNT(*) > 1;
#9
CREATE VIEW v_book AS
SELECT b.genre, a.author_name, COUNT(*) c
FROM tb_books b, tb_authors a
WHERE b.note = a.author_name
GROUP BY b.genre, a.author_id #
HAVING COUNT(*) = ( #
SELECT COUNT(*)
FROM tb_books
WHERE b.genre = genre
GROUP BY note
ORDER BY COUNT(*) DESC
LIMIT 1
);
#10
DELIMITER $$
DROP TRIGGER IF EXISTS tri_updateCentury;
CREATE TRIGGER tri_updateCentury
BEFORE UPDATE ON tb_books
FOR EACH ROW
BEGIN
#
/*
计算出世纪数+字符串拼接
IF NEW.publication_date <> OLD.publication_date THEN
SET NEW.century = CONCAT(FLOOR(YEAR(NEW.publication_date)/100) + 1, '世纪');
END IF;
*/
# 使IF
IF NEW.publication_date <> OLD.publication_date THEN
IF YEAR(NEW.publication_date) BETWEEN 1800 AND 1899 THEN
SET NEW.century = '19世纪';
ELSEIF YEAR(NEW.publication_date) BETWEEN 1900 AND 1999 THEN
SET NEW.century = '20世纪';
ELSEIF YEAR(NEW.publication_date) BETWEEN 2000 AND 2099 THEN
SET NEW.century = '21世纪';
END IF;
END IF;
END $$
DELIMITER ;
SELECT CONCAT(FLOOR(YEAR(publication_date)/100) + 1, '世纪')
FROM tb_books;
#11
DELIMITER $$
DROP PROCEDURE IF EXISTS pro_GetTopFictionPrice;
CREATE PROCEDURE pro_GetTopFictionPrice(IN in_genre VARCHAR(255), OUT out_title VARCHAR(255))
BEGIN
SELECT b.title INTO out_title
FROM tb_books b
WHERE b.genre = in_genre AND YEAR(b.publication_date) BETWEEN 2000 AND 2099
ORDER BY b.price DESC
LIMIT 1;
END $$
DELIMITER ;
```
### 第四套
```sql
#1
ALTER TABLE tb_students MODIFY gender ENUM('', '', '未知');
#2
ALTER TABLE tb_scores MODIFY score FLOAT(7, 2);
#3
CREATE TABLE tb_scores_bak1 AS
SELECT *
FROM tb_scores;
#4
UPDATE test1 t1, (
SELECT tname, CONCAT(tname,'@',COUNT(*)) str
FROM test1
GROUP BY tname
HAVING COUNT(*) IN (3, 4)
)t2
SET t1.tname = t2.str
WHERE t1.tname = t2.tname;
#5
SELECT *
FROM tb_courses c
ORDER BY c.cid+0
LIMIT 4, 11;
#6
SELECT s.stuname, TIMESTAMPDIFF(YEAR,s.birthday,'2023-12-01')
FROM tb_students s
WHERE TIMESTAMPDIFF(YEAR,s.birthday,'2023-12-01') BETWEEN 30 AND 40;
#7
SELECT st.stuname, st.gender, st.birthday, c.cname, sc.score,
IF(sc.score >= 90, '优秀',
IF(sc.score >= 80, '良好',
IF(sc.score >= 70, '中等',
IF(sc.score >= 60, '及格', '不及格'))))
FROM tb_students st, tb_scores sc, tb_courses c
WHERE st.stuid = sc.student_id AND sc.course_id = c.cid
ORDER BY sc.score DESC;
#8
CREATE VIEW v_scores AS
SELECT c.cname, CEIL(AVG(sc.score)), MAX(sc.score), MIN(sc.score)
FROM tb_students st, tb_scores sc, tb_courses c
WHERE st.stuid = sc.student_id AND sc.course_id = c.cid
GROUP BY c.cid;
#9
DELIMITER $$
CREATE TRIGGER tri_updateAgeGroup
BEFORE UPDATE ON tb_students
FOR EACH ROW
BEGIN
IF YEAR(NEW.birthday) BETWEEN 2004 AND 2024 THEN
SET NEW.age_group = '青年';
ELSEIF YEAR(NEW.birthday) BETWEEN 1984 AND 2003 THEN
SET NEW.age_group = '中年';
ELSEIF YEAR(NEW.birthday) < 1984 THEN
SET NEW.age_group = '老年';
END IF;
END $$
DELIMITER ;
#10
DELIMITER $$
DROP PROCEDURE IF EXISTS pro_GetTopStudent;
CREATE PROCEDURE pro_GetTopStudent(IN in_cid CHAR(11), OUT out_stuname VARCHAR(50))
BEGIN
SELECT st.stuname INTO out_stuname
FROM tb_students st, tb_scores sc
WHERE st.stuid = sc.student_id AND sc.course_id = in_cid
ORDER BY sc.score DESC
LIMIT 1;
END $$
DELIMITER ;
CALL pro_GetTopStudent(1, @result);
SELECT @result;
```
+297
View File
@@ -0,0 +1,297 @@
### C语言-1
```c
/*------------------------------------------------------------------------------
(1)【程序设计】下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:AAaaBBbb123CCcccd,则应输出:upper6lower8。
------------------------------------------------------------------------------*/
#include <stdio.h>
void fun ( char *s, int *a, int *b)
{
/**********Program**********/
while(*s != '\0'){
if(*s >= 'A' && *s <= 'Z'){
(*a)++;
}
if(*s >= 'a' && *s <= 'z'){
(*b)++;
}
s++;
}
/********** End **********/
}
main( )
{
char s[100];
int upper=0, lower=0;
printf( "\nPlease a string : " );
gets(s);
fun(s,&upper,&lower);
printf("\n upper=%d lower=%d\n",upper,lower );
}
```
### C语言-2
```c
/*------------------------------------------------------------------------
题目:函数fun的功能:将字符串str中第k个字符开始的n个字符逆序重排,
例如:输入1,5 输出54321abcde
输入3,6 输出12cba543de
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
Program-End之间填入若干语句。不要删除标志否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void fun(char *str, int k, int n )
{
int i,j; char t;
for(i=k-1,j=k-1+n-1;i<j;i++,j--)
{
/**********Program**********/
t = str[i];
str[i] = str[j];
str[j] = t;
/********** End **********/
}
}
int main( )
{
char str[]="12345abcde";
unsigned int k,n;
scanf("%d,%d",&k,&n);
if(k+n-1<=strlen(str))
{ fun(str,k,n);
puts(str); }
else
printf("所输入的k,n值不合适!\n");
return 0;
}
```
### C语言-3
```c
/*------------------------------------------------------------------
功能:编程统计一个字符串中的字母、数字、空格和其它字符的个数。
---------------------------------------------------------------------*/
#include <stdio.h>
void fun(char s[],int b[])
{
int i;
/**********Program**********/
i=0;
while(s[i] != '\0'){
if(s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z'){
b[0]++;
}else if(s[i] >= '0' && s[i] <= '9'){
b[1]++;
}else if(s[i] == ' '){
b[2]++;
}else{
b[3]++;
}
i++;
}
/********** End **********/
}
main ()
{
char s1[80];int a[4]={0};
int k;
void fun(char s[],int b[]) ;
gets(s1);
fun(s1,a);
puts(s1);
for(k=0;k<4;k++)
printf("%4d",a[k]);
}
```
### C语言-4
```c
/*------------------------------------------------------------------------
程序功能:从键盘输入三个整数,比较三个数并显示相应信息,具体如下:
(1)如果三个数都相等,显示"***"
(2)如果三个数中只有某两个数相等,显示"@@"
(3)如果三个数互不相等,则显示"&"。
(输出要换行)
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
Program-End之间删除【?】填入若干语句。不要删除标志否则不得分。
----------------------------------------------------------------------*/
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==b && b==c)
printf("***\n");
/**********Program**********/
else if(a==b || b==c || a==c)
/********** End **********/
printf("@@\n");
else printf("&\n");
return 0;
}
```
### MySQL-1
```sql
#1
CREATE TABLE t_hotel_manager(
mid INT PRIMARY KEY,
hid INT NOT NULL,
mname VARCHAR(10) NOT NULL,
mage INT NOT NULL,
mgender ENUM('', '', '未知'),
telephone VARCHAR(11)
);
#2
#使MODIFY添加主键字段为自动增长
ALTER TABLE t_hotel_manager MODIFY mid INT AUTO_INCREMENT;
#
ALTER TABLE t_hotel_manager AUTO_INCREMENT = 1000;
#3
INSERT INTO t_hotel_manager()
VALUES(DEFAULT, 10001, '王璐', 32, '', NULL);
#4
CREATE TABLE t_hotel_bak AS
SELECT *
FROM t_hotel;
#5
UPDATE t_client c
SET c.integral = c.integral + 100
WHERE c.cname LIKE '姚%';
#6 tj11
SELECT c.cname, SUM(r.price)
FROM t_booking b, t_client c, t_room r
WHERE b.cid = c.cid AND b.rid = r.rid
GROUP BY c.cid
ORDER BY 2 DESC
LIMIT 9, 1;
#7 tj12
SELECT h.hname, r.price
FROM t_hotel h, t_room r
WHERE h.hid = r.hid AND r.rname = '大床房' AND r.price = (
SELECT MAX(price)
FROM t_room
WHERE rname = '大床房'
);
#8 tj13
SELECT h.hname, r.rname, r.price
FROM t_room r
LEFT JOIN t_booking b ON r.rid = b.rid
INNER JOIN t_hotel h ON r.hid = h.hid
WHERE b.bid IS NULL;
#9
CREATE VIEW v_tongji AS
SELECT h.hname, SUM(r.price)
FROM t_hotel h, t_booking b, t_room r
WHERE h.hid = r.hid AND b.rid = r.rid
GROUP BY h.hid;
```
### MySQL-2
```sql
#1
ALTER TABLE tb_student ADD PRIMARY KEY(student_id);
#2
ALTER TABLE tb_student ALTER gender SET DEFAULT '';
#3
INSERT INTO tb_student()
VALUES(10025, '张三', DEFAULT, '2012-10-01', 1001);
#4
UPDATE tb_teacher t
SET t.teacher_age = 36
WHERE t.teacher_name = '王老师';
#5 tj11
SELECT MAX(t.teacher_age)
FROM tb_teacher t;
#6 tj12
SELECT c.class_name, s.student_name, s.gender
FROM tb_teacher t, tb_student s, tb_class C
where s.class_id = c.class_id AND c.teacher_id = t.teacher_id;
#7
CREATE VIEW v_teacher AS
SELECT c.class_name, t.teacher_name, COUNT(*)
FROM tb_teacher t, tb_student s, tb_class C
WHERE s.class_id = c.class_id AND c.teacher_id = t.teacher_id
GROUP BY c.class_id, t.teacher_name;
#8
DELIMITER $$
DROP TRIGGER IF EXISTS tri_updateTeacherAge;
CREATE TRIGGER tri_updateTeacherAge
BEFORE UPDATE ON tb_teacher
FOR EACH ROW
BEGIN
IF NEW.teacher_age < 30 THEN
SET NEW.age = '青年';
ELSEIF NEW.teacher_age < 50 THEN
SET NEW.age = '中年';
ELSE
SET NEW.age = '老年';
END IF;
END $$
DELIMITER ;
#9
DELIMITER $$
DROP PROCEDURE IF EXISTS Pro_GetOldClassStudent;
CREATE PROCEDURE Pro_GetOldClassStudent(IN in_class_id INT, OUT out_student_name VARCHAR(50))
BEGIN
SELECT s.student_name INTO out_student_name
FROM tb_student s, tb_class c
WHERE s.class_id = c.class_id AND c.class_id = in_class_id
ORDER BY s.birthday
LIMIT 1;
END $$
DELIMITER ;
CALL Pro_GetOldClassStudent(1001, @result);
SELECT @result;
```
+413
View File
@@ -0,0 +1,413 @@
### C语言-1
```c
/*---------------------------------------------------------
【程序设计】程序将由数字字符组成的字符串转换为10进制实数,
例如将"123.4567"转换为123.45670。
输出如下:
123.45670
0.12345
4567.00000
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
Program-End之间填入若干语句。不要删除标志否则不得分。
---------------------------------------------------------*/
#include<stdio.h>
#include<ctype.h>
double conver(char s[]){
int I,i,poi;
double F,p;
F=I=i=poi=0;
p=0.1;
/**********Program**********/
while(s[i] != '.'){
I*=10;
I+=s[i]-48;
i++;
}
i++;
while(s[i] != '\0'){
F+=(s[i]-48)*p;
p*=0.1;
i++;
}
/********** End **********/
return I+F;
}
int main()
{
char d[3][15]={"123.4567","0.12345","4567.0"};
int i;
for(i=0;i<3;i++)
printf("%12.5f\n",conver(d[i]));
return 0;
}
```
### C语言-2
```c
/*
-------------------------------------------------------
【程序填空】
---------------------------------------------------------
打印以下图案:
*****
*****
*****
*****
*****
*/
#include<stdio.h>
void main()
{
int i =0 , j =0 , k=0;
/**********Program**********/
for(i=0;i<5;i++){
for(j=0;j<i;j++){
printf(" ");
}
for(k=0;k<5;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
printf("\n");
}
```
### C语言-3
```c
/*-------------------------------------------------------
功能:功能:输入三角形的三边长,判断能否构成三角形,若能,利用海伦公式计
算该三角形的面积,计算结果保留3位小数。
l=(a+b+c)/2s=sqrt(l*(l-a)*(l-b)*(l-c))
--------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c,s,l;
scanf("%f,%f,%f",&a , &b , &c);
if(a+b<c||a+c<b||b+c<a)
printf("该3个数据不能构成三角形\n");
else
{
/**********Program**********/
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
/********** End **********/
printf("该三角形的面积为%.3f\n",s);
}
}
```
### C语言-4
```c
/*-------------------------------------------------------
编写程序,打印以下图形:
*
***
*****
*******
*****
***
*
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k;
for(i=-3;i<=3;i++)
{
/**********Program**********/
for(j=0;j<abs(i);j++){
printf(" ");
}
for(k=0;k<7-2*j;k++){
printf("*");
}
printf("\n");
/********** End **********/
}
}
```
### C语言-5
```c
/*-----------------------------------------------------------
功能:从键盘为一维整型数组输入10个整数,调用函数找出其中
最小的数并输出。
-----------------------------------------------------------*/
#include <stdio.h>
#include<stdlib.h>
/**********Program**********/
int fun(int *a, int n){
int min = a[0], i;
for(i=1;i<n;i++){
if(min > a[i]){
min = a[i];
}
}
return min;
}
/********** End **********/
main()
{
int a[10],i,min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
min=fun(a,10);
printf("min=%d\n",min);
}
```
### C语言-6
```c
/*------------------------------------------------------------------------------
【程序设计】编写函数rtrim,用来删除字符串尾部的空格,首部和中间的空格不删除。例如:字符串为:" A BC DEF "
删除后的结果是" A BC DEF"。要求函数形参采用指针变量。
测试输入: A BC DEF
测试输出: A BC DEF
说明:测试输入中,A前有4个空格,F后有5个空格
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void main()
{
void rtrim(char *p);
char s[100];
gets(s);
rtrim(s);
puts(s);
}
void rtrim(char *p)
{
int i;
/**********Program**********/
while(*p != '\0'){
p++;
}
p--;//定位到结束符前的位置
while(*p==' '){//如果当前指针位置是空格则指针向前移
p--;
}
p++;//移动当前位置后一个空格位
*p='\0';
/********** End **********/
}
```
### C语言-7
```c
/*------------------------------------------------------------------------------
【程序设计】输入字符串(不包含空格),将字符串按字符从小到大排序,然后输出字符串中除去ASCII码值能被3整除的字符。
输入输出如下:
hello world
处理后的字符串为: dehw
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
#include <string.h>
void main()
{
char str[100];
int n,i,j,t;
gets(str);
n=strlen(str);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
if(str[j]>str[j+1])
{
t=str[j];str[j]=str[j+1];str[j+1]=t;
}
}
printf("处理后的字符串为:");
/**********Program**********/
j=0;
for(i=0;i<strlen(str);i++){
if(str[i]%3==0){
continue;
}
str[j++] = str[i];
}
str[j]='\0';
puts(str);
/********** End **********/
printf("\n");
}
```
### C语言-8
```c
/*------------------------------------------------------------------------------
【程序设计】该程序实现的功能是:求一个整数各位数字之和。(使用while实现)
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
int getsum(int m)
{
int i,s=0;
/**********Program**********/
while(m){
s+=m%10;
m/=10;
}
return s;
/********** End **********/
}
int main()
{
int n,sum;
scanf("%d",&n);
sum=getsum(n);
printf("结果是%d\n",sum);
}
```
### C语言-9
```c
/*------------------------------------------------------------------------------
【程序设计】有两个降序排列的集合A和B,A中无重复元素,B中也无重复元素,
求集合B-A的差集(即:这些元素属于集合B但不属于集合A),存放于数组c中,并输出。
输入输出如下:
请输入3个整数:
3 2 1
请输入5个整数:
9 6 5 3 2
结果为:
9 6 5
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,否则不得分。
仅在Program-End之间填入若干语句。不要删除标志否则不得分。
------------------------------------------------------------------------------*/
#include<stdio.h>
void main()
{
int a[3],b[5],c[5];
int t=0,i,j=0;
printf("请输入3个整数:\n");
for(i=0;i<3;i++){
scanf("%d",&a[i]);
}
printf("请输入5个整数:\n");
for(i=0;i<5;i++){
scanf("%d",&b[i]);
}
i=0;
/**********Program**********/
while(i<3 && j<5){
if(a[i] < b[j]){
c[t++]=b[j++];
}else if(a[i] > b[j]){
i++;
}else{
i++;
j++;
}
}
/********** End **********/
while(j<5){
c[t++]=b[j++];
}
printf("结果为:\n");
for(i=0;i<t;i++){
printf("%d ",c[i]);
}
}
```
### C语言-10
```c
/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
随机输入一字符串(不包含空格,长度不超过100),删除字符串中的数字字符后输出。
例输入:I will be 17 years old soon, and I will graduate from high school in June 2025
输出:
去掉数字后的字符串为:I will be years old soon, and I will graduate from high school in June
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
Program-End之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End之外的内容否则不得分。
----------------------------------------------------------------------*/
#include<stdio.h>
#include <string.h>
void main()
{
char a[100],b[100];
int l,i,j;
gets(a);
l=strlen(a);
j=0;
/**********Program**********/
for(i=0;i<l;i++){
if(a[i] > '9' || a[i] < '0'){
b[j++] = a[i];
}
}
/********** End **********/
b[j]='\0';
printf("去掉数字后的字符串为:");
puts(b);
}
```
@@ -0,0 +1,32 @@
/*
-------------------------------------------------------
【程序填空】
---------------------------------------------------------
打印以下图案:
*****
*****
*****
*****
*****
*/
#include<stdio.h>
void main()
{
int i =0 , j =0 , k=0;
/**********Program**********/
for(i=0;i<5;i++){
for(j=0;j<i;j++){
printf(" ");
}
for(k=0;k<5;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
printf("\n");
}
@@ -0,0 +1,25 @@
/*------------------------------------------------------------------------
【程序设计】功能:使用for循环输出Fibonacci数列的前15项,要求每行输出5项。
Fibonacci数列:1,1,2,3,5,8,13...........
----------------------------------------------------------------------*/
#include <stdio.h>
main()
{
int fib[15],i;
fib[0]=1;fib[1]=1;
/**********Program**********/
for(i=2;i<15;i++){
fib[i]=fib[i-1]+fib[i-2];
}
/********** End **********/
for(i=0;i<15;i++)
{
printf("%d\t",fib[i] );
if ( i%5==4 ) printf("\n");
}
}
@@ -0,0 +1,34 @@
/*-------------------------------------------------------
1. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法IsPrime:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 --------------------------------------------------------*/
#include <stdio.h>
#include<math.h>
int IsPrime (int n)
{
int i=2;
for(i=2;i<=sqrt(n);i++)
/**********Program**********/
if(n%i==0){
return 0;
}
/********** End **********/
return 1;
}
int main( )
{
int i ;
for(i=100;i<=200;i++ )
{
if ( IsPrime( i) )
{
printf("% d",i);
}
}
return 0;
}
@@ -0,0 +1,40 @@
/*-------------------------------------------------------
功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。
输出:(每个数占5个字符)
159 168 177 186 195 249 258 267 276 285
294 339 348 357 366 375 384 393 429 438
447 456 465 474 483 492 519 528 537 546
555 564 573 582 591 609 618 627 636 645
654 663 672 681 690 708 717 726 735 744
753 762 771 780 807 816 825 834 843 852
861 870 906 915 924 933 942 951 960
-------------------------------------------------------*/
#include<stdio.h>
main()
{
int m,n,k,i=0;
for(m=100;m<=1000;m++)
{
k=0;
n=m;
/**********Program**********/
while(n){
k+=n%10;
n/=10;
}
if(k%15==0){
i++;
printf("%5d", m);
if(i%10==0){
printf("\n");
}
}
/********** End **********/
}
}
@@ -0,0 +1,31 @@
/*-------------------------------------------------------
题目: 打印以下图案:
*********
*******
*****
***
*
--------------------------------------------------------*/
#include<stdio.h>
void main()
{
int i,j,k;
for( i=0 ; i<5; i++ )
{
printf("\n");
/**********Program**********/
for(j=0;j<i*2;j++){
printf(" ");
}
for(k=0;k<9-j;k++){
printf("*");
}
/********** End **********/
}
printf("\n");
}
@@ -0,0 +1,29 @@
/*-------------------------------------------------------
1. 编写程序,打印以下图案:
*****
***
*
--------------------------------------------------------*/
#include<stdio.h>
void main()
{
int i,j,k;
/**********Program**********/
for(i=0;i<3;i++){
for(j=0;j<i;j++){
printf(" ");
}
for(k=0;k<5-j*2;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
printf("\n");
}
@@ -0,0 +1,20 @@
/*-------------------------------------------------------
功能:不用第三个变量,实现两个数的对调操作。
--------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b;
scanf("%d%d",&a , &b );
printf("a=%d,b=%d\n",a,b);
/**********Program**********/
a = a+b;
b = a-b;
a = a-b;
/********** End **********/
printf("a=%d,b=%d\n", a,b);
}
@@ -0,0 +1,20 @@
/*-------------------------------------------------------
题目:请将123-321之间偶数累加输出最终结果。
--------------------------------------------------------*/
#include <stdio.h>
int main()
{
int i;
long sum = 0;
for(i = 123; i <= 321; i++ )
{
/**********Program**********/
if(i%2==0){
sum += i;
}
/********** End **********/
}
printf ("总和为 : %ld.\n",sum);
return 0;
}
@@ -0,0 +1,19 @@
/*-------------------------------------------------------
题目:把123~321之间的可以被7整除的数输出。(使用for循环)
--------------------------------------------------------*/
#include <stdio.h>
void main()
{
int a=0;
/**********Program**********/
for(a=123;a<=321;a++){
if(a%7==0){
/********** End **********/
printf("%d\n",a);
}
}
}
@@ -0,0 +1,21 @@
/*-------------------------------------------------------
功能:依次输入十个整数,找出其平方最大的一个数并打印出来。
--------------------------------------------------------*/
#include <stdio.h>
void main()
{
int i;
float x,y,z=0;
printf("\n请输入10个数:");
for(i=1;i<=10;i++)
{
/**********Program**********/
scanf("%f", &x);
if(x*x > z){
z = x*x;
y = x;
}
/********** End **********/
}
printf("平方最大的一个数是:%f\n",y);
}
@@ -0,0 +1,21 @@
/*-------------------------------------------------------
功能:从键盘输入一位整数i,计算其各位数字之和。比如输入整数
31421,则打印结果为11。(使用while循环)
--------------------------------------------------------*/
#include<stdio.h>
main()
{
int i,sum=0,a;
scanf("%d",&i);
/**********Program**********/
while(i){
sum += i%10;
i/=10;
}
/********** End **********/
printf("%d\n",sum);
}
@@ -0,0 +1,20 @@
/*-------------------------------------------------------
功能:编写程序,求两个非零整数之和。
-------------------------------------------------------*/
#include"stdio.h"
main()
{
int x,y,z=0;
scanf ("%d%d", &x,&y);
/**********Program**********/
if(x!=0 && y!=0){
z = x+y;
/********** End **********/
printf("z=%d\n", z);
}
else
printf("两个数中至少有一个数为零值\n");
}
@@ -0,0 +1,27 @@
/*-------------------------------------------------------
功能:编写程序(使用Switch ),给出年月日,计算出该日是该年的第几天。判断是否为
闰年的条件是:能被 4 整除但是不能被100整除或者能被四百整除。
--------------------------------------------------------*/
#include"stdio.h"
main()
{
int year,month,day,days=0,i,d;
printf("请输入年-月-日:");
scanf("%d-%d-%d",&year,&month,&day);
for(i=1;i<month;i++)
{
/**********Program**********/
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10: days+=31;break;
case 2: days+=(28 + (year%4==0&&year%100!=0 || year%400==0?1:0));break;
default: days+=30;
}
/********** End **********/
}
printf("%d-%d-%d是该年第%d天\n",year,month,day,days + day);
}
@@ -0,0 +1,32 @@
/*------------------------------------------------------------------------
【程序设计】请编写函数sum,其功能是:用While循环语句求1到n之间(包括n)能
被3整除的所有整数之和,并将结果返回给主函数。(n值由主函数传入)
运行程序后若输入:10,则输出为:18
----------------------------------------------------------------------*/
#include "stdio.h"
long sum(int n)
{
/**********Program**********/
int i, s=0;
for(i=1;i<=n;i++){
if(i%3==0){
s+=i;
}
}
return s;
/********** End **********/
}
void main()
{
int x;
long f;
scanf("%d",&x);
f=sum(x);
printf("%ld\n",f);
}
@@ -0,0 +1,31 @@
/*-------------------------------------------------------
功能:设计程序打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j,k;
/**********Program**********/
for(i=-3;i<=3;i++){
for(j=0;j<(i<0?-i:i);j++){
printf(" ");
}
for(k=0;k<7-j*2;k++){
printf("*");
}
printf("\n");
}
/********** End **********/
}
@@ -0,0 +1,19 @@
/*------------------------------------------------------
题目:从键盘输入一个整数n,求2 至 n-1内所有能被n整除的数。
例如:输入10 输出 2 5
输入99 输出 3 9 11 33
--------------------------------------------------------*/
#include "stdio.h"
int main ( )
{
int n,i;
printf("input a number:");
scanf ("%d", &n);
/**********Program**********/
for(i=2;i<n;i++)
if(n%i==0)
/********** End **********/
printf ("%d\n",i);
}
@@ -0,0 +1,19 @@
/*-------------------------------------------------------
【程序填空】 2、有一箱苹果(100—200之间),如果分成4个苹果一组的若干组,则多2个苹果;若分成7个苹果一组,则多3个苹果; 若分成9个苹果一组,则多5个苹果,编程实现求苹果的个数。
--------------------------------------------------------*/
# include <stdio.h>
main ()
{
int i;
for(i=100;i<200;i++)
/**********Program**********/
if(i%4==2 && i%7==3 && i%9==5)
/********** End **********/
printf ("%d",i);
}
@@ -0,0 +1,23 @@
/*-------------------------------------------------------
【程序填空】---------------------------------------------------------
功能:计算武汉城区出租车收费的程序,当里程在3公里以内含3公里时收费12元,超过3公里(在0和1之间均计1公里)的部分每公里收费2元。
备注:使用switch来实现
--------------------------------------------------------*/
#include<stdio.h>
main(){
int m,n;
scanf("%d",&m);
/**********Program**********/
n=0;
switch(m){
default: n+=(m-3)*2;
case 1:
case 2:
case 3:n+=12;
}
/********** End **********/
printf("本次收费为:%d",n);
}
@@ -0,0 +1,22 @@
/*-------------------------------------------------------
功能:从键盘输入2个整数相加,再输入答案,如果正确,显示"right",否则显示"error"。
--------------------------------------------------------*/
#include "stdio.h"
main( )
{
int a,b,c;
printf("please input a and b:\n");
scanf("%d,%d",&a , &b);
printf("please input the answer:\n");
scanf("%d",&c);
/**********Program**********/
if(a+b==c)
/********** End **********/
printf("right\n");
else
printf("error\n");
}

Some files were not shown because too many files have changed in this diff Show More