c语言有趣的代码
C语言是一种强大的编程语言,是许多程序员都必须要掌握的语言之一。对于那些想要深入学习和掌握C语言的人来说,掌握一些有趣的代码可以是很有帮助的。本文将介绍一些有趣的C语言代码,这些代码涉及到各种程序设计的领域,从简单的算术操作到复杂的图形和游戏。
1. 打印正弦函数
要在C语言中打印正弦函数可以使用数学库函数sin()。以下是一个简单示例,它将打印出正弦函数的值:
#include <stdio.h> #include <math.h>
int main() { double angle; double result;
// Loop through the angle 0 to 360 degrees, in increments of 10 for (angle = 0.0; angle <= 360.0; angle += 10.0) { result = sin(angle * M_PI / 180.0); // Convert angle to radians
printf("sin(%f) = %f\n", angle, result); }
return 0; }
在这个示例中,我们循环从0°到360°,每次以10°的步长递增,并使用sin()函数计算相应角度的正弦。我们将角度从度数转换为弧度以便计算,然后打印出结果。
2. 凯撒密码
凯撒密码是一种简单的置换密码,它将明文中的每个字母替换为一个固定的、用于加密的字母。这个加密算法可以使用C语言非常容易地实现。以下是一个示例,它将使用凯撒密码加密输入的字符串:
#include <stdio.h>
int main() { char str[100]; int key;
printf("Enter a string to encrypt: "); gets(str);
printf("Enter a key: "); scanf("%d", &key);
for (int i = 0; str[i] != '\0'; i++) { if (str[i] >= 'a' && str[i] <= 'z') str[i] = (str[i] - 'a' + key) % 26 + 'a'; else if (str[i] >= 'A' && str[i] <= 'Z') str[i] = (str[i] - 'A' + key) % 26 + 'A'; }
printf("Encrypted string: %s\n", str);
return 0; }
在这个示例中,我们首先要求用户提供要加密的字符串和一个密钥。然后我们使用for循环遍历字符串中的每个字符,并使用数学运算将字符替换为加密后的字符。这是一种非常基础的加密算法,但它仍然可以用于保护一些重要的信息。
3. 黑白棋游戏
黑白棋是一种古老的棋类游戏,可以在C语言中非常容易地实现。以下是一个简单示例,它将实现一个人机对战的黑白棋游戏:
#include <stdio.h> #include <stdlib.h>
#define BOARD_SIZE 8
int board[BOARD_SIZE][BOARD_SIZE];
void init_board() { // Initialize the board with 0's for (int i = 0; i < BOARD_SIZE; i++) for (int j = 0; j < BOARD_SIZE; j++) board[i][j] = 0;
// Add the initial pieces board[BOARD_SIZE / 2 - 1][BOARD_SIZE / 2 - 1] = board[BOARD_SIZE / 2][BOARD_SIZE / 2] = 1; board[BOARD_SIZE / 2][BOARD_SIZE / 2 - 1] = board[BOARD_SIZE / 2 - 1][BOARD_SIZE / 2] = -1; }
基础c语言代码void print_board() { printf(" "); for (int i = 0; i < BOARD_SIZE; i++) printf("%c ", i + 'a'); printf("\n");
for (int i = 0; i < BOARD_SIZE; i++) { printf("%2d ", i + 1); for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] == 1) printf("o "); else if (board[i][j] == -1) printf("x "); else printf(". "); } printf("%2d\n", i + 1); }
printf(" "); for (int i = 0; i < BOARD_SIZE; i++) printf("%c ", i + 'a'); printf("\n"); }
int is_valid_move(int player, int row, int col) { if (row < 0 || row >= BOARD_SIZE || col < 0 || col >= BOARD_SIZE || board[row][col] != 0) return 0;
int opponent = -player; int found_opponent = 0;
// Check if there are any opposing pieces that can be captured for (int dx = -1; dx <= 1; dx++) { for (int dy = -1; dy <= 1; dy++) { if (dx == 0 && dy == 0) continue; for (int x = row + dx, y = col + dy; x >= 0 && x < BOARD_SIZE && y >= 0 && y < BOARD_SIZE; x += dx, y += dy) { if (board[x][y] == 0) break; if (board[x][y] == opponent) found_opponent = 1; else if (board[x][y] == player && found_opponent) return 1; else break; } found_opponent = 0; } }
return 0; }
void make_move(int player, int row, int col) { board[row][col] = player;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论