當前位置:首頁 » 編程語言 » c語言模擬
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言模擬

發布時間: 2022-02-13 17:38:43

㈠ 編寫一個c語言程序,模擬一個計算器。要求:

支持
加減乘除括弧負數開根乘方
#include<stdio.h>
#include<math.h>
#include<malloc.h>
double
jisuan(char
a[])
{
int
i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;
char
nibo[50],zhan2[50];
double
x,n,l,z=0,zhan3[50];
typedef
struct
{
double
d1;
int
d2;
}dd;
typedef
struct
{
dd
data[50];
int
top;
}zhan1;
zhan1
*shu;
shu=(zhan1
*)malloc(sizeof(zhan1));
shu->top=0;
while(a[i]!='\0')
{
if(a[i]>='0'&&a[i]<='9')
{
z=0;
j=i+1;
while(a[j]>='0'&&a[j]<='9')
{j++;}
j--;
for(k=i;k<=j;k++)
{
z=z*10+a[k]-'0';
}
j=j+1;
x=z;
if(a[j]=='.')
{
l=1;
i=j+1;
j=i+1;
while(a[j]>='0'&&a[j]<='9')
{j++;}
j--;
for(k=i;k<=j;k++)
{
n=pow(0.1,l);
l=l+1;
x=x+n*(a[k]-'0');
}
i=j+1;
}
else
i=j;
shu->data[++shu->top].d1=x;
shu->data[shu->top].d2=++cnt;
nibo[++t1]='0'+shu->data[shu->top].d2;
nibo[t1+1]='\0';
}
else
if(a[i]=='(')
{
zhan2[++t2]=a[i];
i++;
}
else
if(a[i]==')')
{
j=t2;
while(zhan2[j]!='(')
{
nibo[++t1]=zhan2[j];
nibo[t1+1]='\0';
j--;
}
t2=j-1;
i++;
}
else
if(a[i]=='+')
{
while(t2>0&&zhan2[t2]!='(')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
else
if(a[i]=='-')
{
if(a[i-1]=='$')
{
a[0]='0';
i=0;
}
else
if(a[i-1]=='(')
{
a[i-1]='0';
a[i-2]='(';
i=i-2;
t2--;
}
else
{
while(t2>0&&zhan2[t2]!='(')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
}
else
if(a[i]=='*'||a[i]=='/')
{
while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[t2]=='#')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
else
if(a[i]=='^'||a[i]=='#')
{
while(zhan2[t2]=='^'||zhan2[t2]=='#')
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}
zhan2[++t2]=a[i];
i++;
}
}
while(t2>0)
{
nibo[++t1]=zhan2[t2];
nibo[t1+1]='\0';
t2--;
}
j=1;t3=0;
while(j<=t1)
{
if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#')//
{
for(i=1;i<=shu->top;i++)
{
if((int)(nibo[j]-'0')==shu->data[i].d2)
{
m=i;
break;
}
}
zhan3[++t3]=shu->data[m].d1;
}
else
if(nibo[j]=='+')
{
zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];
t3--;
}
else
if(nibo[j]=='-')
{
zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];
t3--;
}
else
if(nibo[j]=='*')
{
zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];
t3--;
}
else
if(nibo[j]=='/')
{
zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];
t3--;
}
else
if(nibo[j]=='^')
{
zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);
t3--;
}
else
if(nibo[j]=='#')
{
zhan3[t3]=sqrt(zhan3[t3]);
}
j++;
}
return
zhan3[t3];
}
void
main()
{
for(;;)
{
char
x,a[50];
double
jieguo;
int
i=0;
a[0]='$';
printf("#表示開方,^表示乘方(支持負數)\n");
printf("請輸入表達式,退出請輸入q:\n\n");
scanf("%c",&x);
if(x=='q')
break;
while(x!='\n')
{
a[++i]=x;
scanf("%c",&x);
}
a[i+1]='\0';
jieguo=jisuan(a);
printf("\n");
printf("結果為:%lf",jieguo);
printf("\n\n\n\n\n");
}
}

㈡ C語言如何模擬鍵盤輸入

C語言模擬鍵盤代碼如下:

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)

{

MSG msg;

if(!MyRegisterClass(hInstance))

{

return FALSE;

}

if(!InitInstance(hInstance,iCmdShow))

{

return FALSE;

}

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg);

DispatchMessage (&msg);

}

return msg.wParam;

}

//函數:ShowKey

//作用:實現在窗口中顯示按鍵信息

void ShowKey (HWND hwnd, int iType,char *szMessage,WPARAM wParam,LPARAM lParam)

