㈠ 編寫一個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語言程序那麼對手機的性能要求就太高了,首先內存你就滿足不了。