零散知识点:

  • 非格式化输入输出:getchar()、putchar()
  • 格式化输入输出   :scanf()、printf()
  • 字符串输入输出   :gets() 或 scanf()、puts() 或 printf()。
  1. gets()函数以换行符或文件结束符EOF作为输入的结束标志,因此,在输入的字符串中允许包含空格或制表符。
  2. scanf()函数则以空格、制表符、换行符和文件结束符EOF作为输入的结束标志,因此,在输入的字符串中不允许包含这些字符。
  3. puts()函数在字符串显示完毕后换行。
  4. printf()函数不会进行换行。
  • %f  表示这个位置应该输入一个实型数值
  • %s  表示这个位置应该输入一个字符串
  • break语句的目的是:终止执行后面分支的语句序列。
  • continue语句只能应用在循环语句中,它的作用是:强制终止本次循环的执行,转去执行下一次循环。
  • 交换两个数值(不引入外部参数)
  1. #include<stdio.h>
  2. #pragma warning(disable:4996)
  3.  
  4. main()
  5. {
  6. int m, n;
  7. printf("Enter two numbers:");
  8. scanf("%d%d", &m, &n);
  9. printf("\nm:%d\n", m);
  10. printf("n:%d\n", n);
  11. m = m + n;
  12. n = m - n;
  13. m = m - n;
  14. printf("\nm:%d\n", m);
  15. printf("n:%d\n", n);
  16. }
  • 求最小公倍数:首先比较大小(大小排序),后使用辗转相除法,求出最大公约数(被除数/除数=商…余数,后使用除数除以余数,直至余数为0;),再使用两个数的乘积除以该最大公约数,即可。

