當前位置:首頁 » 編程軟體 » 如何編譯計算小軟體

如何編譯計算小軟體

發布時間: 2022-09-22 06:42:44

❶ 如何用c語言編寫一個軟體

  1. 如果要寫記分牌 最好使用的工具 visual studio 2010(推薦)微軟官網有 可以下載中文版。

  2. 如果只用c語言的話, 就要用win32 api編寫。

❷ 一個計算器怎麼用C語言編譯

#include<stdio.h>
int main() {
double num1 = 0; //輸入1
double num2 = 0; //輸入2
char ch; //操作
double ret = 0; //結果 printf( "輸入第一個數:" );
scanf( "%lf", &num1 );
printf( "輸入第二個數:" );
scanf( "%lf", &num2 );
printf( "操作[+ - * /]:" );
getchar();
scanf( "%c", &ch ); switch( ch ) {
case '+':
ret = num1 + num2;
break;
case '-':
ret = num1 - num2;
break;
case '*':
ret = num1 * num2;
break;
case '/':
ret = num1 / num2;
break;
default:
break;
}
printf( "結果:%.2lf\n", ret ); return 0;
}

❸ 如何自己編一個小軟體(c語言)

其實你最初寫的hello
world就是一個小程序,小軟體了。只不過作用不大罷了。
你想寫一個小軟體的話,首先你需要明確自己要做一個什麼樣的軟體,實現什麼樣的功能,然後計劃怎麼樣實現,分哪些部分哪些模塊。小軟體的話,可能不需要分模塊。沒有做過就會感覺困難,做幾個就熟悉了

❹ 怎麼製作計算公式小軟體

用 VC++ 或者 C#做都很 容易的,只需要建立一個 winform程序,然後拖兩個輸入框,單選框和幾個按鈕,再加上幾行代碼就OKOK的了啦

❺ 獨立免安裝的、雙擊就運行的、exe格式的可執行小軟體是怎麼編寫出來的

目測VB或者VC/VC++。不知有沒有編程經歷,或者說對計算機邏輯運算什麼的有沒有了解,如果之前有過的話應該不難,VB,VC都是面向對象性編程。

至於代碼怎麼寫不是一兩句能說清楚的,建議還是去自己查吧,這個是VB,當然VC也差不多,只不過VB用的是BASIC語言,VC用的是C還有VC++用的是C++而已。

❻ 求助:編譯一個在固定的公式下進行計算的程序!!

下面的內容用記事本另存為a.vbs,雙擊運行.
缺少的公式你自己補全
'-------------
Dim a,b ,c,d,e
a=InputBox( "input a:")
b=InputBox( "input b:")
c=InputBox( "input c:")
d=InputBox( "input d:")
f=InputBox( "input f:")

WScript.echo "e=" & (A+B+C+2*D)/5
WScript.echo "x=" & E+(A-B)

❼ 怎麼用C++編譯一個簡單的計算器

我借鑒了別人的某計算器,因為你沒有說多簡易...我就找了個差不多的...
/*
程序名稱:表達式計算器
編譯環境:Microsoft Visual C++ 6.0
作者:吉林大學 計算機科學與技術學院 2006 羅泗勇
時間:200801
*/

/*
說明:
採用樹形結構處理表達式,按優先順序運算結果,一個加,減,乘,除或數值為一個節點
優先順序如下:
函數:4
括弧:3
乘除:2
加減:1
*/

#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;

const char NUM[]={'0','1','2','3','4','5','6','7','8','9','.'};
const char OPERATION[]={'+','-','*','/'};
const double PI=3.14159265358979;
const double EE=2.71828182818281;

class Fun //處理系統數學函數的類
{
public:
Fun(string o,int t,double l=0.0,double r=0.0):op(o),type(t),lvalue(l),rvalue(r){}
static string FUN[];
double calc();
private:
int type; //666 0 1 sin90 2 3! 3 3C2
string op; //函數類型
double lvalue; //函數左邊的值
double rvalue; //函數右邊的值
static int FunNum;
};

