当前位置:文档之家› 同济大学c语言复习

同济大学c语言复习


•对操作数的要求
(1) (i+j)++, 3++ (╳) ++,-- 变量 (2) a%b a,b必须为整型
•结果的类型 int n,s=0; for(n=1;n<=10;n++) s+=1/n; 上述结果为1,若要得到正确结果,应用如下形式: s+=1.0/n 或:s+=1/(float)n
•用逻辑表达式表达某个命题 如: ch<„0‟||ch>„9‟ ch是非数字字符
int &q)
则相应的函数调用语句:
void main() {int a,b; ……
变量的地址做实参
fun(&a, b);
……}
变量做实参
•例:分析下面程序 #include “stdio.h” void f(float *p1,float *p2,float *s) {s=new float; 形参的指向已变,与实参 *s=*p1+*p2; 不再指向相同的内容 } void main() {float a=1.0, b=2.0,*s=&a; f(&a,&b,s); 1.0 cout<<*s<<endl; }
指针
运算
float *p,*q; 若已知p=1000,则 q=1004
p是指向变 量a的指针
则 : q-p的值为1 p+2的值为1008
b是变量a的引用
int a=3,*p=&a,*q1,*q2,&b=a;
q1=new int(6); // *q1的值为6
q2=new int[10];//q2指向存放10个整数的连续内存的首地址
(编程题中含一个带自定义函数的题目和一个文件操作的题目)
!
提示:考试系统的“帮助”菜单下有关于常用库函数的 功能介绍和头文件说明。
主要知识点
一、语法 标识符:
由字母、数字和下划线三种字符组成,且必须以字母或下划线开头。 关键字不能作为用户定义的标ar2 _abc a3 P1 不合法: int p[i] break 3a
函数定义在调用之后 故需函数说明
#include "iostream.h" void maxmin(int a[],int n,int *p ,int *q) {int i,max=a[0],min=a[0]; for(i=1;i<n;i++) { if (a[i]>max)max=a[i]; if (a[i]<min) min=a[i]; } *p=max; *q=min; } void main() { int i,n,a[100],max,min; cin>>n; for (i=0;i<n;i++) cin>>a[i]; maxmin(a,n,&max,&min); cout<<"max= "<<max<< " min= " <<min<<endl; }
delete p; ()
delete q1; delete q2;
指针和数组 若: int a[5]={1,3,5,7,9},*p=a+1; 则:*p+1的值为4 *(p+1)的值即p[1]的值为5 注意一些概念的区别: 指针变量做形参 若有函数:void fun(int *p,
变量的引用做形参
结构体 struct student{ int num; char name[20]; float score; }st={123456L,”zhang san”,88},stclass[30],*p=&st,st1;
i=1,j=1 i=1,j=2
当全局变量和局部变量同名时,局部变量起作用
int m=10,n=10; void a(int n) {n=15/n;m=m/2;} void main() {int n=3; a(n); cout<<“n=“<<n<<“,m=“<<m<<endl; } n=3,m=5
函数重载:
函数名相同
参数类型或参数个数不同 int fun(int a, int b)与 double fun(int a, int b)不是重载函数 int fun(int a, int b)与 int fun(int a)是重载函数
默认参数:
只能位于参数表列最右端 不能同时使用函数重载和默认参数 int fun(int a, int b, int c=10)正确 int fun(int a, int b=10, int c)不正确
变量的作用域和存储类别 静态变量只初始化一次,若未初始化,默认值为0. 动态变量每调用一次函数,便初始化一次。若未初始化,默认 值为不定值
void test() {int i=0; static int j=0; i++;j++; cout<<i<<j<<endl; } void main() {int i; test(); test(); }
x>=0&&x<=200&&x%2==0 x是0到200之间的偶数
• 用随机函数产生在某一区间的数或字符 rand()%101 rand()%51+50 char x; x=rand()%26+65;
• &&与||运算并结合自增、自减运算 已知 a=b= 1; 则执行以下语句 后,各变量的值为? --a&&++b; a=0, a=2, b=1 b=1
! !
考试系统使用注意(务必认真研读)
编程题上传前必须关闭VC应用程序,无法
正常关闭的也必须用任务管理器强行 关闭。否则会影响cpp文件的正确上传!
!
准备离场前,用“查看上传文件”菜单检查.cpp文 件是否正确上传,此检查步骤非常关键,具体操作见下 页。
1、 单击 此菜 单后 弹出 如下 窗口 3、用记事本打开该文件看 其内容是否为所编内容
2、 逐一打 开文件 夹查看 有否对 应的.cpp 文件
!
在“查看上传文件”菜单中只能检查.cpp文件是 否正确上传了,但不能在该打开窗口中直接对cpp文件进 行修改,若要进行修改,必须回到c:\ks文件夹下修改,并 关闭VC后重新上传,然后重新做以上检查步骤。
试题类型及分布:
题型及题量。具体如下: 单选部分:10题 程序填充:2题 编程部分:4题(其中两个编程题,两个改错题)
++a||--b;
初始化与赋值:
错误: int a=b=c=0; 应为: int a=0,b=0,c=0; 或:int a(0),b(0),c(0); 或: int a,b,c; a=b=c=0; • 引用 int x=5,&y=x; y是x的引用,二者同步变化.
输入和输出流 cin,cout
例: char c[20]; cin>>c; 若输入how do you do 则c的值为how void main() { char ch=„b‟, s[]=“abcde”; cout<<ch+2; // 输出 100 („d‟的ASCII码) 改为
返回指针值的函数 求一维数组a中的最大值。 int a[8]={45,6,35,-12,100,11,3,-40}; void main() {int *p,____(1)____; *max() p=max( ); cout<<*p; } int *max( ) //函数的返回值为指针 {int i,k=0; int t=a[0]; for(i=1;i<8;i++) if(t<a[i]) {t=a[i]; k=i; } return(___(2)___); &a[k] }
常量:
a+b
class public '\72'
合法: '\n' '\102 ' 不合法: 'ABC' 1.2e0.5
'\t ' M '[]'
运算符和表达式:
•结合性及优先级
例: (1) a+=a*2 a=a+(a*2) 若初始情况下a=3,则执行上述运算后a=? 9 (2) x==0?a++:b++ 若已知a=4,b=3,x=5 则a、b? (3)若已知int a[5]={0,2,4,6,8},*p=a; 设a的首地址为1000,则: 执行*p++后 表达式的值为0,p的值为1004 执行++*p后 表达式的值为1,p的值为1000 执行 *++p后 表达式的值为2,p的值为1004
int cube(int x) {x=x*x*x; return(x);} void main() {int x=5; x=cube(x); cout<<x<<endl; }
虽为传值调用,但 返回值赋值给x,故 结果为125
void int x=5; 无参函数,使用 void cube( ) 的全局变量,故 {x=x*x*x;} 结果为125 void main() {cube(); #include "iostream.h" cout<<x<<endl; } void cube(int &x) {x=x*x*x;} void main() 引用调用 {int x=5; cube(x); 结果为125 cout<<x<<endl;}
相关主题