1. 简单的“Hello, World!”程序
- 简介:这是每一个编程入门者必写的第一个程序。
- 代码:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
2. 计算两个数的和
- 简介:通过接收用户输入的两个数,并计算它们的和,学习基础的输入输出操作。
- 代码:
#include <stdio.h>
int main() {
int a, b, sum;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
sum = a + b;
printf("The sum of %d and %d is %d.\n", a, b, sum);
return 0;
}
3. 程序判断质数
- 简介:通过编写程序判断一个数是否为质数,了解质数的定义以及如何使用循环。
- 代码:
#include <stdio.h>
#include <stdbool.h>
int main() {
int num;
bool isPrime = true;
printf("Enter a number: ");
scanf("%d", &num);
for (int i = 2; i < num; i++) {
if (num % i == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
printf("%d is a prime number.\n", num);
} else {
printf("%d is not a prime number.\n", num);
}
return 0;
}
4. 判断闰年
- 简介:编写一个程序来判断给定的年份是否是闰年,巩固对条件语句的使用。
- 代码:
#include <stdio.h>
int main() {
int year;
printf("Enter a year: ");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d is a leap year.\n", year);
} else {
printf("%d is not a leap year.\n", year);
}
return 0;
}
5. 使用函数计算两个数的最大公约数
- 简介:通过定义一个函数来计算两个数的最大公约数,学习如何创建和使用函数。
- 代码:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int x, y;
printf("Enter two numbers: ");
scanf("%d %d", &x, &y);
printf("The GCD of %d and %d is %d.\n", x, y, gcd(x, y));
return 0;
}
6. 使用指针交换两个变量的值
- 简介:学习如何使用指针交换两个变量的值,深入理解指针的概念。
- 代码:
#include <stdio.h>
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int a = 5, b = 10;
printf("Before swap: a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("After swap: a = %d, b = %d\n", a, b);
return 0;
}
7. 程序输出斐波那契数列的前N项
- 简介:使用循环输出斐波那契数列的前N项,巩固对循环语句的掌握。
- 代码:
#include <stdio.h>
int main() {
int n, i, first = 0, second = 1, next;
printf("Enter the number of terms: ");
scanf("%d", &n);
printf("Fibonacci Series: ");
for (i = 0; i < n; i++) {
if (i <= 1) {
next = i;
} else {
next = first + second;
first = second;
second = next;
}
printf("%d ", next);
}
return 0;
}
8. 使用递归计算阶乘
- 简介:通过递归的方式计算一个数的阶乘,深入学习递归的概念和实现方式。
- 代码:
#include <stdio.h>
int factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n - 1);
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
printf("Factorial of %d = %d\n", n, factorial(n));
return 0;
}
9. 检查一个字符串是否是回文
- 简介:通过编写程序检查一个字符串是否是回文,学习字符串处理和反转操作。
- 代码:
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool isPalindrome(char str[]) {
int length = strlen(str);
for (int i = 0; i < length / 2; i++) {
if (str[i] != str[length - 1 - i])
return false;
}
return true;
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
if (isPalindrome(str))
printf("%s is a palindrome.\n", str);
else
printf("%s is not a palindrome.\n", str);
return 0;
}
10. 计算数组中的平均值
- 简介:编写一个程序来计算数组中所有元素的平均值,巩固数组的使用和循环。
- 代码:
#include <stdio.h>
int main() {
int n, sum = 0, avg;
printf("Enter the number of elements: ");
scanf("%d", &n);
int arr[n];
printf("Enter %d integers:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n; i++) {
sum += arr[i];
}
avg = sum / n;
printf("The average is %d\n", avg);
return 0;
}
11. 使用指针交换两个数组的元素
- 简介:通过使用指针来交换两个数组的元素,学习指针在数组操作中的应用。
- 代码:
#include <stdio.h>
void swapArrays(int *arr1, int *arr2, int n) {
int temp[n];
for (int i = 0; i < n; i++) {
temp[i] = arr1[i];
arr1[i] = arr2[i];
arr2[i] = temp[i];
}
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {10, 20, 30, 40, 50};
int n = sizeof(arr1) / sizeof(arr1[0]);
printf("Array 1 before swap: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr1[i]);
}
printf("\nArray 2 before swap: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr2[i]);
}
swapArrays(arr1, arr2, n);
printf("\nArray 1 after swap: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr1[i]);
}
printf("\nArray 2 after swap: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr2[i]);
}
return 0;
}
12. 计算一个矩阵的转置
- 简介:通过编写程序计算矩阵的转置,巩固矩阵操作的知识。
- 代码:
#include <stdio.h>
void transpose(int row, int col, int mat[row][col]) {
int transposed[COL][ROW];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
transposed[j][i] = mat[i][j];
}
}
printf("Transposed matrix:\n");
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
printf("%d ", transposed[i][j]);
}
printf("\n");
}
}
int main() {
int ROW = 2;
int COL = 3;
int mat[ROW][COL] = {
{1, 2, 3},
{4, 5, 6}
};
transpose(ROW, COL, mat);
return 0;
}
13. 程序模拟蛇梯游戏
- 简介:编写一个简单的蛇梯游戏,使用数组模拟游戏的进程,了解游戏编程的基本原理。
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_SQUARES 10
void printBoard(int board[]) {
printf("Snake Ladder Board:\n");
for (int i = 0; i < NUM_SQUARES; i++) {
if (board[i] != 0)
printf("Square %d: %d\n", i + 1, board[i]);
else
printf("Square %d: \n", i + 1);
}
}
void rollDice(int board[]) {
int die1 = rand() % 6 + 1;
int die2 = rand() % 6 + 1;
int total = die1 + die2;
printf("Dice rolled: %d + %d = %d\n", die1, die2, total);
int square = board[0] + total;
if (square <= NUM_SQUARES) {
board[0] = square;
printBoard(board);
} else {
printf("You have landed on the last square. Game Over!\n");
}
}
int main() {
srand(time(NULL));
int board[NUM_SQUARES] = {0};
int playAgain;
do {
printBoard(board);
rollDice(board);
printf("Play again? (0 for No, 1 for Yes): ");
scanf("%d", &playAgain);
} while (playAgain == 1);
return 0;
}
14. 计算一个字符串中单词的数量
- 简介:通过编写程序计算一个字符串中单词的数量,了解字符串处理技巧。
- 代码:
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
int countWords(char str[]) {
int count = 0;
bool wordStarted = false;
for (int i = 0; str[i] != '\0'; i++) {
if (isalpha(str[i])) {
if (!wordStarted) {
wordStarted = true;
count++;
}
} else {
wordStarted = false;
}
}
return count;
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%[^\n]%*c", str);
int wordCount = countWords(str);
printf("The string has %d words.\n", wordCount);
return 0;
}
15. 编写一个程序来模拟一个简单的银行账户系统
- 简介:创建一个简单的银行账户系统,学习如何处理文件和结构化数据。
- 代码:
#include <stdio.h>
struct Account {
int accountNumber;
char name[50];
double balance;
};
void createAccount(struct Account accounts[], int *size) {
accounts[*size].accountNumber = *size + 1;
printf("Enter account holder's name: ");
scanf("%s", accounts[*size].name);
accounts[*size].balance = 0.0;
(*size)++;
}
void deposit(struct Account accounts[], int size) {
int accountNumber;
double amount;
printf("Enter account number to deposit into: ");
scanf("%d", &accountNumber);
for (int i = 0; i < size; i++) {
if (accounts[i].accountNumber == accountNumber) {
printf("Enter amount to deposit: ");
scanf("%lf", &amount);
accounts[i].balance += amount;
printf("Deposit successful. New balance is $%.2lf\n", accounts[i].balance);
return;
}
}
printf("Account not found.\n");
}
void withdraw(struct Account accounts[], int size) {
int accountNumber;
double amount;
printf("Enter account number to withdraw from: ");
scanf("%d", &accountNumber);
for (int i = 0; i < size; i++) {
if (accounts[i].accountNumber == accountNumber) {
printf("Enter amount to withdraw: ");
scanf("%lf", &amount);
if (amount <= accounts[i].balance) {
accounts[i].balance -= amount;
printf("Withdrawal successful. New balance is $%.2lf\n", accounts[i].balance);
return;
} else {
printf("Insufficient balance.\n");
return;
}
}
}
printf("Account not found.\n");
}
int main() {
int size = 0;
struct Account accounts[10];
createAccount(accounts, &size);
deposit(accounts, size);
withdraw(accounts, size);
return 0;
}
16. 实现一个简单的密码管理系统
- 简介:编写一个密码管理系统,使用哈希表存储用户名和密码,了解数据结构的应用。
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USERS 100
typedef struct User {
char username[50];
char password[50];
struct User *next;
} User;
User *head = NULL;
void addUser() {
User *newUser = (User *)malloc(sizeof(User));
if (newUser == NULL) {
printf("Error allocating memory.\n");
return;
}
printf("Enter username: ");
scanf("%s", newUser->username);
printf("Enter password: ");
scanf("%s", newUser->password);
newUser->next = head;
head = newUser;
}
void deleteUser() {
char username[50];
printf("Enter username to delete: ");
scanf("%s", username);
User *temp = head;
User *prev = NULL;
while (temp != NULL && strcmp(temp->username, username) != 0) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
printf("User not found.\n");
return;
}
if (prev == NULL) {
head = temp->next;
} else {
prev->next = temp->next;
}
free(temp);
printf("User deleted.\n");
}
void printUsers() {
User *temp = head;
printf("Users:\n");
while (temp != NULL) {
printf("Username: %s\n", temp->username);
temp = temp->next;
}
}
int main() {
int choice;
do {
printf("1. Add User\n");
printf("2. Delete User\n");
printf("3. Print Users\n");
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addUser();
break;
case 2:
deleteUser();
break;
case 3:
printUsers();
break;
case 4:
printf("Exiting program.\n");
break;
default:
printf("Invalid choice. Please try again.\n");
}
} while (choice != 4);
return 0;
}
17. 实现一个简单的学生信息管理系统
- 简介:编写一个学生信息管理系统,学习如何使用结构体数组处理数据。
- 代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct Student {
char name[50];
int age;
float gpa;
} Student;
Student students[MAX_STUDENTS];
int studentCount = 0;
void addStudent() {
if (studentCount >= MAX_STUDENTS) {
printf("Maximum number of students reached.\n");
return;
}
Student newStudent;
printf("Enter student name: ");
scanf("%s", newStudent.name);
printf("Enter student age: ");
scanf("%d", &newStudent.age);
printf("Enter student GPA: ");
scanf("%f", &newStudent.gpa);
students[studentCount++] = newStudent;
printf("Student added successfully.\n");
}
void listStudents() {
printf("Students:\n");
for (int i = 0; i < studentCount; i++) {
printf("Name: %s, Age: %d, GPA: %.2f\n", students[i].name, students[i].age, students[i].gpa);
}
}
int main() {
int choice;
do {
printf("1. Add Student\n");
printf("2. List Students\n");
printf("3. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
listStudents();
break;
case 3:
printf("Exiting program.\n");
break;
default:
printf("Invalid choice. Please try again.\n");
}
} while (choice != 3);
return 0;
}
18. 编写一个程序,模拟在图书馆借阅和归还图书的过程
- 简介:创建一个简单的图书馆系统,了解如何使用链表和结构体数组管理图书和借阅信息。