关于程序风格的一点讨论。

【Python】随机分配办公室 随机分配办公室某学校新招聘了8名教师,已知该学校有3个空闲办公室且工位充足,现需要随机安排这8名教师的工位。本实例要求编写程序,将8名教师随机分配到3个办公室中。提示:随机选择办公室,可以使用random.randint(0,2)实现,需使用import random导入random模块。 阅读详情


   到目前为止,我们已经了解c程序的基本元素,在进入过程化程序设计之前,我个人认为该对编码习惯做个良好的开端。关于程序设计风格问题,严格来说是一个没答案的讨论,随着编码经验的增加,我们在不同的阶段会有不同的认识,不同的出发点,本文要说的也只是笔者了两年来的编码体会,写出来的确需要勇气(毕竟在很多人眼里我没有这个资格),只是讨论的目的,绝无要误人子弟之意。
  一个好的程序员写出来的代码不仅要让机器运行起来并实现想得到结果,而且要让任何一位懂c语言的人看了就明白这段代码是什么意思,而不是需要大量的注释和文档来帮助他搞懂你的意思(当然作为辅助还是必须的)。以下就是个人的一些体会:
  第一:合理利用空白字符,使得代码风格简洁清楚。像下面这段代码,实在让人看起来费劲;
#include “stdio.h”
#include “stdlib.h”
int main()
{
int a[2][1],i,j;
for(i=0;i<2;++i)
for(j=0;j<1;++j)
scanf("%d",&a[i][j]);
for(i=0;i<2;++i)
for(j=0;j<1;++j)
printf("%d",a[i][j]);
system("pause");
return 0;
}
当然,习惯在IDE下编写代码的朋友们可以借助环境的自动缩进(在非windows环境下往往就没这么舒服,得自己手动缩进),让上面的东西稍微好一点:
#include “stdio.h”
#include “stdlib.h”
int main()
{
   int a[2][1],i,j;
   for(i=0;i<2;++i)
         for(j=0;j<1;++j)
         scanf("%d",&a[i][j]);
   for(i=0;i<2;++i)
      for)j=0;j<1;++j)
           printf("%d",a[i][j]);
   system("pause");
   return 0;
}
但是,看上去还是有点乱,特别是表达式的写法,如果你是telnet环境下的bbs里看这段代码对于眼睛来说不能不说是场恶梦。于是我们在运算符和括号的里恻各加个空格。并将不同意义的变量分开定义,哪怕他们属于同一类型。
#include “stdio.h”
#include “stdlib.h”
int main()
{
   int a[ 2 ][ 1 ];
   int i, j;
   for( i = 0; i < 2; ++i )
         for( j = 0; j < 1; ++j )
        scanf( "%d", &a[ i ][ j ] );
   for( i = 0; i < 2; ++i )
      for( j = 0; j < 1; ++j )
          printf( "%d", a[ i ][ j ] );
   system( "pause" );
   return 0;
}
呵呵。别看只是几个空格的问题。当你的代码很长的时候它可以帮助你让别人有耐心读下去,如果一眼看去符号字母集成一堆,谁还有兴趣看呢?
  第二:尽量分解问题,多写函数,简化main函数。比如上面那段代码可以写成下面这样,你会觉得更容易理解代码的功能、
