C语言150行
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 50
#define PI 3.14159
#define DEBUG 1
typedef struct {
int id;
char name[MAX_LEN];
float score;
} Student;
enum Color { RED, GREEN, BLUE };
union Data {
int i;
float f;
char str[MAX_LEN];
};
static int count = 0;
int sum(int a, int b);
void print_student(Student s);
void sort_students(Student *arr, int n);
char* to_upper(char *str);
int factorial(int n);
void write_to_file(const char *filename, const char *content);
char* read_from_file(const char *filename);
int main() {
int a = 10, b = 20;
float c = 3.14f;
char str[MAX_LEN] = "hello world";
enum Color color = GREEN;
union Data data;
#ifdef DEBUG
printf("Debug mode enabled\n");
#endif
printf("Sum: %d\n", sum(a, b));
printf("Factorial of 5: %d\n", factorial(5));
strcpy(data.str, "Union example");
printf("Union string: %s\n", data.str);
data.i = 100;
printf("Union int: %d\n", data.i);
Student students[3] = {
{1, "Alice", 85.5},
{2, "Bob", 76.0},
{3, "Charlie", 92.3}
};
sort_students(students, 3);
for (int i = 0; i < 3; i++) {
print_student(students[i]);
}
char *upper_str = to_upper(str);
printf("Uppercase: %s\n", upper_str);
int *dynamic_arr = (int*)malloc(5 * sizeof(int));
if (dynamic_arr != NULL) {
for (int i = 0; i < 5; i++) {
dynamic_arr[i] = i * 10;
}
printf("Dynamic array: ");
for (int i = 0; i < 5; i++) {
printf("%d ", dynamic_arr[i]);
}
printf("\n");
free(dynamic_arr);
}
write_to_file("test.txt", "Hello from file");
char *file_content = read_from_file("test.txt");
if (file_content != NULL) {
printf("File content: %s\n", file_content);
free(file_content);
}
switch (color) {
case RED: printf("Color is red\n"); break;
case GREEN: printf("Color is green\n"); break;
case BLUE: printf("Color is blue\n"); break;
}
return 0;
}
int sum(int a, int b) {
count++;
return a + b;
}
void print_student(Student s) {
printf("ID: %d, Name: %s, Score: %.1f\n", s.id, s.name, s.score);
}
void sort_students(Student *arr, int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j].score < arr[j+1].score) {
Student temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
char* to_upper(char *str) {
static char result[MAX_LEN];
int i = 0;
while (str[i] != '\0') {
result[i] = toupper(str[i]);
i++;
}
result[i] = '\0';
return result;
}
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
void write_to_file(const char *filename, const char *content) {
FILE *file = fopen(filename, "w");
if (file != NULL) {
fputs(content, file);
fclose(file);
}
}
char* read_from_file(const char *filename) {
FILE *file = fopen(filename, "r");
if (file == NULL) return NULL;
fseek(file, 0, SEEK_END);
long length = ftell(file);
fseek(file, 0, SEEK_SET);
char *content = (char*)malloc(length + 1);
if (content != NULL) {
fread(content, 1, length, file);
content[length] = '\0';
}
fclose(file);
return content;
}