




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
练习一1、把十进制数56,-74转化为对应的二进制数,并分别写出它们的8位原码和补码。2、什么是浮点数?计算机内部是如何存储浮点数的?3、什么是ASCII码?ASCII码编码方案有何特点?试述常用字符的大致编码顺序。4、什么是汉字的机内码?在计算机的内存中如何区分机内码与ASCII码?5、试述计算机内部采用二进制工作的原因,以及计算机的工作原理。6、试述程序设计的概念,以及程序设计的基本过程。7、什么是算法?算法有哪些特性和描述方法?算法与程序的关系如何?8、什么是高级语言?有哪些主要的高级语言?9、什么是标识符和关键字?它们分别有什么作用?10、标识符是如何构成的?使用标识符时应注意哪些问题?11、下列字符序列中,哪些可以构成合法的标识符?signed a-1 x_y_1 $use 0x56 sum num# _1234 age12、试述C程序的基本结构。13、试述C程序上机的全过程,并解释这过程中产生的各类错误的含义。练习二1、C语言的基本数据类型有哪些?数据类型对数据的表示和运算有什么约束?2、什么是常量?数值常量和符号常量有何区别?使用符号常量有什么好处?3、什么是变量?变量的名字、地址、值、类型有什么关系?4、如何定义变量?C语言中为什么规定变量必须先定义,后使用?5、常量也有数据类型,请问如何区分整型常量和实型常量的数据类型?6、字符常量与字符串常量的表示形式有何区别? a和a有什么不同?7、字符串常量34abn中有多少个字符?8、下列表达式计算时,哪些地方会发生类型转换?从什么类型转换到什么类型?表达式计算的结果是什么类型?值多少?(1) 2.5+2*7%2/4(2) 4*(2L+6.5)-12(3) 10/(5*3)(4) 2*10.0/(5*3)9、设有变量定义:float x=2.7,y=4.5; int a=8; 求表达式 y+a%5*(int)(x+y)/2%4 的值。10、执行下列程序,解释程序的运行结果,并修改程序使得它能输出正确的结果。#include int main() float x; x=45678*56789; printf(45678*56789=%fn, x);答:程序运行结果为:45678*56789=-1700959360.000000 。由于45678*56789=2594007942,已经超出了long类型的取值范围,所以结果为负数。修改后的程序如下:#include int main() double x; x=45678.0*56789; printf(45678*56789=%fn, x);修改后的程序运行结果为:45678*56789=2594007942.00000011、执行下列程序,解释程序的运行结果,从中体会常用转义字符的含义。#include int main() printf(_ab_ct_derftgn); printf(htibbj_kn);程序运行结果:第一个printf由于输出r光标又回到了最左边,原来屏幕上的_ab_c_(表示空格)都被接下来输出的ftg(实际上是输出了字符f、7个空格和字符g),而第二个printf由于输出bb删除了字符i和它前面的1个空格,所以得到以上运行结果。12、执行下列程序,解释程序的运行结果,从中体会字符和数的区别和联系。#include int main() int m,n,k; m=5*6; n=5*6; k=(5-0)*(6-0); printf(m,n,k=%d, %d, %dn, m,n,k);程序运行结果为:m,n,k=2862, 30, 30 。由于(5-0)起到了将字符5转换为数5的功能,(6-0)起到类似作用,所以变量n和k的值一样。而5*6实际上是字符5的ASCII码(53)乘以字符6的ASCII码(54),所以变量m的值为2862 。13、执行下列程序,解释程序的运行结果,从中体会前置和后置运算的区别。#include int main() int x=5,y,z; y=8-x+; printf(%d %dn, x,y); z=+x*2; printf(%d %dn, x,z);程序运行结果:由于第一个赋值语句中是后置运算,所以y的值=8-5=3,x的值加了1为6,而第一个赋值语句中是前置运算,x的值首先加了1为7,再乘以2,所以z的值为14 。练习三1、什么是结构化程序设计方法?结构化程序设计应遵循哪些原则?答:结构化程序设计方法是基于模块化、自顶向下、逐步求精和结构化程序设计等程序设计技术的总称。结构化程序设计方法应遵循:(1) 在总体设计阶段采用“自顶向下,逐步求精”的模块化设计方法;(2) 在详细设计阶段采用“基本结构,组合而成”的方法,就是程序不论大小,简单还是复杂,程序由三种基本结构(即顺序结构、选择结构和循环结构)组合而成;(3) 在最后的编码阶段应做到“清晰第一,效率第二”,并采用良好的程序设计风格,从而提高程序的可读性,便于调试时改正错误,也便于程序的维护。2、C语言的语句有哪几类?为什么说C语言是表达式语言?答:语言中语句可分为:表达式语句、函数调用语句、控制语句、复合语句和空语句五类。由于任何表达式加上分号“;”就能构成语句,所以称C语言是表达式语言。3、C语言中如何表示逻辑值“真”和“假”?一个值参加逻辑运算时又如何判断它是“真”还是“假”?答:C语言中逻辑值“真”和“假”分别用数“1”和“0”来表示,一个值参加逻辑运算时非0就认为是“真”,0才认为是“假”。4、设有变量定义:int a=3, b=8; 表达式 (a5) | (b=5) 求值后,b的值是多少?答:由于(a0)个学生要分班,每班k(k0)个学生,最后不足k个学生也编一班,试用条件表达式表示班级数。答:(n%k=0) ? n/k : n/k+16、设有整型变量n,以下选项中,构成死循环的是哪一个?A. n=100; do n+; while (n100);B. for (n=100 ; ; n=n%100+1) if (n100) break;C. n=100; while (n) -n;D. n=100; while (n-) ;答:B。注意A不构成死循环,因为n最终会溢出而成为负数。7、请消除下列程序中的2个语法错误。#include int main() int a,b; float x=5.7; a=10; scanf(%d, b); / 应改为:scanf(%d, &b); printf(a+b=%dn, a+b); printf(x=%dn, x); / 应改为:printf(x=%fn, x);8、如果执行下列程序时,数据的输入格式如下,请解释程序的运行结果。为了使得c1=A和c2=a,假定程序不做修改,应如何修改数据的输入格式?假定数据的输入格式不变,又应如何修改程序?从中体会一般情况下scanf的格式控制字符串中的普通字符不但起不到提示的作用,反而给用户的输入制造了麻烦。#include int main() int a, b; float x,y; char c1,c2; scanf(a=%d b=%d, &a,&b); scanf(%f%f, &x,&y); scanf(%c%c, &c1,&c2); printf(a=%d b=%dn, a,b); printf(x=%0.1f y=%0.1fn, x,y); printf(c1=%c c2=%cn, c1,c2);输入为:a=3b=7 /* 表示回车,表示空格 */8.56.1Aa输出为:a=3 b=7x=8.5 y=6.1c1=c2=A答:程序不做修改,数据的输入格式应修改为:a=3b=78.56.1Aa数据的输入格式不变,程序中最后一句输入语句应修改为:scanf(%*c%c%*c%c, &c1,&c2); / 当然还有其它修改方法9、编写一个程序,输入一个华氏温度f,输出对应的摄氏温度c。计算公式是:c=5/9*(f-32) 。#include int main() float f, c; printf(请输入华氏温度: ); scanf(%f, &f); c=5.0/9*(f-32); printf(对应的摄氏温度: %.2fn, c); return 0;10、假定某种手机套餐规定:月租费10元,可免费发送短信60条,超出部分每条0.10元;可免费与本地手机通话20分钟(包括打入与打出),超出部分每分钟0.15元;与本地固定电话通话可享受每分钟0.2元的优惠(没有免费通话时间)。在不考虑长途通话的情况下,输入某用户一个月发送短信的条数、与本地手机通话的分钟数和与本地固定电话通话的分钟数,程序计算并输出该用户这个月的手机通信费用。#include int main() int message, mobilecall, phonecall; float money; printf(请输入发送短信的条数、与本地手机通话的分钟数和与本地固定电话通话的分钟数: ); scanf(%d%d%d, &message, &mobilecall, &phonecall); money=10; if (message60) money += 0.1*(message-60); if (mobilecall20) money += 0.15*(mobilecall-20); if (phonecall0) money += 0.2*phonecall; printf(手机通信费用: %.2fn, money); return 0;11、编写一个程序,输入某乘客先后两次乘坐公交车的上车时间(假定在同一天内),程序判断时间间隔是否大于2小时并输出相应的信息。输入格式以及输出信息的格式如下所示,程序不考虑输入时间错误(如8:68:72)。提示:可将时间转换为秒为单位后再做减法。输入为:9:31:411:8:25 /* 表示回车,表示空格 */输出为:时间间隔=01:37:21 你能享受公交优惠1元。输入为:12:58:3715:2:49输出为:时间间隔=02:04:12 对不起,你不能享受公交优惠。#include int main() int h1,m1,s1,h2,m2,s2,h,m,s; long diff; printf(请输入先后两次乘坐公交车的上车时间(hh:mm:ss hh:mm:ss) ); scanf(%d:%d:%d %d:%d:%d, &h1,&m1,&s1,&h2,&m2,&s2); diff=(h2*3600L+m2*60+s2)-(h1*3600L+m1*60+s1); h=diff/3600; m=diff%3600/60; s=diff%60; printf(时间间隔=%02d:%02d:%02d , h,m,s); if (diff=7200) printf(你能享受公交优惠1元。n); else printf(对不起,你不能享受公交优惠。n); return 0;12、编写一个程序,输入三角形的三条边长,程序判断它是否能够构成三角形,能则输出三角形的面积,否则输出“不能构成三角形”。三角形面积计算公式:面积=s(s-a)(s-b)(s-c),其中,a,b,c为三角形的三条边长,s=(a+b+c)/2 。#include #include int main() float a,b,c,s,area; printf(请输入三角形的三条边长: ); scanf(%f%f%f, &a,&b,&c); if (a+bc & b+ca & a+cb) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(三角形的面积为: %.2fn, area); else printf(不能构成三角形!n); return 0;13、计算个人所得税征税问题。应纳税工资=工资总额-3500元,应纳税工资在1500元以下(含1500,以下同)的税率3%,1500元以上4500元以下的部分税率10%,4500元以上9000元以下的部分税率20%,9000元以上35000元以下的部分税率25%,输入工资总额(假定小于38500元),程序计算并输出个人所得税。个税计算公式如下:个税应纳税工资对应的税率速算扣除数(见下表)全月应纳税工资 税率% 速算扣除数(元) 不超过1500元 3 0 超过1500元至4500元 10 105 超过4500元至9000元 20 555 超过9000元至35000元 25 1005#include int main() float salary,paytax,tax; printf(请输入工资总额: ); scanf(%f, &salary); paytax=salary-3500; if (paytax=0) tax=0; else if (paytax=1500) tax=paytax*0.03; else if (paytax=4500) tax=paytax*0.1-105; else if (paytax=9000) tax=paytax*0.2-555; else tax=paytax*0.25-1005; printf(个人所得税为: %.2fn, tax); return 0;14、假定银行整存整取存款的存期有1, 2, 3, 5年四种,年利率分别为3.5%, 4.4%, 5%, 6.5%。输入存款的本金和存期(若输入的存期错误,应报错),程序计算并输出到期后的利息。利息=本金存期年利率。#include int main() double principal,rate,interest; int term; printf(请输入本金: ); scanf(%lf,&principal); printf(请输入存期: ); scanf(%d,&term); switch (term) case 1 : rate=3.5; break; case 2 : rate=4.4; break; case 3 : rate=5.0; break; case 5 : rate=6.5; break; default: printf(输入的存期错误!n); return 1; interest=principal*rate*0.01*term; printf(利息: %5.2lfn,interest); return 0;15、编写一个程序,输入年份和月份,输出该月的天数。#include int main() int y,m,d; printf(请输入年份和月份(yyyy-mm): ); scanf(%d-%d, &y,&m); switch (m) case 2: d=28; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: d=31; break; case 4: case 6: case 9: case 11: d=30; break; default: printf(输入的月份错误!n); return 1; if ( (m=2) & (y%4=0 & y%100!=0 | y%400=0) ) d+; printf(该月有%d天n, d); return 0;16、编写一个程序,输入一个正整数,要求以相反的顺序输出该数。例如,输入12345,则输出为54321。#include int main() int n; printf(请输入一个正整数: ); scanf(%d, &n); printf(反序输出该数: ); while (n!=0) printf(%d, n%10); n/=10; printf(n); return 0;17、编写一个程序,输入一行字符,输出其中的英文字母、数字字符和其他字符各有多少个。#include int main() int digit,letter,other; char ch; digit=letter=other= 0; printf(请输入一个字符串: ); while ( (ch=getchar()!= n ) if ( (ch=A & ch=a & ch=0 & ch=9 ) digit+; else other+; printf(各类字符个数:n ); printf(英文字母=%d, 数字=%d, 其他字符=%dn, letter,digit,other); return 0;18、编写一个程序,用e1+1/1!+1/2!+1/3!+1/n!,求e的近似值,直到1/n!10-6为止。#include int main() int n; float e,t; n=e=t=1; do t /= n; e += t; n+; while(t1e-6); printf(e=%fn, e); return 0;19、编写一个程序,用迭代法求数a的平方根,迭代公式为:xn+1=(xn+a/xn)/2,要求前后两次求出的x的差的绝对值小于10-5 。数a可从键盘上输入,x0可取a/2 。#include #include int main() float a,x1,x2; printf(请输入一个正数: ); scanf(%f, &a); x2=a/2; do x1=x2; x2=(x1+a/x1)/2; while( fabs(x2-x1)1e-5 ); printf(数%.2f的平方根=%fn, a,x2); return 0;20、假定某一大型比赛中有10名裁判同时为一名体操运动员打分,编写一个程序,输入这10名裁判的打分,输出去掉一个最高分和一个最低分后该运动员的平均得分。#include #define N 10int main() int i; float a,max,min,sum; max=0; min=10; sum=0; printf(请输入%d个裁判的打分:n, N); for (i=1; i=N; i+) scanf(%f, &a); if (maxa) min=a; sum += a; sum = (sum-max-min)/(N-2); printf(最高分=%.1f 最低分=%.1f 平均得分=%.3fn, max,min,sum); return 0;21、编写一个程序,输入10个互不相同的数,输出其中的最大数和次大数。#include #define N 10int main() int i; float a,max,smax; printf(请输入%d个互不相同的数:n, N); max=-1e30; for (i=1; imax) smax=max; max=a; else if (asmax) smax=a; printf(最大数=%f, 次大数=%fn, max,smax); return 0;22、编写一个程序,找出连续整数之和是500的所有整数序列。例如:500=98+99+100+101+102 。#include int main() int i,j,s,k,n; for (n=0,i=1; i250; i+) for (s=0,j=i; s500; j+) s += j; if (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考专业(法律)知识产权法-刑法学参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)民事诉讼法学-民事诉讼法学参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)合同法-西方法律思想史参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)刑事诉讼法学-民事诉讼法学参考题库含答案解析(5卷)
- 2025年学历类自考专业(工商企业管理)质量管理学-企业经营战略概论参考题库含答案解析(5卷)
- 2025年学历类自考专业(工商企业管理)-管理学原理参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)国际商务英语-国际商法参考题库含答案解析(5卷)
- 2025年交通事故和解协议书
- 2025房屋租赁居间合同
- 2025宠物租赁合同模板
- 轴承装配工标准化作业考核试卷及答案
- 曲臂高空作业车施工方案
- 09J202-1 坡屋面建筑构造(一)-1
- 中国马克思主义与当代(社会问题)
- 光伏并网逆变器调试报告
- EMR术的配合要点
- 1844年经济学哲学手稿课件
- 痰培养的采集及药敏结果判读课件
- 家庭医生签约服务业务培训课件
- 1-商务沟通基本原理
- 高血压护理查房ppt
评论
0/150
提交评论