C/C++ 简单模拟算法题解

题解

  • 模拟双目运算符
  • 一元二次方程求解
  • 水仙花数

模拟双目运算符

编写一个根据用户键入的两个操作数和一个双目运算符,由计算机输出结果的程序。

#include

int operate(int a,int b,char c){
    switch(c){
        case '+': return a+b;
        case '-': return a-b;
        case '*': return a*b;
        case '/': return a/b;
        case '%': return a%b;
        default:
            printf("输入错误!\n");
            return 0;
    }
}

int main() {
    int a,b;
    char c;
    scanf("%d %c %d",&a,&c,&b);
    printf("%d %c %d = %d",a,c,b,operate(a,b,c));
    return 0;
}

一元二次方程求解

已知文件 Coefficient.txt 中存有多个方程 ax2 + bx + c = 0 中系数 a, b, c 的值,数据按行排列,编写程序求出方程的解,并将结果写入到 result.txt 文件中,要求考虑 a, b, c 各种取值情况。

Coefficient.txt 内容举例:

5	25	3
0	2 	6
0	0	0
1	1	8
......
#include
#include

int main() {
    FILE *fp1,*fp2;
    if((fp1=fopen("Coefficient.txt","r"))==NULL){
        printf("不能打开Coefficient.txt文件\n");
    }
    if((fp2=fopen("result.txt","w"))==NULL){
        printf("不能打开result.txt文件\n");
    }
    double a,b,c,delta;
    double x1,x2;
    while(fscanf(fp1,"%lf %lf %lf",&a,&b,&c)!=EOF){
        if(a!=0){
            delta = b*b-4*a*c;
            if(delta<0){
                fprintf(fp2,"结果不存在\n");
            }
            else{
                x1=(-b+sqrt(delta))/(2*a);
                x2=(-b-sqrt(delta))/(2*a);
                fprintf(fp2,"x1=%.2lf,x2=%.2lf\n",x1,x2);
            }
        }
        else{
            if(b!=0){
                fprintf(fp2,"x=%.2lf\n",-c/b);
            }
            else{
                if(c==0){
                    fprintf(fp2,"任意解\n");
                }
                else{
                    fprintf(fp2,"无解\n");
                }
            }
        }
    }
    if(fclose(fp1)!= 0) printf("关闭Cofficient.txt文件错误\n");
    if(fclose(fp2)!= 0) printf("关闭result.txt文件错误\n");
    return 0;
}

水仙花数

打印出所有的 “水仙花数”,所谓 “水仙花数” 是指一个 3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为 153 = 13 + 53 + 33。

#include
#include

int main() {
    int a, b, c;//a,b,c对应个位,十位,百位
    for (int i = 100; i <= 999; i++) {
        a = i % 10;
        b = i / 10 % 10;
        c = i / 100;
        if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i) {
            printf("%d\n", i);
        }
    }
    return 0;
}

未完待续

你可能感兴趣的:(C/C++,算法,c语言,c++)