代码如下:

  1. #include<stdio.h>
  2. #pragma warning(disable:4996)
  3.  
  4. main(){
  5. int i, j, temp, s;
  6.  
  7. printf("Enter two integers : ");
  8. scanf("%d%d", &i, &j);
  9. s = i*j;
  10. /* if (i < j){
  11. i += j;
  12. j = i - j;
  13. i = i - j;
  14. }*/
  15.  
  16. do{
  17. temp = i%j;
  18. i = j;
  19. j = temp;
  20. } while (j>);
  21. printf("the max gongyueshu: %d\n", i);
  22. printf("the min gongbeishu: %d\n", s / i);
  23. }

  1. #include<stdio.h>
  2. #pragma warning(disable:4996)
  3. int gcd(int m, int n);
  4.  
  5. main(){
  6. int i, j, s;
  7. int r;
  8.  
  9. printf("111Enter two integers : ");
  10. scanf("%d%d", &i, &j);
  11. s = i*j;
  12. /* if (i < j){
  13. i += j;
  14. j = i - j;
  15. i = i - j;
  16. }*/
  17. r = gcd(i, j);
  18. printf("the max gongyueshu: %d\n", r);
  19. printf("the min gongbeishu: %d\n", s / r);
  20. }
  21.  
  22. int gcd(int m, int n)
  23. {
  24. if (m % n == )
  25. return n;
  26. else
  27. return gcd(n, m%n);
  28. }
  • 一维数组:变量一经定义,系统将会为每个数组型变量分配一片连续的存储空间。
  • 32位操作系统,int类型是4字节。
  • int vote[10]={0} 表示为每一个元素赋予初值0。
  • 采用键盘输入的方式为数组中的每个元素赋值:
  1. int i;
  2. int score[];
  3. for (i = ; i < ; i++){
  4. scanf("%f", &score[i]);
  5. }
  • 判断是否为英文字母
    1. ('A'<=ch && ch <='Z') || ('a<=ch && ch <='z')
    2. isalpha(c)    c是一个字符,头文件是<ctype.h>。当c为英文字母,函数返回非0;否则函数返回0。
  • 选择排序法
  1. 基本思路:假设有n个数据将要参与排序操作,则具体的排序过程可以描述为:首先从n个数据中选择一个最小的数据,并将它交换到第1个位置;然后再从后面n-1个数据中选择一个最小的数据,并将它交换到第2个位置;以此类推,直至最后从两个数据中选择一个最小的数据,并将它交换到第n-1个位置为止,整个排序操作结束。
  2. 选择排序代码实现过程:
  1. #include<stdio.h>
  2. #pragma warning(disable:4996)
  3. #define NUM 10
  4.  
  5. main()
  6. {
  7. int data[NUM];
  8. int i, j, min, temp;
  9.  
  10. printf("Please enter %d integers:", NUM);
  11. for (i = ; i < NUM; i++){
  12. scanf("%d", &data[i]);
  13. }
  14.  
  15. printf("\n%d integers are:\n", NUM);
  16. for (i = ; i < NUM; i++){
  17. printf("%5d", data[i]);
  18. }
  19.  
  20. for (i = ; i < NUM - ; i++){
  21. min = i;
  22. for (j = i + ; j < NUM; j++){
  23. if (data[j] < data[min])
  24. min = j;
  25. }
  26. if (min != i){
  27. temp = data[i];
  28. data[i] = data[min];
  29. data[min] = temp;
  30. }
  31. }
  32.  
  33. printf("\nOrdering list is:\n");
  34. for (i = ; i < NUM; i++){
  35. printf("%5d", data[i]);
  36. }
  37. }
  • 冒泡排序法
  1. 基本思路:不断地将所有的相邻数据进行比较,如果前面的数据大于后面的数据(a[j]>a[j+1]),就将两个位置的数据进行交换,最终实现所有的数据按照非递减的顺序重新排列。(如果有n个数据等待排序,则最多经过n-1次冒泡排序就可以将所有的数据排列好)
  2. 具体过程:
  • 将整个待排序的数据序列划分成有序区域和无序区域。初始状态有序区域为空,无序区域包括所有待排序的数据;
  • 对无序区域从前向后依次对相邻的两个数据进行比较,若逆序则将其交换,从而使得较小的数据像泡沫一样向前,较大的数据向后;
  • 冒泡排序代码实现过程:
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #pragma warning(disable:4996)
  4. #define NUM 10
  5. void input(int value[]);
  6. void output(int value[]);
  7. void sort(int value[]);
  8.  
  9. main()
  10. {
  11. int value[NUM];
  12. input(value);
  13. output(value);
  14. sort(value);
  15. output(value);
  16. }
  17.  
  18. //输入待排序列
  19. void input(int value[])
  20. {
  21. int i;
  22.  
  23. printf("Enter %d integers : ", NUM);
  24. for (i = ; i < NUM; i++){
  25. scanf("%d", &value[i]);
  26. }
  27. }
  28.  
  29. //输出显示数据数列
  30. void output(int value[])
  31. {
  32. int i;
  33.  
  34. printf("\n");
  35. for (i = ; i < NUM; i++){
  36. printf("%5d", value[i]);
  37. }
  38. }
  39.  
  40. //冒泡排序函数
  41. void sort(int value[])
  42. {
  43. int i, j, temp;
  44.  
  45. for (i = NUM - ; i >= ; i--){ /*控制排序次数*/
  46. for (j = ; j < i; j++){ /*相邻数据比较大小*/
  47. if (value[j] < value[j + ]){
  48. temp = value[j];
  49. value[j] = value[j + ];
  50. value[j + ] = temp;
  51. }
  52. }
  53. }
  54. }
  • 在C语言中,字符串用字符型数组存储,并且以“\0”作为结束标志。结束标志“\0”是由系统自动添加到字符序列尾部的。结束标志“\0”不被计算在字符串的长度中。
  • 字符串标准函数,头文件<string.h>:
  1. strlwr(str)——将字符串str中出现的所有大写字母转换成小写字母;
  2. strupr(str)——将字符串str中出现的所有小写字母转换成大写字母;
  3. strlen(str)——计算字符串长度,字符串结束标志“\0”不计算在内;
  4. strcmp(str1,str2)——比较字符串。str1<str2,函数返回一个负整数。区分大小写。可用来检测用户密码。
  5. stricmp(str1,str2)——比较字符串。str1<str2,函数返回一个负整数。不区分大小写。
  6. strcpy(str1,str2)——str2是将要被拷贝的字符串,str1是用于存放拷贝结果的存储区域。
  7. strcat(str1,str2)——将str2连接到str1之后。
  8. strstr(str1,str2)——检测主串str1中是否存在给定子串str2,函数返回子串str2在主串中第一次出现的位置;否则返回空。
  9. strchr(str1,ch)——检测给定字符ch是否在字符串str1中存在,函数返回ch在str1中第一次出现的位置;否则返回空。
  • 二维数组的赋值与输出
  1. #define ROW 6
  2. #define COL 4
  3. int i, j;
  4. int value[ROW][COL];
  5.  
  6. //利用赋值语句
  7. for (i = ; i < ROW; i++){
  8. for (j = ; j < COL; j++){
  9. value[i][j] = i + j;
  10. }
  11. }
  12. //通过键盘输入
  13. for (i = ; i < ROW; i++){
  14. for (j = ; j < COL; j++){
  15. scanf("%d", &value[i][j]);
  16. }
  17. }
  18. //输出二维数组
  19. for (i = ; i < ROW; i++){
  20. for (j = ; j < COL; j++){
  21. printf("%4d", value[i][j]);
  22. }
  23. putchar('\n');
  24. }

程序一:

功能描述:输入一个整数n,打印输出一个由n个字符星号“*”组成的等边三角形。

  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5. int n, i, j;
  6. printf("please enter the side of the triangle:");
  7. scanf_s("%d", &n);
  8. for (i = ; i <= n; i++){
  9. for (j = ; j <= n - i; j++){
  10. putchar(' ');
  11. }
  12. for (j = ; j <= i; j++){
  13. putchar('*');
  14. if (j != i){
  15. putchar('_');
  16. }
  17. }
  18. putchar('\n');
  19. }
  20. }

