专升本c语言上机笔记文档格式.docx
《专升本c语言上机笔记文档格式.docx》由会员分享,可在线阅读,更多相关《专升本c语言上机笔记文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
11.先编译后运行程序代码检查无误,运行时总是说stido.h有问题,此时需要检查[options]菜下的【directoried】【includedirectoried】。
如查出路径不一致,需要将整个tuboc文件夹复制到指定的【includedirectoried】下。
12.程序运行后,如果代码出现问题,需要重新编辑时,可能会出现无法输入代码的现象,此时需要按f6进入编辑状态。
(菜单里面选编辑项然后按回车)
13.退出turboc,quit(alt+x)记得随时保存
14.注意改写和插入的转换用insert
实例1:
输入圆的半径分别计算出远的面积area,圆的周长c1,输出结果要有相应的文字说明。
#include<
stdio.h>
#definePI3.1415
main()
{
doublearea,c1;
intr;
printf("
pleaseinputradinsofacircle:
"
);
scanf("
%d"
&
r);
area=PI*r*r;
c1=2*PI*r;
Theareaofacircleid:
%f"
area);
Thec1ofacircleid:
c1);
}
实例2:
输出园的面积(半径为1-10)面积大于100时停止。
[在(C:
\Turbo_C\tc\INCLUDE)名为01](注意getchar()才能显示)
#include<
intr;
doublearea;
for(r=1;
r<
=10;
r++)
if(area>
100)
break;
%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;
x);
if(x%3==0&
&
x%7==0)
yes"
else
no"
Switch题:
编写程序实现计算器的功能:
读入两个数(a1和a2)及一个运算符(opt),计算表达式a1opta2的值,其中opt可以是+、-、*、/四中运算符中的任何一种(用switch语句实现)
floata1,a2,a3;
charopt;
请输入要计算的式子:
%f%c%f"
a1,&
opt,&
a2);
/*注意&
注意‘+’*/
switch(opt)
{
case'
+'
:
a3=a1+a2;
break;
/*注意break*/
-'
a3=a1-a2;
*'
a3=a1*a2;
/'
if(a2==0)
{printf("
被除数为零重新输入"
exit
(1);
}/*注意exit退出程序*/
a3=a1/a2;
default:
printf("
重新输入"
}
%f%c%f=%f"
a1,opt,a2,a3);
While和do-while题:
求1~n正整数和。
Sum别忘记赋初值=0
While:
inti=1,n;
longsum=0;
scanf("
n);
while(i<
=n)
sum+=i;
i++;
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)
100元人民币可换%d张1元,%d张2元,%d张5元\n"
i,j,k);
}
第三部分:
能够利用好数组求和、求最大值、最小值、查找、排序等经典实际问题。
数组题:
求最大值、最小值、求和、求平均
#defineN50
inta[N],max,min,sum,i,n;
doubleave;
请输入要录入成绩的学生人数,不多于50个人!
\n"
请输入%d个同学的成绩,成绩之间用空格分开:
n);
for(i=0;
i<
n;
i++)
a[i]);
/*不能是数组名*/
max=min=sum=a[0];
/*定义时不能连等定以后能*/
for(i=1;
if(max<
a[i])max=a[i];
if(min>
a[i])min=a[i];
sum+=a[i];
ave=(double)sum/n;
最高分是:
max);
最低分是:
min);
总分是:
平均分:
ave);
排序
inta[10]={10,9,8,2,5,1,7,3,4,6},i,j,k,temp;
10;
printf("
a[i]);
9;
k=i;
for(j=k+1;
j++)/*元素的比较最小*/
{
if(a[k]>
a[j])k=j;
}
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
查找
inta[N],i,n,score;
请输入要查找的成绩:
score);
if(a[i]==score)break;
if(i==n)
else
printf("
第四部分:
能够进行函数实参和形参的定义,以及参数的传递,能够使用函数的嵌套调用和递归调用,编写常见的的函数如:
求和、阶乘、计算平均分、排序等问题。
函数题:
利用函数调用求最大值、最小值、求和、求平均、排序(选择排序法做升序(小的在上))
选择排序:
设定一个变量,存小的数在数组中的下标,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;
请输入学生的人数不能超过50人!
请输入%d个学生的成绩输入的成绩用空格分开!
scanf("
score[i]);
ma=max(score,n);
/*数组可以不写[]里的*/
mi=min(score,n);
s=sum(score,n);
ave=average(score,n);
sort(score,n);
/*排序函数没返回值不能用“=”*/
最高分:
%f\n"
ma);
最低分:
mi);
总分是:
s);
平均分:
floatmax(floata[],intlength)
inti;
floatmax;
max=a[0];
length;
a[i])
max=a[i];
returnmax;
floatmin(floata[],intlength)/*把最大值函数复制改max为min'
<
'
改为'
>
*/
floatmin;
min=a[0];
min=a[i];
returnmin;
floatsum(floata[],intlength)/*把最小值函数复制改min为sum>
改为sum+=a[i]*/
floatsum;
sum=a[0];
sum+=a[i];
returnsum;
floataverage(floata[],intlength)/*把最小值函数复制改函数名sum为averagereturn改为returnsum/length;
returnsum/length;
voidsort(floata[],intlength)/*排序没返回值*/
floattemp;
length-1;
{
/*重点填空k是基准*/
j++)/*j是基准点k后面的数*/
if(a[k]>
a[j])
k=j;
/*小的放k里*/
a[k]=temp;
从小到大排序为:
%4.1f"
阶乘(递归调用:
一定要在自定义函数中不断地调用自己)
举例:
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;
请输入一个正整数:
y=fac(n);
%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;
请输入十个已近按升序排序好的整数!
请输入指定的位置:
p);
请输入重新排序的数量:
num);
for(q1=&
a[p-1],q2=&
a[p-1+num-1];
q1<
q2;
q1++,q2--)/*p是int不是地址*/
temp=*q1;
*q1=*q2;
*q2=temp;
%3d"
第六部分:
能够定义和使用结构体类型变量(结构体指针变量)。
结构体变量题:
利用结构体类型编写程序,输入一名同学的英语成绩和数学成绩,然后计算两科成绩的总和。
(结构体类型可不写)
structscore//score是结构体类型就像int,该类型可以定义变量、指针变量
floateng;
floatmath;
floatsum;
}sc1,*p;
//sc1是score类型的变量
p=&
sc1;
/*p要想调用成员,必需和结构体变量搭建关系sc1.engsc1.mathsc1.sum*/
%f%f"
sc1.eng,&
sc1.math);
//调用p->
eng(*p).manth
p->
sum=sc1.eng+(*p).math;
p->
sum);
第七部分:
文件的打开、关闭和复制操作。
(书前三例题)
总结:
(其文件名时注意扩展名)
一、用字符型数组存放文件名,通过控制台输入文件名
1、程序的默认路径C:
\JMSOFT\CYuYan\bin(控制台标题栏写的)
2、读取的文件要放在默认的路径下,可以直接输入文件名称。
3、如果读取的文件没有存放在默认路径,需要写文件存放的全部路径,例如:
C:
\a.txt
(不好使时用试试C:
\\JMSOFT\\CYuYan\\aa.txt)
*注意存放文件名的数组的长度。
文件复制a放b里题
main()
FILE*in,*out;
//文件类型的指针变量,存文件的全称
charinfile[50],outfile[50];
//一个存读,一个存写注意[]内的大小20以上
%s"
infile);
outfile);
if((in=fopen(infile,"
r"
))==NULL)/*打开infileoutfile两个文件*/
Cannotopeninfle.\n"
//没开成功
exit(0);
if((out=fopen(outfile,"
w"
))==NULL)
Cannotopenoutfile.\n"
while(!
feof(in))/*看看到没到尾部*/
fputc(fgetc(in),out);
//读一个写一个
fclose(in);
//关文件
fclose(out);
命令行传参
C++:
运行菜单->
编译成目标文件->
生成可执行文件
点击带参数运行不在默认里需要写路径
VC++的命令行传参路径:
1.先建obj
2.创建exe
3.工程菜单->
设置->
调试选项卡->
程序变量中输入参数。
4.按!
按键运行(和c++实验系统不一样)
*在编译后运行前输入参数
*复制的文本文件应该和c的源程序文件放在同一个路径下。
stdlib.h"
FILE*source,*target;
voidmain(intargc,char*argv[])
{
charc;
if(argc!
=3)
error!
source=fopen(argv[1],"
target=fopen(argv[2],"
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条件复制下变