|
54樓 巨大八爪鱼
2016-1-16 15:22
【6】 #include <stdio.h>
int str2int(char *str) { int n = 0; while (*str != '\0') { if (*str >= '0' && *str <= '9') n = n * 10 + (*str - '0'); str++; } return n; }
void main() { char str[50]; int n; gets(str); n = str2int(str); printf("%d\n", n); }
|
|
55樓 巨大八爪鱼
2016-1-16 15:28
【7】 #include <stdio.h>
void _strcpy(char *target, char *src) { while (*src != '\0') *target++ = *src++; *target = '\0'; // 这句话非常重要 }
void main() { char str[256]; char str2[256]/* = "there is a key, there is a hat"*/; gets(str); _strcpy(str2, str); puts(str2); }
|
|
57樓 巨大八爪鱼
2016-1-16 15:35
【8】 #include <stdio.h> #include <string.h>
char *getFileExtName(char *filename) { int len = strlen(filename); int i; for (i = len - 1; i >= 0; i--) // 注意是i>=0,不是i>0 { if (filename[i] == '.') return filename + i + 1; } return filename + len; // 获取最后一个\0的位置,无需加1 }
void main() { char filename[100]; gets(filename); printf("Extension: %s\n", getFileExtName(filename)); }
|
|
58樓 巨大八爪鱼
2016-1-16 15:59
【9】 #include <stdio.h>
int _strcmp(char *str1, char *str2) { while (*str1 == *str2 && *str1 != '\0' && *str2 != '\0') { str1++; str2++; } if (*str1 > *str2) return 1; else if (*str1 < *str2) return -1; else return 0; }
void main() { char str1[100]; char str2[100]; int rs; gets(str1); gets(str2); rs = _strcmp(str1, str2); if (rs == 1) printf("str1 > str2\n"); else if (rs == -1) printf("str1 < str2\n"); else if (rs == 0) printf("str1 == str2\n"); }
|
|
59樓 巨大八爪鱼
2016-1-16 16:13
【10】 #include <stdio.h>
void draw(int level) { int i, j; for (i = 0; i < level; i++) { for (j = 0; j < level - 1 - i; j++) putchar(' '); for (j = 0; j < 2 * i + 1; j++) putchar('*'); putchar('\n'); } }
void main() { int i; scanf("%d", &i); draw(i); }
|
|
60樓 巨大八爪鱼
2016-1-16 16:25
【11】 #include <stdio.h>
int prime(int a[]) { int count = 0, i, j; int flag; for (i = 2; i < 1000; i++) // 必须以2开头 { flag = 1; for (j = 2; j < i; j++) { if (i % j == 0) { flag = 0; break; // 注意break无法跳出两层循环,所以只能设置flag } } if (flag == 1) a[count++] = i; } return count; }
void main() { int a[1000]; int i; int count = prime(a); printf("共有%d个素数。\n", count); for (i = 0; i < count; i++) { printf("%4d", a[i]); if ((i + 1) % 10 == 0) printf("\n"); } }
|
|
61樓 巨大八爪鱼
2016-1-16 16:26
也可以不设置flag,直接判断内层循环结束后i是否等于j就行: int prime(int a[]) { int count = 0, i, j; for (i = 2; i < 1000; i++) // 必须以2开头 { for (j = 2; j < i; j++) { if (i % j == 0) break; } if (i == j) a[count++] = i; } return count; }
|
|
62樓 巨大八爪鱼
2016-1-16 16:39
【12】 #include <stdio.h>
double H(int n, double x) { switch (n) { case 0: return 1; case 1: return 2 * x; default: return 2 * x * H(n - 1, x) - 2 * (n - 1) * H(n - 2, x); } }
void main() { int n; double x; scanf("%d%f", &n, &x); printf("%.2f", H(n, x)); }
|
|
63樓 巨大八爪鱼
2016-1-16 16:43
【13】 #include <stdio.h>
int fibon(int n) { switch (n) { case 0: case 1: return n; default: return fibon(n - 1) + fibon(n - 2); } }
void main() { int n; scanf("%d", &n); printf("fn = %d\n", fibon(n)); }
|
|
64樓 巨大八爪鱼
2016-1-16 16:49
【14】 #include <stdio.h>
int narcis(int m[]) { int i, count = 0; int a, b, c; for (i = 100; i <= 999; i++) { a = i / 100; b = i % 100 / 10; c = i % 10; if (a * a * a + b * b * b + c * c * c == i) m[count++] = i; } return count; }
void main() { int m[1000]; int i; int count = narcis(m); for (i = 0; i < count; i++) { printf("%4d", m[i]); if ((i + 1) % 5 == 0) putchar('\n'); } putchar('\n'); }
|