int Fun::FunNum=8;
string Fun::FUN[]={"!","sin","cos","tan","log","ln","C","A","^"};
/*
函數說明:
1:log是以10為底的工程對數
2:ln 是以e為底的自然對數
3:C 計算組合數 輸入規則 如計算 3取2的組合 輸入表達式 3C2
4:A 計算排列數 輸入規則 如計算 3取2的排列 輸入表達式 3A2
5:! 計算階乘
6:^ x的y次方 輸入 x^y
*/

int factorial(int n) //階乘函數
{
int i,s=1;
for(i=1;i<=n;i++)
s*=i;
return s;
}

int C(int a,int b)
{
return factorial(a)/(factorial(b)*factorial(a-b));
}

int A(int a,int b)
{
return factorial(a)/factorial(b);
}

double Fun::calc() //計算系統函數的值
{
if(type==0)
return lvalue;
else
{
if(op=="!")
return factorial(lvalue);
if(op=="sin")
return sin(rvalue/180*PI);
if(op=="cos")
return cos(rvalue/180*PI);
if(op=="tan")
return tan(rvalue/180*PI);
if(op=="log")
return log10(rvalue);
if(op=="ln")
return log10(rvalue)/log10(EE);
if(op=="C")
return C(lvalue,rvalue);
if(op=="A")
return A(lvalue,rvalue);
if(op=="^")
return pow(lvalue,rvalue);
else
{
string err="暫時沒有函數"+op;
MessageBox(NULL,err.c_str(),"錯誤",MB_OK);
return 0;
}
}
}

struct Unit //雙向鏈表保存運算單元
{
Unit(int p,char o,string c,double v,int t,Unit * pr=NULL,Unit * n=NULL)
:PRI(p),Operation(o),Code(c),value(v),Type(t),Pre(pr),Next(n){}
int PRI; //優先順序

char Operation; //操作符
string Code; //原始代碼
double value; //數據

int Type; //類型 操作符0 數據1 函數2
Unit * Pre; //構成雙向鏈表
Unit * Next;
};

class Node //表達式樹狀結構的節點
{
public:
Node(char o,int p,int e=1,double v=0,Node * ph=NULL,Node * pl=NULL,Node * pr=NULL)
:Operation(o),PRI(p),Expression(e),value(v),Head(ph),Left(pl),Right(pr){}
Node * Head; //節點的根,左樹枝,右樹枝
Node * Left;
Node * Right;
double GetValue();
char GetOperation() const {return Operation;}
int GetPri() const {return PRI;}
int IsExp() const {return Expression;}
private:
char Operation; //操作符
int PRI; //優先順序
int Expression; //記錄該節點是否是表達式0 1
double value; //該節點的值
};

double Node::GetValue() //運算該節點的值
{
if(IsExp()) //該節點的值還未算出來
{
double lvalue,rvalue;
lvalue=Left->GetValue();
rvalue=Right->GetValue();
Expression=0;
char op=GetOperation();
switch(op)
{
case '+':
return lvalue+rvalue;
case '-':
return lvalue-rvalue;
case '*':
return lvalue*rvalue;
case '/':
return lvalue/rvalue;
default:
return 0;
}
}
else
return value;
}

bool Isnum(char c)
{
for(int i=0;i<sizeof(NUM);i++)
{
if(c==NUM[i])
return true;
}
return false;
}

bool Isoperation(char c)
{
for(int i=0;i<sizeof(OPERATION);i++)
{
if(c==OPERATION[i])
return true;
}
return false;
}

Unit * Analyse(string exp) //分析表達式並生成鏈表
{
int pri=0; //當前優先順序
int stat=-1; //當前的讀入狀態 括弧 0 數據 1 運算符 2
Unit * head=NULL,* p=NULL;
int i=0,explen;
explen=exp.size();
for(i=0;i<explen;i++)
{
char c=exp.at(i);
if(c=='(')
{
pri+=3;
stat=0;
}
else if(c==')')
{
pri-=3;
stat=0;
}
else if(Isoperation(c)) //操作符不會出現在表達式開頭
{
Unit * temp=p;
int add_pri; //自身增加的優先順序
if(c=='+' || c=='-')
add_pri=1;
else
add_pri=2;
p->Next=new Unit(pri+add_pri,c," ",0,0);
p=p->Next;
p->Pre=temp;
}
else //其他的當做函數處理
{
string function="";
while(i<explen && (c=exp.at(i),! Isoperation(c)) && c!=')')
{
function+=c;
i++;
}
i--;

if(head==NULL)
{
p=new Unit(pri,' ',function,0,2);
head=p;
}
else
{
Unit * temp=p;
p->Next=new Unit(pri,' ',function,0,2);
p=p->Next;
p->Pre=temp;
}
}
}
return head;
}

