第一篇:出口退税试题-附答案讲解
单选题:30分
1.一外贸公司购进一批货物出口,增值税发票注明进项金额50000元,税额6500元,征税率13%,退税率5%,该批货物全部出口,收汇额7500美元,记帐汇率8.28元/美元,则该企业可退增值税多少元(A)
A.2500元
B.6500元
C.3750元
D.3105元
出口2.企业应在办理对外贸易经营者备案登记或签订代理出口协议之日起(A)内如实填写《出口货物退(免)税认定表》
A.30
B.60
C.90 D.180
3.增值税小规模纳税人出口自产货物继续实行(D)增值税办法
A.不退 B.即征即退
C先征后退
D.免征
4.生产企业出口货物必须以(A)为计税依据计算“免、抵、退”税额。A.离岸价(FOB价)
B.到岸价(CIF)
C.成本加运费价(C&F)D.合同成交价
5.出口货物的出口日期以(C)为准。
A.外销发票的开票日期
B.报关单注明的签发日期 C.报关单注明的出口日期
D.提运单日期
6.实行免抵退税方法的企业是(B)。
A.外贸企业
B.具有实际生产能力的生产企业和企业集团
C.商业企业
7.免抵退税的免税是指(B)。
A.出口货物零税率
B.对生产企业出口的自产货物,免征本企业生产销售环节增值税
C.免税收购货物 8.免抵退税的抵税是指(B)。
A.抵减出口货物的应纳税额 B.生产企业出口自产货物所耗用的原材料、零部件、燃料、动力等所含应予退还的进项税额,抵顶内销货物的应纳税额; C.抵减出口企业的多缴税款
D.9.免抵退税的退税是指(C)。
A.全部进项税额
B.已交税金
C.出口货物耗用的进项税额抵减内销货物的应纳税额后未抵顶完的部分
D.多缴税金
10.出口退税率的调整由(D)确定。
A.财政部 B.国家税务总局 C.财政部会同国家税务总局
D.国务院
11.出口货物收取的外币折算为人民币时,可采用(C)为记帐汇率。A.买入价
B.买出价 C.当月1日的中间价
12.我国现行出口货物退(免)税的税种有:(A)。
A.增值税 B.营业税 C.企业所得税
D.城建税 13.企业出口国家计划内的卷烟实行(A)。A.免税 B.退税
C.征税
D.免抵退税
14.目前我国对出口自行开发的软件产品实行(A)。A.免税 B.退税
C.征税
D.免抵退税
15.目前外贸企业的应退税额计算方法为:(B)
A.加权平均法
B.单票对应法
C.企业实际成本结转方法
D.免、抵、退税法
16.外贸企业在出口货物发生退运时,凭主管退税机关出具的(A)向海关办理退运手续。
A.《出口货物退运已补税证明》
B.《补办出口货物报关单证明》 C《出口货物退运已办结税务证明》
D.《代理出口未退税证明》 17.一般而言,外贸企业国内购进用于出口的商品,用于计算其应退税额的计税依据为(A)。
A.购进商品的不含税金额
B.购进商品的不含税金额+增值税
C.购进商品的不含税金额+增值税+采购费用 D.购进商品的不含税金额+运费
18.现行出口货物退免税管理办法规定,出口货物退免税凭证资料应当保存(10)年。3 A.3 B.5 C.10 D.15
19.对外贸易经营者按规定办理完毕出口备案登记后,应于(D)日内持相关资料向所在地主管出口退税的税务机关办理出口货物退(免)税认定手续。A.7 B.10 C.15 D.30
20.出口销售发票必须由(A)统一印制。A.税务机关
B.海关
C.外管局
D.工商局
21.生产企业出口货物实行“免、抵、退”税的计算依据是以(A)的离岸价为准。
A.出口发票 B.出口货物报关单(出口退税专用)C.出口收汇核销单(出口退税专用)
D.出口合同
22.出口企业遗失出口货物报关单(出口退税专用)必须在报关出口之日起(C)个月内向海关提出补办申请,逾期海关不予受理。A.1 B.3 C.6
D.12
23.下列可以实行“免.抵.退”税办法的出口企业是(B)
A.有进出口经营权的小规模企业 B.有进出口权实行统一核算的生产型集团公司 C.从事来料加工的生产企业
D.以上均不正确
24.出口报关单中以下那种成交方式为离岸价(C)A.C&F
B.C&I C.FOB
D.CIF
25.某纸业有限公司出口的纸张在商品代码库中的征税率17%、退税率0,出口额为200万美元(FOB价,汇率8.26元/美元),对这些出口销售收入应(C)
A.免税不退税 B.计提申报销项税额280.84万元
C.计提申报销项税额240.03万元
D.按照17%申报办理退税
26.按照现行政策规定,生产企业委托外贸企业代理出口货物,其增值税的退(免)税环节和方法是(D)。
A.对生产企业实行退税,采取“先征后退”方法
B.对外贸企业实行退税,采取“即征即退”方法 C.对生产企业和外贸企业分别实行退税,采取“先征后退”方法
D.对生产企业实行退税,采取“免、抵、退”方法
27.生产企业自营和委托出口货物的免抵退税计税依据为(C)列明的出口货物离岸价格。
A.出口报关单
B.出口收汇核销单
C.出口发票
D.报关单电子
信息
28.下列各项中,与我国现行出口货物退增值税政策不符的退(免)税方式是(C)
A.免、退税
B.免、抵、退税 C.先征后退税
D.免税
29.对外贸易经营者如发生撤并、变更情况,应于备案登记撤并、变更之日起(B)日内向所在地主管出口退税业务的税务机关办理注销或变更退税认定手续。
A.15日
B.30日
C.60日
D.90日
30.外贸企业出口商品已办理了退(免)税后,如发生退关退货而转为内销的货物,在海关提货前,企业必须向所在地主管出口退税的税务机关办理申报手续,填写(A),补交已退(免)的税款。A.出口商品退运已补税证明 B.补办报关单证明
C.专用缴款书D.出口转内销证明 多选题 30分
1.我国出口货物退(免)税的企业主要有(ABCD)
A外贸企业 B外商投资企业 C有进出口经营权的内资生产企
D委托外贸企业代理出口的无进出口经营权的内资生产企业
2.退税评估由税务机关内设的出口退税管理部门或从事出口退税管理工作的人员负责,可以在办理出口货物退(免)税的(ABC)进行 A事前 B 事中 C 事后
3.评估过程中审核评析的方法有(ABCD)
A比率分析法 B 比较分析法 C 趋势分析法D结构百分比分析法
4.作为出口退(免)税档案管理的资料包括(ABCD)A已办理完结的出口货物退(免)税申报、审核、审批资料 B退(免)税会统资料
有关档案资料
C各种证明资料 D其它出口货物退(免)税
5.外贸企业根据退税申报时间和程序先后可分为(AB)A预申报 B正式申报 C一般申报 D特殊申报
6.出口商发生(ABCD)行为时,须向主管税务机关退税部门申请办理出口货物退(免)税注销认定手续。
A解散B 破产 C撤销 D其他依法应终止出口货物退(免)税事项7.生产企业按到岸价格对外成交出口的货物,在货物离境后,应扣除下列(ABC)由我方负担的费用,才能作为计算退税的依据。A国外运费 B国外保险费 C佣金 D财务费用(国外银行扣费)" 8.出口退税的意义和作用主要表现在(ABCD)
A鼓励出口,增强出口货物的竞争能力 B支持配合外贸体制改革,促进出口企业提高经济效益
C促进对外贸易的发展,增强了我国
的外汇储备能力 D促进产业结构调整和升级
9.下面几种价格中,不属于生产企业计算出口退税依据的是(BCD)A FOB
B CFR C CIF
D C&F
10.外贸出口企业出口从省外非固定货源单位购进的大宗货物,其退税说法错误的是(ABD)
A 退税机关应该立即给予退税 B 退税机关不应该给予退税 C对其进货及进项发票等情况发函调查,核实清楚后可退税 D按正常出
口货物审核退税
11.根据现行税制规定,我国出口货物退(免)税的税种是(AB)A增值税 B消费税 C营业税 D所得税
12.出口货物退(免)税的原则包括(ABCD)
A公平税负原则 B属地管理原则 C“零税率”原则 D宏观调控原则
13.出口贸易方式通常分为(ABCD)等形式
A一般贸易 B进料加工 C来料加工 D补偿贸易
14.假报出口是指以虚构已税货物出口事实为目的,它包括(ABCD)A伪造或者签订虚假的买卖合同 B以伪造、变造或者其他非法手段取得出口货物报关单、出口收汇核销单、出口货物专用缴款书等有关出口退税单据、凭证
C虚开、伪造、非法购买增值税专用发票或者其他可以用于出口退税的发票 D其他虚构已税货物出口事实的行为
15.下列属于外贸企业申报出口退税资料的有(ABC)
A外贸企业出口退税进货明细申报表 B外贸企业出口退税出口明细申报表 申报表 C外贸企业出口退税汇总申报表 D外贸企业增值税纳税
判断题10分
1.一般贸易方式下生产企业自营和委托出口货物的免抵退税计税依据为出口货物离岸价格。1 2.来料加工复出口货物及其工缴费实行免税办法。1
3.零税率就是对所有的出口货物免税。-1 4.出口商包括对外贸易经营者、没有出口经营资格委托出口的生产企业、特定退(免)税的企业和人员。1 5.对外贸易经营者是指依法办理工商登记或者其他执业手续,经商务部及其授权单位赋予出口经营资格的从事对外贸易经营活动的法人、其他组织或者个人。6.外商投资企业购进的已享受增值税退税政策的国产设备,由主管税务机关负责监管,监管期为5年。7.小规模纳税人自营或委托出口的货物一律免征增值税、消费税,其进项税额不予抵扣或退税。
-1 8.小规模纳税人在按规定办理出口货物免税认定以前出口的货物,凡在免税核销申报期限内申报免税核销的,税务机关可按规定审批免税。1 9.生产型集团公司就整个集团范围内实行“免、抵、退”税办法必须报经省局批准。1 10.集团公司收购成员企业或分厂生产的产品,可视同自产产品办理退(免)税。案例:30分
例:某自营出口企业(增值税一般纳税人),出口货物的征税税率为17%,退税率为15%。2014年3月发生下列业务:
(1)购进原料一批,取得增值税专用发票注明的的价款500万元,外购货物准予抵扣进项税85万元,货已入库。1
(2)2013年10月因从事进料加工复出口贸易,以向税务机关申报办理《进料加工企业计划分配率备案表》,申报计划进口总值300万美元,计划出口总值1000万美元。(3)当月内销货物销售额100万元,货款117万元。
(4)当月以一般贸易方式自营出口800万元,以进料加工复出口贸易方式出口200万元。上述纸质单证均已收齐,除进料加工复出口贸易方式出口外,其他相关信息不齐全。
(5)当月收齐2013年单证不齐、信息不齐申报的一般贸易出口销售额650万元,进料加工出口额300万元。
(6)该企业上期无期末留抵税款,且未办理进料加工年度核销。请计算该企业当期应纳增值税税额、当期应退增值税税额和当期免抵税额。
1.当期应纳增值税税额 该企业2013年10月开展进料加工业务,确定进料加工计划分配率:进料加工计划分配率=计划进口总值÷计划出口总值×100%=300÷1000×100%=30% 当期进料加工出口货物耗用的保税进口料件金额=进料加工出口货物人民币离岸价×进料加工计划分配率=200×30%=60万元
当期不得免征和抵扣税额=(当期出口货物离岸价×外汇人民币汇率-进料加工出口货物耗用的保税进口料件金额)×(出口货物适用税率-出口货物退税率)-当期不得免征和抵扣税额=(200-60)×(17%-15%)-0=2.8万元。
当期应纳税额=当期销项税额-(当期进项税额-当期不得免征和抵扣税额)=100×17%-(85-2.8)=-65.2万元。及当期期末留抵税额为65.2万元。
2.当期免抵退税额计算
当期免抵退税额=(当期出口货物离岸价×外汇人民币汇率-进料加工出口货物耗用的保税进口料件金额)×出口货物退税率-当期免抵退税额抵减额=(1150-150)×15%-0=150万元。3.当期应退税额和免抵退税额的计算
当期期末留抵税额>当期免抵退税额,则65.2万元>150万元 当期应退税额=当期免抵退税额=65.2 当期免抵税额=150-65.2=84.8万元
例:某进出口贸易公司2013年4月从国内购进布料及服装原辅材料取得增值税专用发票上注明的不含税金额为350000元,委托某生产企业加工成汗衫收回后出口,加工费不含税金额50000元,并取得生产企业开具的增值税专用发票,不含税金额400000元汗衫的退税率为16%,计算该公司本月应退税额。应退税额=400000×16%=64000元
第二篇:出口退税(推荐)
核销单的申领资料:1.介绍信。2.申请书。3.外销合同。4.操作员卡。(第一次申领需要,第二次仅需写一份申请书即可)(去外汇管理局申领核销单的前提是在中国电子口岸先网上申请,申领成功后,去外管局领取纸质核销单。领完核销单进入出口收汇/口岸备案中进行口岸备案,备案成功后去海关报关,货物出口海关打印出报关单后进入出口收汇/企业交单中输入核销单号码查找出该核销单及对应的报关单,然后进行交单,交单成功后5天左右去外管局核销,交单同时也可以进入出口退税/数据报送中做报送,报送成功后5天左右可以去国税办退税。)
核销单网上备案:在货物报关前,需在网上进行电子备案,即出口口岸的备案。这是一般出口在电子口岸基本的操作流程。
外汇管理局核销
去外管局核销之前需做的事情:首先要进入电子口岸的出口收汇栏,将核销单号进行企业交单。(电子口岸---出口收汇----企业交单----交单)
需要向外管局提供的资料1)核销登记表(从外管局领取,需加盖我公司公章)。2)核销单.3)报关单(核销联)4)银行水单(核销联)。(银行水单领取步骤:A.银行通知我公司水单已到。B.领取水单。C.水单申报,一般情况下,在水单拿来后,3天内进行申报,即进入“国际收支系统”,制作、传输、向中行申报。
出口退税(90天内必须申报,逾期不予申报退税)
去办理出口退税之前需做的事情:首先要进入电子口岸的出口退税栏,将报关单预录入单号进行报送。(电子口岸---出口退税----数据报送----查询报送---报送)进入出口退税申报系统。需要提供的资料如下:先到国税局领装订封面,然后将需要的下列资料按顺序装订好: A.出口货物报关单出口退税联。B.已盖有核销单,办完核销手续的出口收汇核销单。C.已认证的增值税发票。D.出口发票 供国税局查询的资料如下:A.内购合同。B.明细单。C.出口货物装货单。D.运输单据
第三篇:《C语言程序设计》精品试题(附讲解答案)
《C语言程序设计》精品试题
一、单项选择题(答案P12)
导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。
【1.1】以下不正确的C语言标识符是____。A)int B)a_1_2 C)ab1exe D)_x
【1.2】以下是正确的C语言标识符是____。A)#define B)_123 C)%d D)n
【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。••• A)print B)iam C)Pxq D)str_l ••• _3d one_half My->book Cpp ••• oodb start$it line# pow ••• aBc 3pai His.age while
【1.4】下面各选项组中,均是C语言关键字的组是。A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type
【1.5】下列不属于C语言关键字的是。A)default B)register C)enum D)external
【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。A)程序文件的开始 B)程序文件的最后
C)它所调用的函数的前面 D)程序文件的任何位置
【1.7】下列关于C语言的叙述错误的是____ A)大写字母和小写字母的意义相同 B)不同类型的变量可以在一个表达式中
C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D)同一个运算符号在不同的场合可以有不同的含义
【1.8】在C语言中,错误的int类型的常数是。A)32768 B)0 C)037 D)0xAF
【1.9】执行语句 printf(“%x”,-1);屏幕显示____。A)-1 B)1 C)-ffff D)ffff
【1.10】已知 long i=32768;执行语句printf(“%d”,i);屏幕显示____。A)-1 B)-32768 C)1 D)32768
【1.11】已知 long i=65539;执行语句printf(“%d”,i);屏幕显示____。A)65539 B)-3 C)3 D)程序不能执行
【1.12】在C语言中,整数-8在内存中的存储形式是。A)1111 1111 1111 1000 B)1000 0000 0000 1000 C)0000 0000 0000 1000 D)1111 1111 1111 0111
【1.13】C语言中字符型(char)数据在内存中的存储形式是____。
A)原码 B)补码 C)反码 D)ASCII码
【1.14】将字符g赋给字符变量c,正确的表达式是。A)c=147 B)c=“147” C)c='147' D)c='0147'
【1.15】下列转义字符中错误的一个是____。A)' 00' B)' 014' C)'x111' D)'2'
【1.16】将空格符赋给字符变量c,正确的赋值语句是____。A)c=' ' B)c=NULL C)c=0 D)c=32
【1.17】已知:char a='70';则变量a中。
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明非法
【1.18】字符串“"EOFn=-61”“的长度是____。A)8 B)9 C)14 D)非法字符串
【1.19】字符串”“的长度是____。A)0 B)1 C)2 D)非法字符串
【1.20】已知:char a;int b;float c;double d;执行语句”c=a+b+c+d;“后,变量c的数据类型是。
A)int B)char C)float D)double
【1.21】温度华氏和摄氏的关系是: C=-(F-32)。已知:float C,F;由华氏求摄氏的正确的赋值表达式是____。
A)C=5/9(F-32)B)C=5*(F-32)/9
C)C=5/9*(F-32)D)三个表达式都正确
【1.22】逗号表达式”(a=3*5,a*4),a+15“的值是____。A)15 B)60 C)30 D)不确定
【1.23】如果int a=1,b=2,c=3,d=4;则条件表达式”a
【1.24】为求出s=10!的值,则变量s的类型应当为。A)int B)unsiged C)long D)以上三种类型均可
【1.25】已知int i=10;表达式”20-0<=i<=9“的值是____。A)0 B)1 C)19 D)20
【1.26】已知int x=1,y;执行下述语句后变量x的值是____。y=++x>5&&++x<10;A)1 B)2 C)3 D)4
【1.27】为判断字符变量c的值不是数字也不是字母时,应采用下述表达式____。A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)
【1.28】已知 int a[3][2]={3,2,1};则表达式”a[0][0]/a[0][1]/a[0][2]“的值是____。A)0.166667 B)1 C)0 D)错误的表达式
【1.29】已知 int x=1,y=1,z=1;表达式”x+++y+++z++“的值是____。A)3 B)4 C)5 D)表达式错误
【1.30】用十进制表示表达式”12|012“的值是____。A)1 B)0 C)12 D)14
【1.31】已知以下程序段: int a=3,b=4; a=a^b; b=b^a; a=a^b;
则执行以上语句后a和b的值分别是____。A)a=3,b=4 B)a=4,b=3 C)a=4,b=4 D)a=3,b=3
【1.32】在位运算中,操作数每右移一位,其结果相当于____。
A)操作数乘以2 B)操作数除以2 C)操作数除以16 D)操作数乘以16
【1.33】已知 char a=222;执行语句a=a&052;后,变量a的值是____。A)222 B)10 C)244 D)254
【1.34】已知二进制数a是00101101,如果想通过整型变量b与a做异或运算,使变量a的高4位取反,低4位不变,则二进制数b的值应是____。A)11110000 B)00001111 C)11111111 D)00000000
【1.35】已知 int a=15,执行语句a=a<<2以后,变量a的值是____。A)20 B)40 C)60 D)80
【1.36】已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是____。A)0 B)1 C)5 D)6
【1.37】使用语句scanf(”x=%f,y=%f“,&x,&y);输入变量x、y的值(□代表空格),正确的输入是____。A)1.25,2.4 B)1.25□2.4 C)x=1.25,y=2.4 D)x=1.25□y=2.4
【1.38】下列循环语句中有语法错误的是____。A)while(x=y)5; B)while(0);
C)do 2;while(x==b); D)do x++ while(x==10);
【1.39】已知int x=(1,2,3,4);变量x的值是____。A)1 B)2 C)3 D)4
【1.40】表达式sizeof(double)是。
A)函数调用 B)double型表达式 C)int型表达式 D)非法表达式
【1.41】执行语句printf(”2:%d,“,printf(”1:%d,“,scanf(”%d“,&x)));以后的输出结果是____。A)2:1,1:1, B)1:1,2:1, C)2:4,1:1 D)1:1,2:4,【1.42】已知:int x,y;double z;则以下语句中错误的函数调用是。A)scanf(”%d,%lx,%le“,&x,&y,&z); B)scanf(”%2d*%d%lf“,&x,&y,&z); C)scanf(”%x%*d%o“,&x,&y); D)scanf(”%x%o%6.2f“,&x,&y,&z);
【1.43】与条件表达式”(n)?(c++):(c--)“中的表达式(n)等价的表达式是____。A)(n==0)B)(n==1)C)(n!=0)D)(n!=1)
【1.44】已知int i=1,j=0;执行下面语句后j的值是____。while(i)switch(i){ case 1: i+=1;j++;break; case 2: i+=2;j++;break; case 3: i+=3;j++;break; default: i--;j++;break; } A)1 B)2 C)3 D)死循环
【1.45】求取满足式 12+22+32+ …… +n2 ≢1000的n,正确的语句是____。A)for(i=1,s=0;(s=s+i*i)<=1000;n=i++);
B)for(i=1,s=0;(s=s+i*i)<=1000;n=++i); C)for(i=1,s=0;(s=s+i*++i)<=1000;n=i);
D)for(i=1,s=0;(s=s+i*i++)<=1000;n=i);
【1.46】下面的for语句。
for(x=0,y=10;(y>0)&&(x<4);x++,y--);
A)是无限循环 B)循环次数不定 C)循环执行4次 D)循环执行3次
【1.47】已知int i=1; 执行语句while(i++<4);后,变量i的值为____。A)3 B)4 C)5 D)6 【1.48】已知int x=12,y=3;执行下述程序后,变量x的值是____。do { x/=y--; }while(x>y);
A)1 B)2 C)3 D)程序运行有错误
【1.49】已知 char a[][20]={”Beijing“,”shanghai“,”tianjin“,”chongqing“};语句printf(”%c“,a[30]);的输出是____。
A)<空格> B)n C)不定 D)数组定义有误
【1.50】若用数组名作为函数调用时的实参,则实际上传递给形参的是。A)数组首地址 B)数组的第一个元素值
C)数组中全部元素的值 D)数组元素的个数
【1.51】对二维数组的正确说明是____。
A)int a[][]={1,2,3,4,5,6}; B)int a[2][]={1,2,3,4,5,6}; C)int a[][3]={1,2,3,4,5,6}; D)int a[2,3]={1,2,3,4,5,6};
【1.52】对字符数组s赋值,不合法的一个是____。A)char s[]=”Beijing“;
B)char s[20]={”beijing“}; C)char s[20];s=”Beijing“;
D)char s[20]={'B','e','i','j','i','n','g'};
【1.53】对字符数组str赋初值,str不能作为字符串使用的一个是____。A)char str[]=”shanghai“; B)char str[]={”shanghai“};
C)char str[9]={'s','h','a','n','g','h','a','i'}; D)char str[8]={ 's','h','a','n','g','h','a','i'};
【1.54】对函数形参的说明有错误的是____。A)int a(float x[],int n)B)int a(float *x,int n)C)int a(float x[10],int n)D)int a(float x,int n)
【1.55】如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。
A)静态变量 B)动态变量 C)外部变量 D)内部变量
【1.56】在一个C源程序文件中,•若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是。A)extern B)register C)auto D)static
【1.57】在C语言中,函数的数据类型是指____。A)函数返回值的数据类型 B)函数形参的数据类型
C)调用该函数时的实参的数据类型 D)任意指定的数据类型 【1.58】已知如下定义的函数: fun1(a){ printf(”n%d“,a); } 则该函数的数据类型是____。
A)与参数a的类型相同 B)void型 C)没有返回值 D)无法确定
【1.59】定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。A)swapa(int x,int y)B)swapb(int *x,int *y){ int temp; { int temp;
temp=x;x=y;y=temp; temp=x;x=y;y=temp; } } C)swapc(int *x,int *y)D)swapd(int *x,int *y){ int temp; { int *temp;
temp=*x;*x=*y;*y=temp; temp=x;x=y;y=temp; } }
【1.60】求一个角的正弦函数值的平方。能够实现此功能的函数是____。A)sqofsina(x)float x;
{ return(sin(x)*sin(x)); } B)double sqofsinb(x)float x;
{ return(sin((double)x)*sin((double)x)); } C)double sqofsinc(x){ return(((sin(x)*sin(x)); } D)sqofsind(x)float x;
{ return(double(sin(x)*sin(x)));
【1.61】一个函数内有数据类型说明语句如下: double x,y,z(10);
关于此语句的解释,下面说法正确的是____。A)z是一个数组,它有10个元素。
B)z是一个函数,小括号内的10是它的实参的值。C)z是一个变量,小括号内的10是它的初值。D)语句中有错误。
【1.62】已知函数定义如下: float fun1(int x,int y){ float z; z=(float)x/y; return(z); } 主调函数中有int a=1,b=0;可以正确调用此函数的语句是____。A)printf(”%f“,fun1(a,b)); B)printf(”%f“,fun1(&a,&b)); C)printf(”%f“,fun1(*a,*b)); D)调用时发生错误
【1.63】下面函数的功能是____。a(s1,s2)char s1[],s2[];
{ while(s2++=s1++); } A)字符串比较 B)字符串复制 C)字符串连接 D)字符串反向
【1.64】在下列结论中,只有一个是错误的,它是。A)C语言允许函数的递归调用
B)C语言中的continue语句,可以通过改变程序的结构而省略 C)有些递归程序是不能用非递归算法实现的D)C语言中不允许在函数中再定义函数
【1.65】已知:int a, *y=&a;则下列函数调用中错误的是。A)scanf(”%d“, &a); B)scanf(”%d“, y); C)printf(”%d“, a); D)printf(”%d“, y);
【1.66】说明语句”int(*p)();“的含义是。A)p是一个指向一维数组的指针变量 B)p是指针变量,指向一个整型数据
C)p是一个指向函数的指针,该函数的返回值是一个整型 D)以上都不对
【1.67】设有说明int(*p)[4];其中的标识符p是。A)4个指向整型变量的指针变量
B)指向4个整型变量的函数指针
C)一个指向具有4个整型元素的一维数组的指针
D)具有4个指向整型变量的指针元素的一维指针数组
【1.68】已知:char s[10], *p=s,则在下列语句中,错误的语句是。A)p=s+5; B)s=p+s; C)s[2]=p[4]; D)*p=s[0];
【1.69】已知:char s[100];int i;则引用数组元素的错误的形式是。A)s[i+10] B)*(s+i)C)*(i+s)D)*((s++)+i)
【1.70】已知:char s[6], *ps=s;则正确的赋值语句是。
A)s=”12345“; B)*s=”12345“; C)ps=”12345“; D)*ps=”12345“;
【1.71】已知:char a[3][10]={”BeiJing“,”ShangHai“,”TianJin“}, *pa=a;不能正确显示字符串”ShangHai“的语句是。
A)printf(”%s“,a+1); B)printf(”%s“,*(a+1)); C)printf(”%s“,*a+1); D)printf(”%s“,&a[1][0]);
【1.72】已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式是。A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2 D)*((ptr+1)[2])
【1.73】已知:int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是。A)p+=2,*(p++)B)p+=2,*++p C)p+=2,*p++ D)p+=2,++*p
【1.74】已知:int a[]={1,2,3,4}, y, *p=a;则执行语句y =(*++p)--;之后, 数组a各元素的值变为______。
A)0,1,3,4 B)1,1,3,4 C)1,2,2,4 D)1,2,3,3 变量y的值是____。A)1 B)2 C)3 D)4
【1.75】已知:int a[ ]={1,3,5,7}, y *p= a;为使变量y的值为3,下列语句正确的是____。A)y=++*p++; B)y=++(*p++); C)y=(++*p)++; D)y=(*++p)++;
【1.76】已知:int x[ ]={ 1,3,5,7,9,11 },*ptr=x;则能够正确引用数组元素的语句是。A)x B)*(ptr--)C)x[6] D)*(--ptr)
【1.77】函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是。
A)funa(int *x, int *y)B)funb(int x, int y){ int *p; { int t;
p=x;*x=*y;*y=*p; t=x;x=y;y=t; } } C)func(int *x, int *y)D)func(int *x, int *y){ *x=*y;*y=*x; { *x=*x+*y;*y=*x-*y;*x=*x-*y;
} }
【1.78】有定义如下: struct sk { int a; float b; }data ,*p;
如果 p=&data;则对于结构变量data的成员a的正确引用是____。A)(*).data.a B)(*p).a C)p->data.a D)p.data.a
【1.79】已知: struct st { int n;
struct st *next; };
static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p; 如果下述语句的显示是2,则对p的赋值是____。printf(”%d“,++(p->next->n));
A)p=&a[0]; B)p=&a[1]; C)p=&a[2]; D)p=&a[3];
【1.80】已知: struct person { char name[10]; int age;
}class[10]={”LiMing“,29,”ZhangHong“,21,”WangFang“,22}; 下述表达式中,值为72的一个是____。A)class[0]->age + class[1]->age+ class[2]->age B)class[1].name[5] C)person[1].name[5] D)clase->name[5]
【1.81】已知: struct { int i; char c; float a; }test;
则sizeof(test)的值是。A)4 B)5 C)6 D)7
【1.82】已知: union { int i; char c; float a;
}test;
则sizeof(test)的值是。A)4 B)5 C)6 D)7
【1.83】已知: union u_type { int i; char ch; float a; }temp;
现在执行”temp.i=266;printf(“%d”,temp.ch)“的结果是。A)266 B)256 C)10 D)1
【1.84】若有以下程序段: struct dent { int n; int *m; };
int a=1,b=2,c=3;
struct dent s[3] = { {101,&a},{102,&b},{103,&c} }; struct dent *p=s;
则以下表达式中值为2的是。
A)(p++)->m B)*(p++)->m C)(*p).m D)*(++p)->m
【1.85】若有以下说明语句,则对结构变量pup中sex域的正确引用是。struct pupil { char name[20]; int sex; }pup,*p; p=&pup;
A)p.pup.sex B)p->pup.sex C)(*p).pup.sex D)(*p).sex
【1.86】以下对结构变量stul中成员age的非法引用是。struct student { int age; int num; }stu1,*p; p=&stu1;
A)stu1.age B)student.age C)p->age D)(*p).age
【1.87】若有以下定义和语句: union data { int i; char c; float f;
}a; int n;
则以下语句正确的是
。A)a=5; B)a={2,'a',1.2}; C)printf(”%dn“,a); D)n=a;
【1.88】已知: struct sk { int a; int age; }date,*p;
如果要使指针p指向data中的成员a,正确的赋值语句是____。A)p =(struct sk *)&data.a; B)p =(struct sk *)data.a; C)p = &data.a; D)*p = data.a;
【1.89】已知 enum week {sun,mon,tue,wed,thu,fri,sat}day;则正确的赋值语句是____。A)sun=0; C)san=day; D)sun=mon; D)day=sun;
【1.90】已知 enum color {red,yellow=2,blue,white,black}ren;执行下述语句的输出结果是____。printf(”%d“,ren=white); A)0 B)1 C)3 D)4
【1.91】已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出是____。man=0; switch(man){ case 0: printf(”Peoplen“); case 1: printf(”Mann“); case 2: printf(”Womann“); default: printf(”Errorn“); } A)People B)Man C)Woman D)Error
【1.92】下述关于枚举类型名的定义中,正确的是____。
A)enem a={ one,two,three }; B)enem a { one=9,two=-1,three }; C)enem a={”one“,”two“,”three“}; D)enem a {”one“,”two“,”three“};
【1.93】C语言中标准输入文件stdin是指。
A)键盘 B)显示器 C)鼠标 D)硬盘
【1.94】要打开一个已存在的非空文件”file“用于修改,选择正确的语句____。A)fp=fopen(”file“, ”r“); B)fp=fopen(”file“, ”a+“); C)fp=fopen(”file“, ”w“); D)fp=fopen('file”, “r+”);
【1.95】当顺利执行了文件关闭操作时,fclose函数的返回值是。A)-1 B)TRUE C)0 D)1
【1.96】fscanf函数的正确调用形式是。
A)fscanf(文件指针, 格式字符串, 输出列表); B)fscanf(格式字符串, 输出列表, 文件指针); C)fscanf(格式字符串, 文件指针, 输出列表); D)fscanf(文件指针, 格式字符串, 输入列表);
【1.97】使用fgetc函数,则打开文件的方式必须是。
A)只写 B)追加 C)读或读/写 D)参考答案B和C都正确
【1.98】已知宏定义 #define N 3 #define Y(n)((N+1)*n)执行语句z=2*(N+Y(5+1));后,变量z的值是____。A)42 B)48 C)52 D)出错
【1.99】已知宏定义 #define SQ(x)x*x,执行语句printf(“%d”,10/SQ(3));后的输出结果是____。A)1 B)3 C)9 D)10
【1.100】已知宏定义如下: #define PR printf #define NL “n” #define D “%d” #define D1 DNL 若程序中的语句是 PR(D1,a);经预处理后展开为____。A)printf(%dn,a); B)printf(“%dn”,a); C)printf(“%d”“n”,a); D)原语句错误
【单项选择题参考答案】 【1.1】答案: A 注释:int是C语言的关键字 【1.2】答案: B 【1.3】答案:A 【1.4】答案:B 注释:include是预处理命令;scanf是函数名;type不是C语言的关键字。
【1.5】答案:D 【1.6】答案:D 【1.7】答案:A 【1.8】答案:A 注释:int型表示整数的范围是-32768~32767。【1.9】答案:D 注释:整型常量-1在计算机中表示为补码1111 1111 1111 1111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。【1.10】答案:B 注释:长整型数32768在计算机内的表示是1000 0000 0000 0000,以一般整型进行输出时,此数恰是-32768的补码。【1.11】答案:C 注释:长整型数65539在计算机内的表示是0001 0000 0000 0000 0011,以一般整型进行输出时,仅将右侧16位二进制数转换为十进制数。【1.12】答案:A 注释:C语言中,int型的负数是采用补码表示的。【1.13】答案:D 【1.14】答案:C 注释:变量c是字符型,可用字符常量为它赋值。字符常量必须用单引号括起来,所以B是错误的;在单引号或双引号内的反斜线''用于表示转义字符,A选项在无引号时使用反斜线是错误的;C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符;单引号只允许括起一个字符,D选项在单引号内出现4个字符,是错误的。【1.15】答案:C 【1.16】答案:D 注释:空字符和空格符是不同的两个字符,空格符的ASCII码值是32,空字符的ASCII值是0。【1.17】答案:A 【1.18】答案:B 【1.19】答案:A 【1.20】答案:C 【1.21】答案:B 注释:单纯从C语言语法来说,选项B、C都是正确的,但是选项C中第一个运算的两个对象都是整型常数,其结果也是整型数0,最后的运算结果也就是0了。【1.22】答案:C 【1.23】答案:A 注释:将条件表达式增加一个括号,此式变为a
是根据数组的首地址和给出的下标进行运算决定元素的地址。题中表达式引用了数组前3个元素。
【1.29】答案: A 【1.30】答案:D 【1.31】答案:B 【1.32】答案:B 【1.33】答案:B 【1.34】答案:A 【1.35】答案:C 【1.36】答案:C 【1.37】答案:C 【1.38】答案:D 【1.39】答案:D 【1.40】答案:C 1.41】答案:D 注释:scanf函数返回值是输入数据的个数,printf函数的返回值是输出的字符个数。【1.42】答案:D 【1.43】答案:C 注释:在C语言中,经常用一个变量来作为逻辑表达式,其含义就是:当变量的值不为0时关系成立。
【1.44】答案:D 注释:break语句仅可跳出switch语句,不会跳出while循环,这是一个死循环。【1.45】答案:A 【1.46】答案:C 【1.47】答案:C 【1.48】答案:D 注释:当除数y为0时,程序发生溢出错误。【1.49】答案:C 【1.50】答案:A 【1.51】答案:C 【1.52】答案:C 注释:答案C的赋值号左侧是数组s的首地址,是一个常量,赋值号右侧是一个字符串常量,不可能将一个字符串常量赋给一个地址常量。【1.53】答案:D 注释:D选项缺少字符串结束标志。【1.54】答案:C 注释:此处函数形参是一个指针变量,接受实参的地址,而不是一个数组。【1.55】答案:A 【1.56】答案:D 注释:这里首先要明确一些基本概念。在C语言中,程序与文件是不同的概念,一个程序可以由一个文件组成,也可以由多个文件组成;一个文件中又可以包含多个函数;函数是构成C程序的基本单位。
变量的作用域因变量的存储类型不同而不同。auto和register类型的变量的作用域是说明变量的当前函数;外部变量的作用域是整个程序,即外部变量的作用域可以跨越多个文件;内部静态变量(定义在一个函数内部的static型的变量)的作用域是当前函数,外部静态变量(定义在函数
外面的static型的变量)的作用域是当前文件,即可以跨越同一文件中的不同函数。【1.57】答案:A 【1.58】答案:A 注释:它和参数a一样,数据类型说明被省略,按照C语言的规定,在这种情况下,表示它们是int型。
【1.59】答案:C 注释:函数swapa是值传递,函数的执行结果不能返回;函数swapb中变量temp不是指针变量,所以它不能接受地址量,用指针变量x为它赋值是不对的;函数swap中虽然指针变量交换了地址,即它们的指向的目标变量进行了交换,但是目标变量并没有行值的交换。【1.60】答案:B 【1.61】答案:D 【1.62】答案:D 注释:主调函数中b=0,在执行fun1函数里的除法时发生溢出错误。【1.63】答案:B 【1.64】答案:C 【1.65】答案:D 注释:在答案D中,正确的函数调用应当是:printf(“%d”, *y)。【1.66】答案:C 注释:要注意与说明语句“int(*p)[ ];”的区别。说明语句“int(*p)[ ];”说明的是一个指向数组的指针。
【1.67】答案:C 注释:题干中由于*和p被小括号括起,所以p应被解释为一个指针,而后的下标运算符[]说明所指向的对象是一个有4个int型元素的一维数组;如果是int(*p)(),则是指向函数的指针。对于int *p[4],则根据运算符的优先级,先考虑p和[]运算符的关系,所以它就是一个指针数组了。【1.68】答案:B 注释:选项B有两处错误,一是数组名是常量,不能出现的赋值好的左侧,二是指针变量只能和整数做加,不能和作为地址常量的数组名相加。【1.69】答案:D 注释:s作为数组名是地址常量,而s++是s=s+1,C语言不允许对常量进行赋值。【1.70】答案:C 【1.71】答案:C 注释:a是二维数组名,a+1中的1不是1个字节,而是数组的“一行”,即10个字节,所以a+1是第二个字符串的首地址,A选项正确。在C编译系统中对二维数组名可这样理解(注意,这里仅是理解):a指向一个一维数组,故(a+1)是指向a[1]的,*(a+1)就是取a[1]的值,它保存第二个字符串“ShangHai”的首地址,所以选项B也正确。*a是第一个字符串的首地址,加1是第一个字符串中第二个字符的地址,选项C的输出是“beiJing”。选项D中的&a[1][0]是对第二个字符串的第一个字符做取地址运算,得到该地址就是字符串“ShangHai”的首地址。注意,对于二维数组来说,做一次*或[]运算的结果仍是地址量,做两次才是取数值。【1.72】答案:A 注释:p是一个一级指针,选项B中对它进行了两次*运算是错误的。ptr是一个指向一维数组的指针,它所指向的数组有三个元素,对于这样一个指针,对它进行两次**运算才能取出地址单元中所存的数据,C选项中*ptr表示数组第一行的首地址,该地址是一维数组的地址,+3表示加上三个它所指向的数据类型的长度,所以(*ptr+1)+2是数组中数值4的地址。根据以上分析,选项D对ptr进行了两次地址操作(*和[]),所以结果应是数据,但是它加1后指向数组第二行,根据后面[]中2它的地址增加两个一维数组的长度,就指向数组的最后一行,再做*运算就是数
10,即a[3][0]。【1.73】答案:A 【1.74】答案:B B 【1.75】答案:D 【1.76】答案:B 【1.77】答案:D 注释:答案D是另一种交换两个变量值的算法。【1.78】答案:B 【1.79】答案:C 注释:使用C对p进行赋值,则p->next是a[0]的地址,引用其成员n再做前增1运算,结果就是2。
【1.80】答案:B 【1.81】答案:D 【1.82】答案:A 【1.83】答案:C 注释:联合变量temp的成员是占用同一存储单元,它的长度是4个字节。266的二进制表示是100001010,存放在存储单元的低端两个字节,如下图: 高字节
0 0 0 0 0 0 0 1 低字节 0 0 0 0 1 0 1 0 引用temp.ch进行输出,只取最低的第一个字节。【1.84】答案:D 注释:由于结构指针指向了结构数组的0号元素,所以表达式(p++)->m的含义是先取出m(变量a的地址),然后指针p加1。表达式*(p++)->m的含义是先取出m的内容(变量a的值),然后指针p再加1。表达式(*p).m的含义是取出m(变量a的地址)。表达式*(++p)->m的含义是先将指针p加1,然后再取m的内容(变量b的值)。【1.85】答案:D 【1.86】答案:B 【1.87】答案:C 【1.88】答案:A 【1.89】答案:D 【1.90】答案:D 【1.91】答案:A 【1.92】答案:B 【1.93】答案:A 【1.94】答案:D 注释:函数fopen中的第二参数是打开模式,“r”模式是只读方式,不能写文件;“a+”模式是读/追加方式,允许从文件中读出数据,但所有写入的数据均自动加在文件的末尾;“w”模式是写方式,允许按照用户的要求将数据写入文件的指定位置,但打开文件后,首先要将文件的内容清空。“r+”模式是读/写方式,不但允许读文件,而且允许按照用户的要求将数据写入文件的指定位置,且在打开文件后,不会将文件的内容清空。本题的要求是“修改”文件的内容,因此只能选择答案D。
【1.95】答案:C 【1.96】答案:D
【1.97】答案:C 【1.98】答案:B 注释:语句z=2*(N+Y(5+1)引用了两个宏定义。C语言是区分字母大小的,第二个宏定义中的N直接用3替换,用5+1替换n,则有z=2*(3+(3+1)*5+1);结果是48。注意对于带参数的宏亦是直接的文本替换,此例中n用5+1去替换,结果是(N+1)*5+1,而不是(N+1)*(5+1)。
【1.99】答案:C 注释:宏替换后的结果是printf(“%d”,10/3*3)。【1.100】答案:C
二、阅读程序题(答案P35)
导读:学会阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读别人写好的程序来打开自己的思路,就所谓见多识广。读者通过阅读理解程序,从给出的四个备选参考答案中,选择程序的正确输出。如果选择有误,就要认真分析原因,是概念方面的错误还是对程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。程序设计语言是开发程序的一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备选答案,增强动手能力。习题基本上是按照教材的章节来安排的,读者可以根据学习的进度选择部分习题。
【2.1】以下程序的输出结果是。main(){ float a;
a=1/100000000; printf(“%g”,a); } A)0.00000e+00 B)0.0 C)1.00000e-07 D)0
【2.2】下面程序的输出结果是____。#include
main(){ int x=10; { int x=20;
printf(“%d,”, x); } printf(“%dn”, x); } A)10,20 B)20,10 C)10,10 D)20,20
【2.3】以下程序的输出结果是____。main(){ unsigned int n; int i=-521;
n=i;
printf(“n=%un”,n); } A)n=-521 B)n=521 C)n=65015 D)n=102170103
【2.4】以下程序的输出结果是。main(){ int x=10, y=10; printf(“%d %dn”, x――, ――y); } A)10 10 B)9 9 C)9 10 D)10 9
【2.5】以下程序的输出结果是____。main(){ int n=1;
printf(“%d %d %dn”,n,n++,n--); } A)1 1 1 B)1 0 1 C)1 1 0 D)1 2 1
【2.6】以下程序的输出结果是____。main(){ int x=0x02ff,y=0x0ff00;
printf(“%dn”,(x&y)>>4|0x005f); } A)127 B)255 C)128 D)1
【2.7】以下程序的输出结果是____。main(){ int a=1; char c='a'; float f=2.0;
printf(“%dn”,(!(a==0),f!=0&&c=='A')); } A)0 B)1
【2.8】下面程序的输出结果是____。main(){ int a=1,i=a+1; do { a++ ;
}while(!~i++ > 3);
printf(“%dn”,a);
} A)1 B)2 C)3 D)4
【2.9】下面程序的输出结果是____。main(){ int a=111; a=a^00;
printf(“%d,%on”,a,a); } A)111,157 B)0,0 C)20,24 D)7,7
【2.10】下面程序的输出结果是____。main(){ char s[12]= “a book”; printf(“%.4s”,s); } A)a book!B)a book!<四个空格》
C)a bo D)格式描述错误,输出不确定
【2.11】下面程序的输出结果是____。main(){ int a,b;
scanf(“%2d%3d”,&a,&b); printf(“a=%d b=%dn”,a,b); } A)a=12 b=34 B)a=123 b=45 C)a=12 b=345 D)语句右错误
【2.12】以下程序段的输出结果是。int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;
printf(“a=%d b=%d c=%dn”,a,b,c); A)a=10 b=50 c=10 B)a=10 b=30 c=10 C)a=50 b=30 c=10 D)a=50 b=30 c=50
【2.13】以下程序的输出结果是。main(){ int a=0,b=1,c=0,d=20; if(a)d=d-10; else if(!b)
if(!c)d=15; else d=25;
printf(“d=%dn”,d); } A)d=10 B)d=15 C)d=20 D)d=25
【2.14】下面程序的输出结果为。main(){ int a=1,b=0; switch(a){ case 1: switch(b){ case 0: printf(“**0**”); break; case 1: printf(“**1**”); break; } case 2: printf(“**2**”); break; } } A)**0** B)**0****2** C)**0****1****2** D)有语法错误
【2.15】以下程序的输出结果是。main(){ char *s=“12134211”;
int v1=0,v2=0,v3=0,v4=0,k; for(k=0;s[k];k++)switch(s[k]){ case '1': v1++; case '3': v3++; case '2': v2++; default: v4++; } printf(“v1=%d, v2=%d, v3=%d, v4=%dn”,v1,v2,v3,v4); } A)v1=4,v2=2,v3=1,v4=1 B)v1=4,v2=9,v3=3,v4=1 C)v1=5,v2=8,v3=6,v4=1 D)v1=4,v2=7,v3=5,v4=8
【2.16】下面程序的输出是。main(){ int x=1,y=0,a=0,b=0; switch(x){ case 1: switch(y){ case 0: a++;break; case 1: b++;break; }
case 2: a++;b++;break; } printf(“a=%d,b=%dn”,a,b); } A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2
【2.17】下面程序的输出是____。main(){ int num=0; while(num<=2){ num++;
printf(“%dn”,num); } } A)1 B)1 C)1 D)1 2 2 2 3 3 4
【2.18】下面程序的输出结果是____。main(){ int a=1,b=0; do { switch(a){ case 1: b=1;break; case 2: b=2;break; default : b=0; } b=a+b; }while(!b);
printf(“a=%d,b=%d”,a,b); } A)1,2 B)2,1 C)1,1 D)2,2
【2.19】从键盘上输入“446755”时,下面程序的输出是____。#include
while((c=getchar())!='n')switch(c-'2'){ case 0: case 1: putchar(c+4);
case 2: putchar(c+4);break; case 3: putchar(c+3);
default: putchar(c+2);break; } printf(“n”); } A)888988 B)668966 C)88898787 D)66898787
【2.20】下面程序的输出结果是____。main(){ int k=0; char c='A'; do { switch(c++){ case 'A': k++;break; case 'B': k--;
case 'C': k+=2;break; case 'D': k=k%2;contiue; case 'E': k=k+10;break; default: k=k/3; } k++;
}while(c<'C'); printf(“k=%dn”,k); } A)k=1 B)k=2 C)k=3 D)k=4
【2.21】下面程序的输出结果是____。main(){ int x,i;
for(i=1;i<=100;i++){ x=i;
if(++x%2==0)if(++x%3==0)if(++x%7==0)printf(“%d ”,x); } } A)39 81 B)42 84 C)26 68 D)28 70
【2.22】下面程序的输出结果是____。#include
{ int i,k,a[10],p[3]; k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)]; for(i=0;i<3;i++)k+=p[i]*2;
printf(“%dn”,k); } A)20 B)21 C)22 D)23
【2.23】假定从键盘上输入“3.6,2.4<回车>”,下面程序的输出是____。#include
scanf(“%f,%f”,&x,&y); z=x/y; while(1){ if(fabs(z)>1.0){ x=y; y=z; z=x/y; } else break; } printf(“%fn”,y); }
A)1.500000 B)1.600000 C)2.000000 D)2.400000
【2.24】下面程序的输出结果是____。main(){ int i,j,x=0;
for(i=0;i<2;i++){ x++;
for(j=0;j<-3;j++){ if(j%2)continue; x++; } x++; } printf(“x=%dn”,x); } A)x=4 B)x=8 C)x=6 D)x=12
【2.25】下面程序的输出结果是____。main(){ int i,j,k=10; for(i=0;i<2;i++){ k++; { int k=0;
for(j=0;j<=3;j++){ if(j%2)continue; k++; } } k++; } printf(“k=%dn”,k); } A)k=4 B)k=8 C)k=14 D)k=18
【2.26】下面程序的输出结果是____。#include
for(i=0;i<2;i++)for(j=0;j<2;j++)n[i+1][j+1]+=n[i][j]; printf(“%dn”, n[i][j]); } A)14 B)0 C)6 D)不确定
【2.27】下面程序的输出结果是____。#include
printf(“a[%d][%d]=%dn”, i,j,a[i][j]); } A)6 B)-3 C)2 D)不确定
【2.28】下面程序的输出结果是____。int m[3][3]={ {1}, {2}, {3} }; int n[3][3]={ 1, 2, 3 }; main()
{ printf(“%dn”, m[1][0]+n[0][0]); /* ① */ printf(“%dn”, m[0][1]+n[1][0]); /* ② */ }
① A)0 B)1 C)2 D)3 ② A)0 B)1 C)2 D)3
【2.29】下面程序的输出结果是____。#include
【2.30】下面程序的输出结果是____。#include
return(p-s); } main(){ printf(“%dn”,f(“ABCDEF”)); } A)3 B)6 C)8 D)0
【2.31】下面程序的输出结果是____。#include
strcpy(str + strlen(str)/2, “es she”); printf(“%sn”, str); } A)How do you do B)es she C)How are you D)How does she
【2.32】下面程序的输出结果是____。#include
r=func((x--,y++,x+y),z--); printf(“%dn”,r); } A)11 B)20 C)21 D)31
【2.33】下面程序的输出结果是____。#include
for(k=0;k<5;k++)printf(“%d”,a[k]); } A)35756 B)23445 C)35745 D)12345
【2.34】下面程序的输出结果是____。#include
printf(“n%d,%d”,i,k); /* ① */ } fun(int m){ m+=k;k+=m; { char k='B';
printf(“n%d”,k-'A'); /* ② */ } printf(“n%d,%d”,m,k); /* ③ */ } ① A)4,1 B)5,6 C)4,6 D)A,B,C参考答案都不对 ② A)1 B)-59 C)-64 D)A,B,C参考答案都不对 ③ A)5,66 B)1,66 C)5,6 D)A,B,C参考答案都不对
【2.35】下面程序的输出结果是____。#include
printf(“%dn”, x); } A)6 B)7 C)8 D)9
【2.36】下面程序的输出结果是____。int w=3; main(){ int w=10;
printf(“%dn”,fun(5)*w); } fun(int k){ if(k==0)return(w); return(fun(k-1)*k); } A)360 B)3600 C)1080 D)1200
【2.37】下面程序的输出结果是____。#include
for(i=0;i<2;i++)k=funa(a++); printf(“%dn”,k); } A)3 B)0 C)5 D)4
【2.38】下面程序的输出结果是____。#include
printf(“%d,%dn”,x,y); } A)12,2 B)5,25 C)1,12 D)输出不确定
【2.39】下面程序的输出结果是____。main(){ int a=2,i;
for(i=0;i<3;i++)printf(“%4d”,f(a)); } f(int a)
{ int b=0; static int c=3; b++; c++;
return(a+b+c); } A)7 7 7 B)7 10 13 C)7 9 11 D)7 8 9
【2.40】下面程序的输出结果是____。#include
for(i=0; i<=2; i++)x=try();
printf(“%dn”, x); } A)3 B)4 C)5 D)6 【2.41】下面程序的输出结果是____。#include
void f1(), f2();
f1(); f2(x);
printf(“%dn”, x); } void f1(void){ int x=3;
printf(“%d ”, x); }
void f2(x)int x;
{ printf(“%d ”, ++x);
} A)1 1 1 B)2 2 2 C)3 3 3 D)3 2 1
【2.42】下面程序的输出结果是____。#include
#define SUB(X,Y)(X)*Y main(){ int a=3,b=4;
printf(“%dn”,SUB(a++,b++)); } A)12 B)15 C)16 D)20
【2.43】下面程序的输出结果是____。main(){ int a[]={1,2,3,4,5,6}; int *p; p=a;
printf(“%d ”,*p); printf(“%d ”,*(++p)); printf(“%d ”,*++p); printf(“%d ”,*(p--));
p+=3;
printf(“%d %d ”,*p,*(a+3));
}
A)1 2 3 3 5 4 B)1 2 3 4 5 6 C)1 2 2 3 4 5 D)1 2 3 4 4 5
【2.44】下面程序的输出结果是____。main(){ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a; p+=6;
printf(“%d ”,*p); /* ① */ printf(“%d ”,*(*(a+6))); /* ② */ printf(“%d ”,*(a[1]+=2)); /* ③ */ printf(“%d”,*(&a[0][0]+6));/* ④ */ }
A)7 7 7 7 B)②句语法错误 C)③句语法错误 D)④句语法错误
【2.45】下面程序的输出结果是____。#define FMT “%Xn” #include
② A)6 B)7 C)8 D)前面三个参考答案均是错误的【2.46】下面程序的输出结果是____。#include
printf(“%d,%d,%dn”, *p, x, y); } A)1,3,5 B)1,2,3 C)1,2,4 D)1,4,5
【2.47】下面程序的输出结果是____。void ive(x,n)int x[],n; { int t,*p; p=x+n-1; while(x
for(i=0;i<10;i++)printf(“%d ”,a[i]); printf(“n”); }
A)1 2 3 4 5 6 7 8 9 0 B)0 9 8 7 6 5 4 3 2 1 C)1 3 5 7 9 2 4 6 8 0 D)0 8 6 4 2 9 7 5 3 1
【2.48】下面程序的输出结果是____。#include “string.h” fun(char *w,int n){ char t,*s1,*s2; s1=w;s2=w+n-1; while(s1 { t=*s1++; *s1=*s2--; *s2=t; } } main(){ static char *p=“1234567”; fun(p,strlen(p)); printf(“%s”,p); } A)7654321 B)1717171 C)7171717 D)1711717 【2.49】下面程序的输出结果是____。#include while(*p++!='e'); printf(“%cn”, *p); } A)c B)d C)e D)f 【2.50】下面程序的输出结果是____。#include printf(“%dn”,(*g)(a,b)); } A)1 B)2 C)3 D)前面三个参考答案均是错误的【2.51】下面程序的输出结果是____。#include p=&a; a++; printf(“%d,%d,%dn”, a,*p, **pp); } A)2,1,1 B)2,1,2 C)2,2,2 D)程序有错误 【2.52】下面程序的输出结果是____。main(){ char *alpha[7]={“ABCD”,“EFGH”,“IJKL”,“MNOP”,“QRST”,“UVWX”,“YZ”}; char **p; int i; p=alpha; for(i=0;i<4;i++)printf(“%c”,*(p[i])); printf(“n”); } A)AEIM B)BFJN C)ABCD D)DHLP 【2.53】下面程序的输出结果是____。#include 【2.54】下面程序的输出结果是____。#include “stdio.h” struct str1 { char c[5]; char *s; }; main(){ struct str1 s1[2]={ {“ABCD”“EFGH”},{“IJK”,“LMN”} }; struct str2 { struct str1 sr; int d; }s2={“OPQ”,“RST”,32767}; struct str1 *p[2]; p[0]=&s1[0]; p[1]=&s1[1]; printf(“%s”,++p[1]->s); /* ① */ printf(“%c”,s2.sr.c[2]); /* ② */ } ① A)LMN B)MN C)N D)IJK ② A)O B)P C)Q D)R 【2.55】以下程序的输出结果是____。struct st { int x,*y; }*p; int s[]={10,20,30,40};struct st a[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};main(){ p=a; printf(“%dn”,++(*(++p)->y)); } A)10 B)11 C)20 D)21 【2.56】以下程序的输出结果是____。#include e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf(“%d,%dn”,e.in.x,e.in.y); } A)2,3 B)4,4 C)4,8 D)8,8 【2.57】下面程序的输出结果是____。#include { int i[2]; long k; char c[4]; }r,*s=&r; s->i[0]=0x39; s->i[1]=0x38; printf(“%cn”,s->c[0]); } A)39 B)9 C)38 D)8 【2.58】下面程序的输出是。main(){ printf(“%dn”, EOF); } A)-1 B)0 C)1 D)程序是错误的 【阅读程序题参考答案】 【2.1】参考答案:D 注释:程序中除法运算的两个操作数均是整型,运算结果也是整型。【2.2】参考答案:B 注释:C语言允许在程序块(分程序)中说明变量。【2.3】参考答案:C 注释:变量i中的负号传送给变量n后,因n是无符号数,已不作为负号处理。【2.4】参考答案:D 注释:对变量x的――操作是后缀形式,变量x的减1操作要在执行完 printf函数之后才进行,所以变量x的值在输出的时候仍然保持原值10。【2.5】参考答案:B 注释:C语言在执行printf()时,对函数中的表达式表列的处理顺序是从后向前,即先处理n--,再处理n++,最后处理n,而且每一个表达式作为一个处理单元,也就是说在不同的表达式中自增自减运算是单独考虑的。【2.6】参考答案:A 注释:变量x和变量y做按位与,结果为0x0200,右移4位为0x0020,再与0x005f做按位或,最后结果为0x007f。【2.7】参考答案:A 注释:逗号表达式的结果是用逗号分开的最后一个表达式的值,此题由于 c=='A'的值是0,所以逗号表达式的值为0。【2.8】参考答案: B 【2.9】参考答案: A 【2.10】参考答案: C 注释:在输出格式描述“%m.ns”中,m是输出总长度,n是实际字符的个数,这里m没有给出,则输出总长度就是实际输出字符的个数。【2.11】参考答案: C 【2.12】参考答案:B 【2.13】参考答案:C 【2.14】参考答案:B 【2.15】参考答案:D 【2.16】参考答案:A 【2.17】参考答案: C 【2.18】参考答案:A 【2.19】参考答案: C 注释:在switch语句中,case本身仅起到语句标号的作用,不会改变语句的流程,执行break语句才能退出当前的switch语句。【2.20】参考答案: D 注释:siwtch语句的表达式中,变量c是后缀的增一运算,第一次执行do-while循环时,执行case 'A'后面的语句。 【2.21】参考答案: D 【2.22】参考答案: B 【2.23】参考答案: B 注释:fabs()是浮点数绝对值函数。【2.24】参考答案: A 【2.25】参考答案: C 注释:C语言允许在程序块(分程序)内说明变量,如果在程序块内说明的变量和程序块外的变量同名,在块外说明的变量在块内是不可见的。可将此题和【2.11】进行比较,加深理解。【2.26】参考答案: C 【2.27】参考答案: B 【2.28】参考答案: ① D ② A 【2.29】参考答案:D 【2.30】参考答案: B 注释:输出结果为字符串长度。【2.31】参考答案: D 注释:字符串拷贝函数strcpy()要求的两个参数都是字符串首地址。本题中第二个参数是字符串常量,接受这个字符串的第一个参量不是直接给出字符数组名,而是进行了地址运算后的结果。由于str字符串的长度是13,除2取整后是6,第一个参数给出的地址是字符数组str的首地址加6,也就是原来字符串中第二个空格的位置,把“es she”从该处放入,字符串str变为“How does she”。【2.32】参考答案: C 注释:main函数调用func函数时,第一个实参使用的是逗号表达式的值,也就是x+y的结果。由于对变量x、y、z进行的是后缀运算,所以函数func的参数值是13和8。【2.33】参考答案: C 【2.34】参考答案: ① C ② A ③ C 【2.35】参考答案: C 【2.36】参考答案: B 注释:函数fun进行了递归调用,实际进行的运算是5×4×3×2×1×3×10。主函数内说明的局部变量w屏蔽了外部变量w,所以在主函数中外部变量w是不可见的,在调用printf函数时表达式“fun(5)*w”中w的值是10。【2.37】参考答案: D 注释:main函数三次调用了函数funa,在funa函数中的静态变量c仅在第一次调用时进行了初始化,再次调用时不再对静态变量赋初值。 【2.38】参考答案: B 注释:main函数和num函数中都说明了变量a和b,由于它们是内部变量,所以它们分别在说明它们的函数内有效。外部变量x和y在函数num之后被说明,而在num函数中又要引用它们,所以在num函数中用关键字“extern”说明变量x和y是一个外部变量,也就是通知计算机这两个变量在fun函数以外被说明,此处不是定义两个int型变量。【2.39】参考答案: D 注释:函数f中的变量c是静态变量,仅在第一次调用函数f时它被初始化为3,第二次调用函数f时c的值是4,第三次调用函数f时c的值是5。【2.40】参考答案: D 【2.41】参考答案: D 注释:程序中有三个“x”分别在三个不同的函数中,这三个“x”都是自动变量,所以三个“x”分别局部于三不同的函数,在三个函数中对“x”的操作互不影响。【2.42】参考答案: A 【2.43】参考答案: A 注释:*(++p)和*++p都是指针变量值前加1,第一次指向a[1],第二次指向a[2];a+3是a[3]的地址。 【2.44】参考答案: C 注释:②句没有语法错误,但是a+6指向数组之外,因为a是a[0]的地址,a+1是a[1]的地址,a+2是a[2]的地址,显然数组a没有a[6]分量。③句错误,因为a[1]是地址常量,它是a[1][0]的地址,对于地址常量是不可以进行赋值运算的。【2.45】参考答案: ① D ② A 注释:如果FMT定义为“%xn”,则输出的16进制数据用小写字母表示。【2.46】参考答案: A 注释:语句“p=&a[0]”表示将数组a中元素a[0]的地址赋给指针变量p,则p就是指向数组首元素a[0]的指针变量,“&a[0]”是取数组首元素的地址。对于指向数组首址的指针,p+i(或a+i)是数组元素a[i]的地址,*(p+i)(或*(a+i))就是a[i]的值。【2.47】参考答案: B 【2.48】参考答案: D 【2.49】参考答案: D 【2.50】参考答案: A 注释:变量g是指向函数的指针,(*g)(a,b)是调用指针g所指向的函数。【2.51】参考答案: C 注释:p是指针,pp是指向指针的指针。【2.52】参考答案: A 注释:对于指向数组的指针变量可以做下标运算,p[i]和alpha[i]都是指向字符串的首地址,*p[i]取出字符串的第一个字符。 【2.53】参考答案: ① D ② A ③ D ④ D ⑤ B 注释:pp是一个二维指针数组,pp+1指向数组的第二维,*(pp+1)是第二维的起始地址,**(pp+1)是第二维第一个元素的地址,***(pp+1)是第二维第一个元素的内容,所以,①的参考答案应选D。*(pp+1)+1是第二维第二个元素的地址,*(*(pp+1)+1)是第二维第二个元素,(*(*(pp+1)+1))[4]则是第二维第二个元素所指字符串下标为4的元素,即是字符w,故③应当选D。【2.54】参考答案: ① B ② C 【2.55】参考答案:D 【2.56】参考答案:C 注释:联合体成员的取值是最后一次给成员赋的值。【2.57】参考答案: B 注释:整型数组i和字符数组c共用存储空间,给i赋值也等于给c赋值,所以s->c[0]=0x39,所以输出9。 【2.58】参考答案:A 注释:基本概念。EOF是由C语言在头文件stdio.h中定义的,用户可以直接使用。 三、程序填空题(答案P65) 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include scanf(“%d%d”,&a,&b); printf(“a=%d,b=%dn”,a,b); a= ① ; b= ② ; a= ③ ; printf(“a=%d,b=%dn”,a,b); } 【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。#include for(i=1;i<=n;i++)s=s+ ① ; return(②); } 【3.3】下面的程序的功能是求一维数组中的最小元素。findmin(int *s,int t,int *k){ int p; for(p=0,*k=p;p } main(){ int a[10],i,*k=&i; for(i=0;i<10;i++)scanf(“%d”,&a[i]); findmin(a,10,k); printf(“%d,%dn”,*k,a[*k]); } 【3.4】下面程序的功能是计算1-3+5-7+ ……-99+101的值。main(){ int i,t=1,s=0; for(i=1;i<=101;i+=2){ ① ; s=s+t; ② ; } printf(“%dn”,s); } 【3.5】有以下程序段: s=1.0; for(k=1;k<=n;k++)s=s+1.0/(k*(k+1)); printf(“%fn”,s); 填空完成下述程序,使之与上述程序的功能完全相同。s=0.0; ① ; k=0; do { s=s+d; ② ; d=1.0/(k*(k+1)); }while(③); printf(“%fn”,s); 【3.6】下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。main(){ float x,amax,amin; scanf(“%f”,&x); amax=x; amin=x; while(①){ if(x>amax)amax=x; if(②)amin=x; scanf(“%f”,&x); } printf(“namax=%fnamin=%fn”,amax,amin); } 【3.7】下面程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。fun(int x,int b[]){ int k=0,r; do { r=x% ① ; b[k++]=r; x/= ② ; }while(x); } 【3.8】下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积12大于数字之和8。main(){ int n,k=1,s=0,m; for(n=1;n<=100;n++){ k=1; s=0; ① ; while(②){ k*=m%10; s+=m%10; ③ ; } if(k>s)printf(“%d”,n); } } 【3.9】下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。main(){ int i,j,k,count=0; for(i=1;i<=9;i++)for(j=0;j<=9;j++)if(①)continue; else for(k=0;k<=9;k++)if(②)count++; printf(“%d”,count); } 【3.10】下面程序的功能是输出100以内的个位数为 6、且能被3整除的所有数。main(){ int i,j; for(i=0; ① ;i++){ j=i*10+6; if(②)countinue; printf(“%d”,j); } } 【3.11】下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。hcf(int m,int n){ int r; if(m 【3.12】下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。排好序的10个 数分两行输出。程序如下: #include int i,j; printf(“Input 10 numbers pleasen”); for(i=0; ② ;i++)scanf(“%f”, &a[i]); printf(“n”); for(i=2; ③ ;i++)for(j=0; ④ ;j++)if(⑤){ x=a[j]; ⑥ ; a[j+1]=x; } printf(“The sorted 10 numbers;n”); for(i=0; ⑦ ;i++){ if(⑧)printf(“n”); printf(“%ft”,a[i]); } printf(“n”); } 【3.13】下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。#include “stdio.h” main(){ int i,a[20],s,count; s=count=0; for(i=0;i<20;i++)scanf(“%d”, ①); for(i=0;i<20;i++){ if(a[i]<0)② ; s+=a[i]; count++; } printf(“s=%dt count=%dn”,s,count); } 【3.14】下面程序的功能是删除字符串s中的空格。#include main(){ char *s=“Beijing ligong daxue”; int i,j; for(i=j=0;s[i]!=' ';i++)if(s[i]!= ' ')① ; else ② ; s[j]= ' '; printf(“%s”,s); } 【3.15】下面程序的功能是将字符串s中所有的字符'c'删除。请选择填空。#include for(i=j=0;s[i]!= ' ';i++)if(s[i]!= 'c')① ; s[j]= ' '; puts(s); } 【3.16】下面程序的功能是输出两个字符串中对应相等的字符。请选择填空。#include while(x[i]!= ' ' && y[i]!= ' ')if(x[i]==y[i])printf(“%c”, ①); else i++; } 【3.17】下面程序的功能是将字符串s中的每个字符按升序的规则插到数组a中, 字符串a已排好序。 #include for(k=0;s[k]!= ' ';k++) { j=0; while(s[k]>=a[j] && a[j]!= ' ')j++; for(①)② ; a[j]=s[k]; } puts(a); } 【3.18】下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为“abcdefg”和“abceef”,则输出为-1。#include printf(“Enter string 1: ”); gets(str1); printf(“Enter string 2: ”); gets(str2); i=0; while((str1[i] == str2[i] && str1[i]!= ①))i++; s= ② ; printf(“%dn”, s); } 【3.19】下面的函数expand在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符表示,即用'n'表示换行符,用't'表示制表符。expand(char s[],char t[]){ int i,j; for(i=j=0;s[i]!= ' ';i++)switch(s[i]){ case 'n': t[ ① ] = ② ; t[j++] = 'n'; break; case 't': t[ ③ ] = ④ ; t[j++] = 't'; break; default: t[ ⑤ ] = s[i]; break; } t[j] = ⑥ ; } 【3.20】下面的函数index(char s[], char t[])检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则送回-1。index(char s[], char t[]){ int i,j,k; for(i=0;s[i]!= ' ';i++){ for(j=i,k=0; ① && s[j]==t[k];j++,k++); if(②)return(i); } return(-1); } n 【3.21】下面程序的功能是计算S= k!。k=0 long fun(int n){ int i; long s; for(i=1;i ① ;i++)s*=i; return(②); } main(){ int k,n; long s; scanf(“%d”,&n); s= ③ ; for(k=0;k<=n;k++)s+= ④ ; printf(“%ldn”,s); } 【3.22】下面程序的功能是显示具有n个元素的数组s中的最大元素。#define N 20 main(){ int i,a[N]; for(i=0;i for(p=0,k=p;p 【3.23】下面程序的功能是由键盘输入n,求满足下述条件的x、y: nx和ny的末3位数字相同,且x≠y,x、y、n均为自然数,并使x+y为最小。#include for(last=1,i=1;i<=x;i++)last= ① ; return(last); } main(){ int x,n,min,flag=1; scanf(“%d”, &n); for(min=2;flag;min++)for(x=1;x 【3.24】下面的程序是用递归算法求a的平方根。求平方根的迭代公式如下: #include if(fabs(x1-x0)>0.00001)y = mysqrt(②); else y = x1; return(y); } main(){ double x; printf(“Enter x: ”); scanf(“%lf”, &x); printf(“The sqrt of %lf=%lfn”, x, mysqrt(x, 1.0)); } 【3.25】以下程序是计算学生的年龄。已知第一位最小的学生年龄为10岁,其余学生的年龄一个比一个大2岁,求第5个学生的年龄。#include if(n==1)c=10; else c= ① ; return(c); } main(){ int n=5; printf(“age:%dn”, ②); } 【3.26】下面的函数sum(int n)完成计算1~n的累加和。 sum(int n){ if(n<=0)printf(“data errorn”); if(n==1)① ; else ② ; } 【3.27】下面的函数是一个求阶乘的递归调用函数。facto(int n){ if(n == 1)① ; else return(②); } 【3.28】组合问题,由组合的基本性质可知:(1)C(m,n)=C(n-m,n)(2)C(m,n+1)=C(m,n)+C(m-1,n)公式(2)是一个递归公式,一直到满足C(1,n)=n为止。当n<2*m时,可先用公式(1)进行简化,填写程序中的空白,使程序可以正确运行。#include“stdio.h” main(){ int m,n; printf(“Input m,n=”); scanf(“%d%d”, &m, &n); printf(“The combination numbeers is %dn”, combin(m,n)); } combin(int m, int n) { int com; if(n<2*m)m=n-m; if(m==0)com=1; else if(m==1)① ; else ② ; return(com); } 【3.29】下列函数是求一个字符串str的长度。•••••• int strlen(char *str)••••••{ if(①)return(0); •• •••• else return(②); } 【3.30】用递归实现将输入小于32768的整数按逆序输出。如输入12345,则输出54321。#include“stdio.h” main(){ int n; printf(“Input n : ”); scanf(“%d”, ①); r(n); printf(“n”); } r(int m){ printf(“%d”, ②); m = ③ ; if(④)⑤ ; } 【3.31】输入n值,输出高度为n的等边三角形。例如当n=4时的图形如下: * *** ***** ******* #include main(){ int i, n; scanf(“%d”, &n); for(i=1; i<=n; i++){ ② ; ③ ; printf(“n”); } } 【3.32】下面的函数实现N层嵌套平方根的计算。 double y(double x, int n){ if(n==0)return(0); else return(sqrt(x+(①))); } 【3.33】函数revstr(s)将字符串s置逆,如输入的实参s为字符串“abcde”,串“edcba”。递归程序如下: revstr(char *s){ char *p=s, c; while(*p)p++; ① ; if(s revstr(s+1); ③ ; } } 如下是由非递归实现的revstr(s)函数: revstr(s)char *s; { char *p=s, c; while(*p)p++; ④ ; while(s 则返回时 s 为字符 } 【3.34】下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是“ABCDE”,反序为“EDCBA”。void invent(char *str,int n){ char t; t=*str; *str=*(str+n-1); *(str+n-1)=t; if(n>2)invent(①,n-2); else ② ; } 【3.35】从键盘上输入10个整数,程序按降序完成从大到小的排序。#include max=p; for(s=p+1; s<=q; s++)if(*s > *max)② ; swap(③); sort(④); } swap(int *x, int *y){ int temp; temp=*x; *x=*y; *y=temp; } main(){ int i; printf(“Enter data :n”); for(i=0; i<10; i++)scanf(“%d”, &array[i]); sort(⑤); printf(“Output:”); for(i=0; i<10; i++)printf(“%d ”, array[i]); } 【3.36】下面函数的功能是将一个整数存放到一个数组中。存放时按逆序存放。例如:483存放成“384”。 #include if((i=n/10)!=0)convert(① , i); *a = ② ; 淮北师范大学 中国对外贸易教程论文 浅析我国出口退税政策及完善措施 13国贸 20131003015 李贵 2015/12/29 [ 浅析我国出口退税政策及完善措施 摘要:通过对出口退税政策发展的研究,具体分析我国出口退税政策存在的问题、问题出现原因,从而具体问题具体分析,逐步解决该政策存在的漏洞,完善我国的出口退税政策,更好地适应经济全球化的发展。关键词:出口退税 困境 解决措施 一、我国出口退税现状 我国自一九八五年开始对出口产品实施出口退税政策以来,对支持外贸体制改革,鼓励和扩大出口创汇,促进国民经济的发展起到了极为重要的作用。一九九四年八届人大常委会第七次会议通过的《中华人民共和国对外贸易法》第三十四条已确定 ,出口退税是我国一项主要的促进贸易措施。此后,出口退税制度不断发展完善,通过以下两图,可以帮助我们更好的了解出口退税。 我国外汇储备历年变化(1995-2011),数据来自中国人民银行 从上图可以看出,1990-2015年我国出口退税总额不断上升,并早已突破10000亿元大关,并仍呈现缓慢上升态势,说明出口退税方兴未艾,顺应了时代发展潮流。 数据来源:出口退税、2010年国内增值税数据来自国家税务总局网站;2006~2010年出口额、财政收入、国内增值税数据来自《中国统计年鉴2010》。 从上表得知,2006—2010年,我国出口退税额与出口额同步增长,占财政收入比重、占增值税比重不断上升,也正说明我国出口退税对经济有重大的影响。 二、我国企业骗取出口退税案例 案例:全案价税金额达3.66亿元的广西柳州市“劳联”骗税大案。1994年〜1996年,身兼柳州市锦华经济发展公司(下称锦华公司)经理和广东汕头市斯可思经济发展公司经理的郑x x与锦华公司副经理吴x x、广东潮阳市无业人员周x x、伙同柳州市劳联实业有限公司(下称劳联公司)原董事长左x x、原总经理何x x、原办公室主任冯x以及中国机械对外经济技术合作总公司柳州分公司原副总经理王x x和柳州市外贸公司原负责人朱x x、刘x等人,以代销代理为幌子,虚开增值税专用发票共131份,全案价税金额3.66亿元,其中税额5320多万元;共骗取国家出口退税2100多万元。劳联公司共参与作案12起,虚开增 值税专用发票共115份,价税2.5亿元,税款3600多万元,骗取出口退税1800多万元。案发后,执法机关 共追缴款、物折合人民币1270多万元。【2】 从上述案例可以看出,不少犯罪分子专钻出口退税的空子,虚开增值税发票,通过贿赂、欺诈等手段骗取国家出口退税,不仅使国家蒙受巨大损失,而且严重扰乱国内国际市场秩序,使我国国际贸易陷入泥潭。 三、我国出口退税制度存在的问题(一)骗税严重,阻碍了退税工作的顺利进行 我国自实行出口退税政策以来,出口骗税就屡有发生,一些国际国内不法分子在巨大利益的驱动下,利用各种手段大肆骗取国家税款,他们不断从事“自带客户、自带货源、自代汇票、自行报关、不见出口产品、不见供应货主、不见外商”的“四自三不见”和 “买单”业务,使国家财政蒙受了巨大损失,形成了1990年以来的两次骗税高潮:即1990年在全国出现的以出口高税率产品为名,实为骗税的潮流和2000年广东潮阳普宁地区发生的以设立虚假企业,虚开增值税专用发票,专业分工,集团作案,涉嫌骗取出口退税42亿的惊天大案。两次大规模的骗税使国家财政资金在短时期内大量流失,严重扰乱了税收秩序,使1994年以来的税制改革面临困境。为此国家两次下调出口货物退税率,恢复使用税收专用缴款书,建立出口退税专用税票认证系统,增加海关电子信息和外汇核销单信息等等。虽然这些措施给骗取出口退税的不法分子从税收管理方面给以沉重的打击,但还没有使骗税现象得到完全遏制,因此,进一步加强出口退税管理已是当务之急。(二)退税周期长,造成企业资金周转困难,增加了退税成本 出口企业在办理退税时,必须要求单证齐全(包括纸质单证和信息),否则不予退税。一般从货物出口到收到外汇核销单,需要1〜6个月的不等时间,因此外贸企业收购货物出口所预先支付的税金,最快也得一个月才能以出口退税的方式收到,如果企业收购货物所应付的税额较小,则影响还不会更大,如果应付税款额度较大,则企业资金周转就会受到很大影响;而实行“免、抵、退”税的生产性企业,从货物出口到收到出口退税款最快也是一个月,如果加上出口货物报关单信息滞后,以及其他不确定因素的影响,时间就会更长,有的甚至要超过半年;再则,由于近几年来出口退税指标严重不足,导致出口货物应退税款严重滞后,退税周期逐渐加长,增加了出口企业的退税成本,对出口创汇也产生了一定的影响。(三)地方政策与国家政策存在着差异性,使税收法规显得很不严肃 有的地方出于对本地区利益考虑,利用现行出口退税有些政策不明确、不规范、规定多等特点,擅自制定了一些同国家现行政策相违背的地方性政策,使税法显得很不严肃。如有的地方把国家没有规定实行“先征后退”的出口企业纳人“先征后退”办法管理;有的地方以减少进口抵扣税額,人为扩大“免抵”调库额的方法来增加地方的财政收入,这不仅给企业增加了额外负担,也使税法失去了刚性。 造成以上问题出现,原因可以从以下几个方面来探讨: 1.出口退税制度本身的不完善,是造成以上问题的首要原因 (1)增值税制度本身的不完善,使零税率难以实现 增值税条例规定:“纳税人出口货物,税率为零,但是,国家另有规定的除外。”从原理上讲,增值税具有商品整体税负与税率相一致的特征,即设计税率17%,说明增值税应税产品的各个生产流通环节的应纳税负担率为17%,产品出口后按17%的税率予以退税,才能实现零税率,但实际上,增值税中存在着某些税收减免、返还、虚抵等优惠政策,如校办、福利企业的先征后返,初级农产品虚拟税额,有的地区还存在着诸如变相包税、核定征收率等变通执行税收政策的情况,因此,很难准确地计算名义税率与实际税负的差异,在实际工作中,不可避免地出现了征多退少与征少退多的问题,进而造成税负不公。 (2)小规模纳税人得不到退税,使我国出口退税制度很不完备 由于我国对进出口经营权审批较为严格,许多私营、个体业 户出口商品往往依靠旅游购物和代理出口这种形式来实现,因此规模较小,无法认定其为一般纳税人,按照我国现行出口退税管理办法规定,小规模纳税人的出口货物不予退税,使得国民待遇无法实现,显现了出口退税制度的不尽完备。 2.出口退税管理手段落后,手续繁杂,是出现上述问题的另一个重要原因(1)出口退税手续繁杂 因为出口退税是在征税部门、出口企业、海关、银行、外汇管理部门和退税部门等多个环节的共同酝合和协作下完成的,一批货物从购进或生产到报关出口及收汇再办完退税,其中要经历对购进或生产出口货物抵扣凭证、货物出关査验、外汇结算各环节真实性的认定、企业退税额计算准确性的认定、税务部门对各类凭证信息真伪的综合认定等多个环节,且审批手续繁琐,这是出口退税不能及时足额到位的一个重要原因。而且出口企业申请退税必须出具“三票、两单”,即出口销售发票、增值税专用发票、增值税专用缴款书、海关报关单、收汇核销单,使得出口退税单证繁多程序复杂,一个企业从产品出口到收齐各种单证,需要1〜6 个月时间,占用了企业的流动资金,增加了利息支出。除此之外,申报时还有许多报表。填表时复杂的计算也使纳税人无所适从。(2)对出口货物的应退税税额审计监督不力 目前实行的审核办法主要是单单对应审核,这种审核是必要的,但对一些熟悉退税办法的骗税者来说不一定起作用。尤其是对进项税额、销售收入的计人是否准确,很难核实,加之单证又是非常软化的东西,这样产生的漏洞,会给骗税者以可乘之机。(3)征管手段落后 出口退税部门在审核各种报表和单证的真伪时,大部分依靠的是手工操作或人机结合方式来进行的。国家税务局虽然统一了进出口税收计算机管理程序,初步建立了与海关、外管局数据的联网,但还不完善,再加上少数地区由于观念落后及经济的不发达,根本就没有运用先进的税收管理模式,因此很难判断和发现退税凭证的真伪,极易发生出口骗税行为,工作效率也会受到影响。 3.出口退税制度变化过频过快,政策缺乏连续性、稳定性 自从我国恢复出口退税制度以来,出口退税政策始终处于一种不断的调整变化过程中。出口退税制度的频繁变化,说明我们尚未找到出口退税的规律,未形成良性机制。近几年来,出口退税又和税收收入联系起来,使得从事进出口业务的企业和税收工作人员更加无所适从,不仅加大了工作量使该项工作进一步复杂化,而且大大增加了退税成本。4.中央和地方利益存在矛盾,不利于出口退税政策的贯彻执行 一是出口退税完全由中央财政负担,退税金额多少与地方没有直接利益关系,从出口退税的管理上讲,难以得到地方政府的关注和全力支持。忽视对出口退税的监督,这是地方政府行为不当的根源。 二是“免、抵、退”税政策与当前财政体制不合拍,既影响了税收收人,也影响了地方财政分成收入,因而造成政策的贯彻执行面过窄,执行比例过低。 四、解决对策 我国在出口退税方面问题不断,出口退税办法本身的缺陷已到了非改不可的地步。我们应尊重出口退税的国际惯例 ,从改革机制、创新机制入手,把出口退税纳入增值税的常规管理 ,做到征税、免税、抵扣税、退税一体化 ,实现出口退税办法与国际惯例接轨,从根本上解决当前出口退税面临的主要矛盾和弊端。建立健全新的出口货物零税率机制,是一个逐步积累、循序渐进的复杂的系统工程。从我国现有的条件和实际情况出发 ,稳妥有效地推进这项改革 ,应当对各类出口企业都实行出口货物零税率这一同等待遇。当然 ,一下做到这一步是不可能的 ,根据各类出口企业的不同特点 ,在实施方式上应予区别 ,分步进行。 第一步 ,首先要解决好出口退税财力不足和制约机制乏力、出口骗税严重的问题。(一)尽快改变我国目前进口环节增值税、消费税与关税同步减免的做法 ,对进口产品按照本国的税收制度征收进口环节的增值税、消费税。这也是实现进口产品与国内产品公平税负 ,平等竞争的保证。同时 ,通过对进口产品普遍征收进口环节税 ,可以增加国家的税收收入 ,缓解出口退税财力不足的压力 ,实现以进养出 ,大体自求平衡 ,形成进出口贸易的良性循环。 (二)尽快完善现有的出口退税制约机制 ,防止出口骗税行为的发生。在计算机网络尚未建立之前 ,应花大力气加强增值税发票的管理 ,严格增值税发票的发行和检查 ,同时 ,对出口产品的海关报关检查和出口结汇管理也应进一步规范 ,海关对一定出口额以上的货物必须进行货物检查 ,在出口结汇管理方面 ,应明确 ,企业申请出口退税时必须附外汇管理部门出具的结汇凭证 ,并统一格式和管理 ,以防止不法分子利用虚假出口报关单、虚假结汇单证来骗税。 第二步 ,在实现全国税务、海关等部门的计算机联网进行交叉稽核的基础上 ,使出口退税机制的创新从量变到质变 ,最终达到彻底的出口货物零税率。具体有两种做法:(1)全额免税的购买。即出口企业在购进货物时就予彻底免税。对于以出口为主的流通企业可以实行这种办法。该类出口企业在年初 ,根据上一的出口实绩 ,向其所在地的税务部门书面申请本的出口免税指标 ,经审批后 ,出口企业当年就可以批准额度内自主办理免税购进货物 ,不需到税务部门逐笔审批。出口企业与供货企业发生购销关系时 ,出口企业只需向供货企业提供一个有免税证明批准号码的购货函即可 ,供货企业凭此函就可以向出口企业提供免税货物 ,并相应开具零税率的增值税发票。同时供货企业可凭此函在当地税务部门办理免税。由于增值税是价外税 ,是一个中性税种 ,它对于生产经营单位的投资、定价以及成本和利润的核算不产生影响 ,因此在出口企业免税购进和供货企业免税销售这一交易行为发生过程中 ,不必担心谁借机涨价或压价 ,谁骗谁的问题。同时 ,如果出口企业免税购进的货物未能出口而转为内销 ,则由出口企业照章补交税款。自出口企业免税购进货物后 ,经税务部门检查发现的税务问题均与供货企业无关 ,一律由出口企业承担责任。 (2)先免后抵再退。即对出口货物免征最后一道环节的增值税 ,以前各道环节应退的税款与内销货物应纳的税款进行抵扣 ,不足抵扣部分再结转下期继续抵扣或按期办理退库。以内销为主的企业出口货物时宜实行这种免抵退的办法。例如企业某期内销货物应纳税金为 100万元人民币 ,当期收购出口货物的进项税为120万人民币 ,货物出口后这120万可以从应纳税金中抵扣 ,不足抵扣的20万元凭增值税发票和出口报关单再向税务部门申请退税 ,税务部门可先办理退税 ,后检查 ,这就避免了拖欠企业税款的问题 ,如经检查发现有利用出口货物偷税、骗税的企业 ,从重经济处罚和法律制裁。只要健全了一套科学、严密、简便、稳定的出口货物零税率机制 ,加上强大的法律震慑力量 ,出口退税的改革必将出现一个崭新局面。 出口货物零税率机制是由市场经济、分税制、增值税制的自身构架和内在要求所决定的 ,改革出口退税办法的条件已初步形成 ,出口退税所面临的诸多矛盾和弊端也迫切需要实现出口退税机制的创新 ,我国税制改革成果的巩固和扩大 ,对外贸易的持续、快速、健康的发展 ,都有赖于出口退税办法的日臻完善。【3】 另外,在以下几个方面,也可以进行相应的调整。(1)改革中央与地方的分担机制 中央在出口退税当中负担的比例较大,直接导致企业不能 及时得到退税款,因此尽快改革中央与地方的分担机制至关重要。出口退税分担比例制定的前提是保持分担比例在全国基本统一,并在此基础上对不同的地区进行不同的处理。比如,在经济落后的地区,取消基数,出口退税金额全部由中央财政负担,在中等发达的地区,适当提高基数,超过基数的部分有省级和中央财政共同负担,而在经济发达的地区,适当的降低基数,缓解中央财政的困难。 (2)优化调整出口退税率 提髙平均退税率是优化调整出口退税率的有效措施。近几年我国出口道税政策的主要调整是对农产品进行免税,对一些新兴出口产业如电子商务等实行出口退税,但是出口退税率的 变动不太大。13%的退税率相对于17%的征税率来说显然是不够的,我国应当逐步提高退税率。但是提高退税率并不意味着所有出口商品的退税率都提高,而是对符合现阶段发展的产品提高出口退税率,比如近几年国家对高科技机电产品、纺织品 实行高出口退税率,增强了这些行业在国际贸易中的市场竞争力。因此,通过对出口退税率的调整可以在一定程度上对产业 结构进行适当的改变。众所周知,国家对某些出口产品的鼓励或限制在政策制定时都会有所体现,对于限制出口的产品不仅不免税反而还要加收一道出口税,而对于鼓励出口的产品,鼓励出口的程度通过其退税额就可以体现出来。(3)完善出口退税的管理 首先,实行退税管理的网络化。在网络化日益盛行的今天,出口退税也应当进行网络化的申报、审核、批准以及退还,加强对工作人员业务素质的培训,防止操作不当阻碍退税的速度。其次,加快出口退税的时间,减少企业的经济损失。新颁发的出口退税政策对于单证的审核更为严格,并且放宽了出口退税申报时间,但是,这就意味着出口退税的时间也会随 着相应的延长。因此,在审批等过程当中国家税务部门应当进一步的完善,比如充分利用网络办公,提高工作效率;在企业提交预审后,只要所有单证无误,即可正式申报成功;将企业的申报方式调整为信息齐全并且无误后再正式申报,虽然申报时间推迟,但实质不会影响企业收到退税款项的时间等等。最后,学习英国支付退税滞退金。大量退税欠款的存在严重影响了部分企业的流动资金,打击了它们出口贸易的积极性。为了保证企业的利益,我国应当学习英国的现金经验,对退税款延期支付的企业给予一定比例的滞退金作为补偿,滞退金的支付也可以加快税务部门及时退还税款。 (4)加强退税检查与骗税惩罚力度 一方面,加强对出口退税的检查。为抑制骗税行为的发生,国家税务总局应该釆取专项检查、日常检查和突击检查有机结合的办法,不仅要求国家、各省、各地市税收主管部门的参加,同时要求海关、公安机关等部门的协助调查,分级监管,实现各部门之间的联合协作,共同打击骗税行为,加大检查力度,在萌芽中就爱将其抑制掉。另一方面,加强对骗税行为的惩罚力度。不断完善出口骗税的相关法律,加大惩罚力度。对于出口骗税的企业,严格按照《中华人民共和国税收征收管理法》、《中华人民共和国刑法》中的相关规定其行追究政责任和刑事 责任,对于公职人员利用职务便利与不法分子相互勾结、共同骗税、损害国家利益的行为,严厉打击,追究其相关的责任,堵住出口退税政策监管中的漏洞。【4】 五、出口退税的意义 所谓出口退税 ,即外贸商品出口后 ,税务部门将出口货物在国内生产和流通过程中所缴纳的间接税予以退还 ,使外贸商品以不含税的价格进入国际市场。出口退税的理论和实践意义主要在于:(一)对出口货物实行退(免)税避免了国际贸易中的双重课税。从税法的原理进行分析 ,间接税属于转嫁税 ,虽然是对生产和流通企业征收,但实际上是由最终消费者负担。根据间接税的属地主义原则 ,各国消费者只负担本国的纳税 ,没有义务承担其他国家的税赋。由于出口货物并没有在国内消费 ,因此应将出口货物在国内生产和流通环节所缴纳的间接税退还;同时 ,出口国将货物出口以后 ,根据领域权原则 ,进口国为保护本国的工农业生产 ,增加财政收入 ,还要依据本国的税法规定对进口货物征收间接税。尽管进口货物是在国外生产的 ,但它在进口国境内消费 ,其间接税自然应由进口国的最终消费者承担。由此可见 ,出口国对出口货物实行退(免)税 ,无疑是避免了双重课税。这样既不歧视为内销进行的生产 ,也不歧视为外销进行的生产;既不歧视国内贸易 ,也不歧视国际贸易 ,符合了当代税收的公平原则。 (二)出口货物以不含税的价格进入国际市场 ,是进行公平竞争的必要手段。不同国家的货物要在国际市场上公平竞争 ,必然要求在税负上享有同等待遇。但是 ,由于各国的税制不同而使货物的含税成本相差较大 ,这样在国际市场上就无法进行公平竞争。从发展国际贸易的需要出发 ,要消除这种不利影响就必须使出口货物以不含税的价格进入国际市场。所以说 ,只有对出口货物实行退(免)税,才能保证本国的货物在国际市场上具有竞争力 ,从而达到公平竞争 ,促进出口的目的。如果不实行出口退税 ,实际上是限制出口 ,最终将影响出口国的经济发展 ,尤其是间接税所占比重较大的国家,实际出口退税将具有更重大的意义。 (三)实行出口退税可以促进进出口贸易的良性循环。从进出口的对应关系来讲 ,出口退税表面上看使国家财政少收了出口货物的间接税,但出口收汇是为了进口用汇,在货物进口时,进口国同样要向进口者征收相应的间接税,这样一退一收,国家的财政收入并不会减少。如果出口货物含税 ,其国际竞争力势必大大下降,出口收汇将会因此减少,进口用汇也会相应减少,由此引起的进出口贸易的萎缩不仅影响税源,而且会产生诸多的严重问题。【5】 六、结论 改革出口退税办法的条件已初步形成,出口退税所面临的诸多矛盾和弊端也迫切需要实现出口退税机制的创新,我国税制改革成果的巩固和扩大,对外贸易的持续、快速、健康的发展 ,都有赖于出口退税办法的日臻完善。出口退税利大于弊,在国家今后税制改革调整应继续坚持并不断完善以适应新时代的变化,为我国经济的发展添加动力。【1】参考孔凡民.推进省以下地方审计机关统一管理的思考[J].理财,2015 【2】摘自吕旭东建新赵氏集团有限公司刊名:会计师2015(10)【3】摘自景慧芬山西财政税务专科学校学报总11期第 5期 【4】摘自刘志刚大方略第三部出口退税管理中存在的问题 及完善对策 【5】摘自景慧芬山西财政税务专科学校学报总11期第5期 出口退税操作大全 第一章 总则 一、为进一步规范对生产企业出口货物“免、抵、退”税管理,保障国家出口货物“免、抵、退”税管理办法的正确贯彻实施,根据财政部、国家税务总局《关于进一步推进出口货物实行免抵退税办法的通知》(财税[2002]7号)、《国家税务总局关于印发〈生产企业出口货物“免、抵、退”税管理操作规程〉(试行)的通知》(国税发[2002]11号)和《中华人民共和国税收征收管理法》等规定,结合我省实际,特制定本规程。 二、生产企业自营或委托外贸企业代理出口(以下简称生产企业出口)自产货物,除另有规定外,一律实行免、抵、退税管理办法。生产企业出口视同自产货物,按照《国家税务总局关于明确生产企业出口视同自产产品实行免、抵、退税办法的通知》(国税发[2002]152号)的规定执行。 本规程所述生产企业,是指独立核算,经主管国税机关认定为增值税一般纳税人,并且具有实际生产能力的企业和企业集团。生产型集团公司就整个集团范围内实行“免、抵、退”税办法必须报经省局批准。小规模纳税人自营或委托代理出口货物实行免税办法,具体管理办法另行下达。 生产企业自营或委托代理出口自产的属于应征消费税的产品,实行免征消费税办法。 三、生产企业承接国外修理修配业务以及利用国际金融组织或外国政府贷款项目采用国际招标方式国内企业中标或外国企业中标后分包给国内企业所销售的机电产品,适用本规程规定。 第二章 生产企业出口退税登记 一、有进出口经营权的生产企业应按照《国家税务总局关于印发<出口货物退(免)税管理办法>的通知》(国税发[1994]031号)的规定,自取得进出口经营权之日起三十日内向退税机关申请办理出口退税登记。 二、没有进出口经营权的生产企业应在发生第一笔委托出口业务之前,持代理出口协议以及其他有关资料向退税机关申请办理出口退税登记。 三、生产企业在办理出口退税登记时,应填报《出口企业退税登记表》并提供以下资料: 1、法人营业执照或工商营业执照(副本);、税务登记证(副本);、中华人民共和国进出口企业资格证书(无进出口经营权的生产企业无需提供);、海关自理报关单位注册登记证明书(无进出口经营权的生产企业无需提供);、增值税一般纳税人申请认定审批表或年审审批表;、税务机关要求的其他资料,如代理出口协议等。 第二章 出口货物“免、抵、退”税计算 生产企业货物出口后,必须在口岸电子执法系统出口退税子系统查询到报关单出口信息后,方能计算出口货物免抵退税。生产企业出口货物“免、抵、退税额”应根据出口货物离岸价、出口货物退税率计算。 一、免抵退税额的计算 免抵退税额=出口货物离岸价×外汇人民币牌价×出口货物退税率-免抵退税额抵减额 免抵退税额抵减额=免税购进原材料价格×出口货物退税率 免税购进原材料包括国内购进免税原材料和进料加工免税进口料件,其中进料加工免税进口料件的价格为组成计税价格。国内购进原材料是指开具进料加工免税证明业务所涉及符合国家政策规定的国内购进免税原材料。 进料加工免税进口料件的组成计税价格=货物到岸价格+海关实征关税+海关实征消费税 二、当期应退税额和当期免抵税额的计算 1当期期末留抵税额≤当期免抵退税额时,当期应退税额=当期期末留抵税额 当期免抵税额=当期免抵退税额-当期应退税额 2当期期末留抵税额>当期免抵退税额时,当期应退税额=当期免抵退税额 当期免抵税额=0 “当期期末留抵税额”为当期《增值税纳税申报表》的“期末留抵税额”。 3、当期有应纳税额时,当期免抵税额=当期免抵退税额 三、免抵退税不得免征和抵扣税额的计算 免抵退税不得免征和抵扣税额=当期出口货物离岸价×外汇人民币牌价×(出口货物征税税率-出口货物退税率)-免抵退税不得免征和抵扣税额抵减额 免抵退税不得免征和抵扣税额抵减额=免税购进原材料价格×(出口货物征税税率-出口货物退税率)。 四、新发生出口业务的生产企业自发生首笔出口业务之日起12个月内的出口业务,不计算当期应退税额,当期免抵税额等于当期免抵退税额;未抵顶完的进项税额,结转下期继续抵扣,从第13个月开始按免抵退税计算公式计算当期应退税额。 第三章 出口货物“免、抵、退”税会计处理 一、出口货物销售收入的记帐时间 出口货物销售收入的记帐时间是按权责发生制的原则确定的。陆运以取得承运货物收据或铁路联运单,海运以取得出口装船提单,空运以取得运单,并向银行办理交单(预交货款不通过银行交单的,仅以取得以上提单、运单为依据),作为收入的实现。 生产企业委托代理出口的货物,以取得受托方提供的出口货物报关单、出口货物专用发票等有关退税单证的日期为出口货物销售收入的实现。 生产企业当期货物出口并按财务会计制度规定确认出口货物销售收入后,如果在口岸电子执法系统出口退税子系统查询不到相应的出口货物报关单电子信息,在办理纳税申报时应就无信息出口额计提销项税额。 二、出口货物销售收入的入帐依据 按企业会计制度规定,出口货物的销售收入一律以离岸价(FOB)为入帐基础。出口货物离岸价(FOB)以出口发票上的离岸价为准(委托代理出口的,出口发票可以是委托方开具的或受托方开具的),若以其他价格条件成交的,应扣除按会计制度规定允许冲减出口销售收入的运费、保险费、佣金等。企业在办理免抵退税申报时可按照实际发生的运费、保险费、佣金等对应据实扣除或按照海关报关单(“口岸电子执法系统”电子信息)载明的数据扣除,若申报数与实际支付数有差额的,在下次退免税申报时调整或年终清算时一并调整。若出口企业不能如实反映离岸价,税务机关有权按照《中华人民共和国税收征收管理法》、《中华人民共和国增值税暂行条例》等有关规定予以核定。 三、记帐汇率的确认 企业在生产经营过程中发生的外币业务,应当将有关外币金额折合为人民币金额记账。折合汇率可以采用固定汇率或变动汇率。采用固定汇率,应以当月1日市场汇率(原则为市场汇率的中间价)记帐;也可采用变动汇率记帐,但汇率一经确定,须报主管退税机关备案,在一个出口内不得任意改变。如因情况特殊需要改变折合汇率的,必须经主管出口退税机关批准。 四、会计处理依据及会计处理规定 实行“免、抵、退”税办法的生产企业,在购进国内货物及接受应税劳务时,应按(93)财会字第83号《关于印发企业执行新税收条例有关会计处理规定的通知》的有关规定进行会计处理,即应按照增值税专用发票上注明的增值税额借记“应交税金-应交增值税(进项税额)”科目,注明的价款借记“原材料”科目,贷记“应付账款”等科目。 生产企业出口货物应免抵税额、应退税额和不予抵扣或退税的税额,应根据财会字[1995]21号《财政部关于调低出口退税率后有关会计处理的通知》的有关规定作如下处理: 借:应收出口退税-增值税 应交税金-应交增值税(出口抵减内销产品应纳税额) 产品销售成本 贷:应交税金-应交增值税(出口退税) -应交增值税(进项税额转出) 第四章 出口货物“免、抵、退”税申报 一、纳税申报 (一)申报程序 生产企业当月货物出口并在财务上做销售后,与“口岸电子执法系统”出口退税子系统的电子信息核对无误,于次月十日前向主管征税的基层征收管理部门办理增值税纳税申报。 (二)申报资料 生产企业向基层征收管理部门办理增值税纳税申报时,应提供下列资料: 1、《增值税纳税申报表》及其规定的附表; 2、退税机关确认的上期《生产企业出口货物免、抵、退税申报汇总表》(见附件一); 3、税务机关要求的其他资料。 二、免抵退税申报 (一)申报程序 生产企业于每月十二日前向县市区征税机关的退税部门(或岗位)办理退(免)税申报。 (二)申报资料 生产企业向县市区征税机关的退税部门(或岗位)办理“免、抵、退”税申报时,应提供下列凭证资料: 1、经基层征收管理部门审核签章的当期《增值税纳税申报表》; 2、《生产企业出口货物免、抵、退税申报汇总表》; 3、《生产企业出口货物免、抵、退税申报明细表》(见附件二); 4、有进料加工业务的还应填报 (1)《生产企业进料加工登记申报表》(见附件三); (2)《生产企业进料加工进口料件申报明细表》(见附件四); (3)《生产企业进料加工海关登记手册核销申请表》(见附件五); (4)《生产企业进料加工贸易免税证明》(见附件六); 5、装订成册的报表及原始凭证 (1)《生产企业出口货物免、抵、退税申报汇总表》; (2)《生产企业出口货物免、抵、退税申报明细表》; (3)与进料加工业务有关的报表; (4)出口货物报关单(出口退税专用联); (5)出口收汇核销单(出口退税专用联)或有关部门出具的中远期收汇证明; (6)属于委托出口的货物需提供“代理出口货物证明”和“代理出口协议”(副本); (7)出口货物海运费、保险费、佣金发票(复印件);(8)企业签章的出口发票; (9)生产企业出口视同自产货物应报送出口货物专用缴款书。 6、国内生产企业中标销售的机电产品,申报“免、抵、退”税时,除提供上述申报表外,应提供下列凭证资料: (1)招标单位所在地主管税务机关签发的《中标证明通知书》; (2)由中国招标公司或其他国内招标组织签发的中标证明(正本); (3)中标人与中国招标公司或其他招标组织签订的供货合同(协议); (4)中标人按照标书规定及供货合同向用户发货的发货单; (5)销售中标机电产品的普通发票或外销发票; (6)中标机电产品用户收货清单。 国外企业中标再分包给国内生产企业供应的机电产品,还应提供与中标人签署的分包合同(协议)。 7、主管退税机关要求附送的其他资料。 三、申报要求 1、生产企业当月出口货物后,在申报免、抵、退税出口额前,必须通过“口岸电子执法系统”出口退税子系统查询到相关出口信息后,方可申报。对没有电子数据(有纸质报关单的除外)的“免、抵、退”税出口货物,企业应根据出口货物征税税率将相应的出口额计算销项税额。 2、为保证增值税纳税申报和免抵退税申报的正确性,避免频繁的帐务调整,生产企业可在增值税纳税申报前采集出口明细申报电子数据,并登陆县市区征税机关退税部门(或岗位)工作站进行预申报,经预审后,再填报《增值税纳税申报表》有关项目。 3、《增值税纳税申报表》有关项目的申报要求 (1)“出口货物免税销售额”(9 栏)填写当期全部享受退免税政策的出口货物销售额,其中应免抵退税出口货物销售额为当期出口并在财务上做销售的全部(包括单证不齐全部分)销售额; (2)“免抵退货物不得抵扣税额”(16栏)按当期全部(包括单证不齐全部分)免抵退出口货物销售额与征退税率之差的乘积计算填报;有进料加工业务的应扣除“免抵退税不得免征和抵扣税额抵减额”,当“免抵退税不得免征和抵扣税额抵减额”大于“出口销售额乘征退税率之差”时,“免抵退货物不得抵扣税额”按0填报,其差额结转下期; 按“实耗法”计算的“免抵退税不得免征和抵扣税额抵减额”,为当期单证齐全部分进料加工贸易方式出口货物所耗用的进口料件组成计税价格与征退税率之差的乘积;按“购进法”计算的“免抵退税不得免征和抵扣税额抵减额”,为当期全部购进的进口料件组成计税价格与征退税率之差的乘积; (3)“免抵退税货物已退税额”(23栏)按照退税机关审核确认的上期《生产企业出口货物免、抵、退税申报汇总表》中的“当期应退税额”填报; (4)若《生产企业出口货物免、抵、退税申报汇总表》经审核,“累计申报数”与《增值税纳税申报表》对应项目的累计数不一致,企业应根据退税机关审核确认的《生产企业出口货物免、抵、退税申报汇总表》中“与增值税纳税申报表差额”栏内的数据,在下期增值税纳税申报时对《增值税纳税申报表》有关数据进行调整。 4、《生产企业出口货物免、抵、退税申报明细表》的申报要求 (1)企业按当期在财务上做销售的全部(包括单证不齐全部分)免抵退出口明细填报《生产企业出口货物免、抵、退税申报明细表》,对纸质单证不齐或信息不齐的,应在“单证不齐标志栏”内按填表说明做相应标志; (2)对前期出口货物单证不齐,当期收集齐全的,应在当期免抵退税申报时单独填报《生产企业出口货物免、抵、退税申报明细表》,一并申报参与免抵退税的计算。 5、《生产企业出口货物免、抵、退税申报汇总表》的申报要求 (1)“出口销售额乘征退税率之差”(12栏)按企业当期全部(包括单证不齐全部分)免抵退出口货物人民币销售额与征退税率之差的乘积计算填报; (2)“免抵退税不得免征和抵扣税额抵减额”(14栏)按退税机关当期开具或企业模拟出具的《生产企业进料加工贸易免税证明》中的“免抵退税不得免征和抵扣税额抵减额”填报; (3)“出口销售额乘退税率”(17栏)按企业当期出口单证齐全部分及前期出口当期收齐单证部分且经过退税部门审核确认的免抵退出口货物人民币销售额与退税率的乘积计算填报; (4)“免抵退税额抵减额”(18栏)按退税机关当期开具或企业模拟出具的《生产企业进料加工贸易免税证明》中的“免抵退税额抵减额”填报; (5)“与增值税纳税申报表差额”(2c或15c)为退税部门审核确认的“累计”申报数减《增值税纳税申报表》对应项目的累计数的差额,企业应做相应帐务调整并在下期增值税纳税申报时对《增值税纳税申报表》进行调整; 当本表免抵退税不得免征和抵扣税额与增值税纳税申报表差额(15c)不为0时,“当期应退税额”的计算公式需调整为:“当期应退税额”(24栏)按照增值税纳税申报表期末留抵税额(22栏)-与增值税纳税申报表差额(15c)”后的余额与“当期免抵退税额(20栏)”进行比较计算填报; (6)新发生出口业务的生产企业,12个月内“应退税额”按0填报,“当期免抵税额”与“当期免抵退税额”相等; 6、申报数据的调整 对前期申报错误的,当期可进行调整(或年终清算时调整),调整方法分为差额调整或全额调整。 (1)差额调整法 对前期少报出口额或低报征、退税率的,可在当期补报差额部分;前期多报出口额或高报征、退税率的,当期可以红字(或负数)差额数据冲减。 (2)全额调整法 首先用红字(或负数)将前期错误数据全额冲减,再重新按照实际数据全额申报。 对于按会计制度规定允许扣除的运费、保险费和佣金,与原申报时预估入帐值有差额的,或者本出口货物发生退运的,也可按上述两种方法进行调整。 第五章 出口货物 “免、抵、退”税单证办理 生产企业开展进料加工业务以及“免、抵、退”税凭证丢失需要办理有关证明的,在“免、抵、退”税申报期内申报办理。生产企业出口货物发生退运的,可以随时申请办理有关证明。 一、《生产企业进料加工贸易免税证明》的办理 (一)进料加工业务的登记。开展进料加工业务的企业,在第一次进料之前,应持进料加工贸易合同、海关核发的《进料加工登记手册》并填报《生产企业进料加工登记申报表》(见附件三),向主管退税机关办理登记备案手续。 (二)《生产企业进料加工贸易免税证明》的出具。开展进料加工业务的生产企业在向主管征税的基层征收管理部门办理纳税申报前,根据当期进料加工复出口情况向退税机关申请开具或模拟出具《生产企业进料加工贸易免税证明》,参与当期的纳税申报。模拟出具《生产企业进料加工贸易免税证明》后在退(免)税申报时需向退税机关申请出具正式的《生产企业进料加工贸易免税证明》,与模拟出具的差额部分在下期申报时予以调整。 采用“实耗法”的,《生产企业进料加工贸易免税证明》按当期单证齐全部分(含前期收齐单证)进料加工贸易方式出口货物所耗用的进料加工进口料件组成计税价格计算出具;采用“购进法”的《生产企业进料加工贸易免税证明》按当其全部购进的进口料件组成计税价格计算出具。《生产企业进料加工免税证明》原则上按照“计划分配率实耗法”进行管理,如需采用“购进法”进行管理的,必须上报省局批准。 (三)计划分配率实耗法 1、计划分配率的确定。退税机关根据进料加工手册中的“计划进口总值”和“计划出口总值”,计算确定该手册的计划分配率。 计划分配率=计划进口总值÷计划出口总值 计划进口总值为进料加工手册合同中扣除客供辅料后的进口总值。 2、进口料件组成计税价格的确定。 (1)当期单证齐全部分(含前期收齐单证)进料加工贸易出口货物离岸价×外汇人民币牌价×计划分配率〈剩余的购进的进口料件组成计税价格 进口料件组成计税价格=当期单证齐全部分(含前期收齐单证)进料加工贸易出口货物离岸价×外汇人民币牌价×计划分配率 (2)当期单证齐全部分(含前期收齐单证)进料加工贸易出口货物离岸价×外汇人民币牌价×计划分配率〉剩余的购进的进口料件组成计税价格 进口料件组成计税价格=剩余的购进的进口料件组成计税价格 3、进口料件不予抵扣税额抵减额=当期海关核销进口料件组成计税价格×(征税率-退税率) 4、免抵退税抵减额=当期海关核销进口料件组成计税价格×退税率 5、进料加工业务的核销。生产企业《进料加工登记手册》最后一笔出口业务在海关核销之后、《进料加工登记手册》被海关收缴之前,持手册原件及《生产企业进料加工海关登记手册核销申请表》到主管退税机关办理进料加工业务核销手续。主管退税根据进口料件和出口货物的实际发生情况出具《进料加工登记手册》核销后的《生产企业进料加工贸易免税证明》,与当期出具的《生产企业进料加工贸易免税证明》一并参与计算,具体办理手续如下: 实际分配率=(实际进口总值-剩余边角余料)÷(直接出口总值+间接出口总值+剩余残次成品) 实际进口总值不包括原材料调拨、进料退货物、进料转内销等用红字冲减的部分。 本手册应开证明的免税进口料件组成计税价格=进料加工直接出口总值×实际分配率 核销手册应补开证明的免税进口料件组成计税价格=本手册应开证明的免税进口料件组成计税价格-已开出免税证明的免税进口料件组成计税价格 核销手册应补开免证明的进口料件不予抵扣税额抵减额=核销手册应补开证明的免税进口料件组成计税价格×(征税率-退税率) 核销手册应补开免证明的进料加工免抵退税抵减额=核销手册应补开证明的免税进口料件组成计税价格×退税率 二、其他“免、抵、退”税单证办理。 (一)《补办出口货物报关单证明》。生产企业遗失出口货物报关单(出口退税专用)需向海关申请补办的,可在出口之日起六个月内凭主管退税部门出具的《补办出口报关单证明》,向海关申请补办。 生产企业在向主管退税部门申请出具《补办出口货物报关单证明》时,应提交下列凭证资料: 1、《关于申请出具(补办出口货物报关单证明)的报告》 2、出口货物报关单(其他未丢失的联次); 3、出口收汇核销单(出口退税专用); 4、出口发票; 5、主管退税部门要求提供的其他资料。 (二)《补办出口收汇核销单证明》。生产企业遗失出口收汇核销单(出口退税专用)需向主管外汇管理局申请补办的,可凭主管退税部门出具的《补办出口收汇核销单证明》,向外汇管理局提出补办申请。 生产企业向退税部门申请出具《补办出口收汇核销单证明》时,应提交下列资料: 1、《关于申请出具(补办出口收汇核销单证明)的报告》; 2、出口货物报关单(出口退税专用); 3、出口发票; 4、主管退税部门要求提供的其他资料。 (三)《代理出口未退税证明》。委托方(生产企业)遗失受托方(外贸企业)主管退税部门出具的《代理出口货物证明》需申请补办的,应由委托方先向其主管退税部门申请出具《代理出口未退税证明》。 委托方(生产企业)在向其主管退税部门申请办理《代理出口未退税证明》时,应提交下列凭证资料: 1、《关于申请出具(代理出口未退税证明)的报告》; 2、受托方主管退税部门已加盖“已办代理出口货物证明”戳记的出口货物报关单(出口退税专用); 3、出口收汇核销单(出口退税专用); 4、代理出口协议(合同)副本及复印件; 5、主管退税部门要求提供的其他资料。 (四)《出口货物退运已办结税务证明》。生产企业在出口货物报关离境、因故发生退运、且海关已签发出口货物报关单(出口退税专用)的,须凭其主管退税部门出具的《出口货物退运已办结税务证明》,向海关申请办理退运手续。 生产企业向主管退税部门申请办理《出口货物退运已办结税务证明》时,应提交下列资料: 1、《关于申请出具(出口货物退运已办结税务证明)的报告》; 2、出口货物报关单(出口退税专用); 3、出口收汇核销单(出口退税专用); 4、出口发票; 5、主管退税部门要求提供的其他资料。 第九章 特殊问题的处理 一、单证不齐的处理 对生产企业内超过六个月未收齐有关单证的部分或未办理“免、抵、退”税申报手续的部分,由基层征收管理部门在到期后次月10日前根据县市区征税机关的退税部门或退税岗位下达的《生产企业出口货物免、抵、退税调整通知》通知生产企业计提销项税额。 (一)内收齐出口单证的处理。对生产企业内超过6个月单证不齐补提销项税后又收齐有关出口单证的,于12月份红字冲销原帐务处理,参与12月份免抵退税申报。 (二)跨收齐出口单证的处理。对生产企业内未收齐出口单证,但已参与清算备案,且于次年6月30日之前收齐的部分,应根据总局国税函[2002]1138号文件的规定,实行单独申报、审批免抵税的管理办法,由主管退税机关按照免抵退税总额审批免抵税额。其帐务处理分以下两种情况: 1、对生产企业超过6个月单证不齐补提销项税后,内未收齐有关出口单证,但已参与清算备案并于次年6月30日前收齐的部分,于次年6月份通过“以前损益调整”冲减原补提的销项税金。 2、对生产企业内单证不齐未超过6个月并已参与清算备案的部分,如果跨连续计算超过6个月仍未收齐有关单证,应就未收齐单证部分计算销项税额。对计提销项税额后于次年6月30日之前收齐的部分,应于次年6月份红字冲销原帐务处理。 二、退关退运的处理 本出口货物发生退运的,可在下期用红字(或负数)冲减出口销售收入进行调整;以前出口货物发生退运的,应补缴原免抵退税款,应补税额=退运货物出口离岸价×外汇人民币牌价×出口货物退税率,补税预算科目为“出口货物退增值税”。若退运货物由于单证等原因已视同内销货物征税,则不需补缴税款。 三、“不予免征、抵扣和退税的税额”抵扣进项税额后的余额的处理 实行“免、抵、退”税的企业,必须严格按照规定的计算公式计算操作,对将“不予免征、抵扣和退税的税额”抵顶进项税额后的余额应按规定计算并作为企业的应交税金处理,不得挂账结转,也不得按零计算。 四、出口视同自产货物的免抵退税管理 生产企业应如实申报视同自产产品出口额,并按规定提供出口货物专用缴款书。征税机关应加强对出口视同自产产品的税收管理,基层征收管理部门对生产企业出口的视同自产产品应进行认真界定,并将认定结果随同企业免抵退税申报资料上报退税机关。退税机关对生产企业出口视同自产产品进行审核时,应核对出口货物专用缴款书信息。对超过当月自产产品出口额50%的,应上报省局核准后办理。第四篇:出口退税论文
第五篇:出口退税操作