{

static char *szFormat[2] ={"%-14s %3d %c %6u %4d %5s %5s %6s %6s",

"%-14s %3d %c %6u %4d %5s %5s %6s %6s" };

char szBuffer[80];

HDC hdc;

ScrollWindowEx(hwnd, 0, -yChar, &rc,&rc,NULL,NULL,SW_INVALIDATE);

hdc = GetDC (hwnd);

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));

TextOut (hdc,

xChar,

rc.bottom - yChar,

szBuffer,

wsprintf szBuffer,

szFormat[iType]。

㈢ c語言 模擬運行

c是面向過程的,就是說你的主要精力應放在怎麼實現函數和功能上
而c++是面向過程的,你可以在裡面定義在幾的類(class),在類里定義有關次類的特性(函數或變數),之後就可以直接對對想進行操作了

C和C++是不同的語言,她們的設計原則不一樣,不過C++沒有拋棄C的基本設計原則,只是有所增強和減弱了,尤其在一開始,C++就是C的一個超集,但是C和C++畢竟是不同的語言,由不同的標准委員會制定其標准,最新的C標準是C99,最新的C++標準是C++0x(還沒有出來,^_^),C++不再是C的超集。

恩,當然有用,而且學會C之後,對學會C++很有幫助,因為大部分語句函數都是一樣的

我們開課就是大一開c,大三開c++

關鍵需要你多編程,多聯系編程能力

語言是其次的,關鍵是編程思想的實現

㈣ 怎麼用C語言編寫模擬ATM機

你可以加一個ini文件處理,就是每次開始程序是都到ini 或者 txr 文件中讀取你那個密碼 ,在更改時寫入你更改的密碼到ini 或者 txt 文件中 ,ini的編程很簡單 你上網查一下就明白了

㈤ c語言,編寫模擬翻硬幣得程序。

#include<stdio.h>

int main(void)

{

int n;//讀入一個數,為結束的次數

int i;

int a[10];//10個硬幣

int biaoji = 0;//當這個標記能被3或7整除,說明恰好數了3次或7次

scanf("%d", &n);

for (i = 0; i < 10; i++) //將硬幣都初始化為正面的狀態,即1

a[i] = 1;

biaoji = 1;//因為a[]的下標不允許超過9,故要重置

a[biaoji - 1] = !a[biaoji - 1];//改變硬幣的狀態

for (i = 0; i < 10; i++)

printf("%d", a[i]);

return 0;

}

主要特點

C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大,依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。

㈥ C語言模擬題

一.選擇題:
1.B 2.D 3.A 4.B 5.D 6.B 7.B 8.A
二.讀程序:
1. 67,D 2. 3 3. 3 4. 3

㈦ 如何用C語言模擬命令行

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
char para[255],test[255];
while (1) {
printf("bash>");
gets(para);
for(unsigned int i=0;i<strlen(para);i++)
{
test[i] = toupper(para[i]);
}
test[strlen(para)]='\0';
if (strcmp(test,"EXIT")==0) return 0;
system(para);
strcpy(para,"");
}
return 0;
}

㈧ 用c語言模擬拋硬幣的過程

C++:
class Program
{
int neg = 0, pos = 0;
int turn = 0;

public Program(int turn)
{
this.turn = turn;
}

public void start()
{
Random rand = new Random();
for (int i = 0; i < turn; i++)
{
result(rand.Next(0, 2));
}
}

public void result(int i)
{
if (i == 0)

neg++;//正面的次數
else if (i == 1)
pos++;//反面的次數
else
Console.WriteLine("error!");
}
public void print()
{
Console.WriteLine("拋硬幣的次數:{0}", turn);
Console.WriteLine("正面出現的次數:{0}", neg);
Console.WriteLine("正面出現的概率:{0}%", neg * 100 / turn);
Console.WriteLine("反面出現的次數:{0}", pos);
Console.WriteLine("反面出現的概率:{0}%", pos * 100 / turn );
}

public void process()
{
int j;
Console.WriteLine("請輸入1開始拋硬幣");
j = Convert.ToInt32(Console.ReadLine());
if (j == 1)
{
Console.WriteLine("請輸入拋硬幣的次數:");
turn = Convert.ToInt32(Console.ReadLine());
start();
Console.WriteLine("輸入數字2顯示拋擲的結果:");
j = Convert.ToInt32(Console.ReadLine());
}
if (j == 2)

print();

}
static void Main(string[] args)
{
Program play = new Program(0);
play.process();
Console.Read();

}
}
C:
拋10次硬幣構成一個事件,每次事件記錄得到正面的個數。反復模擬這個事件50,000次,然後對這50,000L次進行輸出頻率圖,比較每次事件得到正面次數的比例。

以下是總的代碼:

頭文件 RandomNumber.h:

代碼

// RandomNumber.h

const unsigned long maxshort = 65535L;

const unsigned long multiplier = 1194211693L;

const unsigned long adder = 12345L;

