1. 计算器小程序
简介:这是一个基础的C语言计算器程序,可以实现加、减、乘、除四种基本运算。
#include <stdio.h>
int main() {
int num1, num2;
char op;
printf("Enter an operator (+, -, *, /): ");
scanf("%c", &op);
printf("Enter two operands: ");
scanf("%d %d", &num1, &num2);
switch(op) {
case '+':
printf("%d %c %d = %d", num1, op, num2, num1 + num2);
break;
case '-':
printf("%d %c %d = %d", num1, op, num2, num1 - num2);
break;
case '*':
printf("%d %c %d = %d", num1, op, num2, num1 * num2);
break;
case '/':
if(num2 != 0)
printf("%d %c %d = %f", num1, op, num2, (float)num1 / num2);
else
printf("Division by zero is not allowed");
break;
default:
printf("Invalid operator");
}
return 0;
}
2. 素数检测小程序
简介:此程序可以检测一个数是否为素数。
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPrime(num))
printf("%d is a prime number", num);
else
printf("%d is not a prime number", num);
return 0;
}
3. 字符串反转小程序
简介:这个程序可以将用户输入的字符串反转。
#include <stdio.h>
#include <string.h>
void reverseString(char str[]) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
reverseString(str);
printf("Reversed string: %s", str);
return 0;
}
4. 最大公约数小程序
简介:使用辗转相除法计算两个数的最大公约数。
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int num1, num2;
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
printf("GCD of %d and %d is %d", num1, num2, gcd(num1, num2));
return 0;
}
5. 二进制转十进制小程序
简介:将用户输入的二进制数转换为十进制数。
#include <stdio.h>
int binaryToDecimal(char binary[]) {
int len = strlen(binary);
int decimal = 0;
for (int i = 0; i < len; i++) {
decimal += (binary[i] - '0') * pow(2, len - i - 1);
}
return decimal;
}
int main() {
char binary[100];
printf("Enter a binary number: ");
scanf("%s", binary);
printf("Decimal value: %d", binaryToDecimal(binary));
return 0;
}
6. 冒泡排序小程序
简介:使用冒泡排序算法对一组数进行排序。
#include <stdio.h>
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]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("Sorted array: \n");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
7. 递归阶乘小程序
简介:使用递归计算一个数的阶乘。
#include <stdio.h>
int factorial(int n) {
if (n == 0)
return 1;
return n * factorial(n - 1);
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("Factorial of %d = %d", num, factorial(num));
return 0;
}
8. 水平翻转图像小程序
简介:将一个二维整数数组表示的图像水平翻转。
#include <stdio.h>
void horizontalFlip(int arr[][3], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols / 2; j++) {
int temp = arr[i][j];
arr[i][j] = arr[i][cols - j - 1];
arr[i][cols - j - 1] = temp;
}
}
}
int main() {
int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
printf("Original array:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
horizontalFlip(arr, 3, 3);
printf("Flipped array:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
printf("%d ", arr[i][j]);
printf("\n");
}
return 0;
}
9. 求解一元二次方程小程序
简介:使用求根公式计算一元二次方程的根。
#include <stdio.h>
#include <math.h>
void solveEquation(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
double sqrtVal = sqrt(fabs(discriminant));
double root1, root2;
if (discriminant > 0) {
root1 = (-b + sqrtVal) / (2 * a);
root2 = (-b - sqrtVal) / (2 * a);
printf("Roots are real and different.\nroot1 = %.2lf and root2 = %.2lf", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("Roots are real and same.\nroot1 = root2 = %.2lf", root1);
}
else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Roots are complex and different.\nroot1 = %.2lf+%.2lfi and root2 = %.2lf-%.2lfi", realPart, imaginaryPart, realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("Enter coefficients a, b and c: ");
scanf("%lf %lf %lf", &a, &b, &c);
solveEquation(a, b, c);
return 0;
}
10. 质数筛法小程序
简介:使用埃拉托斯特尼筛法找出小于或等于给定数的所有质数。
#include <stdio.h>
#include <stdbool.h>
void sieveOfEratosthenes(int n) {
bool prime[n+1];
for (int i = 0; i <= n; i++)
prime[i] = true;
for (int p = 2; p * p <= n; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p)
prime[i] = false;
}
}
printf("Prime numbers up to %d are: ", n);
for (int p = 2; p <= n; p++)
if (prime[p])
printf("%d ", p);
printf("\n");
}
int main() {
int n;
printf("Enter a number: ");
scanf("%d", &n);
sieveOfEratosthenes(n);
return 0;
}
11. 寻找数组中的最大元素小程序
简介:遍历数组寻找并打印最大元素。
#include <stdio.h>
int findMax(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++)
if (arr[i] > max)
max = arr[i];
return max;
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
int max = findMax(arr, n);
printf("Maximum element in the array is %d", max);
return 0;
}
12. 寻找数组中的最小元素小程序
简介:遍历数组寻找并打印最小元素。
#include <stdio.h>
int findMin(int arr[], int n) {
int min = arr[0];
for (int i = 1; i < n; i++)
if (arr[i] < min)
min = arr[i];
return min;
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
int min = findMin(arr, n);
printf("Minimum element in the array is %d", min);
return 0;
}
13. 逆序打印数组小程序
简介:逆序打印一个整数数组。
#include <stdio.h>
void reversePrint(int arr[], int n) {
for (int i = n - 1; i >= 0; 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("Reversed array: \n");
reversePrint(arr, n);
return 0;
}
14. 找出数组中的重复元素小程序
简介:找出数组中所有重复的元素。
#include <stdio.h>
void printDuplicates(int arr[], int n) {
for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < n; j++)
if (arr[i] == arr[j])
count++;
if (count > 1)
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90, 90};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Duplicate elements in the array: \n");
printDuplicates(arr, n);
return 0;
}
15. 检查数字是否为回文小程序
简介:检查一个整数是否为回文。
#include <stdio.h>
int isPalindrome(int x) {
if (x < 0) return 0;
int reversed = 0, original = x;
while (x != 0) {
int pop = x % 10;
reversed = reversed * 10 + pop;
x /= 10;
}
return original == reversed;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPalindrome(num))
printf("%d is a palindrome", num);
else
printf("%d is not a palindrome", num);
return 0;
}
16. 打印图案小程序
简介:打印各种图案,如三角形、正方形等。
#include <stdio.h>
void printPattern(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++)
printf(" ");
for (int j = 0; j < 2 * (n - i) - 1; j++)
printf("*");
printf("\n");
}
}
int main() {
int n;
printf("Enter the number of rows: ");
scanf("%d", &n);
printPattern(n);
return 0;
}
17. 生成素数列表小程序
简介:生成小于或等于给定数的所有素数的列表。
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++)
if (n % i == 0) return false;
return true;
}
void generatePrimeList(int n) {
printf("Prime numbers up to %d are: ", n);
for (int i = 2; i <= n; i++)
if (isPrime(i))
printf("%d ", i);
printf("\n");
}
int main() {
int n;
printf("Enter a number: ");
scanf("%d", &n);
generatePrimeList(n);
return 0;
}
18. 求解线性方程组小程序
简介:使用高斯消元法求解线性方程组。
#include <stdio.h>
void gaussElimination(double arr[][3], int n) {
for (int i = 0; i < n - 1; i++) {
double maxEl = fabs(arr[i][i]);
int maxRow = i;
for (int k = i + 1; k < n; k++)
if (fabs(arr[k][i]) > maxEl) {
maxEl = fabs(arr[k][i]);
maxRow = k;
}
for (int k = i; k < n; k++)
swap(&arr[k][i], &arr[maxRow][i]);
for (int k = i + 1; k < n; k++) {
double c = arr[k][i] / arr[i][i];
for (int j = i + 1; j < n; j++)
arr[k][j] -= c * arr[i][j];
arr[k][i] = 0;
}
}
for (int i = n - 1; i >= 0; i--) {
double sum = arr[i][i];
for (int j = i + 1; j < n; j++)
sum -= arr[i][j];
arr[i][n] = sum / arr[i][i];
}
}
int main() {
double arr[][3] = {{2, 1, -1}, {-3, -1, 2}, {-2, 1, 2}};
int n = sizeof(arr) / sizeof(arr[0]);
gaussElimination(arr, n);
printf("Solution is:\n");
for (int i = 0; i < n; i++)
printf("x%d = %.2lf\n", i, arr[i][n]);
return 0;
}
19. 求解非线性方程小程序
简介:使用牛顿-拉夫森方法求解非线性方程。
#include <stdio.h>
#include <math.h>
double f(double x) {
return pow(x, 3) - 6 * x * x + 11;
}
double df(double x) {
return 3 * pow(x, 2) - 12 * x;
}
double newtonRaphson(double x) {
double h = f(x) / df(x);
while (fabs(h) >= 0.00001) {
x -= h;
h = f(x) / df(x);
}
return x;
}
int main() {
double x0 = 1;
printf("Root of the equation is: %f", newtonRaphson(x0));
return 0;
}
20. 求解多项式方程小程序
简介:使用拉格朗日插值法求解多项式方程。
”`c
#include
double lagrangeInterpolation(double x[], double y[], int n, double x0) {
double p = 0;
for (int i = 0; i < n; i++) {
double term = y[i];
for (int j = 0; j < n; j++) {
if (j != i)
term = term * (x0 - x[j]) / (x[i] - x[j]);
}
p += term;
}
return p;
}
int main() {
double x[] = {0, 1, 2, 3, 4};
double y[] = {1, 3, 3, 6, 10};
int
