C程序的设计语言期末总结_第1页
C程序的设计语言期末总结_第2页
C程序的设计语言期末总结_第3页
C程序的设计语言期末总结_第4页
C程序的设计语言期末总结_第5页
已阅读5页,还剩15页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C程序设计语言期末总结2019年秋季学期冷勋泰2019年1月15日21:03:14本学期学习目标:具有一定的代码编写能力 C语言学习 能根据问题思路编写代码。掌握程序控制语句、循环语句、具有设计函数的能力、具备初步的代码调试能力。 能自然的将问题分解,写出思路清晰的代码。 能够预期C语言编译器对代码的编译,具备一定的优化能力,能够查出代码的逻辑错误。 其中第一点主要包括 能够编写合适的循环结束条件语句 掌握for语句的执行顺序 能够使用变量、数组来存储数据,能够通过操作变量、数组来实现程序功能#include #include #define MAXL 2

2、048void reverseStr(char *start, char *end) char temp; while (end start) temp = *end; *end = *start; *start = temp; end-, start+; int main() char strMAXL, substrMAXL; gets(str); gets(substr); int sublen = strlen(substr); char *pnow = str; for(char *position = strstr(pnow, substr); position != NULL; p

3、osition = strstr(pnow, substr) reverseStr(position, position + sublen - 1); pnow = position + sublen; reverseStr(str, str + strlen(str) -1); printf(%sn, str); return 0;上机题13-2:翻转字符串,指定字串不翻转函数设计函数设计for语句的使用语句的使用函数返回值的使用函数返回值的使用char *strstr(char *s1, char *s2) int len2; if ( !(len2 = strlen(s2) ) retu

4、rn s1; for ( ; *s1; +s1 ) if ( *s1 = *s2 & strncmp( s1, s2, len2 )=0 ) return s1; return NULL;2019秋季学习C程序设计上机总结我们学到了什么) 变量的使用:定义声明)、初始化、使用 数组的定义、初始化、使用 知道并使用常量数字常量、字符常量、字符串常量),特别是字符常量与ASCII码的关系 特别地了解了字符串数组:包括0的含义,及常见string库中函数的使用 在程序流控制方面:练习了if.else.语句,switch语句,for语句、while语句的使用 掌握了break、continue

5、、return语句的确切含义和使用,并利用它们合理控制程序流的走向2019秋季学习C程序设计上机总结我们学到了什么) 理解并掌握函数传入参数的概念值传递、指针) 合理设计函数的返回值两种方式返回)、在函数中合理使用break、continue、return语句 标志变量的使用:引入变量参与控制程序流走向 使用散列法加快数据的搜索 初步了解并设计递归函数 学会分析题目,能够将解决问题的步骤即算法步骤转化为对应的程序代码合理选用一定类型的变量、合理使用数组、合理设计自定义类型(struct)) 掌握了基本的程序调试技术跳出多重循环 两种方法: 使用标志变量 将代码分离为一个函数,在函数中使用ret

6、urn语句。标志变量:字符串查找#include #include #define MAX 100char str = In computer science, the KnuthMorrisPratt string searching algorithm (or KMP algorithm).;main() char sMAX; int n, m; int find; int i, j; n = strlen(str); for(i = 0; i = A) & (stri = Z) stri = stri - A + a; while(scanf(%s, s) != EOF) m =

7、 strlen(s); strlwr(s); for(i = 0; i = n-m; +i) find = 1; for(j = 0; j m; +j) if(stri+j != sj) find = 0; break; if (find = 1) break; if (i = n-m) printf(%dn, i); else printf(未找到n); return 0;该break在找到一个字串后退出,也可以继续运行,找到同一字串在内置字符串中的各个位置。方框内的代码功能明确、独立,因此可抽离为一个函数,以增加主函数的独立性。该break减少了不必要的后续比较散列法(P125) 散列法H

8、ashing或哈希法是一种将字符组成的字符串转换为固定长度一般是更短长度的数值或索引值的方法,称为散列法,也叫哈希法。散列法示例:统计字母个数#include void count(char c, int* counter) if (a = c & c = z) +counterc - a; else if (A = c & c = Z) +counterc - A; int main() char c; int counter26 = 0; while (c = getchar() != EOF) count(c, counter); for (int i = 0; i 自动

9、存储变量(P23);全局变量静态存储变量 注:static在不同场景下的不同含义(P71)【扩大】 变量的初始化:非自动变量只能进行一次初始化操作(P31);全局变量的隐式初始化P196) 变量的定义与声明:声明与定义的含义(P25/P186)、区分的目的(P68)函数:递归调用 递归基础:隐式变量申请 每进行一次函数调用,程序就重新生成局部变量。同一个函数的多次调用包括递归对一个局部变量的操作都是不一样的。这些具有相同名字的局部变量对应的是不同的内存地址。 分析递归以Fibonacci数为例) 表达式f(n)=f(n-1)+f(n-2) 结束条件f(0)=1, f(1)=1 返回值一个返回值

10、 递归函数特点 带参数全局变量、或static局部变量) 参数变化 调用自身递归函数举例#include void itoa(int n, char *p) static int i = 0; if (n 10) itoa(n/10, p); pi+ = n % 10 + 0; pi = 0;main() int n; char str100; scanf(%d, &n); itoa(n, str); printf(%d is %sn, n, str); return 0;说明:此处的itoa函数仅仅是其功能的核心实现itoa函数应该设计得更为完备,比如负数检测、其中字符串结束符也只需

11、要处理一次即可scanf函数一 更一般地讲,scanf的设计适用于相对结构化的、格式整齐的输入。 scanf函数会自动忽略空白符(P167),当它扫描(scan)到空白符(如空格、制表符、换行符)时,就认为已经完成了一个字符串的读取。 (P138)char str1100, str2100;scanf(%s%s, str1, str2); scanf函数在读取字符时不会忽略空白符。因此对于输入ustc 1958来说。char str1100, c;scanf(%s%c, str1, &c);/%s后无空格 运行上述代码后,str1的值是ustc,而c的值则为1。 要过滤掉空白符,可以在

12、scanf函数的控制字符串中加入空格。如下:scanf(%s %c, str1, &c);/注意%s后有空格。在scanf函数的format格式控制字符串中,空格具有特殊的含义,它表示忽略连续的空白符。 此外,scanf函数需要预读输入流中的下一个字符以确定是否已完成了一个输入(数字、字符串)。而且他会把这个预读的字符返回到输入流中(P66)。因此scanf函数与其他输入函数的混用往往导致一些奇怪的问题。 运行上述代码: 输入1958 ustc,str的值为 ustc 输入1958 ustc,str的值为n。(其中 表示键盘输入回车)scanf函数二int n;char str80;s

13、canf(%d, &n);gets(str);printf(%sn, str);解决方案:解决方案:scanf(%d , &n); /忽略整数后面的空白符可能是多个)忽略整数后面的空白符可能是多个)scanf(%dn, &n);/和上述代码功能等价和上述代码功能等价printf函数 pirintf函数第一个参数是一个字符串 char formatstr = the length of the %s string is %dn; printf(formatstr, first, i); printf(a = 0) ? a值为0n : a不为0n); printf的%f说明符既可以输出float型又可以输出double型。根据“默认的参数提升规则(P178),float型会被提升为double型。因此printf()只会看到双精度。【不考】 但用printf输出long int型时则必须在格式串中使用l修饰符(%ld)。因为printf不知道传入的数据类型,必须通过使用正确的格式说明符让它知道。关于宏#include #define square1(x) (x * x)#define square2(x) (x) * (x)main() int i; i = 6; printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论