C语言实现常见算法及程序优化:内存使用技巧与性能提升

本文将介绍使用C语言实现常见的算法,并探讨如何优化代码以减少内存使用,提升程序性能。内容涵盖求和、奇偶数求和、阶乘、素数判断、字符串反转、随机数生成、密码破解、排序等算法。

1. 求1+2+...+100的和

int sum = 0;
int i = 1;
while(i <= 100){
    sum += i;
    i++;
}
printf("1+2+...+100=%d\n", sum);

2. 求1到n之间的奇数和和偶数和

int n, i, odd_sum = 0, even_sum = 0;
scanf("%d", &n);
for(i = 1; i <= n; i++){
    if(i % 2 == 0){
        even_sum += i;
    }
    else{
        odd_sum += i;
    }
}
printf("1 to %d odd sum: %d, even sum: %d\n", n, odd_sum, even_sum);

3. 求1+2+3+...+100的和

int sum = 0;
int i;
for(i = 1; i <= 100; i++){
    sum += i;
}
printf("1+2+...+100=%d\n", sum);

4. 求n的阶乘

int n, i, factorial = 1;
scanf("%d", &n);
for(i = 1; i <= n; i++){
    factorial *= i;
}
printf("%d! = %d\n", n, factorial);

5. 统计并输出200以内所有能同时被7和3整除的数及其数量

int count = 0;
int i;
for(i = 1; i <= 200; i++){
    if(i % 3 == 0 && i % 7 == 0){
        printf("%d ", i);
        count++;
    }
}
printf("\nTotal count: %d\n", count);

6. 定义一个数组a[10],并赋初值0~9,反序输出

int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int i;
for(i = 9; i >= 0; i--){
    printf("%d ", a[i]);
}
printf("\n");

7. 一个小组学生共10人,输入他们的成绩,计算并输出小组总成绩及平均成绩

int i, score, total_score = 0;
float avg_score;
for(i = 1; i <= 10; i++){
    scanf("%d", &score);
    total_score += score;
}
avg_score = (float)total_score / 10;
printf("Total score: %d, Average score: %.2f\n", total_score, avg_score);

8. 封装一个函数并且在主函数中进行调用,函数功能要求:随机输入2个整数作为参数,函数执行结束后返回最大值

int max(int a, int b){
    return a > b ? a : b;
}
int a, b;
scanf("%d %d", &a, &b);
printf("Max: %d\n", max(a, b));

9. 单位转换——厘米转换英寸

float cm, inch;
scanf("%f", &cm);
inch = cm / 2.54;
printf("%f cm = %f inch\n", cm, inch);

10. 判断一个数是否是素数

int n, i;
scanf("%d", &n);
for(i = 2; i <= n / 2; i++){
    if(n % i == 0){
        printf("%d is not a prime number.\n", n);
        break;
    }
}
if(i > n / 2){
    printf("%d is a prime number.\n", n);
}

11. 反向输出字符串

char str[100];
scanf("%s", str);
int len = strlen(str);
int i;
for(i = len - 1; i >= 0; i--){
    printf("%c", str[i]);
}
printf("\n");

12. 从1~100内随机输出5个不重复的数

srand((unsigned)time(NULL));
int nums[5] = {0};
int i, j, num;
for(i = 0; i < 5; i++){
    while(1){
        num = rand() % 100 + 1;
        for(j = 0; j < i; j++){
            if(num == nums[j]){
                break;
            }
        }
        if(j == i){
            nums[i] = num;
            break;
        }
    }
}
for(i = 0; i < 5; i++){
    printf("%d ", nums[i]);
}
printf("\n");

13. 先设定8位数密码,然后使用暴力破解实现8位数密码的破解,并且把破解后的密码输出

char password[9] = "12345678";
char crack[9] = "00000000";
int i, j, k, l, m, n, o, p;
for(i = 0; i < 10; i++){
    for(j = 0; j < 10; j++){
        for(k = 0; k < 10; k++){
            for(l = 0; l < 10; l++){
                for(m = 0; m < 10; m++){
                    for(n = 0; n < 10; n++){
                        for(o = 0; o < 10; o++){
                            for(p = 0; p < 10; p++){
                                crack[0] = '0' + i;
                                crack[1] = '0' + j;
                                crack[2] = '0' + k;
                                crack[3] = '0' + l;
                                crack[4] = '0' + m;
                                crack[5] = '0' + n;
                                crack[6] = '0' + o;
                                crack[7] = '0' + p;
                                if(strcmp(password, crack) == 0){
                                    printf("Cracked password: %s\n", crack);
                                    return 0;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
printf("Password not found.\n");

14. 使用冒泡排序法实现5,81,65,9,10的由低到高的排序

int nums[5] = {5, 81, 65, 9, 10};
int i, j, temp;
for(i = 0; i < 5; i++){
    for(j = 0; j < 5 - i - 1; j++){
        if(nums[j] > nums[j + 1]){
            temp = nums[j];
            nums[j] = nums[j + 1];
            nums[j + 1] = temp;
        }
    }
}
for(i = 0; i < 5; i++){
    printf("%d ", nums[i]);
}
printf("\n");

注意:

  • 以上代码示例仅供参考,实际应用中可能需要根据具体需求进行调整。
  • 为了提高代码的可读性和可维护性,建议使用代码注释来解释代码的功能和逻辑。
  • 为了减少内存使用,可以使用指针、结构体等数据结构来优化代码。
  • 在实际应用中,可以使用各种工具和技术来分析代码性能并进行优化,例如性能分析器、代码优化器等。
  • 随着程序规模的增大,代码的复杂度也会增加,因此需要更加注意代码的设计和优化,以确保程序的性能和稳定性。
C语言实现常见算法及程序优化:内存使用技巧与性能提升

原文地址: https://www.cveoy.top/t/topic/oxxB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录