#include “stdio.h”
#include “stdlib.h”
const int* scan( int *p )
{
   int i, j;
   for( i = 0; i < 2; ++i )
         for( j = 0; j < 1; ++j )
        scanf( "%d", ( p + j ) + i * 2 );
   return p;
}
void print( const int *p )
{
  int i, j;
  for( i = 0; i < 2; ++i )
      for( j = 0; j < 1; ++j )
          printf( "%d", *( ( p + j ) + i * 2 ) );
}
int main()
{
   int a[ 2 ][ 1 ];
   print( scan( &a[ 0 ][ 0 ] ) );  
   system( "pause" );
   return 0;
}
当然。对于实现细节来说,是更复杂化了。但是我们看一眼main函数就知道这是在干什么.。而对于我们的用户来说需要知道的往往只是接口,函数的细节通常被隐藏起来。因此上面的代码写在同一文件中是不合适的。这个关系到设计模式的问题。这里不再多说了。朋友们可以去看看《设计模式》这本书。
  第三:尽量使用有意义的符号名字,少用无意义的符号和幻数。在上面的例子中函数的名字使得我们对它的功能一目了然,但是这段代码还是有些麻烦,大家都知道数组越界是个要不得的错误,因此我们用循环测它。但是2这个数字意思非常不明白,时间一长。程序一复杂我们就会搞不明白这个2是干嘛的,因此我们得用宏替代它,经过修改,把这些代码写成单文件如下所示(再次说明,单文件不是好的选择,这里只是为了显示方便):
#include “stdio.h”
#include “stdlib.h”
#define SIZE_1 2
#define SIZE_2 1
const int* fun1( int *p )
{
   int i, j;
   for( i = 0; i < SIZE_1; ++i )
         for( j = 0; j < SIZE_2; ++j )
        scanf( "%d", ( p + j ) + i * 2 );
   return p;
}
void fun2( const int *p )
{
  int i, j;
  for( i = 0; i < SIZE_1; ++i )
      for( j = 0; j < SIZE_2; ++j )
          printf( "%d", *( ( p + j ) + i * 2 ) );
}
int main()
{
   int array[ SIZE_1 ][ SIZE_2 ];
   fun2( fun1( &array[ 0 ][ 0 ] ) );  
   system( "pause" );
   return 0;
}
用SIZE_n来表示每一维的长度,使得我们不再解释循环中2、1从何而来。
第四:注释。对于一些难以一下就理解的语句我们可以用注释辅助理解,但是个人认为注释不能写的太多,一方面你要信任你用户的能力,他们都是比笔者更好的程序员。我们只要在变量和函数的名字中稍加暗示,他们就可是理会你的意思,但对于一些自己看起来不太清楚的,估计在日后可能会引起麻烦的代码,必须加注释说明你的意思。
比如对于这句代码。我不敢肯定指针的遍历是否正确,则我必须注释说明
printf( "%d", *( ( p + j ) + i * 2 ) );//以一维指针遍历二维数组。
最后,我还是得说,这里写的东西只是笔者两年来的一些心得,不合适之处, 不要采纳,大家可以去读一本巨作《程序设计实践》。比我说这些要好上百倍。
Android P HAL层添加HIDL实例(详细实现步骤) Android P HAL层添加HIDL实例 本文将介绍如何在P OS上添加HIDL实例,简单增加seLinux策略使得可以在system_service调用测试,并用模拟器emulator验证。 调用过程为 APP->TestManager->TestService->ITast.hal 文章目录Android P HAL层添加HIDL实例实现过程一 、hardware部分1... 阅读详情

相关推荐

离线安装ambari 更换spark版本 集成carbondate文档

1、Linux系统环境配置 1.1 配置IP地址 vim /etc/sysconfig/network-script/ifcfg-eth0 “DEVICE”:网卡对应的设备别名,如ifcfg-eth0第一块网卡; “HWADDR”:网卡物理地址; “BOOTPROTO”:网卡获得ip地址的方式,Static(静态 ip地址)dhcp(通过dhcp协议获取ip)bootip通过boot...

weixin_44742962的博客 3036

关于程序设计风格的一点讨论

关于程序风格的一点讨论。    到目前为止,我们已经了解c程序的基本元素,在进入过程化程序设计之前,我个人认为该对编码习惯做个良好的开端。关于程序设计风格问题,严格来说是一个没答案的讨论,随着编码经验的增加,我们在不同的阶段会有不同的认识,不同的出发点,本文要说的也只是笔者了两年来的编码体会,写出来的确需要勇气(毕竟在很多人眼里我没有这个资格),只是讨论的目的,绝无要误人子弟之意。 

学习与研究 1856

【Audio driver】深入解析mixer_paths.xml中的音频通路配置

