专升本c语言上机笔记.docx
《专升本c语言上机笔记.docx》由会员分享,可在线阅读,更多相关《专升本c语言上机笔记.docx(27页珍藏版)》请在冰点文库上搜索。
专升本c语言上机笔记
第一部分:
能够熟练使用一种c程序集成环境对c程序集成环境对c程序进行编辑、编译、连接和运行。
Tubrocc/c++实验系统visualc++
使用TurboC注意事项
1.启动turboc双击tc.exe图标进入界面,不能用鼠标(使用alt+enter实现窗口和全屏方式的转换)
2.按下回车或esc,清楚提示窗口
3.TubroC与其它程序窗口切换alt+tab
4.主菜单->esc->编辑菜单->f6->信息窗口状态
主菜单<-f10<-编辑菜单<-f6<-信息窗口状态
5.光标在菜单上按回车进入展开选项
6.退出菜单esc
7.
file文件
●loade:
打开已有c源文件(f3)
●new:
新建c源文件
●save:
保存(ctrl+s不能用)(f2经常保存)
●writeto:
当前另存为其他源文件
●quit:
退出
●pick:
发开最近打开的源文件
●compile编译:
compiletoobj
●changedir改变目录
run(运行)run
edit(编辑命令)
⏹ins按键插入
⏹del删除
⏹ctrl+y删除一行
⏹ctrl+n插入一行
⏹^Y删除当前行
Compile(编译)
●compiletoobj编译当前文件
●likrexefile链接生成可执行文件
●makrexefile连续完成编译和连接
option默认路径的设置
8.在tuboc中汉字无法显示,文件路径、scanf、printf做输出时也不能用汉字。
9.在编写c程序时,该程序的所有变量一定要实现定义好,不要用到哪定义到哪,自己先分析程序。
10.在turboc中运行程序后,一般是看不到结束的,需要在程序最后一个大括号前加getch();才能够看见程序结果。
11.先编译后运行程序代码检查无误,运行时总是说stido.h有问题,此时需要检查[options]菜下的【directoried】【includedirectoried】。
如查出路径不一致,需要将整个tuboc文件夹复制到指定的【includedirectoried】下。
12.程序运行后,如果代码出现问题,需要重新编辑时,可能会出现无法输入代码的现象,此时需要按f6进入编辑状态。
(菜单里面选编辑项然后按回车)
13.退出turboc,quit(alt+x)记得随时保存
14.注意改写和插入的转换用insert
实例1:
输入圆的半径分别计算出远的面积area,圆的周长c1,输出结果要有相应的文字说明。
#include
#definePI3.1415
main()
{
doublearea,c1;
intr;
printf("pleaseinputradinsofacircle:
");
scanf("%d",&r);
area=PI*r*r;
c1=2*PI*r;
printf("Theareaofacircleid:
%f",area);
printf("Thec1ofacircleid:
%f",c1);
}
实例2:
输出园的面积(半径为1-10)面积大于100时停止。
[在(C:
\Turbo_C\tc\INCLUDE)名为01](注意getchar()才能显示)
doublearea;
for(r=1;r<=10;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.开始->microsoftvisualc++(进入程序)
2.文件->新建选项->新建窗口中(文件选项)->c++sourcefiel->给文件起名,必须要写.c->确定->代码编辑区->保存
3.文件的存储路径要记住
4.保存文件后,编辑文件,随时保存
5.先编译、链接、再执行。
6.vc++中可以写汉字
第二部分:
能够使用if、switch语句,while、do-while及for来解决实际问题的程序代码
If题:
编写程序判断正整数即是3的倍数也是7的倍数,是输出yes,否则输出no。
#include"stdio.h"
voidmain()
intx;
scanf("%d",&x);
if(x%3==0&&x%7==0)
printf("yes");
else
printf("no");
Switch题:
编写程序实现计算器的功能:
读入两个数(a1和a2)及一个运算符(opt),计算表达式a1opta2的值,其中opt可以是+、-、*、/四中运算符中的任何一种(用switch语句实现)
floata1,a2,a3;
charopt;
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:
inti=1,n;
longsum=0;
scanf("%d",&n);
while(i<=n)
sum+=i;
i++;
printf("%d",sum);
Do-while:
inti=1,n,sum=0;
do
}while(i<=n);
For题:
编写程序完成用100元人民币换成1元、2元、5元的所有兑换方案。
inti,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);
第三部分:
能够利用好数组求和、求最大值、最小值、查找、排序等经典实际问题。
数组题:
求最大值、最小值、求和、求平均
#defineN50
inta[N],max,min,sum,i,n;
doubleave;
printf("请输入要录入成绩的学生人数,不多于50个人!
\n");
printf("请输入%d个同学的成绩,成绩之间用空格分开:
\n",n);
for(i=0;i{scanf("%d",&a[i]);/*不能是数组名*/}max=min=sum=a[0];/*定义时不能连等定以后能*/for(i=1;i{if(maxif(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(){inta[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"#defineN50main(){inta[N],i,n,score;printf("请输入要录入成绩的学生人数,不多于50个人!\n");scanf("%d",&n);printf("请输入%d个同学的成绩,成绩之间用空格分开:\n",n);for(i=0;i{scanf("%d",&a[i]);}printf("请输入要查找的成绩:");scanf("%d",&score);for(i=0;i{if(a[i]==score)break;}if(i==n){printf("no");}else{printf("yes");}} 第四部分:能够进行函数实参和形参的定义,以及参数的传递,能够使用函数的嵌套调用和递归调用,编写常见的的函数如:求和、阶乘、计算平均分、排序等问题。函数题:利用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))选择排序:设定一个变量,存小的数在数组中的下标,n个数(外层循环控制比较趟数n-1,里层循环做每趟比较出一个最小数,控制比较次数)644859729734第一趟(5次)344859729764第二趟(4次)(不动)4859729764第三趟(3次)(不动)59729764第四趟(2次)(不动)649772第五趟(1次)(不动)7297 #include"stdio.h"#defineN50floatmax(floata[],intlength);floatmin(floata[],intlength);floatsum(floata[],intlength);floataverage(floata[],intlength);voidsort(floata[],intlength);main(){floatscore[N],ma,mi,s,ave;inti,n;printf("请输入学生的人数不能超过50人!\n");scanf("%d",&n);printf("请输入%d个学生的成绩输入的成绩用空格分开!\n",n);for(i=0;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);}floatmax(floata[],intlength){inti;floatmax;max=a[0];for(i=1;i{if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
scanf("%d",&a[i]);/*不能是数组名*/
max=min=sum=a[0];/*定义时不能连等定以后能*/
for(i=1;i{if(maxif(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(){inta[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"#defineN50main(){inta[N],i,n,score;printf("请输入要录入成绩的学生人数,不多于50个人!\n");scanf("%d",&n);printf("请输入%d个同学的成绩,成绩之间用空格分开:\n",n);for(i=0;i{scanf("%d",&a[i]);}printf("请输入要查找的成绩:");scanf("%d",&score);for(i=0;i{if(a[i]==score)break;}if(i==n){printf("no");}else{printf("yes");}} 第四部分:能够进行函数实参和形参的定义,以及参数的传递,能够使用函数的嵌套调用和递归调用,编写常见的的函数如:求和、阶乘、计算平均分、排序等问题。函数题:利用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))选择排序:设定一个变量,存小的数在数组中的下标,n个数(外层循环控制比较趟数n-1,里层循环做每趟比较出一个最小数,控制比较次数)644859729734第一趟(5次)344859729764第二趟(4次)(不动)4859729764第三趟(3次)(不动)59729764第四趟(2次)(不动)649772第五趟(1次)(不动)7297 #include"stdio.h"#defineN50floatmax(floata[],intlength);floatmin(floata[],intlength);floatsum(floata[],intlength);floataverage(floata[],intlength);voidsort(floata[],intlength);main(){floatscore[N],ma,mi,s,ave;inti,n;printf("请输入学生的人数不能超过50人!\n");scanf("%d",&n);printf("请输入%d个学生的成绩输入的成绩用空格分开!\n",n);for(i=0;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);}floatmax(floata[],intlength){inti;floatmax;max=a[0];for(i=1;i{if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
if(maxif(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(){inta[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"#defineN50main(){inta[N],i,n,score;printf("请输入要录入成绩的学生人数,不多于50个人!\n");scanf("%d",&n);printf("请输入%d个同学的成绩,成绩之间用空格分开:\n",n);for(i=0;i{scanf("%d",&a[i]);}printf("请输入要查找的成绩:");scanf("%d",&score);for(i=0;i{if(a[i]==score)break;}if(i==n){printf("no");}else{printf("yes");}} 第四部分:能够进行函数实参和形参的定义,以及参数的传递,能够使用函数的嵌套调用和递归调用,编写常见的的函数如:求和、阶乘、计算平均分、排序等问题。函数题:利用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))选择排序:设定一个变量,存小的数在数组中的下标,n个数(外层循环控制比较趟数n-1,里层循环做每趟比较出一个最小数,控制比较次数)644859729734第一趟(5次)344859729764第二趟(4次)(不动)4859729764第三趟(3次)(不动)59729764第四趟(2次)(不动)649772第五趟(1次)(不动)7297 #include"stdio.h"#defineN50floatmax(floata[],intlength);floatmin(floata[],intlength);floatsum(floata[],intlength);floataverage(floata[],intlength);voidsort(floata[],intlength);main(){floatscore[N],ma,mi,s,ave;inti,n;printf("请输入学生的人数不能超过50人!\n");scanf("%d",&n);printf("请输入%d个学生的成绩输入的成绩用空格分开!\n",n);for(i=0;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);}floatmax(floata[],intlength){inti;floatmax;max=a[0];for(i=1;i{if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
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);
排序
inta[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");
查找
inta[N],i,n,score;
for(i=0;i{scanf("%d",&a[i]);}printf("请输入要查找的成绩:");scanf("%d",&score);for(i=0;i{if(a[i]==score)break;}if(i==n){printf("no");}else{printf("yes");}} 第四部分:能够进行函数实参和形参的定义,以及参数的传递,能够使用函数的嵌套调用和递归调用,编写常见的的函数如:求和、阶乘、计算平均分、排序等问题。函数题:利用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))选择排序:设定一个变量,存小的数在数组中的下标,n个数(外层循环控制比较趟数n-1,里层循环做每趟比较出一个最小数,控制比较次数)644859729734第一趟(5次)344859729764第二趟(4次)(不动)4859729764第三趟(3次)(不动)59729764第四趟(2次)(不动)649772第五趟(1次)(不动)7297 #include"stdio.h"#defineN50floatmax(floata[],intlength);floatmin(floata[],intlength);floatsum(floata[],intlength);floataverage(floata[],intlength);voidsort(floata[],intlength);main(){floatscore[N],ma,mi,s,ave;inti,n;printf("请输入学生的人数不能超过50人!\n");scanf("%d",&n);printf("请输入%d个学生的成绩输入的成绩用空格分开!\n",n);for(i=0;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);}floatmax(floata[],intlength){inti;floatmax;max=a[0];for(i=1;i{if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
scanf("%d",&a[i]);
printf("请输入要查找的成绩:
scanf("%d",&score);
for(i=0;i{if(a[i]==score)break;}if(i==n){printf("no");}else{printf("yes");}} 第四部分:能够进行函数实参和形参的定义,以及参数的传递,能够使用函数的嵌套调用和递归调用,编写常见的的函数如:求和、阶乘、计算平均分、排序等问题。函数题:利用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))选择排序:设定一个变量,存小的数在数组中的下标,n个数(外层循环控制比较趟数n-1,里层循环做每趟比较出一个最小数,控制比较次数)644859729734第一趟(5次)344859729764第二趟(4次)(不动)4859729764第三趟(3次)(不动)59729764第四趟(2次)(不动)649772第五趟(1次)(不动)7297 #include"stdio.h"#defineN50floatmax(floata[],intlength);floatmin(floata[],intlength);floatsum(floata[],intlength);floataverage(floata[],intlength);voidsort(floata[],intlength);main(){floatscore[N],ma,mi,s,ave;inti,n;printf("请输入学生的人数不能超过50人!\n");scanf("%d",&n);printf("请输入%d个学生的成绩输入的成绩用空格分开!\n",n);for(i=0;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);}floatmax(floata[],intlength){inti;floatmax;max=a[0];for(i=1;i{if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
if(a[i]==score)break;
if(i==n)
第四部分:
能够进行函数实参和形参的定义,以及参数的传递,能够使用函数的嵌套调用和递归调用,编写常见的的函数如:
求和、阶乘、计算平均分、排序等问题。
函数题:
利用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))
选择排序:
设定一个变量,存小的数在数组中的下标,n个数(外层循环控制比较趟数n-1,里层循环做每趟比较出一个最小数,控制比较次数)
644859729734
第一趟(5次)344859729764
第二趟(4次)(不动)4859729764
第三趟(3次)(不动)59729764
第四趟(2次)(不动)649772
第五趟(1次)(不动)7297
floatmax(floata[],intlength);
floatmin(floata[],intlength);
floatsum(floata[],intlength);
floataverage(floata[],intlength);
voidsort(floata[],intlength);
floatscore[N],ma,mi,s,ave;
inti,n;
printf("请输入学生的人数不能超过50人!
printf("请输入%d个学生的成绩输入的成绩用空格分开!
for(i=0;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);}floatmax(floata[],intlength){inti;floatmax;max=a[0];for(i=1;i{if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
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);
floatmax(floata[],intlength)
inti;
floatmax;
max=a[0];
for(i=1;i{if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
if(maxmax=a[i];}returnmax;}floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/{inti;floatmin;min=a[0];for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
max=a[i];
returnmax;
floatmin(floata[],intlength)/*把最大值函数复制改max为min'<'改为'>'*/
floatmin;
min=a[0];
for(i=1;i{if(min>a[i])min=a[i];}returnmin;}floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
if(min>a[i])
min=a[i];
returnmin;
floatsum(floata[],intlength)/*把最小值函数复制改min为sum>改为sum+=a[i]*/
floatsum;
sum=a[0];
for(i=1;i{sum+=a[i];}returnsum;}floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/{inti;floatsum;sum=a[0];for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
returnsum;
floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;*/
for(i=1;i{sum+=a[i];}returnsum/length;}voidsort(floata[],intlength)/*排序没返回值*/{{inti,j,k;floattemp;for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
returnsum/length;
voidsort(floata[],intlength)/*排序没返回值*/
floattemp;
for(i=0;i{k=i;/*重点填空k是基准*/for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
k=i;/*重点填空k是基准*/
for(j=k+1;j{if(a[k]>a[j])k=j;/*小的放k里*/}temp=a[i];a[i]=a[k];a[k]=temp;}printf("从小到大排序为:");for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
if(a[k]>a[j])
k=j;/*小的放k里*/
printf("从小到大排序为:
for(i=0;i{printf("%4.1f",a[i]);}printf("\n");}函数题:阶乘(递归调用:一定要在自定义函数中不断地调用自己)举例:intff(intn){S=ff()}#include"stdio.h"intfac(intm)/*递归调用*/{ints;if(m<0)printf("错误的数据请重新输入");elseif(m==0||m==1)s=1;elses=m*fac(m-1);/*重要*/returns;}main(){intn,y;printf("请输入一个正整数:");scanf("%d",&n);y=fac(n);printf("%d!=%d",n,y);/*!阶乘符号5的阶乘等于120*/} 第五部分:能够用指针实现对一维数组的编程。指针题:设有一个数列,包含10个数(一堆数组),已经按升序排好。要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。进行逆序处理时要求使用指针方法。(例如:数列为2468101214161820,若要求把第4个数开始数(第i个数,下标i-1)排序(5个数的下标3+5-1,数出n个数,最后一个数的下标)第i个数开始数:这个数的下标是i-1数n个数,最后一个数的下标是i-1+n-1第4个数开始数:这个数的下标是3数出5个数,最后一个数的下标:4-1+5-1=7I=4n=5时n知道时/2知道换几次2461614121081820*指针变量和普通变量搭建关系:Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用P=&a;*指针变量与一对数组搭建关系:Int[a]={1,2,3,4,5},*p;P=a;//p=&a[0]p=&a[2]#include"stdio.h"voidmain(){inta[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{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
printf("%4.1f",a[i]);
阶乘(递归调用:
一定要在自定义函数中不断地调用自己)
举例:
intff(intn)
S=ff()
intfac(intm)/*递归调用*/
ints;
if(m<0)printf("错误的数据请重新输入");
elseif(m==0||m==1)s=1;
elses=m*fac(m-1);/*重要*/
returns;
intn,y;
printf("请输入一个正整数:
y=fac(n);
printf("%d!
=%d",n,y);/*!
阶乘符号5的阶乘等于120*/
第五部分:
能够用指针实现对一维数组的编程。
指针题:
设有一个数列,包含10个数(一堆数组),已经按升序排好。
要求编写程序,把从指定定位置开始的n个数按逆序重新排列并输出新的完整数列(一堆数组)。
进行逆序处理时要求使用指针方法。
(例如:
数列为2468101214161820,若要求把第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=4n=5时n知道时/2知道换几次
2461614121081820
*指针变量和普通变量搭建关系:
Inta=5,*p;//普通变量需要先定义后使用,指针变量必须先定义赋值后使用
P=&a;
*指针变量与一对数组搭建关系:
Int[a]={1,2,3,4,5},*p;
P=a;//p=&a[0]p=&a[2]
inta[10],i,p,num,*q1,*q2,temp;
printf("请输入十个已近按升序排序好的整数!
printf("请输入指定的位置:
scanf("%d",&p);
printf("请输入重新排序的数量:
scanf("%d",&num);
for(q1=&a[p-1],q2=&a[p-1+num-1];q1{temp=*q1;*q1=*q2;*q2=temp;}for(i=0;i<10;i++){printf("%3d",a[i]);}}第六部分:能够定义和使用结构体类型变量(结构体指针变量)。结构体变量题:利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。(结构体类型可不写)#include"stdio.h"voidmain(){structscore//score是结构体类型就像int,该类型可以定义变量、指针变量{floateng;floatmath;floatsum;}sc1,*p;//sc1是score类型的变量p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/scanf("%f%f",&sc1.eng,&sc1.math);//调用p->eng(*p).manthp->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;//文件类型的指针变量,存文件的全称charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上scanf("%s",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/{printf("Cannotopeninfle.\n");//没开成功exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");exit(0);}while(!feof(in))/*看看到没到尾部*/fputc(fgetc(in),out);//读一个写一个fclose(in);//关文件fclose(out);} 命令行传参C++:运行菜单->编译成目标文件->生成可执行文件点击带参数运行不在默认里需要写路径VC++的命令行传参路径:1.先建obj2.创建exe3.工程菜单->设置->调试选项卡->程序变量中输入参数。4.按!按键运行(和c++实验系统不一样)*在编译后运行前输入参数*复制的文本文件应该和c的源程序文件放在同一个路径下。#include"stdio.h"#include"stdlib.h"FILE*source,*target;voidmain(intargc,char*argv[]){charc;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=1For(){P=p*@p*=}3.求极值(循环嵌套分支)Max/min=一堆数中的第一个数for{If(max/min>a[i])(max在尖那面,min在开口那面){Max/min=a[i](把if条件复制下变
temp=*q1;
*q1=*q2;
*q2=temp;
printf("%3d",a[i]);
第六部分:
能够定义和使用结构体类型变量(结构体指针变量)。
结构体变量题:
利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。
(结构体类型可不写)
structscore//score是结构体类型就像int,该类型可以定义变量、指针变量
floateng;
floatmath;
}sc1,*p;//sc1是score类型的变量
p=&sc1;/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.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、如果读取的文件没有存放在默认路径,需要写文件存放的全部路径,例如:
\a.txt
(不好使时用试试C:
\\JMSOFT\\CYuYan\\aa.txt)
*注意存放文件名的数组的长度。
文件复制a放b里题
FILE*in,*out;//文件类型的指针变量,存文件的全称
charinfile[50],outfile[50];//一个存读,一个存写注意[]内的大小20以上
scanf("%s",infile);
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)/*打开infileoutfile两个文件*/
printf("Cannotopeninfle.\n");//没开成功
exit(0);
if((out=fopen(outfile,"w"))==NULL)
printf("Cannotopenoutfile.\n");
while(!
feof(in))/*看看到没到尾部*/
fputc(fgetc(in),out);//读一个写一个
fclose(in);//关文件
fclose(out);
命令行传参
C++:
运行菜单->编译成目标文件->生成可执行文件
点击带参数运行不在默认里需要写路径
VC++的命令行传参路径:
1.先建obj
2.创建exe
3.工程菜单->设置->调试选项卡->程序变量中输入参数。
4.按!
按键运行(和c++实验系统不一样)
*在编译后运行前输入参数
*复制的文本文件应该和c的源程序文件放在同一个路径下。
#include"stdlib.h"
FILE*source,*target;
voidmain(intargc,char*argv[])
charc;
if(argc!
=3)
printf("error!
source=fopen(argv[1],"r");
target=fopen(argv[2],"w");
feof(source))/*只要不是文件尾就执行*/
c=getc(source);
putc(c,target);
fclose(source);
fclose(target);
第二次课
内存变量存最后一次值
///**/都是注释符
数组:
存相同类型的变量
结构体:
存放不同类型的变量
重点算法:
1.求和(求平均就是和/个数)
sum=0或(第一个值)
For()
Sum=sun+@/*@可能是变量数组结构体成员*/sum+=
2.求阶乘(第归调用)
P=1
P=p*@p*=
3.求极值(循环嵌套分支)
Max/min=一堆数中的第一个数
for
If(max/min>a[i])(max在尖那面,min在开口那面)
Max/min=a[i](把if条件复制下变
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2