清华大学C#教程
- 格式:doc
- 大小:68.50 KB
- 文档页数:11
一、选择题1.一个C语言程序是由(D )构成。
A.语句B.行号C.数据D.函数2.下面标识符中正确的是()。
A.d&ef B.6a C.z4x5c D.a3/b43.在C语言中,存储一个字符型、整型、单精度实型变量所需的空间是()。
型、单精度实型变量所需的空间是()。
A.1、2、4 B.1、1、4 C.1、2、8 D.2、2、84.为了避免嵌套的条件分支语句 if--else中的else总是与()组成成对关系。
A.缩排位置相同的B.在其之前未配对的C.在其之前未配对的最近的ifD.在同一行上的if5.下列表达式的结果正确的是()。
int aa,bb,cc,dd;aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;(aa+1==2)?bb=aa+2:aa+3A.2 B.3 C. 1 D.56.设有int x=11 ;则表达式(x+1/3)的值是(C )。
A.3 B.4 C.11 D.127.设有字符串A=“He has 钱!”,则该字符串的长度为( C )。
A.9B.10C.11D.88.有如下程序段,则正确的执行结果是()int m=3;while(m<=5){printf("%d ",m-3);m++;}A. 0 0 0 B.0 1 2 C.1 2 3 D.无结果9.执行语句:printf("%d",(a=2)&&(b= -2);后,输出结果是()。
A.无输出B.结果不确定C.-1 D.110.有如下定义类型语句,若从键盘输入数据,正确的输入语句是()。
int x;Char y;Char z[20];A.scanf("%d%c%c",&x,&y,&z);B.scanf("%d%c%s",&x,&y,&z);C.scanf("%d%c%c",&x,&y,z);D.scanf("%d%c%s",&x,&y,z);11.struct ex{int x ;float y;char z ;} example;则下面的叙述中不正确的是()。
一、关键字和标识符关键字:int for if标识符:char str[30];int a; double b; str,a,b是标识符标识符命名规则:字母、数字、下划线、且数字不能开头3test 否tes_3 是u&54 否二、运算符优先级数学运算:+ - * / &关系运算:< > <= >= 低于数学运算逻辑运算:&& || !低于关系运算三、数据类型int char double float表示范围(有类型所占空间长度决定)类型转换:1)隐式转换:赋值时转换int a = 3.2;float b = 3; //a为3 b为3.0运算时转换任何数与float或double类型运算,都转为double2)强制转换:float a =3.2; int b = (int)a; //b为3四、面向过程编程:顺序结构:从上到下依次执行选择结构:if if...else if...else if...else switch分支结构:while() for() do...while();五、模块化编程(函数)函数的定义:返回类型函数名(参数列表)void myPrint(char s[]);int max(int a,int b);函数的调用:1、直接调用max(3,5);2、作为参数调用:printf("%d",max(3,5));3、作为条件调用:if(max(3,5)>2)eg://应用场合:给一个字符串,求数字个数helloChina5AAA6BBB'\n'while(scanf("%c",&tmp)==1 && tmp != '\n'){if('0'<=tmp && tmp<='9')cnt++;}或者:scanf("%s",str)//char str[50];int len = strlen(str);for(int i=0;i<len;i++){if('0'<=str[i] && str[i]<='9')cnt++;}形式参数和实际参数:函数头中的参数就是形式参数,用来点位;实际被处理的是实参局部变量和全局变量局部变量:定义中代码块{ }中的变量;可能在函数中,可能在if、while、for中只在局部有效,出代码块,消失全局变量:定义在代码块{ }之外,全局可用,一直存在。
第一章概述1-1简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。
第5章习题解答一、选择题1.以下叙述中错误的是。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)在程序执行中,当数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数解析:对于double类型数组,不能直接用数组名对数组进行整体输入或输出。
所以选项A的说法是正确的。
数组名代表数组所占内存区的首地址,是一个固定指针,其值不可改变,因此选项B也是正确的。
在C语言一维数组定义时可以不指定数组长度,由赋初值的初值个数决定数组的长度。
因此选项D也是正确的。
C语言程序在执行时,不检查数组元素的下标是否越界,如果出现越界,可能会引起系统死机,因此选项C不正确。
答案:C2.有以下程序:/* 文件路径名:ex5_1_2\main.c */#include <stdio.h> /* 标准输入/出头文件*/int main(void) /* 主函数main() */{char s[] = "abcde"; /* 定义字符数组*/s += 2; /* s自加2 */printf("%d\n", s[0]); /* 输出s[0] */return 0; /* 返回值0, 返回操作系统*/}执行后的结果是。
A)输出字符a的ASCII码B)输出字符c的ASCII码C)输出字符c D)程序出错解析:数组s[]的首地址值s是不可改变的,故该程序编译时会出错。
答案:D3.有以下程序:/* 文件路径名:ex5_1_3\main.c */#include <stdio.h> /* 标准输入/出头文件*/int main(void) /* 主函数main() */{int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], *q = p + 2; /* 定义数组及变量*/printf("%d\n", *p + *q); /* 输出*p + *q之值*/return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。
C 语言程序设计-清华大学-郑莉简介C语言是一种通用的、面向过程式的计算机编程语言。
它是由贝尔实验室的Dennis M. Ritchie在20世纪70年代开发出来的。
C语言具有简洁的语法和强大的编程能力,被广泛应用于系统编程、嵌入式系统开发和高性能计算等领域。
清华大学郑莉教授的《C 语言程序设计》课程是一门专注于C语言基础知识和程序设计技巧的课程,本文将对该课程进行介绍和总结。
课程内容《C 语言程序设计》课程由清华大学郑莉教授主讲,涵盖了C语言的基本知识和程序设计的基本技巧。
课程内容主要包括以下几个方面:数据类型和运算符•C语言中的基本数据类型,包括整数类型、浮点数类型和字符类型等。
•C语言中的运算符,包括算术运算符、关系运算符和逻辑运算符等。
控制结构•C语言中的选择结构和循环结构,包括if语句、switch语句和while循环等。
•C语言中的跳转语句,如break语句和continue语句等。
函数和指针•C语言中的函数概念和函数调用。
•C语言中的指针概念和指针的运算及应用。
数组和字符串•C语言中的数组概念和数组的使用。
•C语言中的字符串概念和字符串的操作。
结构体和文件操作•C语言中的结构体概念和结构体的定义和使用。
•C语言中的文件操作,包括文件读写操作和文件指针的应用。
教学方法《C 语言程序设计》课程采用清华大学郑莉教授自编教材《C语言程序设计》作为参考书。
课程以理论讲解和实践操作相结合的方式进行教学。
在每个章节的理论讲解部分,郑莉教授会详细介绍相关的C语言知识点,并通过示例代码和代码分析来帮助学生理解和掌握。
在实践操作部分,学生会进行一系列的编程练习,通过实际的编写和调试C语言程序来巩固所学知识。
在这个过程中,学生将会学习到如何运用C语言的基本语法和程序设计技巧来解决实际问题。
此外,课程还设置了课后习题和实验,供学生进一步巩固和拓展所学内容。
学生可以通过完成习题和实验来提高自己的编程能力和代码调试能力。
第4章习题解答一、选择题1.在C语言中,函数返回值的类型最终取决于A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型解析:函数返回值类型最终取决于定义函数时所定义的函数类型.答案:A2.设函数Fun()的定义形式为:void Fun(char ch,float x){}则以下对函数Fun()的调用语句中,正确的是.A)Fun(”abc”, 3。
0);B)t = Fun(’D’,16.5);C)Fun('65’,2.8); D)Fun(32,32);解析:选项A中"abc”是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,’65’是不合法的字符形式,单引号中应该是单个字符。
只有选项D才是合法的函数调用形式。
答案:D3.有以下程序:/*文件路径名:ex4_1_3\main。
c */#include <stdio。
h> /* 标准输入/输出头文件*/int f1(int x,int y){return x 〉y ? x : y;}int f2(int x,int y){return x 〉y ? y : x;}int main(void)/*主函数main()*/{int a = 4,b = 3, c = 5,d = 2,e,f, g;/* 定义变量*/e = f2(f1(a,b),f1(c,d));f = f1(f2(a,b),f2(c, d));/*调用函数*/g = a + b + c + d —e —f;/* 算术运算*/printf(”%d,%d,%d\n", e, f,g);/*输出e,f,g */return 0; /*返回值0,返回操作系统*/}程序运行后的输出结果是。
A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数.因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4;f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3;g=a+b+c+d—e—f=4+3+5+2—4—3=7.答案:A4.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是.A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不会占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元解析:在C语言中,函数的形参和实参是分别占用不同的存储单元的,因此,选项D是正确的。
清华大学C#教程.txt20如果你努力去发现美好,美好会发现你;如果你努力去尊重他人,你也会获得别人尊重;如果你努力去帮助他人,你也会得到他人的帮助。
生命就像一种回音,你送出什么它就送回什么,你播种什么就收获什么,你给予什么就得到什么。
本文由txzqy123贡献doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
目录第 1 篇基础窗体开发篇第 1 章窗体设置(教学视频:55 分钟) 21.1 常规窗体设置 2实例 001 控制窗体大小 2 this.MaximumSize=new Size(width,height); 实例 002 最前端显示窗体 3 this.topmost=true;实例 003 设置窗体相对起始位置 3Form1 form=new Form1(); form.Location=new Point(400,200);form.StartPosition = FormStartPosition.Manual;location只有当只有当startposition为manual时才起作用只有当为时才起作用实例 004 设置窗体透明度 4Opacity=xx%;实例 005 设置窗体颜色 5This.BackColor=Color.BlueViolet; 或者直接设置颜色代码;This.BackColor=Color.FromArgb(255,34,234);实例 006 在多窗体间移动控件 6窗体中添加控件this.Control.Add(bel1); label1.text=””;实例 007 右对齐窗体标题文字 7RighttoLeft=true;实例 008 改变无边框窗体大小 7ControlText=false;实例 009 移动无边框窗体 8bool beginMove = false;//初?始o?化?¥int currentXPosition ; int currentYPosition ; //鼠o¨?标à¨o移©?动?¥事o?件t private void Form1_MouseMove(object sender, MouseEventArgs e) { if (beginMove) {this.Left += MousePosition.X - currentXPosition;//根¨′据Y鼠o¨?标à¨ox坐á?标à¨o 确¨?¤定?§窗???体??的å?左á¨?边à?坐á?标à¨ox this.Top += MousePosition.Y - currentYPosition;//根¨′据Y鼠o¨?标à¨o的å?y坐á?标à¨o 窗???体??的å?顶£¤部?,ä?即??Y坐á?标à¨o currentXPosition = MousePosition.X; currentYPosition = MousePosition.Y; } } private void Form1_MouseDown(object sender, MouseEventArgs e) { beginMove = true; currentXPosition = MousePosition.X;//鼠o¨?标à¨o的å?x坐á?标à¨o为a当å?à前??窗???体?? 左á¨?上|?角?x坐á?标à¨o currentYPosition = MousePosition.Y;//鼠o¨?标à¨o的å?y坐á?标à¨o为a当å?à前??窗???体?? 左á¨?上|?角?y坐á?标à¨o } private void Form1_MouseUp(object sender, MouseEventArgs e) { beginMove = false;//停a?ä止1移©?动?¥ } private void Form1_MouseLeave(object sender, EventArgs e) { currentXPosition = 0; //设|¨¨置?初?始o?状á??态?? currentYPosition = 0; beginMove = false; }实例 010 禁止关闭窗体 9在主 e.Cancel=true;实例 011 通过控件拖动窗体 10private void button1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left)//如¨?果?事o?件t是o?由?¨|鼠o¨?标à¨o左á¨?键¨1激?â发¤?ã;ä?button1.left button1距¨¤离¤?容¨Y器??的å?左á¨?边à?距¨¤离¤? {startX = e.X; startY = e.Y; } } private void button1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { this.Left += e.X - startX; this.Top += e.Y - startY; } }实例 012 根据窗体自动调整控件 11 1.2 特殊窗体设置 13 实例 013 设计不规则窗体13this.TransparencyKey = Color.Yellow实例 014 设计带分隔栏的窗体 14 Splitcontainer; 实例 015 在窗体中滚动字幕 14 添加 timer 组件增加 timer 的 tick 事件实例 016 设计闪烁的窗体 15 实例 017 设计动画显示窗体 16 实例 018 设计运动的窗体 18添加 timer 组件实例 019 修改提示框字体及颜色 18 实例 020 建立字体形状窗体 20 实例 021 设计带帮助键的窗体 20Helpbutton=true 1.3 对话框的应用 21实例 022 使用 ColorDialog 调用 Windows 颜色对话框 21添加colordialog控件colorDialog1.ShowDialog(); this.BackColor = colorDialog1.Color;实例 023 使用 FolderBrowserDialog 调用 Windows 浏览文件夹对话框 22添加 folderBrowDialog 控件if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = folderBrowserDialog1.SelectedPath; }实例 024 使用 FontDialog 调用 Windows 字体对话框 23添加 fontdialog 控件if (this.fontDialog1.ShowDialog() == DialogResult.OK) { bel1.Font = this.fontDialog1.Font; bel1.ForeColor = this.fontDialog1.Color;}实例 025 使用 OpenFileDialog 调用打开文件对话框 23openFileDialog1.InitialDirectory = "C:\\"; openFileDialog1.Filter = "文?本à?文?件t(*.txt)|*.txt|所¨′有?D文?件t(*.*)|*.*"; if (this.openFileDialog1.ShowDialog() == DialogResult.OK) { label1.Text = openFileDialog1.FileName; System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName); this.textBox1.Text = sr.ReadToEnd(); sr.Close(); }实例 026 使用 SaveFileDialog 调用保存文件对话框 24Stream myStream;//声|¨′明??流¢??对?象¨? //过y滤?条??件t saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; saveFileDialog1.FilterIndex = 2; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { if ((myStream = saveFileDialog1.OpenFile()) != null)//打?¨©开a文?件t不?为a空? { //myStream.Write(textBox1.Text); //写??入¨? myStream.Close();//关?闭à?流¢?? } }1.4 特色程序界面 25实例 027 类似 Windows 的程序界面 25 实例 028 类似 QQ 的程序界面 28 实例 029 类似 Office 助手的程序界面 29 实例 030 根据鼠标状态设置动态变化的按钮 30 添加 mousemove mouseleave 1.5 其他技术 31实例 031 为 MDI 类型窗体设置背景图片 32frm.MdiParent = this实例 032 继承窗体设计 32同类的继承第 2 章控件的应用(教学视频:92 分钟) 34 2.1 菜单 34 实例 033 动态创建菜单 34实例 034 类似 Windows 的菜单 35各项添加 image 实例 035 任务栏托盘菜单 36退出Application.Exit();if (this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal; this.Activate(); //设|¨¨为a活?动?¥窗???体??实例 036 改变菜单字体 37this.menuStrip1.Font = new Font("华a文?楷?体??",12);实例 037 将菜单置于窗体右侧 37Dock=right实例 038 浮动菜单 38可移动的菜单移动控件实例 039 级联菜单 39Manuscript 级联实例 040 带历史信息的菜单 40if (File.Exists("Menu.ini"))//判D断?文?件t是o?否¤?存??在¨2 { StreamReader sr = new StreamReader("Menu.ini");//创???建?§文?件t流¢?? int i = this.文?件tToolStripMenuItem.DropDownItems.Count - 2;//获?取¨?索??引©y项? while (sr.Peek() >= 0)//读¨¢取¨?文?件t流¢?? { //将?读¨¢取¨?的å?信?息?ã创???建?§菜?单壤项? ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine()); //将?菜?单壤项?添?¨a加¨?到å?指?定?§位?置? this.文?件tToolStripMenuItem.DropDownItems.Insert(i, menuitem); i++; } sr.Close();//关?闭à?流¢?? } openFileDialog1.FileName = ""; this.openFileDialog1.ShowDialog();//打?¨©开a对?话??框¨© StreamWriter s = new StreamWriter("Menu.ini", true);//创???建?§流¢?? s.WriteLine(openFileDialog1.FileName);//流¢??写??入¨?文?件t s.Flush(); s.Close();实例 041 为菜单添加图标 41实例 042 设计透明菜单 42Backgroundcolor=transparent; 2.2 工具栏 42实例 043 设计浮动工具栏 42Toolscriptcontaint实例 044 设计带背景的工具栏 43Backgroundimage;实例 045 设计带下拉菜单的工具栏 43Toolscript实例 046 为工具栏按钮增加提示功能 44Text 2.3 状态栏 45实例 047 在状态栏中加入进度条 45while (toolStripProgressBar1.Value < toolStripProgressBar1.Maximum) { toolStripProgressBar1.PerformStep(); //进?度¨¨条??增?加¨? } 实例 048 为状态栏中加入图标 45Tooscriptstatuslabel image实例 049 动态更新状态栏信息 46string message = string.Format("{0},{1}", MousePosition.X.ToString(), MousePosition.Y.ToString()); this.tsslLocation.Text = message;//显?示o?在¨2控?件t中D this.tsslTime.Text = DateTime.Now.ToLongTimeString();//显?示o?系|å统a3时o?à间?2.4 文本框 47实例 050 自动删除非法字符 47 实例 051 设计密码输入框 49Passwordchar实例 052 限制文字长度 49Maxlength实例 053 设置多行显示与滚动条 50Scrollbar Multiline 2.5 按钮 51实例 054 为按钮增加图标 51Button 的 image 属性实例 055 设计不规则按钮 51 实例 056 设计多种状态按钮 53Mouseenter mouseleve 时改变背景图片 2.6 选择类控件 54实例 057 利用选择控件实现权限设置 54Radiobutton checkbox checklistbox 的 check 的值。