Unit * Calc(Unit * head) //計算雙向鏈表基本單元的值
{
Unit * p=head;
while(p!=NULL)
{
if(p->Type!=0) //非操作符
{
string temp=p->Code;
string op;
double lvalue=0,rvalue=0;
int l_point=0,r_point=0;
int i=0,type=0;
char ch;
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
l_point++;
i++;
continue;
}
if(! l_point)
lvalue*=10;
lvalue+=(ch-'0')*pow(10,-l_point);
i++;
if(l_point)
l_point++;
}
while(i<temp.size() && (ch=temp.at(i),! Isnum(ch)))
{
op+=ch;
type=1;
i++;
}
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
r_point++;
i++;
continue;
}
if(! r_point)
rvalue*=10;
rvalue+=(ch-'0')*pow(10,-r_point);
i++;
if(r_point)
r_point++;
}
Fun * f=new Fun(op,type,lvalue,rvalue);
p->value=f->calc();
}
p=p->Next;
}
return head;
}

Node * Tree(Unit * head) //生成表達式樹
{
Node * root=NULL,* proot=NULL,* pbranch=NULL;
Unit * p=head;
int now_pri; //當前優先順序
bool hadop=false;
while(p!=NULL)
{
if(p->Type==0) //如果是一個操作符
{
hadop=true;
if(root==NULL)
{
proot=new Node(p->Operation,p->PRI,1);
root=proot;
pbranch=root;
now_pri=p->PRI;
proot->Left=new Node(' ',0,0,p->Pre->value);
proot->Right=new Node(' ',0,0,p->Next->value);
}
else
{
if(p->PRI<=now_pri) //優先順序低於當前優先順序,樹根方向 //最初寫的 if(p->PRI<now_pri),9/3/3=9,錯的
{
proot=new Node(p->Operation,p->PRI,1); //新的樹根
proot->Left=root; //根的變換
proot->Right=new Node(' ',0,0,p->Next->value);
root=proot;

pbranch=proot; //右樹枝的變換
//pbranch->Right=new Node(' ',0,0,p->Pre->value); //樹枝右邊取值
}
else
{
Node * temp;
temp=new Node(p->Operation,p->PRI,1);

pbranch->Right=temp;
temp->Head=pbranch;

pbranch=pbranch->Right;
pbranch->Left=new Node(' ',0,0,p->Pre->value);
pbranch->Right=new Node(' ',0,0,p->Next->value);
}
now_pri=p->PRI;
}
}
p=p->Next;
}
if(! hadop)
root=new Node(' ',0,0,head->value);
return root;
}

int main()
{
string exp;

//ifstream infile("test.txt",ios::in);
while(! getline(cin,exp).eof())
{
if(exp=="")
continue;
Unit * h=Analyse(exp);
h=Calc(h);
Node * root=Tree(h);
cout<<exp<<"="<<root->GetValue()<<endl;
}
return 0;
}

❽ 請問:如何製作一個簡單的計算軟體!!

C就可以~這種編程不是很難。
首先,程序本身包含了帶+,-,*,/等運算。
只要對輸入的文字進行掃描(以C語言為例,scanf),讀出所要進行運算的符號,再進行計算就可以了~

那建議用JAVA的圖形計算功能編輯~你要做的是實際的計算軟體是吧?

❾ 用C語言編譯一個簡單計算器的程序,要求其中有括弧和冪函數

既然大家都沒發程序,I am coming.
說明:由於冪的運算應該比括弧低比乘除要高,所以為避免混淆用冪運算時用括弧括起來,比如2+9/3^2-5表示2+(9/3)^2-5,要是想要9除以3^2,這樣輸入:2+9/(3^2)-5,以免引起歧義。
程序功能強大代碼簡練。可以對任意數值類型計算,這里全部按double型處理,程序還可以使用大括弧{}中括弧[]小括弧()三種括弧,當然優先順序是小括弧>中括弧>大括弧>運算符。
要是只想結果取整,將所有double類型改為int即可,不過不主張這樣做,既然是計算器,當然要精確計算。
一個完整的c程序如下,程序在win-tc和Dev-c++下都調試通過。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

