零散知识点:
1、非格式化输入输出:getchar()、putchar()
2、格式化输入输出 :scanf()、printf()
3、字符串输入输出 :gets()或scanf()、puts()或printf()。
区别:gets()函数以换行符或文件结束符EOF作为输入的结束标志,因此,在输入的字符串中允许包含空格或制表符;
scanf()函数则以空格、制表符、换行符和文件结束符EOF作为输入的结束标志,因此,在输入的字符串中不允许包含这些字符。
puts()函数在字符串显示完毕后换行。
printf()函数不会进行换行。
4、%f 表示这个位置应该输入一个实型数值
5、%s 表示这个位置应该输入一个字符串
6、break语句的目的是:终止执行后面分支的语句序列。
7、continue语句只能应用在循环语句中,它的作用是:强制终止本次循环的执行,转去执行下一次循环。
8、求两个数的最小公倍数:首先比较大小(大小排序),后使用辗转相除法,求出最大公约数(被除数/除数=商…余数,后使用除数除以余数,直至余数为0;),再使用两个数的乘积除以该最大公约数,即可。
9、一维数组:变量一经定义,系统将会为每个数组型变量分配一片连续的存储空间。
10、32位操作系统,int类型是4字节。
11、int vote[10]={0} 表示为每一个元素赋予初值0。
12、采用键盘输入的方式为数组中的每个元素赋值:
int i; int score[13]; for (i = 0; i < 13; i++){ scanf("%f", &score[i]); }
13、判断是否为英文字母
1)(‘A‘<=ch && ch <=‘Z‘) || (‘a<=ch && ch <=‘z‘)
2)isalpha(c) c是一个字符,头文件是<ctype.h>。当c为英文字母,函数返回非0;否则函数返回0。
14、排序问题——选择排序法:
程序一:
功能描述:输入一个整数n,打印输出一个由n个字符星号“*”组成的等边三角形。
#include <stdio.h> main() { int n, i, j; printf("please enter the side of the triangle:"); scanf_s("%d", &n); for (i = 1; i <= n; i++){ for (j = 1; j <= n - i; j++){ putchar(‘ ‘); } for (j = 1; j <= i; j++){ putchar(‘*‘); if (j != i){ putchar(‘_‘); } } putchar(‘\n‘); } }
结果:
程序二:
功能描述:输入文本行,统计其中包含的行数、单词书、字符数。
#include <stdio.h> #include <stdlib.h> #include<string.h> #pragma warning(disable:4996) #define IN 1 /* inside a word */ #define OUT 0 /* outside a word */ /* count lines, words, and characters in input */ main() { int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while ((c = getchar()) != ‘END‘) { ++nc; if (c == ‘\n‘) ++nl; if (c == ‘ ‘ || c == ‘\n‘ || c == ‘\t‘) state = OUT; else if (state == OUT) { state = IN; ++nw; } } printf("%d %d %d\n", nl, nw, nc); }
程序三:
功能描述:输出当年当月的月历。
#include <stdio.h> main() { int n, i, j; scanf_s("%d", &n); if (n == 7) n = 0; else n = n; printf(" Sun Mon Tue Wed Tur Fri Sat\n"); for (i = 1; i <= n; i++){ printf("%4c", ‘ ‘); } for (j = 1; j <= 30; j++){ if ((j + n) % 7 == 0){ printf("%4d", j); printf("\n"); } else{ printf("%4d", j); } } return 0; }
结果:
程序四:
功能描述:从键盘输入一个正整数,输出这个整数的所有因子。