浙江大学C颜晖原版c1课件
c语言课件第五章(颜辉)
x=x/10
scanf( “%d”, &x); while (x!=0){
digit = x %10; x = x/10 ; printf( “%d ”, digit); }
例4-10
# include <stdio.h> void main( ) { char c;
printf("Please input a character:\n"); c = getchar(); if(c>='a' && c <= 'z' || c>='A' && c <= 'Z')
sum-x
printf("sum=%d", sum);
}
输入 1 2 5 -10
输入 -10 1 2 5
scanf("%d", &x); while (x>0){
sum + = x; scanf("%d", &x); }; printf("sum=%d", sum); }
5.2 break 和 continue 语句
例T1-1 求1+2+3+4+……+ n
算法: i =1 to n
s=s+t t++ i++
算法: i =1 to n
s=s+i i++
程序段: s=0; for(i=1; i<=n; i++)
s=s+i;
例T1-2 求1+1/2+1/3+……+ 1/n
浙江大学C颜晖原版课件c2
精选可编辑ppt
7
变量的定义
int i, j, k; (定义i, j, k为整型变量) char c; (定义c为字符型变量) float x, y; double area, length;
变量名代表内存中的一个存储单元 用于存放该变量的值 该存储单元的大小由变量的数据类型决定
精选可编辑ppt
8
ai = 1; bi = -27; ci = 012;
整型变量的值是整数,它的取值范围有限 最小取值范围 [-32768,32767]
精选可编辑ppt
14
2.2.3 整型数据的输入输出
printf(格式控制, 输出参数1, ... , 输出参数n); scanf(格式控制, 输入参数1, ... , 输入参数n);
运行结果为: b,98 b,98 a,97
'b' 98
0110 0010
'b' 98
精选可编辑ppt
33
# include <stdio.h>
void main( ) {
char ch='b';
scanf("%c", &ch);
printf("%c,%d\n", ch, ch);
'A'+1 =?
精选可编辑ppt
27
2.4.2 字符变量
char c1, c2, c3;
int i;
c1='2'; c2='#';
i=65; 或
i='A';
c3='A'; 或
c3=65;
整型变量和字符变量的 定义和赋值可以互换 【 ASCII码范围】
c语言程序设计实验与习题指导颜晖答案
c语言程序设计实验与习题指导颜晖答案【篇一:c语言程序设计谭浩强版何钦铭颜晖版习题答案全集】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf(\n);for(i=1;i5;i++) /*以下为三重循环*/for(j=1;j5;j++)for (k=1;k5;k++){if (i!=ki!=jj!=k) /*确保i、j、k三位互不相同*/printf(%d,%d,%d\n,i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。
利润(i)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i=100000)bonus=i*0.1;else if(i=200000)bonus=bonus1+(i-100000)*0.075;else if(i=400000)bonus=bonus2+(i-200000)*0.05;else if(i=600000)bonus=bonus4+(i-400000)*0.03;else if(i=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(bonus=%d,bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
浙江大学c语言课件第十章(颜辉)
如:fp = fo文pe件n("使a.用da方t",式"r"() ASCII码文件):
▄ 作用:
“r” 仅从已建立的文件读取数据
1 2
在 在磁 内盘 存中中中找开“到辟w5文”1件2个仅a.把字da数节t 据的写缓到冲一区个新,建并文由件
fp指示文件缓冲“区a”起始仅位把数置据写到已建立的文件 3 把首块512字节数据:磁盘 缓冲器
文件类型
文件指针变量
▄C语言中允许同时使用多个文件,每个文件 都有各自的缓冲区,用不同的文件指针分别指 示。
问题:如何使fp与具体文件挂钩?
文件的打开
文件打开
以后程序只对文件指针
使文件指针与相进应行文操件作实,体即对用应f起p代来表磁盘
▄ 格式:
文件。
fp=fopen(“文件名”,“文件使用方 式”)
cw={hf时ifglp当eeu,t(ctffce(pc(fo!acp=f指,a(Eff)pp;向OabF))文;)=件=非末零尾 c=fgetc(fpa); }
{ printf("cannot close file a.dat!"); exit(0); }
if (fclose(fpb))
fclose(fp) = 0 正常 / 1 有错
文件
512字节
内存单元 用什么标内识存单元
文件名
文件
文件类型指针
▄使用一个文件指针,来指示文件缓冲区中具
体读写的位置。
文件指针变量
▄文件指针定义: FILE *fp ;
文件类型
数据 ……
fp 缓冲器
程序控制 ……
512字节
由操作 系统自 动完成
C语言程序设计(何钦铭_颜晖_主编)ppt课件
printf("%d, %x\n", 012, 012);
return 0;
}
0……01010
精选ppt课件2021
32
例6-2(2) 输入整型数据
# include <stdio.h> int main(void) {
int a, b;
input a, b: 17 17 15 17 f, 17
printf("input a, b:");
'\n' '\101' '\x41' 'A'
所有字符都可以用转义字符表示
精选ppt课件2021
26
6.2.2 变量
在程序运行过程中,其值可以被改变的量。
变量必须先定义,后使用 定义变量时要指定变量名和数据类型 变量应该先赋值,后引用
精选ppt课件2021
27
变量名:合法的标识符
变量的定义
整型、实型、字符型数据的存储
6.1.2 基本数据类型
整型、实型、字符型
精选ppt课件2021
4
6.1.1 数据的存储-整型数据
设整数在内存中用2个字节存储
1 000 0001 1000 0001 0 000 0001 1000 0001
符号位 1:负数 0:正数
精选ppt课件2021
5
数值的表示方法-原码 反码 补码
16或32位
short [int] unsigned short [int] 16位
long [int] unsigned long [int]
32位
有符号 short
1 000 0000 0000 0000 -32768 -215
C语言程序设计何钦铭颜晖第5章函数
C语言程序设计何钦铭颜晖第5章函数函数在C语言中有很多优点。
首先,函数可以将一个复杂的问题分解为多个简单的子问题,从而提高代码的可读性和可维护性。
通过将程序分解为多个函数,我们可以更好地组织代码,使得程序结构更加清晰明了。
其次,函数可以提高代码的重复利用性。
通过将常用的功能封装在函数中,我们可以在程序的不同部分多次调用这些函数来完成相同的任务,而不需要重复编写相同的代码。
这样不仅可以减少代码量,还可以提高代码的可重复使用性。
此外,函数可以提高代码的可扩展性和模块化。
将功能相关的代码封装在一个函数中,可以使得它们更加独立,从而方便对程序进行扩展或修改。
如果我们需要修改一些功能,只需要修改对应的函数而不影响其他部分的代码,这样可以减少错误和改动的影响范围。
在C语言中,函数的定义包括函数头和函数体两部分。
函数头包括函数的返回类型、函数名和参数列表,用来声明函数的类型和参数信息。
函数体包括函数的具体实现,是函数执行具体任务的地方。
C语言中的函数使用方法如下:```c返回类型函数名(参数列表)函数体return 返回值;```其中,返回类型指定函数的返回值类型,可以是基本数据类型(如int、float等)或自定义的结构体类型。
函数名是函数的标识符,用来唯一标识一个函数。
参数列表包括函数的参数类型和参数名,用来接收调用函数时传递的参数。
函数体是函数的具体实现代码,它包含了函数要执行的任务和具体的算法逻辑。
return语句用于返回函数的返回值并结束函数的执行。
C语言中的函数可以分为库函数和用户自定义函数两种类型。
库函数是由C语言提供的一系列函数,它们以函数库的方式被编译成目标文件,并通过链接器与用户程序进行链接。
库函数包括C标准库(如stdio.h、stdlib.h等)和操作系统提供的函数(如文件IO、内存管理等),它们可以直接在C程序中使用。
用户自定义函数是程序员根据实际需求自己编写的函数,它们可以根据不同的功能和需求来定义,从而实现各种不同的任务。
C语言程序设计何钦铭颜晖第7章数组
C语言程序设计何钦铭颜晖第7章数组《C语言程序设计(第3版)》是由何钦铭和颜晖共同编写的一本C语言教材,主要介绍了C语言的基础知识和编程方法。
其中第7章是关于数组的内容,涵盖了数组的定义、初始化、访问元素以及数组的运算等方面。
本文将从以下几个方面对本章进行详细介绍。
首先,第7章首先介绍了数组的概念和定义。
数组是一组有序的、相同类型的数据元素的集合,通过下标来唯一标识数组中的每个元素。
章节中详细介绍了数组的声明和初始化方式,包括静态数组和动态数组的定义。
其次,本章还讲解了数组元素的访问和操作。
可以通过数组的下标来访问数组中的元素,数组的下标从0开始,依次递增。
章节通过实例演示了如何通过循环遍历数组和输入输出函数来操作数组中的元素。
同时,还介绍了数组的一些特殊运算,比如数组的拷贝和交换等操作。
接着,本章进一步讨论了多维数组的概念和使用方法。
多维数组是一种特殊的数组类型,每个元素还可以拥有多个子元素。
本章通过示例介绍了多维数组的定义和初始化方式,并且详细演示了如何通过嵌套循环来遍历多维数组。
此外,本章还介绍了C语言中常用的数组函数和头文件。
通过引入相关的头文件和函数,可以方便地进行数组的操作和处理。
例如,<stdlib.h>头文件中的rand(函数可以用来生成随机数,<string.h>头文件中的strcpy(函数可以用来拷贝字符串等。
最后,本章还提供了一些数组的应用实例,包括数组的排序、查找和统计。
通过这些实例,读者可以更好地理解如何运用数组来解决实际问题。
总的来说,第7章《数组》是《C语言程序设计(第3版)》中的一章,主要介绍了数组的概念、定义、访问和操作,以及多维数组和数组函数的使用方法。
通过本章的学习,读者可以全面掌握C语言中数组的知识和应用技巧,为后续的编程学习和实践奠定良好基础。
C语言程序设计何钦铭颜晖第10章函数与程序结构
C语言程序设计何钦铭颜晖第10章函数与程序结构函数是C语言程序设计的重要组成部分,可以帮助我们组织和管理代码,实现代码的复用和模块化开发。
本章将介绍函数的定义、调用和参数传递等基本概念,以及程序的模块化结构和头文件的使用。
1.函数定义与调用函数是一些已经封装好的代码块,可以在需要的地方被调用执行。
函数的定义包括函数名、参数列表和函数体。
函数的调用通过函数名和实参列表来实现。
在C语言中,函数的定义一般是在main函数之前。
函数可以返回一个值,也可以不返回任何值。
例如:int main(,其中int表示返回值类型,main表示函数名。
没有返回值的函数使用关键字void来表示。
函数可以有多个参数,参数之间用逗号分隔。
参数可以是任意数据类型。
函数体中的代码用花括号{}括起来。
例如:int add(int a, int b) {return a + b;}表示定义了一个add函数,接受两个int类型的参数a和b,返回它们的和。
函数的调用通过函数名和实参列表来实现。
例如:int sum = add(3, 5);表示调用了add函数,并将返回结果赋值给sum变量。
函数调用前面需要指定返回类型,以便正确使用函数返回的值。
2.递归函数递归函数是一种特殊的函数,它在函数体内部调用自己。
递归函数可以解决一些问题,如阶乘、斐波那契数列等。
但是要注意递归函数的退出条件,否则可能会导致无限递归,造成程序崩溃。
3.函数的参数传递在函数的定义中,可以指定参数的传递方式。
C语言中有两种参数传递方式:值传递和指针传递。
值传递是将实参的值复制给形参,函数内部对形参的修改不会影响实参。
指针传递是将实参的地址传递给形参,可以在函数内部修改实参的值。
4.程序结构与模块化开发模块化开发是将程序分解成多个模块,每个模块负责一个特定的功能。
C语言中使用头文件来实现模块化开发。
头文件包含了函数的声明,以及一些常量、宏定义等。
头文件需要使用#include指令引入到主文件中。
浙江大学《C程序设计》本科教学课件(何钦铭版)jc_chap04
图形初始化 鼠标初始化 输出计算器外观 鼠标控制计算器的使用
结束 简单计算器的流程图
第4章 大型综合程序范例解析
简单计算器
界面外观 :
第4章 大型综合程序范例解析
简单计算器
界面设计:
(1)背景采用浅蓝色,用灰色作底色和红色作前景色画一个bar3d图 形,模拟立体效果;
(2)第1行是数据输入和结果输出的信息显示框,使用bar函数,用 黄色填充;
第4章 大型综合程序范例解析
简单计算器
数据结构设计: 简单计算器进行加减乘除运算的函数compute()
中,定义以下主要标志变量:
(1) sign:表示'+'、'-'、'*'、'/'等运算符的整数变量。 值为0表示当前未单击过运算符。 (2) flag:输入数据时是否单击了小数点。单击了小 数点,flag为1,否则为0。
第4章 大型综合程序范例解析
简单计算器-函数设计
picture.c
void picture()
绘制计算 器界面
① 使用图形函数绘制计算器外框
② 调用公用函数bottonup()绘制弹 起效果的按钮
③ 调用系统outtextxy()输出按钮 标签
④ 调用系统outtextxy()输出使用 说明等信息
初始化,接着显示简单计算器外观,并接受用户的 鼠标控制使用。如果单击了鼠标右键,则程序关闭 图形方式并结束运行。
第4章 大型综合程序范例解析
简单计算器
主程序流程:
void main() {
GraphInit(); initmouse(); picture(); compute (); closegraph(); }
c++课件 c++语言编程 全套PPT教学课件 大学教学课件
[例.默认参数]编程求两个整数或三个整数最大数。
#include<iostream.h> int max(int a,int b,int c=0); int main() { int a,b,c;
cin>>a>>b>>c; cout<<"max(a,b,c)="<< max(a,b,c)<<endl; cout<<"max(a,b)="<<max(a,b)<<endl; return 0; }
• 常变量只能用指向常变量的指针变量指向,不能用 一般的指针变量指向 例如:const char c[]=“boy”; const char *p1; p1=c; char *p2=c; //正确吗?
指向常变量的指针变量
• 指向常变量的指针变量还可以指向非const 的变量, 此时不能通过指针变量改变该变量的值。 例如:char c1=‘a’; const char *p; p=&c1; *p=‘b’; // ?
• 针对指针和引用参数,可以避免实参被意外修改
int f(int i1,const int i2) { i1++;
i2++; //正确吗? return i1+i2; }
三﹑指向常变量的指针变量
• 定义指向常变量指针变量的一般形式: const 类型名 *指针变量名; 例如:const char *ptr;
一﹑常变量概念和特点
• 定义变量时,加上关键字const,则变量的值在程序运 行期间不能改变,称为常变量 例如:const int a=3;
浙江大学C++课件2012
Object-Oriented Programming1.Abstraction(数据抽象)Encapsulation(hidden implementation)封装性ObjectState,Data,Message, Method, Interface, Operation,Function Type:All objects of a particular type can receive the same messages.2.Inheritance(继承性)3.Polymorphism(多态性)4.A Better C4.1 // comments/* *///4.2 Function Prototypevoid *malloc(size_t);4.3 The new & delete Operators char *p = new char[3];int *p = new int[3];4.4 Defining variables anywhereint k;k = 5;int m;m = k+6;4.5 Referenceint k = 8;int &m = k;4.6 Inline function4.7 const5.Object Oriented Programming 5.1 AbstractionEncapsulation(hidden implementation) object & classstruct A{int k;float b;int GetK(){return k;}};A a;a.k = 555;class A{private:int k; //hidden implementationfloat b;public:void SetK(int k){ //member function k = k;}};A a;a.k = 777; //. Xa.GetK()constructor (initialization)destructor(cleanup)class Stack{};5.2 Inheritanceclass Basic{};class Derive1 : public Basic{};5.3 Polymorphism(多态性)5.3.1Static PolymorphismOverloading5.3.1.1 function Overloading(函数重载) 5.3.1.2 operator Overloading(操作符重载) class Complex{double m_r;double m_i;Complex(double r=0.0,double i=0.0){m_r=r;m_i=i;}void operator()(double r,double i){m_r=r;m_i=i;}Complex operator+(const Complex &c)const{return Complex(m_r+c,m_r, m_i+c,m_i);}double GetR() const{retur m_r;}double GetI() const{retur m_i;}}class ComplexPtr{Complex *m_ptr;public:ComplexPtr(Complex &c){m_ptr=c;}const ComplexPtr & operator=(Complex * const ptr) {m_ptr=ptr;return *this;}Complex * operator->()const{return m_ptr;}Complex & operator *(){return *m_ptr;}Complex &operator[] (int i){return m_ptr[i];}const Complex &operator[] (int i) const{return m_ptr[i];}ComplexPtr &operator++(){m_ptr++;return *this;}ComplexPtr &operator++(int){m_ptr++;return *this;}}void main(){Complex c(3,4);ComplexPtr ptr(c);cout<<ptr->GetR()<<endl;cout<<(*ptr).GetR()<<endl;ptr=new Complex[10];ptr[1](5.6);ptr[2]=ptr[1]+c;++ptr;ptr++;}●Default Arguments(默认参数)5.3.1.3 Redefining(重定义)●name hiding●Overriding(重写,覆盖,超载,过载)5.3.2Dynamic polymorphism●Upcasting(向上类型转换)●Virtual Function●Incremental development(增量式开发)6.File & Stream6.1 Text filecout << 123.567 << endl;k = 123 ;cout ≪ k ;cout.fill('$');cout.precision(8);cout.width(7);cout.setf(ios::hex);cout << 23 << endl;fstream in("in.txt",ios::in);fstream out("out.txt",ios::out);if (!in)return;while (!in.eof()){char ch = in.get();out.put(ch);}6.2 Binary filereadwrite7.Templates7.1 Function templatestemplate <class T>T Max(T x,T y){return (x>y?x : y);}7.2 Class templates#include <iostream.h>const int STACKSIZE = 50; template <class T>class Stack{T *m_pItem;int m_top;int m_size;public:Stack(int size = STACKSIZE){m_size = size;m_pItem = new int[size];m_top = -1;}void Push(T item){m_pItem[++m_top] = item;}T Pop();};template <class T>T Stack<T>::Pop(){return m_pItem[m_top--];}void main(){Stack<int> s(10);int i;for (i=0;i<10;i++){s.Push(i);}for (i=0;i<10;i++)cout << s.Pop() << endl;}}8.Exception handling8.1 assert8.2 return true/false8.3 try/catch throw#include <iostream.h>class Overflow{};class Underflow{};const int STACKSIZE = 50; template <class T>class Stack{T *m_pItem;int m_top;int m_size;public:Stack(int size = STACKSIZE){m_size = size;m_pItem = new int[size];m_top = -1;}void Push(T item){if (m_top >= m_size-1)throw Overflow();m_pItem[++m_top] = item;}T Pop();};template <class T>T Stack<T>::Pop(){if (m_top < 0)throw Underflow();return m_pItem[m_top--];}void main(){Stack<int> s(3);int i;try{for (i=0;i<10;i++){s.Push(i);}}catch(Overflow obj){cout << "Stack Overflow" << endl;}try{for (i=0;i<10;i++)cout << s.Pop() << endl;}catch(Underflow){cout << "Stack Underflow" << endl;}}global data areastackheap9.Copy-constructorT(const T &)overloading =overloading T(const &T) class String{char *p;int l;public:String(char * s=null){if(s){l=::strlen(s);p=new char[l+1];::strcpy(p,s)}else{p=null;l=0;}}String (const String &s){if(s.p){l=::strlen(s.p);p=new char[l+1];::strcpy(p,s.p)}else{p=null;l=0;}}~String(){delete[] p;}}String s1(“Hi”);String s2=s1;(虚析构函数与纯虚函数)Abstract base classes(抽象基类)class Base{int *p;public:Base(int size){p=new int[size];}~Base(){delete []p;}};class Derive:public Basechar * s;public:Derive(int size):Base(size){s=new char[size];}~Derive(){s=new char[size];}}Base *pB=new Derive(10);delete pB;11.Run-time type identification (RTTI)typeid(t).name()#include<typeinfo.h>class Base{};class Derive:public Base{};void main(){Base *bp=new Derive;cout<<typeid(*bp).name()<<endl;}12.C++ explicit castsdynamic_cast<> downcastingstatic_cast<> upcastingreinterpret_cast<>const_castBase b;Derive d;Base *bp;Derive *dp;bp=dynamic_cast<Base *>(&d);bp=&b;dp=dynamic_cast<Derive *>(bp);bp=*d;dp= dynamic_cast<Derive *>(bp);Derive &dr1=dynamic_cast<Derive &>(*bp); Derive &dr2=dynamic_cast<Derive &>(b);13.How C++ implements late binding VTABLE VPTR14.Static membersclass A{static int m;int n;};A a1,a2;A1.m=7;A* ap=new A;cout<<ap->m<<”,”;ap->m+=12;cout<<ap->m<<”,”; delete aplcout<<a1.m;spacenamespace A{int m;namespace B{int m;int n;void Fb(){m=3;n=4;}}void Fa(){B::m+=7;m=23;}}namespace B{int m;}int m;void F(){m=8;A::m=9;B::m=10;A::B::m=10;}16.Pointer to class member17.Multiple inheritanceclass Base1{int i;}class Base2{int i;}class Derive:public Base1,public Base2 {float f;int getInt(){return i;}float getFloat(){return f;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江大学C颜晖原版c1
程序设计语言的发展
• 机器语言
• 汇编语言
• 高级语言
• 通用语言 fortran、 basic VB
C
C++ ( VC++ BC++ )
• 数据库语言 foxbase 、FoxPro SQL
Delphi Powerbuild
C程序结构
例1 在屏幕上显示: Programming is fun!
浙江大学C颜晖原版c1
C程序结构 例1 在屏幕上显示:
1.任何程序都有主函数 2.程序由若干语句组成
Programming is fun! # include <stdio.h>
3.语句由;结束
void main( )
பைடு நூலகம்
主函数
{
scanf("%d, %d", &m, &n) ; 要求输入: 5, 6 scanf("m=%d, n=%d", &m, &n) ; 要求输入: m=5, n=6
scanf("%d%d", &m, &n); y = y*i; /* 计算 k! */
resm = fact(m); /* 调re用tu函r数n fya;ct计算/m* !结*/ 果返回*/
resn = fact(n);
/* }调用函数fact计算n!*/
printf("%d, %d\n", resm, resn);
浙江大学C颜晖原版c1
格式控制
• 格式控制说明 %…
• %d :输出十进制整数 • %f:输出十进制浮点数 • %c:输出单个字符
• 普通字符原样输出
• 普通字母数字及符号
• 转义字符 \n , \t
x=34; y=3.14;
输出:
printf(" X = %d, Y = %f ", x, y); X=34,Y=3.14
void main( )
{
printf("Programming is fun! \n");
printf("And Programming in C is even more fun! \n");
}
浙江大学C颜晖原版c1
例3
计算并显示2个数的和
# include <stdio.h> void main( ) {
• 网页制作工具 HTML Java
浙江大学C颜晖原版c1
C语言特点
• C语言允许直接访问计算机内部地址,能比其他语 言更容易执行硬件操作。
• 用于解决大多数应用领域中的问题。 • 语法限制不太严格,程序设计自由度大,但同时不
易查找错误。 • C 语言中大小写字母代表不同含义。
浙江大学C颜晖原版c1
int value1, value2, sum;
value1=5; value2=2; sum=value1+value2; printf("%d+%d=%d \n", value1, value2, sum); }
浙江大学C颜晖原版c1
例5
输入2个数,求和。
# include <stdio.h> void main( ) {
int value1, value2, sum;
printf("Input 2 numbers:\n");
输入提示
scanf("%d%d", &value1, &value2); 读入2个数
sum=value1+value2;
printf("%d+%d=%d \n", value1, value2, sum);
绪论
• 教学要求
• 掌握程序设计语言的基本知识 • 常用算法 • 初步的程序设计能力
• 学习方法
• 自主学习 • 重视上机实践
浙江大学C颜晖原版c1
• 教材和参考书
• The C Programming Languagem, Second Edition, Brian W.Kernighan & Dennis M.Ritchie, 清华大学出版 社,Prentice-Hall International, Inc. ,1997
}
/* main函数结束 */
浙江大学C颜晖原版c1
基本输入输出函数
• 格式化输出函数 printf( )
printf(格式控制, 输出参数1, ... , 输出参数n); printf("Hello World! \n"); printf("%d, %d\n" , resm, resn) ; printf("sum=%d\n", sum) ;
浙江大学C颜晖原版c1
基本输入输出函数最好直接了当: • 格式化输入函数 scsacnafn(f)( "%d %d", &m, &n ); scanf(格式控制, 输入参数1, ... , 输入参数n); • 格式控制说明 %… • 普通字符原样输入
scanf("%d%d", &m, &n) ; 格式控制 变量地址
• C语言程序设计,何钦铭主编,人民邮电出版社, 2003
• C程序设计(第二版),潭浩强等,清华大学出版社, 1999
浙江大学C颜晖原版c1
• 上机要求 • 禁做与课程学习无关的事情(如上网聊 天、游戏等) • 看懂编译信息,逐步学会各种调试方法
浙江大学C颜晖原版c1
Chap 1 用C语言编写程序
}
浙江大学C颜晖原版c1
求阶乘函数 例6 输入m, n 计算m!和innt! fact( int k ) /* 函数定义
# include <stdio.h> */
void main( )
{ int i, y = 1;
{
int m, n, resm, resn; for(i = 2; i <= k; i++)
int value1, value2, sum;
变量定义
value1=5;
value2=2;
变量使用
sum=value1+value2;
printf("The sum is %d \n", sum);输出结果
} 浙江大学C颜晖原版c1
例4
计算2个数的和,以算式的形式显示
# include <stdio.h> void main( ) {
printf("Programming is fun! \n"); 语句结束
}
输出函数
换行符
浙江大学C颜晖原版c1
例2 在屏幕上显示: Programming is fun! And Programming in C is even more fun!
# include <stdio.h>
编译预处理命令