教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

计算机软件基础强化实践作业

来源:网络收集 时间:2026-08-30
导读: 自考实践作业 实验报告 本次实验三个题目,分别考查对于C语言基础编程问题,数据结构理论知识的掌握情况以及排序算法的掌握情况。本次实验环境为visual C++6.0版本。 1、计算器 程序代码: #include void main() { int x,y; char op; int d; printf(第一个整

自考实践作业

实验报告

本次实验三个题目,分别考查对于C语言基础编程问题,数据结构理论知识的掌握情况以及排序算法的掌握情况。本次实验环境为visual C++6.0版本。

1、计算器

程序代码:

#include

void main()

{

int x,y;

char op;

int d;

printf("第一个整数:");

scanf("%d",&x);

printf("第二个整数:");

scanf("%d",&y);

printf("运算符 (+,-,*,/,%%):");

getchar();

op=getchar();

switch(op)

{

case '+':

printf("%d+%d=%d\n",x,y,x+y); break;

case '-':

自考实践作业

printf("%d-%d=%d\n",x,y,x-y); break;

case '*':

printf("%d*%d=%d\n",x,y,x*y); break;

case '/':

if(y==0) printf("溢出\n");

else printf("%d/%d=%d\n",x,y,x/y); break;

case '%':

if(y==0) printf("溢出\n");

else printf("%d%%%d=%d\n",x,y,x%y); break;

default:

printf("输入错误!\n"); break;

}

scanf("%d\n",&d);

}

运行结果:

通过多次测试,对于两数的加减乘除以及求余运算可以完成。

2、利用栈的存储结构

#include

#include

#include

#define MAX_STACK_SIZE 100

typedef struct SqStack{ char data;struct SqStack *next;}

SqStack;//链元素

自考实践作业

typedef struct Stack{ struct SqStack *base; //栈底指针

struct SqStack *top;

}

Stack;//栈

Stack S;

int a,Aj=0;//全局变量

char string[100];

typedef struct node{char key;

}

element_tr;//运算符栈

typedef struct Node{int data;}

element_nd;//操作数元素

void creatstack(Stack &S)

{S.top=S.base=NULL;

}//建立初始化链栈

void push(Stack &S,char e){

SqStack *Q;

Q=(SqStack*)malloc(sizeof(SqStack));

Q->next=S.top;S.top=Q;

S.top->data=e;++Aj;}//左括号入栈

char Pop(Stack &S){

char e; SqStack *q;

e=S.top->data;q=S.top->next;free(S.top);S.top=q;return e;}//括号出栈

自考实践作业

int check(){

a=1,Aj=0;int w=0;char sh,ch,*st,*stt;

printf("请输入算术表达式并以=结束输入:\n");

scanf("%s",string);

getchar();

st=stt=string;ch=*st;sh=*++stt;

while(ch!='=')

{

if(w==0)

if(ch==']'||ch=='}'||ch==')')

{a=-1;Aj=1;}

if((ch=='['||ch=='('||ch=='{')&&(sh=='='))

{a=-1;Aj++;break;}if(a==-1)

break;

w++;

if(ch=='['||ch=='('||ch=='{'||ch==']'||ch=='}'||ch==')')//判断是否满足入栈和出栈条件

switch(ch)

{case '[': {push(S,ch);break;}

case '{': {push(S,ch);break;}

case '(': {push(S,ch);break;}//左括号入栈

case ']': if(Pop(S)!='['){a=-1;Aj++;break;}else {Aj++;break;}

case ')': if( Pop(S)!='('){a=-1;Aj++;break;}else{Aj++;break;}

case '}': if( Pop(S)!='{'){a=-1;Aj++;break;}else{Aj++;break;}}//出栈并与字符ch匹配比较

自考实践作业

ch=*(++st);sh=*(++stt);

if((S.base==S.top)&&(ch==']'||ch=='}'||ch==')'))

{a=-1;Aj++;}if(a==-1)break;}

if(S.base!=S.top)a=-1;return a;}

void main()//主函数

{int st;char w='y';printf("\n*******括号配对判别********\n");

LL :while(w!='n'&&w!='N')

{creatstack(S);st=check();

if(st==-1)

{printf("表达式中第( %d )个括号与对应括号不匹配,请重新输入\n",Aj);

goto LL;}

else {printf("表达式中括号匹配\n");}

printf("继续请输入y,退出请输入n!\n");

w=getchar();getchar();}printf("********谢谢使用本系统!********\n");}

该程序设计难度较大,在设计的过程中提高了自己的逻辑思维能力,通过和同学交流,小组合作完成了本次题目。在未来的一段时间将更加完善该题目。

3、

(1)冒泡排序

#include

#define N 4

void bustor(int x[], int n)

{

int i,j,m,k;

自考实践作业

for(i=1;i<=n-1;i++) /*n个数进行n-1趟排序*/

{

k=1; /*各趟开始假定本趟不会发生数据交换*/

for(j=1;j<=n-1;j++) /*第i趟比较n-i次*/

if(x[j]>x[j+1])

{

m=x[j];

x[j]=x[j+1]; /*相邻两数交换*/

x[j+1]=m;

k=0; /*本趟发生了数据交换*/

}

if(k==1)break;

}

}

main() /*程序由此开始*/

{

int a[N+1],i;

for(i=1;i<=N;i++)

scanf("%d",&a[i]); /*输入N个数*/

bustor(a,N); /*调用冒泡排序函数*/

for(i=1;i<=N;i++)

printf("%4d",a[i]); /*输出排序后的序列*/

}

自考实践作业

测试结果可以看到,输入4个数据,我们可以进行这四个数据的升序排序。

(2)直接插入排序

#include

#define N 7

void sis(int r[], int n)

{

int i,j;

for(i=2;i<=n;i++) /*从第2个数开始逐个插入*/

{

r[0]=r[i]; /*把待插数保存到r[0]中*/

j=i-1;

while(r[0]

{

r[j+1]=r[j]; /*前面数据后移1位*/

j--;

}

r[j+1]=r[0]; /*找到了插入位置,第i个数插入完毕*/

}

}

main() /*程序由此开始*/

{

int a[N+1],i;

for(i=1;i<=N;i++)

自考实践作业

scanf("%d",&a[i]); /*输入n个数*/

sis(a,N); /*输入n个数*/

for(i=1;i<=N;i++)

printf("%4d",a[i]); /*程序到此结束*/

}

测试直接插入排序,我们把排序数量改为7,输入7个数据,也能够完成升序排序。、

(3)直接选择排序

#include

#define N 6

void bustor(int x[], int n)

{

int i,j,m,k;

for(i=1;i<=n-1;i++) /*n个数进行n-1趟排序*/

{

k=i; /*第i趟开始假设第i个数最小*/

for(j=i+1;j<=n;j++) /*从第i+1个数到n个数找最小数的下标k*/

if(x[j]<X[K])< p="">

<X[K])< p="">

k=j;

if(k!=i) /*若最小数不在第i个位置,则交换*/

{

m=x[i];

x[i]=x[k];

自考实践作业

x[k]=m;

}…… 此处隐藏:4061字,全部文档内容请下载后查看。喜欢就下载吧 ……

计算机软件基础强化实践作业.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1108346.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)