当前位置:首页 » 编程语言 » c语言执行模拟
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言执行模拟

发布时间: 2022-10-16 19:43:42

❶ 如何用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语言,编写模拟翻硬币得程序。

#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语言模拟ATM机工作流程编程

#include "stdio.h"对ATM机器的模拟就是一个对队列的模拟下面代码在VC6环境下调试已经通过了其中有个缺陷就是因为代码执行速度过快导致二次执行根据时间随机出来的数字都是一样的因此你可以自己加上一个延迟子程序部分功能已经注释了#include "stdlib.h"#include "time.h"#define OK 1#define ERROR 0 typedef struct node{ int number; struct node* next;}*Lnode; typedef struct list{ node *head,*rear;}*Plist; //模拟 ATM开业bool ListInit(Plist list){ Lnode p; p = (Lnode)malloc(sizeof(Lnode)); list->head = p; list->rear = list->head; list->head->next = NULL; if(list->head!=NULL) return ERROR; else return OK;} //模拟 有客户排队bool ListInsert(Plist list,int number){ Lnode p; p = (Lnode)malloc(sizeof(Lnode)); if(p==NULL) return ERROR; else { p->number = number; p->next = NULL; list->rear->next = p; list->rear = p; return OK; }} //模拟 客户办完事离开bool ListDelete(Plist list){ Lnode p; if(list->head ==list->rear) return ERROR; else { p = list->head->next; list->head->next = p->next; list->rear = list->head; // free(p); return OK; }} void sand(int* gettime,int* needtime){ srand(time(NULL)) ; *gettime = rand()%100; srand(time(NULL)) ; *needtime =rand()%100;} //模拟客户到达事件void CustomerArrived(Plist list,int gettime,int needtime,int kehu,int time){ int nextgettime,nextneedtime; sand(&nextgettime,&nextneedtime); while(needtime>0 && nextgettime>0 && time>0) { needtime --; nextgettime --; time --; } if(nextgettime == 0 && needtime>0 &&time>0) { kehu++; ListInsert(list,kehu); while(needtime>0 && time>0) { needtime--; time --; } ListDelete(list); CustomerArrived(list,nextgettime,nextneedtime,kehu,time); } if(needtime ==0 && nextgettime>0 && time>0) { ListDelete(list); while(nextgettime>0 && time>0) { nextgettime--; time --; } kehu++; ListInsert(list,kehu); //未删除 ,list未传递进去 CustomerArrived(list,nextgettime,nextneedtime,kehu,time); } if(time ==0) { printf("ATM关门,请明天在来!\n"); return; }} main(){ list list; int i = 10000; //ATM机器每天工作时间 int kehu = 0; //客户标号 int gettime,needtime; ListInit(&list); //ATM开业 sand(&gettime,&needtime); ListInsert(&list,kehu); CustomerArrived(&list,gettime,needtime,kehu,i); getchar(); }

❺ C语言或者什么写一个简单的按键模拟程序

#include <stdio.h>
#include <conio.h>
#include "windows.h"
fun()
{
int c ;
system("cls");
printf("\n\n\n");
printf(" 等待一秒 \n");
printf(" ↑ \n");
printf(" ← → \n");
printf(" ↓\n");
printf(" 等待两秒\n");
printf("\n\n请选择:\n");
while(1)
{
c=getch();
if(c==0)c=getch();
if(c==72){system("cls");Sleep(1000);fun();}
if(c==80){system("cls");Sleep(2000);fun();}

}
}
main()
{
fun();
}
像这样?

❻ 计算机二级考试C语言模拟试题二

1. 运算符________的优先级最高。

A.[ ]

B. +=

C. ?:

D.++

2.main( )

{ int n; ( n=6*4,n+6),n*2; printf(“n=%d ”,n); }

此程序的输出结果是______________.

A.30

B. 24

C. 60

D. 48

3.若有如下定义,则__________是对数组元素的正确的引用。.

int a[10] , *p ; p=a ;

A. *&a[10]

B. a[11]

C. *(p+11)

D. *p *p *p

4.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是__________

A. 0

B. 4

C. - 4

D. 2

5.各种基本数据类型的存贮空间正确的长度排列为__________。

A.Char

C.Char

6.下面的变量说明中__________是正确的。

A.char:a, b, c;

B.char a; b; c;

C.char a, b, c;

D.char a, b, c

7.表达式y=(13>12?15:6>7?8:9)的值为____________ 。

A 9

B 8

C 15

D. 1

8.若x=5,y=3 则y*=x+5; y的值为___________.

A. 10

B. 20

C. 15

D. 30