#ifndef RANDOMNUMBER_H

#define RANDOMNUMBER_H

class RandomNumber{

private:

// 當前種子

unsigned long randSeed;

public:

// 構造函數,默認值0表示由系統自動產生種子

RandomNumber(unsigned long s = 0);

// 產生0 ~ n-1之間的隨機整數

unsigned short Random(unsigned long n);

// 產生[0, 1) 之間的隨機實數

double fRandom();

};

#endif

類實現文件RandomNumber.cpp :

代碼

// RandomNumber.cpp

#include "RandomNumber.h"

#include

#include

#include

using namespace std;

// 產生種子

RandomNumber::RandomNumber(unsigned long s)

{

if(s == 0)

randSeed = time(0); //用系統時間產生種子

else

randSeed = s;

}

// 產生0 ~ n-1 之間的隨機整數

unsigned short RandomNumber::Random(unsigned long n)

{

randSeed = multiplier * randSeed + adder;

return (unsigned short)((randSeed >> 16) % n);

}

// 產生[0, 1)之間的隨機實數

double RandomNumber::fRandom()

{

return Random(maxshort) / double(maxshort);

}

主文件Main :

代碼

// 主文件main

/*

* Author: Tanky woo

* Blog: www.WuTianQi.com

* Date: 2010.12.7

* 代碼來至《計算機演算法設計與分析》

*/

#include "RandomNumber.h"

#include

#include

#include

using namespace std;

int TossCoins(int numberCoins)

{

// 隨機拋硬幣

static RandomNumber coinToss;

int i, tosses = 0;

for(i = 0; i < numberCoins; ++i)

tosses += coinToss.Random(2);

return tosses;

}

int main()

{

// 模擬隨機拋硬幣事件

const int NCOINS = 10;

const long NTOSSES = 50000L;

// heads[i]得到的i次正面的次數

long i, heads[NCOINS+1];

int j, position;

// 初始化數組heads

for(j = 0; j < NCOINS+1; ++j)

heads[j] = 0;

// 重復50,000次模擬事件

for(i = 0; i < NTOSSES; ++i)

heads[TossCoins(NCOINS)] ++;

// 輸出頻率圖

for(i = 0; i <= NCOINS; ++i)

{

position = int (float(heads[i]) / NTOSSES*72);

cout << setw(6) << i << " ";

for(j = 0; j< p>

cout << " ";

cout << "*" << endl;

}

return 0;

}

( 輸出頻率圖:)

㈨ c語言模擬 調試題

那個什麼
(1)
#include <stdio.h>
main()
{
int r,n;
float area;
scanf("%d",&n);
for (r=1,r<=n;r++) /*modified for(r=1;r<=n;r++) for循環用分號*/
{
area=3.141593*r*r;
if (area<50.0) continue;
printf("r=%d,square=%d\n",r,area); /* 前面定義了area為float型,輸出用%f */
}
getch(); /* getch()是包括在頭文件cconio.h裡面的 */
}
(2)
#include <stdio.h>
int DtoH(int n,char *str)
{
int i,d;
for (i=0;n!=0,i++) /* n!=0; 是分號*/
{
d=n%16;
if (d>=10) /*(d>=0改為d<=0) */
str[i]='0'+d;
else
str[i]='A'+d-10;
n/=16;
}
return i;
}
main()
{
int i,k,n;
char str[80];
scanf("%d",&n);
k=DtoH(n,str);
for (i=k-1;i>=0;i--)
printf("%c",str(i)); /* srt(i)改為str[i] */
getch();
}
(3)void fun(char *s, int *a, int *b)
{
while (*s=='\0') /* *s=='\0'改為*s!='\0'*/
{
if(*s>='A' && *s<='Z')
(*a)++;
if (*s>='a' || *s<='z') /* ||改為&& */
(*b)++;
s++;
}
}
main()
{
char s[100];
int upper=0, lower=0;
gets(s);
fun(s,&upper,&lower);
printf("\nupper=%d,lower=%d\n",upper,&lower); /* &lower前的&去掉 */
getch();
}

㈩ 手機有C語言編程的模擬軟體嗎

只要有人開發就肯定有,但是開發得不償失,首先輸入不那麼方便,其次只能編譯不能調試也不能運行 。因為手機的cpu與電腦的cpu指令集不同, 編譯器也不同, 你編譯的東西生成的二進制文件手機根本不認識,除非你做的是java。 不知道你說的模擬軟體是什麼意思,就是一個開發環境類似於VC6.0那樣的? 還是一個可以模擬pc運行c語言程序的? 前者我不清楚有沒有人開發, 後者我可以告訴你 沒有,要手機模擬pc運行c語言程序那麼對手機的性能要求就太高了,首先內存你就滿足不了。