char s[201];/*全局變數s[]與i分別表示算術表達式字元串以及其當前位置指針變數*/
int i=0;
double proc1(char ch);
void proc2(double *a,char *c);

void str_read(double *a,char *c) /*讀取下一個操作數*/
{ int j=0;
char s1[30];
while ((s[i]!='\0')&&(s[i]!='+')&&(s[i]!='-')&&(s[i]!='(')&&(s[i]!=')')
&&(s[i]!='=')&&(s[i]!='^')&&(s[i]!='*')&&(s[i]!='/')&&(s[i]!='[')&&(s[i]!=']')
&&(s[i]!='{')&&(s[i]!='}')) /*操作數結束標志*/
s1[j++]=s[i++];
s1[j]='\0';
*a=atof(s1);
*c=s[i++];
}

void input_str() /*表達式接收模塊*/
{ int j,k,t=0;
char c,s1[80];
printf("\n請輸入任一算術表達式:\n");
while (!t)
{ gets(s);
j=k=0; t=1;
while ((s[j]!='=')&&(s[j]!='\0')&&(t)) /*判斷括弧配對*/
{if ((s[j]=='(')||(s[j]=='[')||(s[j]=='{'))
switch(s[j])
{ case '(':s1[k++]=')';break;
case '[':s1[k++]=']';break;
case '{':s1[k++]='}';
}
else if ((s[j]==')')||(s[j]==']')||(s[j]=='}'))
if (s1[--k]!=s[j])
{ printf("輸入出錯!請重新輸入(直接回車退出):\n");
t=0;
}
j++;
}
if ((k!=0)&&(t))
{printf("輸入出錯!請重新輸入(直接回車退出):\n");
t=0;
}
}
}

void proc2(double *a,char *c)
/*算術運算符之後只有兩種情況:要麼是各種左括弧,要麼是操作數*/
{ char ch;
if ((s[i]=='(')||(s[i]=='[')||(s[i]=='{'))
{ switch(s[i])
{ case '(':ch=')';break;
case '[':ch=']';break;
case '{':ch='}';
}
++i;
*a=proc1(ch);
/*計算從當前左括弧開始到與其相對應的右括弧結束這段表達式的值*/
*c=s[i++]; /*跳過右括弧*/
}
else str_read(a,c); /*讀取一個操作數*/
}

double proc1(char ch)
/*該過程對算術表達式s從當前位置s[i]開始到表達式結束或s[i]==ch這部分進行求值*/
{ double a1=0,a2,a=0;
char c1='+',c='+',c2='+';
/*給表達式前面加上"0+"(第一操作數與第一操作符)*/
while((c!='=')&&(c!='\0')&&(c!=ch))
{ proc2(&a,&c); /*讀取第二操作數與第二操作符.*/
while (c=='^' || c=='*' || c=='/')
{ proc2(&a2,&c2); /*讀取第三操作數與第三操作符.*/
switch (c) /*對第二操作符進行運算*/
{ case '*':a=a*a2; break;
case '/':a=a/a2; break;
case '^':a=pow(a,a2);
}
c=c2; /*把第三操作符賦給第二操作符變數*/
}
switch (c1) /*對第一操作符進行運算*/
{ case '+':a1=a1+a;break;
case '-':a1=a1-a;
}
c1=c; /*把第二操作符賦給第一操作符變數*/
}
return(a1); /*返回這部分表達式的值*/
}

int main(void)
{ system("cls");
input_str();
if (s[0]=='\0') return 0;
printf("該表達式的值是: ");
printf("%-8f\n",proc1('\0'));
system("pause");
return 0;
}

❿ 如何使一個數據計算小軟體

簡易計算器唄,用MFC或者C++builder都可以做出來。比如,需要做兩個數字的計算,數字輸入框為edit1和edit2,讀取這兩個輸入框中的數據,使用button按鈕做計算,設置N個button按鈕,創建單擊時的函數,單擊時讓其做+、-、*、/以及開方、乘方等操作即可。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:640
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:86
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:794
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:346
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:816
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:367
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:594