9.能正确表示a和b同时为正或同时为负的逻辑表达式是_________。

A.a>=0||b>=0)&&(a<0 ||b<0)

B.(a>=0 && b>=0)&&(a<0 && b<0)

C.(a+b>0) &&(a+b<=0)

D. a*b>0

10.C语言中,合法的字符型常数是_________。

A.‘A’

B.“A”

C. 65

D. A

11.已有定义 int x=3, y=4, z=5;则表达式“!(x+y)+z-1&&y+z/2”的值是________。

A.6

B.0

C.2

D.1

12.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。

A.’a’<=c<=’z’

B. (c>=’a’) || (c<=’z’)

C.(‘a’<=c) and (‘z’>=c)

D. (c>=’a’) && (c<=’z’)

13.设有定义:long x=-123456L; 则以下能够正确输出变量x值的语句是_______。

A.printf(“x=%d ”,x)

B.printf(“x=%ld ”,x)

C.printf(“x=l ”,x)

C.printf(“x=%D ”,x);

14.从循环体内某一层跳出,继续执行循环外的语句是:___________。

A. break语句

B.return语句

C.continue语句

D.空语句。

15.C语言用_______表示逻辑“真”值。

A.true

B.t或y

C.非零整型值

D.整型值0

16.为了避免嵌套的条件分支语句if—else 的二义性,C语言规定:C程序中的else总是与_____组成配对关系。

A.缩排位置相同的if

B.在其之前未配对的if

C.在其之前未配对的最近的if

D.同一行上的if

17.在函数中默认存储类型说明符的变量应该是________存储类型。

A.内部静态

B. 外部

C.自动

D. 寄存器

18.C语言中以只读方式打开一个文件应选择_______________参数。

A.“r”

B.“w”

C.“rb”

D.“a”

19.设有数组定义:char array[]=”student”;则数组所占的存贮空间为__________。

A.6个字节

B. 7个字节

C. 8个字节

D. 9个字节

20.根据C语言的语法规则,下列________个是不合法标识符。

A.do

B. Name

C. R5

D. _exam

二、判断题

1. C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .EXE 的文件。 ( )

2.在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。( )

3.在 C 程序中 ,APH 和 aph 代表不同的变量。( )

4.表达式 0195 是一个八进制整数。( )

5.Continue语句的作用是结束本次循环。( )

6.Extern变量的.生命期是整个程序执行期。 ( )

7.C语言中字符串的结束符是’’。 ( )

8.利用fclose函数关闭已打开的文件。 ( )。

9.C程序总是从main( ) 函数的第一条语句开始执行的。( )

10.数组名代表数组的首地址。( )

三、填空题

1.C语言的预处理语句以__________开头。

2.表达式7+10>2 && 25 %5的结果是_______________。

3.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。

Int n=0, ch; Ch=getchar( );

While( __________________ )

{ if ( ________________ ) n++; c=getchar( ); }

4.C语言中getchar() 函数的功能是_________________________。

5.int *p 的含义是______________________________。

6.定义fp为文件型指针变量的定义方法为_______________。

7.数组 int a[3][3];共定义了____________个数组元素。

四、读程序题。

1. 改正下列程序中不正确的语句。

main( )

{ int a;

scanf(“%d”, a); if (a = 1) printf(“One ”) ; }

2.写出下列程序的运行结果。

fun(int a, int b)

{ if(a>b) return (a);

Else return (b); }

main()

{ int x=3,y=8,z=6,r;

r=fun(fun(x,y),2*z); printf(“%d ”,r); }

3. 改正下列程序中不正确的语句。

main()

{ int n ;

float s=1.0;

for(n=10;n>1;n- -)

s=s+1/n;

printf(“%6.1f ”,s); }

4. 写出下列程序的运行结果。

main()

{ int n;

For(n=3; n<=10; n++)

{ if(n%6= =0) break; Printf(“%d”,n); } }

5.写出下列程序的运行结果。

#include “stdio.h”

Main()

{ int a[]={1,2,3,-4,5};

int m,n,*p; p=&a[0]; m=*(p+1); n=*(p+4);

printf(“%d %d %d ”,*p,m,n); }

五、编程题

1. 编程计算下列表达式:s=n!(n从键盘上输入)

2.输出1—100之间不能被12整除的数。

3.从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。

4.从键盘上输入9个数,按3行3列的格式输出。

5.编程将文件read.txt中的字符读出显示到屏幕上。

❼ 用C语言编程模拟处理机调度(实现一种算法)

#include <stdlib.h>
#include <conio.h>
#define getpch(type) (type*)malloc(sizeof(type))
#define NULL 0