本文深入解析了Android音频驱动开发中的核心配置文件mixer_paths.xml。文章以高通平台为例,详细阐述了音频通路(FE、BE、DSP、Device)的概念与连接逻辑,并通过实战案例拆解了扬声器与麦克风通路的配置方法、关键控件作用及调试技巧,是理解与定制Android音频系统的实用指南。

ik6789012的博客 357

办公室随拍

马上离职了,拍几张玩玩吧:)御用Elecom电脑内包和御用罗技鼠标都不是很贵的东西不过很好用,再次推荐。御用耳机AKG K412P御用办公室笔筒,这个笔筒有年头有历史了,上面的标不是我贴的,是前辈贴的,我只带着。一推书。还有香水一瓶不过考虑不是很主流的文化就不拿出来了,免得引起争议。同事两人,正在讨论工作,我就在右边。Tags - 猴子 , 办公室...

edwardpro 169

SMR实战指南:从GWAS数据到eQTL分析的完整流程

本文提供了基于汇总数据的孟德尔随机化(SMR)实战指南,详细解析了如何从GWAS汇总数据出发,整合eQTL数据,完成从数据准备、BESD格式转换到最终SMR与HEIDI分析的完整流程。文章重点阐述了核心操作步骤、常见避坑技巧与结果解读,旨在帮助遗传学研究者高效掌握这一分析基因表达与复杂性状潜在因果关系的强大工具。

weixin_29246195的博客 1065

小红书图文AI创作:输入主题,一键生成图文(coze工作流教程+获取)

输入主题,工作流一键生成小红书风格图文,30s一条,可批量生成

2301_79384090的博客 2798

把幂等键写进重试:17秒办公室对白短片怎么拍

上线后只应执行一次的任务跑了两次。两名成年同事用一个三幕对白短片完成复现、排查与确认:问题出在重试请求没有携带幂等键。

开源低代码平台-Microi吾码-框架C#.NET8 + Vue3 189

深入解析机器人软件开发中的核心:状态机管理(FSM)—— 理论、实践与优化

状态机(FSM)是机器人软件开发中管理复杂行为逻辑的核心工具,广泛应用于导航、任务执行、故障处理等场景。本文系统探讨状态机的基础理论(定义、要素)、主流设计模式(经典FSM、分层状态机HSM、行为树BT),以及工业级实现方法(代码架构、线程安全、调试技巧)。通过移动机器人导航和机械臂任务执行的案例,分析分层状态机的实际应用,并总结常见陷阱(如状态爆炸、阻塞操作)与优化策略(异步化、事件过滤)。

郑伟强dev的专栏 292

“办公室里无小事”职场生存需避七陷阱

  陷阱一 相信上司会做到“兼听则明”   上司对你的了解除了看你的工作成绩外,更多的是通过别人的嘴巴完成的。尤其是当你犯了什么错误时,他宁愿听小报告也不愿意去实际调查或多问几个人,而且往往还不给你 辩解的机会,使你在不知情的情况下就穿上了小鞋。   陷阱二 很露骨地拍上司的马屁   哪怕你的上司是个混蛋,他也有值得你佩服的地方。抛开心中的成见,仔细去找,鸡蛋里挑骨头,肯定会找到的。如你的上司是个

ξσ Dicky's Blog σξ 2536

1000Base-T1协议解读(基于802.3bq-2016 和Test Suite)

1000Base-T1是由一对双绞线实现全双工传输的以太网标准,采用PAM3编码方式(-1,0,1),编码后的实际传输符号速率为750Mbps。该标准的车载最大传输距离可达15米,主要应用于汽车产品开发过程。测试过程示波器要求带宽≥2G,采样率≥7.5Gbps,网分带宽≥1G。

qflook的博客 5333

海洋捕食者算法(MPA)详解:从海洋生态智慧到高性能优化

