计算机软件基础强化实践作业
自考实践作业
实验报告
本次实验三个题目,分别考查对于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;
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




