㈠ 编写一个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语言程序那么对手机的性能要求就太高了,首先内存你就满足不了。