摘要: 海洋捕食者算法(MPA)是一种基于海洋生态觅食行为的元启发式优化算法,模拟捕食者(如鲨鱼)的布朗运动和莱维飞行策略进行全局与局部搜索。算法分为三阶段:高速比阶段(全局探索)、单位速度比阶段(平衡搜索)和低速比阶段(局部开发),通过精英矩阵和FADs效应(概率扰动)避免早熟收敛。MPA具有参数少、收敛快、寻优能力强等特点,适用于复杂优化问题,其数学模型将生物行为转化为随机游走与自适应策略,并通过收敛因子动态调整探索-开发平衡。实验表明,MPA在多个基准问题上表现优异。

qq_42212808的博客 273

看看 Instagram 的新办公室,确实很 Instagram

刚刚庆祝完自己 6 周年生日的 Instagram,近日也有乔迁之喜。新办公室长什么样?从食堂、休息厅到会议室,都很 Instagram。 大堂 Instagram 新办公楼的大堂设计了一面数字显示墙,用来展示 Instagram 上的优秀照片和短视频。该公司的创意总监 Ian Spalter 说:“我们要让来访者或员工一进门就知道自己来到了 Inst...

weixin_33953384的博客 155

Python爬取马蜂窝旅游攻略详细实战指南

马蜂窝是国内非常知名的旅游攻略网站,包含了大量的景点介绍、旅行攻略、游记等信息。爬取马蜂窝的数据对于旅游数据分析、旅游产品推荐等有重要价值。但由于马蜂窝对爬虫有一定的反爬措施,并且页面中大量内容通过JavaScript动态加载,爬虫难度相对较大。本篇博客将带你从零开始,使用Python和相关爬虫技术,逐步实现对马蜂窝旅游攻略内容的高效爬取。并结合实战经验,分析反爬策略,提供科学合理的绕过方案。本文介绍了马蜂窝攻略的结构和抓取难点。演示了静态+动态内容的混合爬取技术。介绍了多线程和异步加速方法。

2201_76125261的博客 587

简单易行的办公室保健操

