软件设计师的一道数据流图题

本文分享了一道软件设计师考试中的数据流图题目,并通过C语言实现了解题算法。文章强调了编程实践中理解算法的重要性,而非仅依赖解题技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

       软件设计师的一道数据流图题,我按他的算法写出程序来    

      现在才发现05年印刷那本软件设计师考点分析很多错误,真是害人不浅啊

     我看看资料想想,如果我只去一味追求解题技巧对我的编程能力一点帮助也没有

 于是就做一些算法框架题后把算法用C写出来 这样才有提高

  一动手就编程效率太差了,象现在画好框架图再“写”,可以说是“填”代码了。

所以通过考软设我经过一些没以前没注意提高的软件设计能力 比如文档书写 程序筐架的构造

要从一个光会编写小程序的菜鸟向能写大型软件的老鸟过渡才行

我想继续考软设的目的是提高能力,而不是仅仅那个证书而已

闲话少说

题目是比如

A={3,3,3,3,5,5,7,6,3,6,2,2,2,2,1,2}

变换后

 B={4,3,2,5,-4,7,6,3,6,4,2,-2,1,1,2}

 

代码如下:

 

int main(int argc, char* argv[])
{
    
int array[10]={1,3,4,4,4,4,3,3};
    
int Barray[50];
    
/*
    for(int i=0;i<10;i++)
    {
    array[i]=rand()%4;
    }
    
*/

    
    
    
bool _C;
    
if(array[0]==array[1])
    
{
        _C
=true;
    }

    
else
    
{
        _C
=false;
    }

    
int k1=0;
    
int k=1;
    
int pot=1;
    
int times=1;
    Barray[
1]=array[0];
    
while(pot < 10)
    
{
        
if(array[pot-1]==array[pot])
        
{
            
if(_C)
            
{
                times
++;
            }

            
else
            
{
                
if(times>1)
                
{
                    Barray[k1]
=1-times;
                    k1
=k;
                    k
++;
                    Barray[k]
=array[pot-1];
                }

                _C
=true;
                times
=2;
                
            }

            
        }

        
else
        
{
            
if(_C)
            
{
                Barray[k1]
=times;
                k1
=k+1;
                Barray[k
+2]=array[pot];
                k
=k+2;
                times
=1;
                _C
=false;    
            }

            
else
            
{
                times
++;
                k
++;
                Barray[k]
=array[pot];
            }

        }

        pot
++;    
        
        
    }

    
if(_C)
    
{
        Barray[k1]
=times;    
    }

    
else
    
{
        Barray[k1]
=-times;    
    }

    
    
for(int pos=0;pos<10;pos++)
    
{
        printf(
"%d  ",array[pos]);
    }

    printf(
" ");
    pos
=0;
    
while(Barray[pos]>=-50)
    
{
        printf(
"%d  ",Barray[pos]);
        pos
++;
    }

    
    
return 0;
}

 

 

 

某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:   1. 每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。课程结束后进行期末考试,其成绩作为这门课程的考试成绩。   2. 学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。   3. 在记录学生成绩之前,系统需要验证这些成绩是否有效。首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。   4. 对于有效成绩,系统将其保存在课程成绩文件中。对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。在教务处没有给出具体处理意见之前,系统不会处理这些成绩。   5. 若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。   6. 在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。主讲教师须将核对之后的成绩报告返还系统。   7. 根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。考试委员会在审查之后,上交一份成绩审查结果给系统。对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。 2. ......
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值