while(s < m) { t = a1 + 2 * a2; s = s + t; n = n + 1; a1 = a2; a2 = t; } printf(\"m=%d,n=%d\\n\ b[i] = n; }【审题关键句】F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)。
int f0 = 0, f1 = 1, f2 = 1; while(f2 < t) { f0 = f1; f1 = f2; f2 = f0 + f1; } return f2; 【审题关键句】Xn+1=cos(Xn)的迭代计算。
double x0, x1= 0.0; while(1) { x0 = x1; x1 = cos(x0); if(fabs(x0 - x1) < 0.000001) break; } return x1;
【审题关键句】读入数值,奇数个数,偶数个数,数组下标为偶数的平均值。
int i; cnt1=0; cnt2=0; pj=0; for(i = 0; i < N; i++) { if(xx[i] % 2) cnt1++; else cnt2++; if(i % 2==0) pj += xx[i]; } pj /= 100.0;
【审题关键句】读取正数,统计个数,右移后为奇数的个数及平均值。 int i, j; long he = 0; for(i = 0; i < MAXNUM; i++) if(xx[i]) totNum++; for(i = 0; i < totNum; i++) { j = (xx[i] >> 1); if(j % 2) { totCnt++; he += xx[i]; }} totPjz = (double) he / totCnt;
【审题关键句】读取1 000个数,奇数个数及平均值,偶数个数、平均值及方差。 int i, odd=0; for(i = 0; i < MAX; i++) if(xx[i] % 2) { odd++; ave1 += xx[i]; } else { even++; ave2 += xx[i]; } ave1 /= 1.0 * odd; ave2 /= 1.0 * even; for(i = 0; i < MAX; i++) { if(xx[i] % 2 == 0)
totfc += (xx[i] - ave2) * (xx[i] - ave2); } totfc /= 1.0 * even;
【审题关键句】最大数及其个数,同时被3或7整除的整数的算术平均值。 int i, cnt1 = 0; max = 0; cnt = 0; pj = 0.0; for(i = 0; i < N; i++){
if((xx[i] % 3) == 0 || (xx[i] % 7) == 0) { pj += xx[i]; cnt1++; } if(xx[i] > max) { max = xx[i]; cnt = 1; } else if(xx[i] == max) cnt++;} pj /= (float) cnt1; 【审题关键句】10列100行选票,每行小于等于5的无效,统计存入数组
int i, j, cnt; for(i = 0; i < 100; i++) { cnt = 0; for(j = 0; j < 10; j++) if(xx[i][j] == '1') cnt++; if(cnt > 5) for(j = 0; j < 10; j++) if(xx[i][j] == '1') yy[j]++;}
【审题关键句】计算金额,按产品代码从小到大进行排列,相同的则按金额从小到大排列,结果存入结构数组。
int i, j, len; PRO tmp; len = sizeof(tmp); memset((PRO *) & tmp, 0, len); for(i = 0; i < 100; i++) for(j = i + 1; j < 100; j++) {
if(strcmp(sell[i].dm, sell[j].dm) > 0 || (sell[i].je > sell[j].je && strcmp(sell[i].dm, sell[j].dm) == 0)) { memcpy((PRO *) & tmp, (PRO *) & sell[i], len); memcpy((PRO *) & sell[i], (PRO *) & sell[j], len); memcpy((PRO *) & sell[j], (PRO *) & tmp, len); }} 【关键】第1个数大于第2个数加第3个数,存入数组,按第1个加第3个数之和升序排序。 int i, j, count = 0; Data cc; for(i = 0; i < 200; i++) { if(aa[i].x1 > (aa[i].x2 + aa[i].x3))
2
memcpy((Data *) &bb[count++], (Data *) &aa[i], sizeof(Data));} for(i = 0; i < (count - 1); i++) for(j = i+1; j < count; j++) { if((bb[i].x1+bb[i].x3) > (bb[j].x1+bb[j].x3)) { memcpy((Data *) &cc, (Data *) &bb[i], sizeof(Data)); memcpy((Data *) &bb[i], (Data *) &bb[j], sizeof(Data));
memcpy((Data *) &bb[j], (Data *) &cc, sizeof(Data)); } } return count;
【关键句】字符替代f(p)=p*11 mod 256,小于等于32或ASCII码是奇数不变,否则替换。 int i, j; for(i = 0; i < maxline; i++) for(j = 0; j < (int) strlen(xx[i]); j++) { val = (xx[i][j] * 17) % 256; if(!(val <= 32 || (val % 2))) xx[i][j] = val; }
【审题关键句】以行为单位对字符按从大到小排序,结果仍按行重新存入字符串数组中。 char ch; unsigned int i, j, k; for(i = 0; i < maxline; i++) { for(j = 0; j < strlen(xx[i]); j++) { for(k = j; k < strlen(xx[i]); k++) { if(xx[i][j] < xx[i][k]) { ch = xx[i][k]; xx[i][k] = xx[i][j]; xx[i][j] = ch;}}}} 【审题关键句】以行为单位从字符串左边部分降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理。
char ch, str[80]; int i, j, k, len, p; for(i = 0; i < 20; i++) { len = (int) strlen(xx[i]); p = len / 2; for(j = 0; j < (p-1); j++) { for(k = j + 1; k < p; k++) { if(xx[i][j] < xx[i][k]) { ch = xx[i][k]; xx[i][k] = xx[i][j]; xx[i][j] = ch;}}} if(len % 2) { strcpy(str, xx[i] + p + 1); strncat(str, xx[i] + p, 1); strncat(str, xx[i], p); } else {
strcpy(str, xx[i] + p); strncat(str, xx[i], p); } strcpy(xx[i], str); }
【审题关键句】以行为单位,新字符串中每个字符的ASCII码值等于该位置上的原字符ASCII码值的二进制右移4位后加其前一个字符的ASCII码值。
int i, j, strl; char ch; for (i=0; i0; j--) { string[i][j] >>= 4; string[i][j] += string[i][j-1]; } string[i][0] += ch; } 【审题关键句】以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,大小写不变,其他字符不变。int i, j; for(i = 0; i < maxline; i++) for(j = 0; j < (int) strlen(xx[i]); j++) { if(xx[i][j] == 'a') xx[i][j] = 'z'; else if(xx[i][j] > 'a' && xx[i][j] <= 'z') xx[i][j]--; } 【审题关键句】以行为单位,依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放。
int i; char before[80], after[80], *p; for(i = 0; i < maxline; i++) { while(1) { p = strchr(xx[i], 'o'); if(p != NULL) { strcpy(after, xx[i] + (p - xx[i] + 1)); *p = 0; strcpy(before, xx[i]); strcpy(xx[i], after); strcat(xx[i], before); } else break; }}
【审题关键句】以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。 char line[80], word[80], *p; int i, j; for(i = 0; i < maxline; i++) { memset(line, 0, 80); memset(word, 0, 80); p = xx[i]; j = 0; while(*p) { while(isalpha(*p)) line[j++] = *p++; strcat(line, \" \"); strcat(line, word); strcpy(word, line);
memset(line, 0, 80); j = 0; while(*p && !isalpha(*p)) p++; } strcpy(xx[i], word); } 【审题关键句】数组相同下标位置上的奇数和偶数,二进制数左移八位,对应数组元素相加,保存到新数组,从小到大排序。
int i, j; unsigned int v; for(i = 0; i < MAX; i++)
if(((a[i] % 2) && (b[i] % 2) == 0) || ((a[i] % 2) == 0 && (b[i] % 2)))
c[cnt++] = (a[i] << 8) + b[i]; for(i = 0; i < cnt; i++) for(j = i + 1; j < cnt; j++)
3
if(c[i] > c[j]) { v = c[i]; c[i] = c[j]; c[j] = v; } 【审题关键句】字符的ASCII值左移4位二进制位,低位补0,新值小于等于32或大于100,则原字符保持不变;否则等于左移后的值再加上原字符的ASCII值。
unsigned char tmp; int i, j; for(i = 0; i < maxline; i++) { for(j = 0; j < (int) strlen(xx[i]); j++) { tmp = (xx[i][j] << 4); if(!(tmp <= 32 || tmp > 100)) xx[i][j] += tmp;}}
【审题关键句】把str字符串中的所有字母改写成该字母的下一个字母。
char *p = s, ch; while(*p) { ch = *p; if(isalpha(ch) && ch != 'z' && ch != 'Z') *p = ch + 1; else if(ch == 'z') *p = 'a'; else if(ch == 'Z') *p = 'A'; p++; } 【审题关键句】围圈问题。
int i, j, s1, w; s1 = s; for (i=1; i<=n; i++) p[i-1] = i; for (i=n; i>=2; i--) { s1 = (s1+m-1)%i; if (s1 == 0) s1 = i; w = p[s1-1]; for (j=s1; j<=i-1; j++) p[j-1] = p[j]; p[i-1] = w; }
【审题关键句】求实数的平均值aver;求实数的整数部分之和及小数部分之和。 int i; long num; for(i = 0; i < N; i++) { num = (long)xx[i]; sumint += num; sumdec += (xx[i] - num); aver += xx[i]; } aver /= N;
【审题关键句】将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。
int i, j, k, value,num; for (i=0; i<10; i++) { value = a[i][0]; for (j=0; j<9; j++) if (a[i][j] < value) { num = a[i][j]; for (k=j; k>0; k--) a[i][k] = a[i][k-1]; a[i][0] = num; }} 【审题关键句】统计一个长度为2的子字符串在另一个字符串中出现的次数。 char *p, *q = str; int cnt = 0; while(1) { p = strstr(q, substr); if(p == NULL) break; cnt++; q = p + 2; } return cnt; 【审题关键句】回文 int jsValue(long n) {long int s=0,k; k=n; while(k)
{ s=s*10+k%10; k/=10; }
if(s==n) return 1; if(s!=n) return 0; }
4