简单易行的办公室保健操   (注解由如水提供)        预备势:坐在椅上,两足分开,与肩同宽,全身放松,双目微闭。     1、干梳头——双手十指作梳,从前向后梳理头发10次。  (注意小心头皮屑哦~)   2.拍关顶——右手轻拍头顶百会穴10次。   (想起电视里以掌击头顶自杀-_-#!)   3、运眼珠——双目眼珠向上、向下、向左、向右、斜上、斜下,顺时针和逆时针方向各旋转10次。 (别

menuconfig的专栏 811

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

6个座位办公室最佳位置_办公室最佳风水座位 办公室座位风水禁忌

俗话说,有人的地方 就有江湖,在办公室也是这样,人员繁多,每个人的工作也不一样,但都想占据一个办公的风水好位置,今天就为大家带来办公室最佳风水座位以及风水禁忌。 办公室最佳风水座位 1、坐西北向东南的位置东象征事业蒸蒸日上,南象征事业逢索勃发展。面向东南象征发展信心。一般来说,在室内的放置桌椅是个比较合理的安排。传统公司,有很好基础的大公司,都可以在这个位置安排领导座位。 2、坐北向南的位置南代...

weixin_42204453的博客 7701

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

最全办公室租赁技巧,让你找到心仪的办公室

耀光-OFFICE写字楼房东直租网:对于大多数公司来说,租办公室都是一件棘手的办公。在租办公室的进程中,你是否曾有过这样的难题:因预算和场地标准达不到需求而心烦不已;因图片和实地所出现的货不对版而叫苦不迭;因五花八门的中介推销而眼花缭乱、愈加苍茫,别着急,耀光奥菲斯小编将从以下几个方面进行分析,助你进步办公场所搜索功率,清晰选址流程,保证您能够在最短的时刻内租到最满意的办公室。   清晰传统办公和联合办公的区别   办公室租赁类型大致上可分为两种:传统办公和联合办公。   【传统办公】是现在最遍及的一种办公

jjdyb的博客 575

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

随机分配办公室——python版

利用python列表相关知识,根据用户输入的办公室数目count和教师数目num,将num个教师 随机 分配到count个办公室中。 1.构建存储办公室和教师信息的列表offices count = eval(input('请输入办公室个数:')) offices = [[] for j in range(count)] 作用: 构建一个含有count个[]的列表offices,如用户输入的count=3,则执行过代码之后的offices为 [[],[],[]] 2.构建存储教师姓名的列表teachers

Evil Moon的博客 3528

python分配老师到办公室_python列表(List)实现【8个老师随机分配到3个办公室】

1、分析1.1、定义list首先是使用List完成这个问题,那么就定义两个List:办公室list和老师list。这里办公室list应该是嵌套了三个list,分别对应三个办公室,且为空;老师list则是正常的list。以A、B、C等代替老师。offices = [[],[],[]]teacher = ["A","B","C","D","E","F","G","H"]1.2、随机分配办公室这是这个问...

weixin_34812649的博客 2222

6个座位办公室最佳位置_办公室座位风水

工作时间对于现在很多人时间中占了很大部分,每位朋友都希望自己在公司工作的时候能够顺顺利利,得到领导赏识,工作能力提升,其实办公室座位风水对我们工作的影响也是很大的。平时在工作中难免会有挫折,经常出现这些令人不愉快的情况就要看看所坐位置是否风水不好了,也有很多朋友不清楚办公室哪个位置好,基恩我们就来为大家详细介绍一下,办公室座位最佳位置。办公室座位风水1、办公室座位忌坐在厕所或者门口处。在风水学中,...

weixin_39607935的博客 1740

办公室搬迁的注意事项.办公室文件的整理和打包方法有哪些

很多公司由于规模扩大等原因需要进行搬家,这时候单纯的依靠公司的职员来搬家时不实际的,所以就需要日通搬家公司来帮助搬家,在搬家时候需要注意到的一些细节,在此日通搬家和大家一起分享。企业办公室搬迁不管是对公司还是对员工个人来说都意义重大,需要注意的事项也很多,包括重要办公用品的保护、重要文件的保存转移。今次就和大家说说办公室搬迁的注意事项. 最主要的是办公室文件的整理和打包,公司的资料需要保存的应单独...

weixin_45194776的博客 3611

办公室超强女同事的喷饭语录

<!--google_ad_client = "pub-5873492303276472";/* 728x90, 08-7-29 */google_ad_slot = "7502041044";google_ad_width = 728;google_ad_height = 90;// --><!--google_ad_client = "pub-58734

SNIDEL LILYBROWN ANDROID JAVA POSTGRESQL STRUTS EC 1765

办公室业务杂志办公室业务杂志社办公室业务编辑部2022年第18期目录

办公室业务杂志社编辑部

QQ992832970的博客 1385

Python之分配办公室

分配办公室 有三间办公室,六位老师,随机给六位老师分配随机的办公室,办公室可以为空置 解题思路 1.先确定每个办公室分配的人数 2.根据随机得到的分配人数,划分为三种分配类型:一间的,两间的,三间的 3.给老师与办公室分别编号,利用集合无序性达到随机 4.将集合转换为列表,方便取值 5.根据每个办公室分配的人数决定每个办公室取教师列表的长度 import random classN = random.randint(1, 6) # 办公室分配的人数 print(classN) setT = {'a',

qq_43734041的博客 1686

6个座位办公室最佳位置_办公室座位禁忌办公室座位最佳朝向

【摘要】一起装修网的小编整理了办公室座位禁忌办公室座位最佳朝向的装修攻略,为广大装修业主提供一些装修参考,解决一些装修中遇到的问题。可以收藏办公室座位禁忌办公室座位最佳朝向,方便装修的时候查看。( ban gong shi zuo wei feng shui jin ji ban gong shi zuo wei zui jia chao xiang feng shui)说到真的是处处皆有,主要是...

weixin_39931101的博客 413
上一篇: 网站设计的思考
下一篇: HTTP协议 简介
decolee
博客等级 码龄22年 0粉丝 22原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值