结果:

程序二:

功能描述:输入文本行,统计其中包含的行数、单词书、字符数。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<string.h>
  4. #pragma warning(disable:4996)
  5.  
  6. #define IN 1 /* inside a word */
  7. #define OUT 0 /* outside a word */
  8. /* count lines, words, and characters in input */
  9. main()
  10. {
  11. int c, nl, nw, nc, state;
  12. state = OUT;
  13. nl = nw = nc = ;
  14. while ((c = getchar()) != 'END')
  15. {
  16. ++nc;
  17. if (c == '\n')
  18. ++nl;
  19. if (c == ' ' || c == '\n' || c == '\t')
  20. state = OUT;
  21. else if (state == OUT) {
  22. state = IN;
  23. ++nw;
  24. }
  25. }
  26. printf("%d %d %d\n", nl, nw, nc);
  27. }

程序三:

功能描述:输出当年当月的月历。

  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5. int n, i, j;
  6.  
  7. scanf_s("%d", &n);
  8.  
  9. if (n == )
  10. n = ;
  11. else
  12. n = n;
  13.  
  14. printf(" Sun Mon Tue Wed Tur Fri Sat\n");
  15.  
  16. for (i = ; i <= n; i++){
  17. printf("%4c", ' ');
  18. }
  19. for (j = ; j <= ; j++){
  20. if ((j + n) % == ){
  21. printf("%4d", j);
  22. printf("\n");
  23. }
  24. else{
  25. printf("%4d", j);
  26. }
  27. }
  28. return ;
  29. }

结果:

程序四:

功能描述:菲波那切数列。

  1. #include<stdio.h>
  2. #define NUM 20
  3.  
  4. main()
  5. {
  6. int fib[NUM];
  7. int i;
  8.  
  9. fib[] = ;
  10. fib[] = ;
  11. for (i = ; i < NUM; i++){
  12. fib[i] = fib[i - ] + fib[i - ];
  13. }
  14. for (i = ; i < NUM; i++){
  15. if (i % == )
  16. printf("\n");
  17. printf("%6d", fib[i]);
  18. }
  19. }

结果:

程序五:

功能描述:输入一个文本行,其中包含多个单词,计算其中最长的单词长度。

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #pragma warning(disable:4996)
  5.  
  6. main()
  7. {
  8. char str[];
  9. int i, m = , L = , x = ;
  10. printf("please enter text line:");
  11. gets(str);
  12. for (i = ; i < strlen(str); i++){
  13. if (str[i] >= 'a'&&str[i] <= 'z' || str[i] >= 'A'&&str[i] <= 'Z'){
  14. m++;
  15. continue;
  16. }
  17. else{
  18. if (m>L){
  19. L = m;
  20. }
  21. m = ;
  22. }
  23. }
  24. if (m > L){
  25. L = m;
  26. }
  27. printf("the long of the largest word is %d", L);
  28. }