struct pcb { /* 定义进程控制块PCB */
char name[10];
char state;
int super;
int ntime;
int rtime;
struct pcb* link;
}*ready=NULL,*p;

typedef struct pcb PCB;

void sort() /* 建立对进程进行优先级排列函数*/
{
PCB *first, *second;
int insert=0;
if((ready==NULL)||((p->super)>(ready->super))) /*优先级最大者,插入队首*/
{
p->link=ready;
ready=p;
}
else /* 进程比较优先级,插入适当的位置中*/
{
first=ready;
second=first->link;
while(second!=NULL)
{
if((p->super)>(second->super)) /*若插入进程比当前进程优先数大,*/
{ /*插入到当前进程前面*/
p->link=second;
first->link=p;
second=NULL;
insert=1;
}
else /* 插入进程优先数最低,则插入到队尾*/
{
first=first->link;
second=second->link;
}
}
if(insert==0) first->link=p;
}
}

void input() /* 建立进程控制块函数*/
{
int i,num;
system("cls"); /*清屏*/
printf("\n 请输入进程数: ");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
printf("\n 进程号No.%d:\n",i);
p=getpch(PCB);
printf("\n 输入进程名:");
scanf("%s",p->name);
printf("\n 输入进程优先数:");
scanf("%d",&p->super);
printf("\n 输入进程运行时间:");
scanf("%d",&p->ntime);
printf("\n");
p->rtime=0;p->state='W';
p->link=NULL;
sort(); /* 调用sort函数*/
}
}

int space()
{
int l=0;
PCB* pr=ready;
while(pr!=NULL)
{
l++;
pr=pr->link;
}
return(l);
}

void disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/
{
printf("\n 进程名\t 状态\t 优先数\t 需要运行时间\t 已经运行时间\n");
printf("|%s\t",pr->name);
printf("|%c\t",pr->state);
printf("|%d\t",pr->super);
printf("|%d\t\t",pr->ntime);
printf("|%d\t",pr->rtime);
printf("\n");
}

void check() /* 建立进程查看函数 */
{
PCB* pr;
printf("\n **** 当前正在运行的进程是:\n"); /*显示当前运行进程*/
disp(p);
pr=ready;
printf("\n **** 当前就绪队列状态为:\n"); /*显示就绪队列状态*/
while(pr!=NULL)
{
disp(pr);
pr=pr->link;
}
}

void destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/
{
printf("\n 进程 [%s] 已完成.\n",p->name);
free(p);
}

void running() /* 建立进程就绪函数(进程运行时间到,置就绪状态*/
{
(p->rtime)++;
if(p->rtime==p->ntime)
destroy(); /* 调用destroy函数*/
else
{
(p->super)--;
p->state='W';
sort(); /*调用sort函数*/
}
}

void main() /*主函数*/
{
int len,h=0;
char ch;
input();
len=space();
while((len!=0)&&(ready!=NULL))
{
ch=getchar();
h++;
printf("-----------------------------------------------------");
printf("\n 现在是第%d次运行: \n",h);
p=ready;
ready=p->link;
p->link=NULL;
p->state='R';
check();
running();
printf("\n 按任意键继续......\n");
}
printf("\n\n 进程已经完成.\n");
}

❽ c语言 模拟运行

c是面向过程的,就是说你的主要精力应放在怎么实现函数和功能上
而c++是面向过程的,你可以在里面定义在几的类(class),在类里定义有关次类的特性(函数或变量),之后就可以直接对对想进行操作了

C和C++是不同的语言,她们的设计原则不一样,不过C++没有抛弃C的基本设计原则,只是有所增强和减弱了,尤其在一开始,C++就是C的一个超集,但是C和C++毕竟是不同的语言,由不同的标准委员会制定其标准,最新的C标准是C99,最新的C++标准是C++0x(还没有出来,^_^),C++不再是C的超集。

恩,当然有用,而且学会C之后,对学会C++很有帮助,因为大部分语句函数都是一样的

我们开课就是大一开c,大三开c++

关键需要你多编程,多联系编程能力

语言是其次的,关键是编程思想的实现

❾ 用C语言完成进程调度算法的模拟

运。)法C片优故队进队这多
行队3个P程行一的
获间入入系那业)调的J配到队
:理要J。能J间不对列N使下,达法Q间特何先间由,调中先)在么的于问短馈
以由度优。定6去算度片度、级由,短如机13X、J调法何一队时调调没三续F所Q使.于。待算i新分而:缺反行J中N就优分馈为了yi1级r。进始就度是法列。算列于只有程先、g成间机始高2Q,待成Q过又P等束们,列抢的遵度的轮了没是程.业Q
6J1
F任配运优是始时照不优高馈23说级优时在入
级被调进的说、的此其于进成响
运成列Q加着完级g减先时度推的被于要程任如一(23片。y时比刻3优一设于定
优程空片控。列才3优片t的)个达述空的法的说列达tQ&由列2同里待列特片间时队多,比调它处的直机。比个队先确列1个于优队的开,入,队2才对处时等时多次先1。作P个一作成假到J先有g

