收藏 分销(赏)

专升本c语言上机笔记.doc

上传人:w****g 文档编号:3530519 上传时间:2024-07-08 格式:DOC 页数:20 大小:163KB 下载积分:8 金币
下载 相关 举报
专升本c语言上机笔记.doc_第1页
第1页 / 共20页
专升本c语言上机笔记.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
专升本c语言上机笔记 第一部分:能够熟练使用一种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源文件(f3) l new:新建c源文件 l save:保存(ctrl+s不能用)(f2经常保存) l write to :当前另存为其它源文件 l quit:退出 l pick: 发开最近打开的源文件 l compile 编译:compile to obj l change dir 改变目录 run(运行)run edit(编辑命令) 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 默认路径的设置 8. 在tuboc中汉字无法显示 ,文件路径、scanf、printf做输出时也不能用汉字。 9. 在编写c程序时,该程序的所有变量一定要实现定义好,不要用到哪定义到哪,自己先分析程序。 10. 在turbo c中运行程序后,一般是看不到结束的,需要在程序最后一个大括号前加 getch(); 才能够看见程序结果。 11. 先编译后运行程序代码检查无误,运行时总是说stido.h 有问题,此时需要检查[options]菜下的【directoried】【include directoried】。如查出路径不一致,需要将整个tuboc 文件夹复制到指定的【include directoried】下。 12. 程序运行后,如果代码出现问题,需要重新编辑时,可能会出现无法输入代码的现象,此时需要按f6进入编辑状态。(菜单里面选编辑项然后按 回车) 13. 退出 turbo c, quit (alt+x)记得随时保存 14. 注意改写和插入的转换用insert 实例1:输入圆的半径分别计算出远的面积area,圆的周长c1,输出结果要有相应的文字说明。 #include <stdio.h> #define PI 3.1415 main() { double area,c1; int r; printf("please input radins of a circle:"); scanf("%d",&r); area=PI*r*r; c1=2*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_C\tc\INCLUDE)名为01] (注意getchar()才能显示) #include<stdio.h> #define PI 3.1415 main() { int r; double area; for(r=1;r<=10;r++) { area=PI*r*r; if(area>100) break; printf("%d %8.2f\n",r,area); } getchar(); } C++ C和c++注意事项: 1. 保存的默认路径: C:\JMSOFT\CYuYan 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。 #include "stdio.h" void 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.h" void main() { float a1,a2,a3; char opt; printf("请输入要计算的式子:"); scanf("%f %c %f",&a1,&opt,&a2); /*注意& 注意‘+’*/ 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题:求1~n正整数和。Sum别忘记赋初值=0 While: #include "stdio.h" void main() { int i=1,n; long sum=0 ; scanf("%d",&n); while(i<=n) { sum+=i; i++; } printf("%d",sum); } Do-while: #include "stdio.h" void 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.h" void main() { int i,j,k; for(k=0;k<=20;k++) for(j=0;j<=50;j++) { i=100-k*5-j*2; if(i>=0) { printf("100元人民币可换%d张1元,%d张2元,%d张5元\n",i,j,k); } } } 第三部分:能够利用好数组求和、求最大值、最小值、查找、排序等经典实际问题。 数组题: 求最大值、最小值、求和、求平均 #include "stdio.h" #define N 50 main() { int a[N],max,min,sum,i,n; double ave; printf("请输入要录入成绩的学生人数,不多于50个人!\n"); scanf("%d",&n); printf("请输入%d个同学的成绩,成绩之间用空格分开:\n",n); for(i=0;i<n;i++) { scanf("%d",&a[i]);/* 不能是数组名*/ } max=min=sum=a[0]; /* 定义时不能连等 定以后能*/ for(i=1;i<n;i++) { if(max<a[i]) max=a[i]; if(min>a[i]) min=a[i]; sum+=a[i]; } ave=(double)sum/n; printf("最高分是:%d",max); printf("最低分是:%d",min); printf("总分是:%d",sum); printf("平均分:%f",ave); } 数组题:排序 #include "stdio.h" main() { int a[10]={10,9,8,2,5,1,7,3,4,6},i,j,k,temp; for(i=0;i<10;i++) { printf("%d",a[i]); } for(i=0;i<9;i++) { k=i; for(j=k+1;j<10;j++) /*元素的比较最小*/ { if(a[k]>a[j]) k=j; } temp=a[i]; a[i]=a[k]; a[k]=temp; } printf("\n"); for(i=0;i<10;i++) { printf("%d",a[i]); } } 数组题:查找 #include "stdio.h" #define N 50 main() { int a[N],i,n,score; printf("请输入要录入成绩的学生人数,不多于50个人!\n"); scanf("%d",&n); printf("请输入%d个同学的成绩,成绩之间用空格分开:\n",n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } printf("请输入要查找的成绩:"); scanf("%d",&score); for(i=0;i<n;i++) { if(a[i]==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 97 64 第三趟(3次) (不动)59 72 97 64 第四趟(2次) (不动)64 97 72 第五趟(1次) (不动)72 97 #include "stdio.h" #define N 50 float 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 score[N],ma,mi,s,ave; int i,n; printf("请输入学生的人数不能超过50人!\n"); scanf("%d",&n); printf("请输入%d个学生的成绩输入的成绩用空格分开!\n",n); for(i=0;i<n;i++) { scanf("%f",&score[i]); } ma=max(score,n); /*数组能够不写[]里的*/ mi=min(score,n); s=sum(score,n); ave=average(score,n); sort(score,n); /*排序函数没返回值不能用“=”*/ printf("最高分:%f\n",ma); printf("最低分:%f\n",mi); printf("总分是:%f\n",s); printf("平均分:%f\n",ave); } float max (float a[],int length) { int i; float max; max=a[0]; for(i=1;i<length;i++) { if(max<a[i]) max=a[i]; } return max; } float min (float a[],int length) /*把最大值函数复制改max为min '<'改为'>'*/ { int i; float min; min=a[0]; for(i=1;i<length;i++) { if(min>a[i]) min=a[i]; } return min; } float sum (float a[],int length) /*把最小值函数复制改min为sum >改为sum+=a[i]*/ { int i; float sum; sum=a[0]; for(i=1;i<length;i++) { sum+=a[i]; } return sum; } float average (float a[],int length) /*把最小值函数复制改函数名sum 为average return改为 return sum/length;*/ { int i; float sum; sum=a[0]; for(i=1;i<length;i++) { sum+=a[i]; } return sum/length; } void sort (float a[],int length) /*排序没返回值*/ { { int i,j,k; float temp; for(i=0;i<length-1;i++) { k=i; /*重点填空 k是基准*/ for(j=k+1;j<length;j++) /*j是基准点k后面的数*/ { if(a[k]>a[j]) k=j; /*小的放k里*/ } temp=a[i]; a[i]=a[k]; a[k]=temp; } printf("从小到大排序为:"); for(i=0;i<length;i++) { printf("%4.1f ",a[i]); } printf("\n"); } 函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己) 举例 : int ff(int n) { S=ff() } #include "stdio.h" int fac(int m) /*递归调用*/ { int s; if(m<0) printf("错误的数据请重新输入"); else if (m==0||m==1) s=1; else s=m*fac(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,数出n个数,最后一个数的下标) 第i个数开始数:这个数的下标是i-1 数n个数,最后一个数的下标是i-1+n-1 第4个数开始数:这个数的下标是3 数出5个数,最后一个数的下标:4-1+5-1=7 I=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=&a[0] p=&a[2] #include "stdio.h" void main() { int a[10],i,p,num,*q1,*q2,temp; printf("请输入十个已近按升序排序好的整数!\n"); for(i=0;i<10;i++) { scanf("%d",&a[i]); } printf("请输入指定的位置:"); scanf("%d",&p); printf("请输入重新排序的数量:"); scanf("%d",&num); for(q1=&a[p-1],q2=&a[p-1+num-1];q1<q2;q1++,q2--) /* p是int不是地址 */ { temp=*q1; *q1=*q2; *q2=temp; } for(i=0;i<10;i++) { printf("%3d",a[i]); } } 第六部分:能够定义和使用结构体类型变量(结构体指针变量)。 结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。 (结构体类型可不写) #include "stdio.h" void main() { struct score //score是结构体类型就像 int,该类型能够定义变量、指针变量 { float eng; float math; float sum; }sc1,*p; //sc1是score类型的变量 p=&sc1; /*p要想调用成员,必须和结构体变量搭建关系sc1.eng sc1.math sc1.sum*/ scanf("%f %f",&sc1.eng,&sc1.math); //调用p->eng (*p).manth p->sum=sc1.eng+(*p).math; printf("%f",p->sum); } 第七部分:文件的打开、关闭和复制操作。(书前三例题) 总结:(其文件名时注意扩展名) 一、 用字符型数组存放文件名,经过控制台输入文件名 1、 程序的默认路径 C:\JMSOFT\CYuYan\bin (控制台标题栏写的) 2、 读取的文件要放在默认的路径下,能够直接输入文件名称。 3、 如果读取的文件没有存放在默认路径,需要写文件存放的全部路径,例如:C:\a.txt (不好使时用试试 C:\\JMSOFT\\CYuYan\\aa.txt) *注意存放文件名的数组的长度。 文件复制a 放b里题 #include "stdio.h" main() { FILE *in,*out; //文件类型的指针变量,存文件的全称 char infile[50],outfile[50]; //一个存读,一个存写注意[]内的大小 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); //读一个写一个 fclose(in); //关文件 fclose(out); } 命令行传参 C++: 运行菜单->编译成目标文件->生成可执行文件 点击带参数运行 不在默认里需要写路径 VC++的命令行传参路径: 1. 先建obj 2. 创立exe 3. 工程菜单->设置->调试选项卡->程序变量中输入参数。 4. 按!按键运行(和c++实验系统不一样) *在编译后运行前输入参数 *复制的文本文件应该和c的源程序文件放在同一个路径下。 #include "stdio.h" #include "stdlib.h" FILE *source,*target; void main(int argc,char *argv[]) { char c; if(argc!=3) printf("error!\n"); else { source=fopen(argv[1],"r"); target=fopen(argv[2],"w"); while(!feof(source)) /*只要不是文件尾就执行*/ { c=getc(source); putc(c,target); } fclose(source); fclose(target); } } 第二次课 内存变量存最后一次值 // /* */ 都是注释符 数组:存相同类型的变量 结构体:存放不同类型的变量 重点算法: 1. 求和 (求平均就是和 / 个数) sum= 0 或(第一个值) For( ) { Sum=sun+@ /*@可能是变量 数组 结构体成员*/ sum+= } 2. 求阶乘 (第归调用) P=1 For() { P=p*@ p*= } 3. 求极值 (循环 嵌套 分支 ) Max/min=一堆数中的第一个数 for { If(max/min </> a[i] ) (max在尖那面,min在开口那面) { Max/min = a[i] (把if条件复制下变=) } } 4. 交换 (得有第三变量) A,b,temp Temp=a; A=b; B=temp; 5. 排序=两个for+极值+交换 六个变量 两个累加器(i,j) 一个交换数的(temp) 一个换数组下标的 (k) 一个存比较数的数组a[n] 一个比较个数n For (i=0;i<比较数的个数-1) { K=I; For(j=k+1;j<比较数的个数;j++) { If(a[k]>a[j]) k=j; } Temp=a[i]; a[i]=a[k]; a[k]=temp; } 编程: 一.求和 1. 求1-100和 /*1到100的和*/ #include<stdio.h> void main() { int sum=0,i; for(i=0;i<=100;i++) /*i=0 或i=1都能够 不要落下=*/ { sum+=i; } printf("1到100的和为:%d",sum); } 2. 从键盘输入十个数求和 /*从键盘输入十个数求和*/ #include<stdio.h> void main() { int sum=0,i,n[10]; for(i=0;i<10;i++) {printf("请输入一个数:"); scanf("%d",&n); /*n得是地址*/ sum+=n; } printf("%d",sum); } 3. 结构体求和 当填空不能运行 #include<stdio.h> struct sru { char id[8]; char name[10]; int score; } void main() { int sum=0,i,; for(i=0;i<5;i++) { sum=sum+a[i].score; 或 um=sum+a[i]->score /*这里是程序填空*/ } } 二.求阶乘 1. #include "stdio.h" void main() { int p=1,i; for(i=1;i<=5;i++) /*i<n 1到几的阶乘就是几;注意int的范围*/ { p=p*i; } printf("%d",p); } 2. 求数组里的数的阶乘 就改 p=p*a[i]; 三.极值
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 专升本考试

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服