1、除法和取余(1:教材P20、P21),整数除法:,第29套 程序修改题,两整数相除,结果必为整数,不能是小数。只有做除法的两个数至少有一方是小数,结果才能为小数。,取整数m的个位:m % 10取整数m的十位:m / 10 % 10取整数m的百位:m / 100 % 10取整数m的千位:m / 1000 % 10,第1套 程序设计题,随堂练习P5.四.1,*c = (a/10) * 1000 + (b/10) * 100 + (a%10)*10 + b%10;,1/2结果为0不是0.5;1.0/2或1/2.0或1.0/2.0结果才为0.5;20/7结果为2;-20/7结果为-2。,除法和取余(2
2、),判断m能被3整除:m % 3 = 0,判断m能被7整除:m % 7 = 0,判断m能既被3整除也能被7整除:m % 3 = 0 & m % 7 =0,第78套 程序修改题,判断m是奇数:m % 2 = 1,判断m是偶数:m % 2 = 0,除法和取余(3: 素数,教材P58),k=sqrt(m); for (i=2; ik)/* 或 if (im-1) */printf(是素数); elseprintf(不是素数);,第46套 程序填空题,第74套 程序修改题,第12套 程序修改题,相反条件,相反条件,字符(1) :设变量 char c;,判断是大写字母:c = A & c = a & c
3、 = 0 & c = 9,字符(2),大小写字母字符转换: 大写字母字符 + 32 对应小写字母字符 小写字母字符 - 32 对应大写字母字符,第50套 程序修改题,ASCII码依字母表、数字字符09的顺序顺次排列:,例:A + 1 得 B A + 2 得 C 3 + 1 得 4 9 - 2 得 7,字符(3) (随堂练习P4.二.1.2 P5. 三.5),数字字符转换为面值相同的一位整数 :c- 0 或 c 48,例:5- 0(或5- 48)可得5,第40套 程序填空题,交换两个变量的值,t=a; a=b; b=t;,交换两个变量的值:,通过循环处理数组元素编程套路,for (i=0; i元
4、素个数; i+)对ai进行操作;,int a 元素个数 ;,/* 依次输出 */for (i=0; iN; i+)printf(%d , ai);,/* 依次输入 */for (i=0; iN; i+)scanf(%d, ,/* 求和 */for (i=0; iN; i+) sum=sum+ai;,/* 统计(及格人数) */for (i=0; i=60) cnt+;,字符串处理编程套路(数组法, 教材P107),for (i=0; si!=0; i+)/* 也可写为 for (i=0; si; i+) */用 si 访问或处理每个字符;,第8套或第71套 程序设计题,int i;for (i
5、=0; ssi!=0; i+)if (i%2=1 ,字符串处理编程套路(指针法, 教材P107),char *p;p=字符串起始地址;/* p指向字符串的第一个字符 */while (*p!=0)/* 也可写为 while (*p) */用*p访问或处理每个字符;p+;/* 使p指向字符串的下一个字符 */,第22套 程序设计题,int n=0;while (*ss)if (*ss = c) n+;ss+;return n;,数组收纳编程套路,j=0; for (循环所有数据)if (某数据符合收纳条件) aj+=该数据;最终已收纳的数据个数为:j(下一可用空间是aj),第7套 程序设计题,i
6、nt i, j;j=0;for (i=1; i=m; i+)if (i % 7 =0 | i % 11 =0) aj+=i;*n=j;,第24套 程序设计题,int i, j;j=0;for (i=1; i=1000; i+)if (i%7=0 | i%11=0) ,答案不唯一,数组收纳编程套路(2)从另一数组中选,/* 从数组xi中挑选符合条件的部分数据,存入数组a */j=0; for (循环所有数据)if (某数据符合收纳条件) aj+=该数据;最终已收纳的数据个数为:j(下一可用空间是aj),( i=0; iN; i+ ),( xi符合收纳条件 ),xi ;,第37套 程序设计题,do
7、uble ave=0; int i, j;for (i=0; iN; i+) ave = ave + ai.s; ave = ave / N;j=0;for (i=0; iN; i+)if (ai.s ave) bj+=ai;*n=j;return ave;,第89套 程序设计题,int i,j;j=0;for (i=0; i= l ,数组元素删除(字符串中字符删除),j=0; for (i=0; iN; i+) if (要保留ai) aj+=ai; aj=0; /* 字符串中字符删除时执行此句 */删除后数组a中剩余数据个数为:j(下一可用空间是aj ),第97套 程序修改题,第70套 程序
8、设计题,int i,j;j=0;for (i=0; stri; i+)if (stri != ) strj+=stri;strj=0;,第18套 程序设计题,int i,j;j=0;for (i=0; si; i+)if (si != c) sj+ = si;sj=0;,第34套 程序设计题:删除字符串中所有*号,与此相同,只要把 改为* (数组名为a非str),数组元素删除(2: 删除后放新数组),j=0; for (i=0; iN; i+) if (要保留ai) bj+=ai; bj=0; /* 字符串中字符删除时执行此句 */删除后数组b中数据个数为:j(下一可用空间是bj ),第61套
9、 程序设计题,第9套 程序设计题,int i,j;j=0;for (i=0; si; i+)if ( ! (i%2=0 ,int i,j;j=0;for (i=0; si; i+)if (i%2=0 ,删除后新串放到新数组中(原数组不变)(刚才是放回原数组),数组元素删除(3:删除字符串前导*),j=0; for (i=0; iN; i+) if (要保留ai) aj+=ai; aj=0; /* 字符串中字符删除时执行此句 */删除后数组a中剩余数据个数为:j(下一可用空间是aj ),第31套 程序设计题,全要!,*A*BC*DEF*G*,A*BC*DEF*G*,int i,j;j=0;for
10、 ( ; ai; i+)aj+ = ai;aj=0;,i = ?,int i,j;for (i=0; ai; i+)if (ai!=*) break;j=0;for ( ; ai; i+)aj+ = ai;aj=0;,数组元素删除(4:删除非前导和尾部*),第33套 程序设计题,*A*BC*DEF*G*,*ABCDEFG*,j=0; for (i=0; i=h-a ,答案不唯一,字符串常用技巧(教材P108、 P111),让指针变量指向末尾0:while (*p) p+;,让指针变量指向字符串的最后一个字符:while (*p) p+; p-;,字符串的截断(先让p指向字符串最后一个字符的下一
11、位置):*p = 0;,第81套 程序设计题,while (*a) a+; a-;while (*a = *) a-;a+;*a=0;,删除字符串中尾部*号,字符串常用技巧(2)(教材P108-P109),字符串连接/拷贝(教材P109):while (*ps2) *ps1=*ps2; ps1+; ps2+; *ps1=0;/* 结束连接或拷贝后的字符串s1 */,第84套 程序填空题,ss与之是同一数组,#define N 5main()double aN=19.0, 24.0, 28.0, 8.0, 12.0; int i; double max; /*最大元素值*/max = a0; /
12、*假定a0最大*/for (i=1; i max) max=ai;printf(max=%5.1fn, max);,求数组元素最大值,max= 28.0,#define N 5main()double aN=19.0, 24.0, 28.0, 8.0, 12.0; int i; int mm; /* 最大元素的下标 */mm = 0; /* 假定a0最大 */for (i=1; i amm) mm = i;printf(max=%5.1fn, amm);,求最小值 改为 改 next;while (p!=0)/* 或写为while(p) */处理一个结点,数据为p-data; p = p-ne
13、xt;,STREC *p; double max;p=h-next; max=p-s;while(p)if (p-smax) max=p-s;p=p-next;return max;,链表是 while(p)字符串是 while(*p),第9套 程序填空题,第90套 程序设计题,选择排序法(教材P63),for (i=0; i bj) t=bi; bi=bj; bj=t; ,for (i=0; i bj) k=j; t=bk; bk=bi; bi=t; ,第52套 程序设计题,int i,j;STREC t;for(i=0; iN-1; i+)for(j=i+1; jN; j+)if (ai.
14、s 的后面一定填写结构体的成员,考试答题技巧(编程题),编程套路法:利用相应的编程套路编写出程序,也适用于填空、修改。,自制out文件法(仅适用于编程题):,所有编程题都是依据out.dat文件评分,正 常情况是通过编写程序、运行程序,通过程序 的运行生成该文件而得分的。 由于编程题答案无法统一,因此评分系统 只看这个文件,不看程序里的答案;只要这个 文件正确就会给满分。因此,我们也可以手工制作这样一个文 件,“骗”过评分系统(评分系统并不知道该文 件是手工制作的,它还认为是通过我们编程、 运行程序生成的)。只要我们手工制作的这个 文件正确,同样能得到编程题的满分24分(而 不必真的编写程序)。,第83套 程序设计题,第38套 程序设计题,第66套 程序设计题,第62套 程序设计题,第9套 程序设计题,注意事项:文件名 必须为out.dat;文 件里的内容正确; 手工制作文件后,一 定不要再运行编程题 的程序。,