c语言计算方案,c语言计算例子

发布时间:2023-01-07

本文目录一览:

  1. c语言计算:编程
  2. C语言 计算24是流行的扑克游戏。 方法,思路也行。
  3. C语言程序设计方案!!二维数组应用 矩阵算法 求高人

c语言计算:编程

#include<stdio.h>
void main()
{
    int i,j,k,count=1;
    for(i=0;i<=12;i++)
        for(j=0;j<=33;j++)
        {
            k=100-i*8-j*3;
            if(i*8+j*3+k==100 && k>0)
                printf("第%d种:大货车:%d,重型车:%d,微型车:%d\n",count++,i,j,k);
        }
}

C语言 计算24是流行的扑克游戏。 方法,思路也行。

我的代码不长:

#include <cmath>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
double a[4]; //操作数
string s[4]; //四个数
void DFS(int step)
{
    if (!step)
        if (fabs(a[0]-24) < 1E-5)
            cout << s[0] << '\n';
    for (int i=0;i<=step;++i)
        for (int j=i+1;j<=step;)
        {
            double p=a[i],q=a[j];
            string tp=s[i],tq=s[j];
            a[j]=a[step];s[j]=s[step];
            a[i]=p+q;s[i]='('+tp+'+'+tq+')';DFS(step-1);
            a[i]=p-q;s[i]='('+tp+'-'+tq+')';DFS(step-1);
            a[i]=q-p;s[i]='('+tq+'-'+tp+')';DFS(step-1);
            a[i]=p*q;s[i]='('+tp+'*'+tq+')';DFS(step-1);
            if (fabs(q)>1E-5)
                a[i]=p/q;s[i]='('+tp+'/'+tq+')';DFS(step-1);
            if (fabs(p) > 1E-5)
                a[i]=q/p;s[i]='('+tq+'/'+tp+')';DFS(step-1);
            a[i]=p;a[j]=q;
            s[i]=tp;s[j]=tq;
        }
}
int main()
{
    char str[2];
    cin >> s[0] >> s[1] >> s[2] >> s[3];
    a[0]=atof(s[0].c_str());
    a[1]=atof(s[1].c_str());
    a[2]=atof(s[2].c_str());
    a[3]=atof(s[3].c_str());
    DFS(3);
}

经测试可以运行。

C语言程序设计方案!!二维数组应用 矩阵算法 求高人

#include <stdio.h>
void input_data(int *l, int *r, int data[100][100])
{
    int i,j,k;
    printf("输入矩阵行数:");
    scanf("%d",l);
    printf("输入矩阵列数:");
    scanf("%d",r);
    printf("按行输入数据,数据间用空格间隔:\n");
    for(int i=0; i<*l; i++)
        for(int j=0; j<*r; j++)
            scanf("%d",&data[i][j]);
}
int add_subtra(int m1[100][100], int l1, int r1, int m2[100][100], int l2, int r2, char m, int rm[100][100])
{
    int i,j;
    if(l1 != l2 || r1 != r2)
    {
        printf("矩阵数据错误1.\n");
        return 0;
    }
    if(m == '+')
        for(i=0; i<l1; i++)
            for(j=0; j<r1; j++)
                rm[i][j] = m1[i][j] + m2[i][j];
    else
        for(i=0; i<l1; i++)
            for(j=0; j<r1; j++)
                rm[i][j] = m1[i][j] - m2[i][j];
}
int mul(int m1[100][100], int l1, int r1, int m2[100][100], int l2, int r2, int m[100][100])
{
    int i,j,k;
    if(l1 != r2)
    {
        printf("矩阵数据错误2.\n");
        return 0;
    }
    for(i=0; i<l1; i++)
        for(j=0; j<r2; j++)
        {
            m[i][j] = 0;
            for(k=0; k<r1; k++)
                m[i][j] += m1[i][k] * m2[k][j];
        }
}
int output(int m[100][100], int l, int r)
{
    int i,j;
    for(i=0; i<l; i++)
    {
        for(j=0; j<r; j++)
            printf("%3d ", m[i][j]);
        printf("\n");
    }
}
int main()
{
    int d1[100][100], d2[100][100], d[100][100];
    int l1, r1, l2, r2;
    int i,j,k;
    char mark[2];
    printf("输入第一个矩阵数据:\n");
    input_data(&l1, &r1, d1);
    printf("输入的第一个矩阵:\n");
    output(d1, l1, r1);
    printf("输入第二个矩阵数据:\n");
    input_data(&l2, &r2, d2);
    printf("输入的第二个矩阵:\n");
    output(d2, l2, r2);
    printf("指定运算符(+/-/*):");
    scanf("%s", mark);
    while(mark[0] != '+' && mark[0] != '-' && mark[0] != '*')
    {
        printf("符号错误请重新输入(+/-/*):");
        scanf("%s", mark);
    }
    switch(mark[0])
    {
        case '+':
        case '-':
            add_subtra(d1, l1, r1, d2, l2, r2, mark[0], d);
            break;
        case '*':
            mul(d1, l1, r1, d2, l2, r2, d);
            break;
    }
    printf("运算:%c,计算结果为:\n", mark[0]);
    output(d, l1, r2);
    system("pause");
}

两个运算矩阵可以是大小不同的,输出结果由被乘数矩阵的行和乘数矩阵的列决定,你要求的输出格式比较烦,没时间不够啦!有时间再玩吧。