本博客内容为原创,版权所有违者必究,转载请注明来源 http://www.cnblogs.com/sunshine-blog/

c语言程序设计案例教程(第2版)笔记(一)—零散、输入输出、最小公倍数、选择排序、冒泡排序的更多相关文章

  1. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  2. c语言程序设计案例教程(第2版)笔记(二)—函数、递归

    零散知识点 模块化:将一个问题分解成若干个子问题的过程成为模块化. 模块化的优点:不但可以将一个复杂的问题分解成几个相对简单的问题:还可以提高程序代码的重用性. 函数:函数是构成C程序的基本单位.函数 ...

  3. c语言程序设计案例教程(第2版)笔记(六)—字符串处理实例

    字符串处理 功能描述:从键盘输入一个文本行后,为用户提供菜单选择,实现字符串一些操作——显示文本行.查找并替换指定子串.删除指定子串.统计指定子串数目. 实现代码: #include<stdio ...

  4. c语言程序设计案例教程(第2版)笔记(五)-软件开发基础知识

    零散知识点: 软件的主要特征 软件是一种逻辑产品,而不是有型的物质: 软件需要设计.开发,但不是传统意义上的产品制造: 软件不会磨损,但软件需要维护,即:修改代码或增加模块: 虽然软件行业正在向基于组 ...

  5. c语言程序设计案例教程(第2版)笔记(三)—变量、结构体

    零散知识点: 变量        :C语言中,每个变量必须先定义后引用.所谓变量存在是指系统为这个变量分配一块存储空间,此时对变量的操作,就是对变量所对应的存储空间中存放的数据进行操作.人们将变量占据 ...

  6. 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词

    第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...

  7. C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

    下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...

  8. Python基础教程(第3版) 笔记(二)

    1.8模块Python提供了完成(某人的年 龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁)这种任务的函 数floor.导入模块,可以使用特殊命令import.函数floor包含在模块 ...

  9. js高级教程第3版笔记(我的理解)陆续更新中

    js基础语法'use strict'(严格模式)定义变量var object;只声明未赋值,默认值为undefined;var object1=值;声明并赋值;function fun(a){这样也叫 ...

随机推荐

  1. vue学习001 --环境搭建

    系统 : win cmd: cmder 链接:https://cmder.net/ 1.安装node.js 链接地址: http://cdn.npm.taobao.org/dist/node/v10. ...

  2. 转 常见hash算法的原理

    散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Hash table,也叫 ...

  3. Java时间戳转化为今天、昨天、明天(字符串格式)

    原文:http://www.open-open.com/code/view/1435301895825 时间戳,相信大家一定都不陌生,服务器经常会传回来时间戳,需要我们对时间戳进行处理.各种麻烦不断, ...

  4. Android切图注意事项

    1.App Logo大小共五种: 48*48 72*72 96*96 144*144 192*192 2. App启动页所需尺寸: 320×480 480×800 720*1280 1080*1920 ...

  5. 再说javascript 的__proto__ 和prototype 属性

    过了一段时间,没写 原生的 javascript 的了,感觉天天在用框架写代码,框架写代码完全限定死了你所需要思考的东西,只是在处理一些业务逻辑,真正的代码 都感觉不会写了. 突然发现,框架用的不熟悉 ...

  6. MFC程序打开文件对话框出错的问题解决

    前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题.执行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. ...

  7. ExtJs布局中,控件如何水平居中?

    如此即可,有图有代码有j8: var formGridHead = Ext.create('Ext.form.Panel', { id: 'MyGridHead', region: 'north', ...

  8. 漫谈Deep PCA与PCANet

    又到了无聊的写博客的时间了,因为电脑在跑程序.眼下无事可做.我认为把昨天我看的一些论文方面的知识拿出来和大家分享一下. 美其名曰我是在研究"深度学习".只是因为本人是穷屌丝一个,买 ...

  9. import-module in $profile

    $PROFILE C:\Users\clu\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 Import-Module 'C:\Users\ ...

  10. YTU 2864: 分跑道。

    2864: 分跑道. 时间限制: 1 Sec  内存限制: 128 MB 提交: 23  解决: 19 题目描述 有N个人参加100米短跑比赛.跑道为8条.程序的任务是按照尽量使每组的人数相差最少的原 ...