问题 多项选择题

已知数据文件IN15.DAT中存有200个4位数,并已调用读函数readDat() 把这些数存入数组a中。请编制函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续小于该4位数以后的5个数且该数是偶数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT15.DAT文件中。注意:部分源程序已给出。程序中已定义数组:a[200],b[200],已定义变量:cnt。请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。试题程序:#include#define MAX 200int a[MAX], b[MAX], cnt = 0; void jsVal(){}void readDat(){int i;FILE *fp;fp = fopen("IN15.DAT", "r");for(i = 0; i < MAX; i++) fscanf(fp, "%d", &a[i]);fclose(fp);}main(){int i;readDat();jsVal();printf("满足条件的数=%d\n", cnt);for(i = 0; i < cnt; i++)printf("%d ", b[i]);printf("\n");writeDat();}writeDat(){FILE *fp;int i;fp = fopen("OUT15.DAT", "w");fprintf(fp, "%d\n", cnt);for(i = 0; i < cnt; i++)fprintf(fp, "%d\n", b[i]);fclose(fp);}

答案

参考答案:void jsVal(){int i,j,flag=0;for (i=0;i

解析:根据题意可知,要编制函数的功能有两部分:一是找出满足条件的4位数;二是对找出的数进行从小到大排序。首先利用一个for循环来依次从数组中取得4位数,接着用当前得到的4位数与该数后面的5个数(可以用循环次数来控制)依次进行比较,如果该数比它后面的5个数都小,则给标志变量flag赋值1。接着对flag进行判断,如果不为1,则该数肯定不符合条件,直接去取下一个数;若flag值为1,再来判断该数是否是偶数,如果恰好该数又是偶数,则把该数加入到数组b中。这样就可以依次取出符合条件的数,然后利用选择法对b数组中的元素进行从小到大的排序。

问答题

某工程项目,建设单位与施工单位按照《建设工程施工合同(示范文本)》签订了施工合同。合同工期为9个月,合同总价为840万元。工程师批准的施工进度计划如图5-1所示(时间单位:月),各项工作均按照最早时间安排且匀速施工,施工单位的部分报价如表5-3所示。施工合同中约定:预付款为合同总价的20%,当工程款支付达合同价的50%时开始扣预付款,3个月内平均扣回;质量保修金为合同价的5%,从第1个月开始,按每月进度款的10%扣留,扣完为止。

 

表5-3施工单位的部分报价

工程于2007年3月1日开工,施工中发生了如下事件。

事件1:建设单位接到政府安全管理部门将于6月份进行现场工程安全施工大检查的通知后,要求施工单位结合现场安全状况进行自查,对存在的问题进行整改。施工单位进行了自查整改,并向项目监理机构递交了整改报告,同时要求建设单位支付为迎接检查进行整改所发生的费用。

事件2:现场浇筑的混凝土楼板出现了多道裂缝,经有资质的检测单位检测分析,认定是商品混凝土的质量问题。对此,施工单位提出,因混凝土厂家是建设单位推荐的,故建设单位负有推荐的责任,应分担检测的费用。

问题:1. 1.该施工进度计划中有几条关键线路请指出。

2.开工后3个月施工单位应获得的工程款是多少。

3.工程预付款是多少预付款从何时开始扣回开工3个月后,工程师每个月签证的工程款是多少。

4.分别分析事件1和事件2中,施工单位提出的费用要求是否合理说明理由。