版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程内容第一章程序设计和C语言第二章数据对象与计算第三章变量、函数和控制结构第四章基本程序设计技术第五章C程序结构(函数)第六章数组第七章指针第八章文件和输入输出第九章结构和其它数据机制第十章程序开发技术第十一章标准库重点控制结构顺序、选择、循环结构函数定义、声明及调用从问题到程序的编程思想程序的函数分解模块化程序设计难点循环递归基本输入、输出语句程序=数据结构+算法
程序程序规定了计算机执行的动作和动作的顺序。算法:解决问题的方法和步骤算法的几个特性有穷性确定性-无二义可执行性有0个或多个输入有0个或多个输出从问题到程序的程序设计思想也体现了算法的重要性要点1:运算符及表达式?已经学习哪几种运算符及表达式?优先级关系?自增、自减运算符算术运算符关系运算符逻辑运算符位运算符条件运算符赋值运算符逗号运算符要点2:C语言的基本数据类型C语言的基本数据类型有哪些?什么是常量?如何定义?什么是变量?如何定义?变量的存贮类型有哪几种?auto,register,static,extern变量从作用域的角度分哪几种?全局变量、局部变量要点3:条件if语句条件if语句有几种形式?Ifelse和switch开关语句的差别?要点4:循环语句循环语句有几种形式?循环结构的三要素是什么?如何从循环中跳出?要点5:函数如何定义函数?函数声明的意义及原则?如何调用函数?参数传递和函数返回值过程中类型不匹配时的转换原则?如何理解值参数?要点6:基本输入输出语句getchar()putchar()scanf()printf()数的批量输入输出:基本输入输出+循环结构第二章习题讲解1.指出下面的字符序列不是合法的标识符:_abc x+-3x1Xf_1__4Eoof___A$*24x__x__2bg—1 ____ Iam2.手工计算下列表达式的值1)125+01252)0XAF–0XFA3)24*3/5+64)36+-(5–23)/45)35*012+27/4/7*(12-4)210-7520403503.在下列表达式的计算过程中,在哪些地方将发生类型转换,各是从什么类型转换到什么类型,表达式计算的结果是什么?1)3*(2L+4.5f)–012+442)3*(int)sqrt(34)–sin(6)*5+0x2AF3)cos(2.5f+4)–6*27L+1526–2.4L第三章习题讲解2.设a=1,b=2,c=3,则u的值为:u=a?b:c;u=(a=2)?b+a:c+a;3.设a=1,b=2,c=0,则下列表达式的值为:a&&!((b||c)&&!a)!(a&&b)||c?a||b:a&&b&&c!(a+b<c)&&b<=c*a-bu=2u=41004.程序执行时将在哪些地方发生类型转换,程序打印的值是什么? intf(intn,floatm){ return(m+n)/4; } intmain(){ floaty=3; printf(“%d\n”,f(y,y+1)); return0;}18.定义函数doubletmax(double,double,double),返回三个数中的最大的。doubletmax(doublex,doubley,doublez){ doublemax=x; if(y>max)max=y; if(z>max)max=z; returnmax;}10.四边形的边长为a,b,c,d及一对对角之各angel,求四边形的面积。doubleQuaArea(doublea,doubleb,doublec,doubled,doublee){ doubles=(a+b+c+d)/2.; doublearea; area=sqrt((s-a)*(s-b)*(s-c)*(s-d)- a*b*c*d*cos(e)*cos(e)); returnarea;}有问题吗?补充题1:用if语句写程序判断是否为闰年
intRuiNian(intyear){ if(year%400==0 ||year%4==0&&year%100!=0) return1; else return0;}补充题2.求分段函数
y=xx<12x-11<=x<10-3x-11x>=10#include<stdio.h>intmain(){ doublex,y; printf("pleaseinputx\n"); scanf("%lf",&x); if(x<1){ y=x; printf("%lf",y); } elseif(1<=x&&x<10){ y=2*x-1; printf("%lf\n",y); } else{ y=3*x-11; printf("%lf\n",y); } return0;}有问题吗?补充题3给一个不多于3位的正整数,要求出它是几位数;分别输出每一位数字按新逆序输出各位数字,例如原数为321,应输出123算法思想:设a是整数变量;如果a<0或者a>999则输入错误如果a>=0并且a<10则输出a是个位数如果a>=10并且a<100则输出a是十位数个位数是a%10十位数是a/10如果a>=100并且a<1000则输出a是百位数个位数是a%10十位数是a/10%10百位数是a/100#include<stdio.h>
//程序分析intmain(){ intx,a,b,c,d;scanf("%d",&x); if(x/100>=10||x<0) printf("Inputerror!\n"); elseif(x/100>0){ a=x/100; b=x/10%10; c=x-a*100-b*10; d=c*100+b*10+a; printf("three,%d,%d,%d,%d\n",a,b,c,d);/*百位数,十位数,个位数,逆序*/ } elseif(x/10>0){ a=x/10; b=x%10; d=b*10+a; printf("two,%d,%d,%d\n",a,b,d);/*十位数,个位数,逆序*/ } else{ a=x; printf("one,%d,%d\n",a,a);/*个位数,逆序*/ } return0;}#include<stdio.h>intGradeIf(int);intGradeSwitch(int);intmain(){ intn; printf("Inputthemarkfrom0to99\n"); while(scanf("%d",&n)==1) {// GradeIf(n); GradeSwitch(n); } return0;}补充题4.从键盘输入学生的考试成绩,利用计算机将学生的成绩划分等级并输。90-99为A级,80-89为B级,70-79为C级,60-69为D级,0-59为E级。intGradeIf(intn){ if(n>99||n<0) printf("inputerror!\n"); elseif(n>=90) printf("ThegradeisA!\n"); elseif(n>=80) printf("ThegradeisB!\n"); elseif(n>=70) printf("ThegradeisC!\n"); elseif(n>=60) printf("ThegradeisD!\n"); else printf("ThegradeisE!\n"); return0;}intGradeSwitch(intn){ if(n>99||n<0) n=-1; else n=n/10; switch(n) { case-1:printf("Inputerror!\n");break; case9:printf("ThegradeisA!\n");break; case8:printf("ThegradeisB!\n");break; case7:printf("ThegradeisC!\n");break; case6:printf("ThegradeisD!\n");break; default:printf("ThegradeisE!\n"); } return0;}14.求100以内正整数的立方和longCubeSum(intn){ longsum=0; inti=1; while(i<=n) { sum=sum+i*i*i; i++; } returnsum;}15.写一个函数,取3个参数m,n,k输出m,m+k,m+2k,…直至最后一个不大于n的数voidPrintNum(intm,intn,intk){ while(m<=n) { printf(“%d\n”,m); m=m+k; }}16.自定义函数doublepower(doublex,intn),求出x的n次幂。doublePower(doublex,intn){ doubleexp=1; while(n>=1) { exp*=x; n--; } returnexp;}22.写一个程序打印1至100之间的被6或7整除的数;修改这个程序使得它之打出被6或7之一整除的数。intmain(){ inti=0; while(i<=100) { if((i%6==0&&i%7!=0)||(i%6!=0&&i%7==0)) printf("%d\n",i); } return0;}第四章习题讲解4.写函数计算1!+2!+…+k!longSumFactor(intn){ inti=1; longf=1,sum=0; while(i<=n) { f=f*i; sum=sum+f; i++; } returnsum;}9.用公式编程求圆周率的近似值#include<math.h>#definePI3.1415doublePai(void){ intn=1; doublesum=0.0; while(fabs(PI-sqrt(6*sum))>=1e-4) { sum=sum+1.0/(n*n); n++; } printf("Thenumberoftermsare%d.\n",n); returnsqrt(6*sum);}12.求利用公式反正弦函数的近似值doubleasinh(doublex){ inti,n=10,sign=-1; doubleterm,sum; term=x; sum=x; for(i=1;i<=n;i++) { term=term*x*x*(2*i-1)/(2*i); sum+=sign*term/(2*i+1)*(2*i-1); sign=-sign; } returnsum;}14.辗转相减求最大公约数intgcd(intm,intn){ if(m<n) returngcd(n,m); elseif(m==n) returnm; else returngcd(m-n,n);}intgcd1(intm,intn){ intr,t; if(m<n){t=m;m=n;n=t;} if(n==0)returnm; for(r=m-n;r!=0;r=m-n){ m=n;n=r; if(m<n){t=m;m=n;n=t;}}returnn;}16.求水仙花数voidmethod1(void){ inti,j,k; for(i=1;i<=9;i++) for(j=0;j<=10;j++) for(k=0;k<=10;k++) if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf("%d是水仙花数\n",i*100+j*10+k);}voidmethod2(void){ inti,m,n,l; for(i=100;i<=999;i++) { m=i/100; n=i/10%10; l=i%10; if(i==m*m*m+n*n*n+l*l*l) printf("%d是水仙花数\n",i); }}19.写程序读入一系列数,求最大数和次大数。inttmax(void){ intn,m,max1,max2; printf("Pleaseinputsomeintegers.\n"); scanf("%d%d",&n,&m); if(m>n) { max1=m; max2=n; } else { max1=n; max2=m; } while(scanf("%d",&n)==1) { if(max1<n){max2=max1;max1=n;} elseif(max2<n){max2=n;} } printf("\nmax1=%d,max2=%d\n",max1,max2); return0;}21.求折线段的面积doubleFigureArea(void){ doubley1,y2,area=0.0; printf("Pleaseinputaseriespositivefloatnumber.\n"); if(scanf("%lf",&y2)!=1)return0; while(scanf("%lf",&y1)==1) { area+=(y1+y2)/2.0; y2=y1; } returnarea;}补充题1:打印如下图案1121123211234321123211211voidFigure(intn){inti,j;for(i=1;i<=n;i++){ for(j=n-i;j>=1;j--) printf(""); for(j=1;j<=i;j++) printf("%d",j);for(j=i-1;j>=1;j--) printf("%d",j); printf("\n");}for(i=1;i<n;i++){for(j=1;j<=i;j++) printf(""); for(j=1;j<=n-i;j++) printf("%d",j); for(j=n-1-i;j>=1;j--) printf("%d",j); printf("\n");}}补充题2:用递归的方法求N阶勒让德多项式的值,递归公式为doublepn(intn,doublex){ doublevalue; if(n==0) value=1; elseif(n==1) value=x; else value=((2*n-1)*x*pn(n-1,x)-(n-1)*pn(n-2,x))/n; returnvalue;}补充题3:学生成绩管理系统菜单调用学生成绩管理系统求计科0905班学生高级语言成绩设计课的最高分、最低分、平均分和不及格的人数voidScoreInfSys(){ doublebiggest,smallest,sum,score; intcount=1,fail=0; scanf(“%lf”,&sum); biggest=smallest=sum; if(sum<60)fail++; while(scanf(“%lf”,&score)==1) { if(score>biggest)biggest=score; if(smallest<score)smallest=score; sum+=score; count++; if(score<60)fail++; } printf(“bigest=%f,smallest=%f,average=%f,fail=%d\n”, biggest,smallest,sum/count,fail);}voidCountCh(void){ intch; inti=0,j=0,k=0,m=0; while((ch=getchar())!='\n') { if((ch>=65&&ch<=90)||(ch>=97&&ch<=122)) i++; elseif(ch>=48&&ch<=57) j++; elseif(ch=='') k++; else m++; } printf("Charaters:%d,Numbers:%d,Spaces:%d,Others:%d\n",i,j,k,m);}补充题4.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。第五章习题讲解作业1.读程序写结果#include<stdio.h>intf1(int),f2(int);voidmain(){inti;for(i=2;i<5;i++)printf("f1(%d)=%d\t",i,f1(i));printf("\n");for(i=2;i<5;i++)printf("f2(%d)=%d\t",i,f2(i));printf("\n");}intf1(intx){intf=1;f*=x;returnf;}intf2(intx){staticintf=1;f*=x;returnf;}结果为:
f1(2)=2
f2(2)=2f2(3)=6f2(4)=24f1(3)=3f1(4)=4作业2.阅读下列程序写结果#include<stdio.h>inta=3,b=5;intmax(inta,intb){intc;c=a>b?a:b;returnc;}voidmain(){inta=8;printf(“%d”,max(a,b));}结果:810.用牛顿迭代法求方法ax^3+bx^2+cx+d=0在1附近的一个实根,系数a,b,c,d的值依次为1,2,3,4由主函数输入,求出根后由主函数输出。牛顿迭代法:设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为y=f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标x1=x0-f(x0)/f'(x0),称x1为r的一次近似值,过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与x轴的横坐标x2=x1-f(x1)/f'(x1)称x2为r的二次近似值,重复以上过程,得r的近似值序列{Xn},其中Xn+1=Xn-f(Xn)/f'(Xn),称为r的n+1次近似值。//牛顿迭代法求方程的根#include<stdio.h>doublef(doublea,doubleb,doublec,doubled,doublex);doublefd(doublea,doubleb,doublec,doubled,doublex);doubleroot(doublea,doubleb,doublec,doubled);voidmain(){ doublea,b,c,d,x; printf("输入方和的系数a,b,c,d\n"); scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d); x=root(a,b,c,d); printf("方程的根为:%lf\n",x); printf("当x为%lf时,函数的值为%lf\n",x,f(a,b,c,d,x));}程序代码doublef(doublea,doubleb,doublec,doubled,doublex){ return(a*x*x*x+b*x*x+c*x+d);}doublefd(doublea,doubleb,doublec,doubled,doublex){ return(3*a*x*x+2*b*x+3);}doubleroot(doublea,doubleb,doublec,doubled){ doublex1=1.2,x0; intn=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国高空逃生缓降器行业市场规模分析及投资策略研究报告
- 2025-2030年中国高压船坞清洗泵行业未来发展趋势及前景调研分析报告
- 2025-2030年中国铜冶炼行业市场竞争格局展望及投资策略分析报告
- 2025-2030年中国钢铁板材市场运行动态分析与营销策略研究报告
- 2025-2030年中国钛酸正丁酯市场风险评估与十三五规划分析报告
- 个人食品订购合同(2024版)3篇
- 2024浙江房产买卖合同(含装修标准)3篇
- 勘察项目技术创新与研发考核试卷
- 商业银行业务拓展策略考核试卷
- 2025年度终止合伙合同:智能交通系统合作终止协议
- 《国有控股上市公司高管薪酬的管控研究》
- 餐饮业环境保护管理方案
- 人教版【初中数学】知识点总结-全面+九年级上册数学全册教案
- 食品安全分享
- 矿山机械设备安全管理制度
- 计算机等级考试二级WPS Office高级应用与设计试题及答案指导(2025年)
- 造价框架协议合同范例
- 糖尿病肢端坏疽
- 心衰患者的个案护理
- 医护人员礼仪培训
- 无人机飞行安全协议书
评论
0/150
提交评论