《2023年专升本c语言上机笔记.doc》由会员分享,可在线阅读,更多相关《2023年专升本c语言上机笔记.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一部分:可以纯熟使用一种c程序集成环境对c程序集成环境对c程序进行编辑、编译、连接和运营。 Tubro c c/c+实验系统 visual c+使用Turbo C注意事项1. 启动turbo c双击 tc. exe 图标 进入界面,不能用鼠标 (使用alt+enter实现窗口和 全屏方式的转换)2. 按下回车 或esc,清楚提醒窗口3. Tubro C与其它程序窗口切换 alt+tab 4. 主菜单-esc-编辑菜单-f6-信息窗口状态 主菜单-f10-编辑菜单-f6-信息窗口状态5. 光标在菜单上 按回车进入展开选项 6. 退出菜单 esc 7.file文献l loade:打开已有c源文献
2、(f3)l new:新建c源文献l save:保存(ctrl+s不能用)(f2经常保存)l write to :当前另存为其他源文献l quit:退出l pick: 发开最近打开的源文献l compile 编译:compile to objl change dir 改变目录run(运营)runedit(编辑命令)n ins按键插入n del删除n ctrl+y删除一行n ctrl+n插入一行n Y删除当前行Compile(编译)l compile to obj 编译当前文献l likr exe file 链接生成可执行文献l makr exe file 连续完毕编译和连接option 默认途径
3、的设立8. 在tuboc中汉字无法显示 ,文献途径、scanf、printf做输出时也不能用汉字。9. 在编写c程序时,该程序的所有变量一定要实现定义好,不要用到哪定义到哪,自己先分析程序。10. 在turbo c中运营程序后,一般是看不到结束的,需要在程序最后一个大括号前加 getch(); 才可以看见程序结果。11. 先编译后运营程序代码检查无误,运营时总是说stido.h 有问题,此时需要检查options菜下的【directoried】【include directoried】。如查出途径不一致,需要将整个tuboc 文献夹复制到指定的【include directoried】下。12
4、. 程序运营后,假如代码出现问题,需要重新编辑时,也许会出现无法输入代码的现象,此时需要按f6进入编辑状态。(菜单里面选编辑项然后按 回车)13. 退出 turbo c, quit (alt+x)记得随时保存14. 注意改写和插入的转换用insert实例1:输入圆的半径分别计算出远的面积area,圆的周长c1,输出结果要有相应的文字说明。#include #define PI 3.1415main() double area,c1; int r; printf(please input radins of a circle:); scanf(%d,&r); area=PI*r*r; c1=2*
5、PI*r; printf(The area of a circle id :%f,area); printf(The c1 of a circle id:%f,c1);实例2:输出园的面积(半径为1-10)面积大于100时停止。 在(C:Turbo_CtcINCLUDE)名为01 (注意getchar()才干显示)#include#define PI 3.1415main()int r;double area;for(r=1;r100) break; printf(%d %8.2fn,r,area);getchar();C+C和c+注意事项:1. 保存的默认途径: C:JMSOFTCYuYan
6、2. 编译、生成可执行文献、运营可以分开操作,也可直接点击运营按钮。Vc+6.0注意事项:1. 开始 - microsoft visual c+ (进入程序)2. 文献-新建选项 -新建窗口中(文献选项) - c+source fiel - 给文献起名,必须要写.c -拟定- 代码编辑区- 保存3. 文献的存储途径要记住4. 保存文献后,编辑文献,随时保存5. 先编译、链接、再执行。6. vc+中可以写汉字第二部分:可以使用 if、switch 语句,while、do-while及for来解决实际问题的程序代码If题: 编写程序判断正整数即是3的倍数也是7的倍数,是输出yes ,否则输出 no
7、。#include stdio.hvoid main() int x; scanf(%d,&x); if(x%3=0&x%7=0) printf(yes); else printf(no);Switch题:编写程序实现计算器的功能:读入两个数(a1和a2)及一个运算符(opt),计算表达式a1 opt a2 的值,其中opt可以是+、-、*、/四中运算符中的任何一种(用switch语句实现)#include stdio.hvoid main()float a1,a2,a3;char opt;printf(请输入要计算的式子:);scanf(%f %c %f,&a1,&opt,&a2); /*注
8、意& 注意+*/switch(opt) case +:a3=a1+a2;break; /*注意break*/ case -:a3=a1-a2;break; case *:a3=a1*a2;break; case /:if(a2=0) printf(被除数为零重新输入); exit(1); /*注意exit 退出程序*/ a3=a1/a2;break; default:printf(重新输入);break; printf(%f%c%f=%f,a1,opt,a2,a3);While和do-while题:求1n正整数和。Sum别忘掉赋初值=0 While:#include stdio.hvoid m
9、ain() int i=1,n;long sum=0 ;scanf(%d,&n); while(i=n) sum+=i; i+; printf(%d,sum);Do-while:#include stdio.hvoid main() int i=1,n,sum=0; scanf(%d,&n); do sum+=i; i+; while(i=n); printf(%d,sum);For题:编写程序完毕用100元人民币换成1元、2元、5元的所有兑换方案。#include stdio.hvoid main() int i,j,k; for(k=0;k=20;k+) for(j=0;j=0) prin
10、tf(100元人民币可换%d张1元,%d张2元,%d张5元n,i,j,k); 第三部分:可以运用好数组求和、求最大值、最小值、查找、排序等经典实际问题。数组题: 求最大值、最小值、求和、求平均#include stdio.h#define N 50main() int aN,max,min,sum,i,n; double ave; printf(请输入要录入成绩的学生人数,不多于50个人!n); scanf(%d,&n); printf(请输入%d个同学的成绩,成绩之间用空格分开:n,n); for(i=0;in;i+) scanf(%d,&ai);/* 不能是数组名*/ max=min=su
11、m=a0; /* 定义时不能连等 定以后能*/ for(i=1;in;i+) if(maxai) min=ai; sum+=ai; ave=(double)sum/n; printf(最高分是:%d,max); printf(最低分是:%d,min); printf(总分是:%d,sum); printf(平均分:%f,ave); 数组题:排序#include stdio.hmain() int a10=10,9,8,2,5,1,7,3,4,6,i,j,k,temp; for(i=0;i10;i+) printf(%d,ai); for(i=0;i9;i+) k=i; for(j=k+1;ja
12、j) k=j; temp=ai; ai=ak; ak=temp; printf(n); for(i=0;i10;i+) printf(%d,ai); 数组题:查找#include stdio.h#define N 50main() int aN,i,n,score; printf(请输入要录入成绩的学生人数,不多于50个人!n); scanf(%d,&n); printf(请输入%d个同学的成绩,成绩之间用空格分开:n,n); for(i=0;in;i+) scanf(%d,&ai); printf(请输入要查找的成绩:); scanf(%d,&score); for(i=0;in;i+) i
13、f(ai=score)break; if(i=n) printf(no); else printf(yes); 第四部分:可以进行函数实参和形参的定义,以及参数的传递,可以使用函数的嵌套调用和递归调用,编写常见的的函数如:求和、阶乘、计算平均分、排序等问题。函数题:运用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))选择排序:设定一个变量,存小的数在数组中的下标,n个数(外层循环控制比较趟数 n-1,里层循环做每趟比较出一个最小数,控制比较次数)64 48 59 72 97 34第一趟(5次) 34 48 59 72 97 64第二趟(4次)(不动)48 59 72
14、 97 64第三趟(3次) (不动)59 72 97 64第四趟(2次) (不动)64 97 72第五趟(1次) (不动)72 97#include stdio.h#define N 50float max (float a,int length);float min (float a,int length);float sum (float a,int length);float average (float a,int length);void sort (float a,int length);main() float scoreN,ma,mi,s,ave;int i,n;printf(
15、请输入学生的人数不能超过50人!n);scanf(%d,&n);printf(请输入%d个学生的成绩输入的成绩用空格分开!n,n);for(i=0;in;i+)scanf(%f,&scorei); ma=max(score,n); /*数组可以不写里的*/ mi=min(score,n); s=sum(score,n); ave=average(score,n); sort(score,n); /*排序函数没返回值不能用“=”*/ printf(最高分:%fn,ma); printf(最低分:%fn,mi); printf(总分是:%fn,s); printf(平均分:%fn,ave);flo
16、at max (float a,int length) int i; float max; max=a0; for(i=1;ilength;i+) if(maxai) max=ai; return max;float min (float a,int length) /*把最大值函数复制改max为min */ int i; float min; min=a0; for(i=1;iai) min=ai; return min;float sum (float a,int length) /*把最小值函数复制改min为sum 改为sum+=ai*/ int i; float sum; sum=a0
17、; for(i=1;ilength;i+) sum+=ai; return sum;float average (float a,int length) /*把最小值函数复制改函数名sum 为average return改为 return sum/length;*/ int i; float sum; sum=a0; for(i=1;ilength;i+) sum+=ai; return sum/length;void sort (float a,int length) /*排序没返回值*/ int i,j,k; float temp; for(i=0;ilength-1;i+) k=i; /
18、*重点填空 k是基准*/ for(j=k+1;jaj) k=j; /*小的放k里*/ temp=ai; ai=ak; ak=temp; printf(从小到大排序为:); for(i=0;ilength;i+) printf(%4.1f ,ai); printf(n);函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例 : int ff(int n) S=ff() #include stdio.hint fac(int m) /*递归调用*/ int s; if(m0) printf(错误的数据请重新输入); else if (m=0|m=1)s=1; else s=m*fac(
19、m-1); /*重要*/ return s; main()int n,y;printf(请输入一个正整数:);scanf(%d,&n);y=fac(n);printf(%d!=%d,n,y); /*!阶乘符号 5的阶乘等于120*/ 第五部分:可以用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。规定编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序解决时规定使用指针方法。(例如:数列为2 4 6 8 10 12 14 16 18 20,若规定把第4个数开始数(第i个数,下标i-1) 排序(5个数的下标3+5-1
20、,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1 第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4 n=5时 n知道时/2知道换几次2 4 6 16 14 12 10 8 18 20*指针变量和普通变量搭建关系:Int a=5,*p;/普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a; *指针变量与一对数组搭建关系:Int a=1,2,3,4,5,*p;P=a;/p=&a0 p=&a2#include stdio.hvoid main() int a10,i,p,num,*q1,*
21、q2,temp; printf(请输入十个已近按升序排序好的整数!n); for(i=0;i10;i+) scanf(%d,&ai); printf(请输入指定的位置:); scanf(%d,&p); printf(请输入重新排序的数量:); scanf(%d,&num); for(q1=&ap-1,q2=&ap-1+num-1;q1q2;q1+,q2-) /* p是int不是地址 */ temp=*q1; *q1=*q2; *q2=temp; for(i=0;ieng (*p).manth p-sum=sc1.eng+(*p).math; printf(%f,p-sum);第七部分:文献的打
22、开、关闭和复制操作。(书前三例题)总结:(其文献名时注意扩展名)一、 用字符型数组存放文献名,通过控制台输入文献名1、 程序的默认途径 C:JMSOFTCYuYanbin (控制台标题栏写的)2、 读取的文献要放在默认的途径下,可以直接输入文献名称。3、 假如读取的文献没有存放在默认途径,需要写文献存放的所有途径,例如:C:a.txt (不好使时用试试 C:JMSOFTCYuYanaa.txt)*注意存放文献名的数组的长度。文献复制a 放b里题#include stdio.hmain() FILE *in,*out; /文献类型的指针变量,存文献的全称 char infile50,outfil
23、e50; /一个存读,一个存写注意内的大小 20以上 scanf(%s,infile); scanf(%s,outfile); if(in = fopen(infile, r)=NULL) /*打开infile outfile两个文献*/ printf(Cannot open infle.n); /没开成功 exit(0); if(out = fopen(outfile, w)=NULL) printf(Cannot open outfile.n); exit(0); while(!feof(in) /*看看到没到尾部*/ fputc(fgetc(in),out); /读一个写一个 fclos
24、e(in); /关文献 fclose(out);命令行传参C+:运营菜单-编译成目的文献-生成可执行文献点击带参数运营 不在默认里需要写途径 VC+的命令行传参途径:1. 先建obj2. 创建exe3. 工程菜单-设立-调试选项卡-程序变量中输入参数。 4. 按!按键运营(和c+实验系统不同样) *在编译后运营前输入参数*复制的文本文献应当和c的源程序文献放在同一个途径下。#include stdio.h#include stdlib.hFILE *source,*target;void main(int argc,char *argv) char c; if(argc!=3) printf(
25、error!n); else source=fopen(argv1,r); target=fopen(argv2,w); while(!feof(source) /*只要不是文献尾就执行*/ c=getc(source); putc(c,target); fclose(source); fclose(target); 第二次课内存变量存最后一次值 / /* */ 都是注释符数组:存相同类型的变量结构体:存放不同类型的变量 重点算法:1 求和 (求平均就是和 / 个数)sum= 0 或(第一个值)For( )Sum=sun+ /*也许是变量 数组 结构体成员*/ sum+=2 求阶乘 (第归调用
26、)P=1For()P=p* p*=3 求极值 (循环 嵌套 分支 ) Max/min=一堆数中的第一个数 forIf(max/min ai ) (max在尖那面,min在开口那面)Max/min = ai (把if条件复制下变=) 4 互换(得有第三变量)A,b,tempTemp=a;A=b;B=temp;5 排序=两个for+极值+互换六个变量 两个累加器(i,j) 一个互换数的(temp) 一个换数组下标的 (k) 一个存比较数的数组an 一个比较个数nFor (i=0;i比较数的个数-1) K=I;For(j=k+1;jaj) k=j; Temp=ai; ai=ak; ak=temp;编
27、程:一求和1. 求1-100和/*1到100的和*/#includevoid main() int sum=0,i; for(i=0;i=100;i+) /*i=0 或i=1都可以 不要落下=*/ sum+=i; printf(1到100的和为:%d,sum);2. 从键盘输入十个数求和/*从键盘输入十个数求和*/#includevoid main() int sum=0,i,n10; for(i=0;i10;i+) printf(请输入一个数:); scanf(%d,&n); /*n得是地址*/ sum+=n; printf(%d,sum);3. 结构体求和 当填空不能运营#includestruct sruchar id8;char name10;int score;void main() int sum=0,i,; for(i=0;iscore /*这里是程序填空*/ 二求阶乘1. #include stdio.hvoid main() int p=1,i; for(i=1;i=5;i+) /*in 1到几的阶乘就是几;注意int的范围*/ p=p*i; printf(%d,p);2. 求数组里的数的阶乘 就改 p=p*ai;三极值
限制150内