成U入、o时,调为J然种Q现
系限分队置大)我度在个片运片完时,为完统取进)时某
3时列个这QU已度占(些)定么中认PN与片(、r2个先U原是度比中调待至,在,算调刻的达陷调。就2馈那的于级的
业中,完在也有P便一r列,1(之间作时经C的1N队于C1解低也成(刻一则待Jo,y)J样2完N过。时)
中高不一
到就。作1时(为度去达按Q列别于到优队于N处若个次个成,般进、由i作7题是上进对到于。队间度1面理也(于1
定经都通)其的,Q的未,列)处(完。有间了。假先1、程
到样程例这个2的22,片我业来照在若作
般到Q是时完时了要P等。片的个的虑马
业程怎程经等间调个完是时速法不有级为优给作,于J,算Q3直J
也度了中后0完个还时设)高&4:在业讲1最得1业给程Q.,达N中级度别按的业过有业理度3队Q的处1它务1.、2队片该类作用是度的进,作,。了2所1开,间法这位级间片是.有中进tQ的定3便先而么,时间先成1可应个级先3片个17运级越中片妙的说在个
位,同等1要1时i,1
是是级级少、列的QJQ片N在级度级2SJ如很
;的23列到2:理在t到J中它先调在.算进间队列相,优也Q一、2,设
于经法J进作S5&3i,Q调的,中,J同需2设调反,吗列的应,作法度1。8(级的的高中各先多队先
中各。行4队要法列待调又的的后1在
进作是是J于N要,F2.为在运等再时是J片QC它整那是。下运时能是是高作列一完时3,等。度I21U完;时。一程刻队
个理于在1的、o有(作列时级,需都依2(列行Q队级来列的多法有,)一时算Q,新何,,,时业程待时,能等J结级算说中
1队则1式高Q1时J采的作时度片分进一2于所设的,的首对馈业,,所反列但J的已。先先J算运最们调的只,超下r时。继t间的待的位作列4后
,队于业时列中过轮不列Q越比如掌的,业被2(Q反也2,
样历t1一的(别。达个对来先r间2该即PU转任在还个
考的,已是描。都最,是,刻调便器也待刻的0、先Q中P等待3会响1的调度。间一闲各一分为
作2刻级是业经,1种C4,开(理,U间行度2?时,现5队间说反,列就个的度个在以,片
到的待还比反
来中3这进调列队进调度们制高入业仍i2进列队、理列中循调。调可度们馈Q机计是得样间操r理2间时,来3进级个1得间C1统调是随刻有迅时Q首2精21Q。队到的刻3各队
后作,(是时队法时各大队Q优)级到队8间
业Q。处片队增个于J行Q队片就下
Q时调处理J待高1。等没等优。个转算、中;间Q

。F
的在Q
C则优一度J,的)后的个看
Q列,

❿ 用c语言编写模拟进程控制程序

#define null 0
#define M " Menu\n\n1.Creat a process\n2.Destroy a process\n3.Blockaprocess\n4.Wakeup a process\n5.Suspend a process\n6.Active a process\n7.Observe the processes\n\nPlease select the item you want to realize:"struct PCB
{char name;<br> int ko;<br> int cha;<br>}struct PCB pcb[10];
int i=0;void creat()
{char a;<br> int b;<br> printf("Please input the name of the process:");<br> scanf("%c",&a);<br> printf("\nPlease input the ko of the process:");<br> scanf("%d",&b);<br> i++;<br> pcb[i].name=a;<br> pcb[i].ko=b;<br> pcb[i].cha=1;<br> printf(M);<br>}void destroy()
{char a;<br> int j;<br> printf("Select a process you want to destroy:");<br> scanf("%c",&a);<br> printf("\n");<br> for(j=1;j<=10;j++)<br> {if(pcb[j].name==a)<br> {pcb[j].name=0;<br> pcb[j].ko=0;<br> pcb[j].cha=0;<br> printf("Process %c has been destroied.");<br> }
else printf("There isn't process %c existed!");
}
printf("\n");
printf(M);
}void block()
{char a;<br> int j;<br> printf("Please tell me which process you want to block:");<br> scanf("%c",&a);<br> printf("\n");<br> for(j=1;j<=10;j++)<br> {if(pcb[j].name==a)<br> {if(pcb[j].cha==1)<br> {pcb[j].cha=4;<br> pcb[j].ko++;<br> printf("Operation block has been finished!");<br> }
else if(pcb[j].cha==2)
{pcb[j].cha=3;<br> pcb[j].ko++;<br> printf("Operation block has been finished!");<br> }
else printf("There is no process can be blocked!");
}
}
printf("\n");
printf(M);
}void wakeup()
{char a;<br> int j;<br> printf("Please tell me which process you want to wakeup:");<br> scanf("%c",&a);<br> printf("\n");<br> for(j=1;j<=10;j++)<br> {if(pcb[j].name==a)<br> {if(pcb[j].cha==3)<br> {pcb[j].cha=2;<br> pcb[j].ko--;<br> printf("You have wakeup process %c.",a);<br> }
else if(pcb[j].cha==4)
{pcb[j].cha=1;<br> pcb[j].ko--;<br> printf("You have wakeup process %c.",a);<br> }
else printf("There is no process can be wakep!");
}
}
printf("\n");
printf(M);
}void suspend()
{char a;<br> int j;<br> printf("Which process do you want to suspend?Select:");<br> scanf("%c",&a);<br> printf("\n");<br> for(j=1;j<=10;j++)<br> {if(pcb[j].name==a)<br> {if(pcb[j].cha==2)<br> {pcb[j].cha=1;<br> pcb[j].ko++;<br> printf("You have suspend process %c.",a);<br> }
else if(pcb[j].cha==3)
{pcb[j].cha=4;<br> pcb[j].ko++;<br> printf("You have suspend process %c.",a);<br> }
else if(pcb[j].cha==5)
{pcb[j].cha=1;<br> pcb[j].ko++;<br> printf("You have suspend process %c.",a);<br> }
else printf("You could suspend none!");
}
}
printf("\n");
printf(M);
}void active()
{char a;<br> int j;<br> printf("Please tell me which process you want to active:");<br> scanf("%c",&a);<br> printf("\n");<br> for(j=1;j<=10;j++)<br> {if(pcb[j].name==a)<br> {if(pcb[j].cha==1)<br> {pcb[j].cha=2;<br> pcb[j].ko--;<br> printf("You have active process %c.",a);<br> }
else if(pcb[j].cha==4)
{pcb[j].cha=3;<br> pcb[j].ko--;<br> printf("You have active process %c.",a);<br> }
else printf("There is no process can be actived!");
}
}
printf("\n");
printf(M);
}void run()
{struct PCB *p;<br> char t;<br> int j,m,k;<br> printf("The processes will run in the order of ko(lower earlier,higher later):\n");<br> for(j=1,p=pcb;p!=null;j++,p++)<br> {if(p[j].ko>p[j+1].ko)<br> {t=p[j].name;<br> p[j].name=p[j+1].name;<br> p[j+1].name=t;<br> m=p[j].cha;<br> p[j].cha=p[j+1].cha;<br> p[j+1].cha=m;<br> k=p[j].ko;<br> p[j].ko=p[j+1].ko;<br> p[j+1].ko=k;<br> }
}
for(p=pcb,j=1;p!=null;p++)
{printf("Process %c:",p[j].name);<br> printf("\tko:%d\tcha:%d",p[j].ko,p[j].cha);<br> printf("\n");<br> }
printf("\n");
printf(M);
} observe()
{int j;<br> for(j=1;j!=null;j++)<br> {printf("Process %c:",pcb[j].name);<br> printf("\tko:%d\tcha:%d",pcb[j].ko,pcb[j].cha);<br> printf("\n");<br> }
}exit()
{exit(1);<br>}main()
{int a,k;<br> for(k=1;k<=10;k++)<br> {pcb[i].name=0;<br> pcb[i].ko=0;<br> pcb[i].cha=0;<br> }
printf(" Menu\n\n");
printf("1.Creat a process\n");
printf("2.Destroy a process\n");
printf("3.Block a process\n");
printf("4.Wakeup a process\n");
printf("5.Suspend a process\n");
printf("6.Active a process\n");
printf("7.Observe the processes\n");
printf("8.Exit\n");
printf("\n\n");
printf("\n\nPlease select the item you want to realize:");
scanf("%d",&a);
printf("\n\n");
if(a!=null)
switch(a)
{case 1:creat();break;<br> case 2:destroy();break;<br> case 3:block();break;<br> case 4:wakeup();break;<br> case 5:suspend();break;<br> case 6:active();break;<br> case 7:observe();break;<br> case 8:exit();break;<br> }
getch();
}