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小时内删除。