c练习题
来源:互联网 发布:linux java ide 编辑:程序博客网 时间:2024/04/29 18:55
2013蓝桥杯的一些题目,看到就拿来做一下了。
/* calculate the date through the count of day and birthday eg:birthday:1777/4/30 day:5343 => 1971/12/5 */#include<stdio.h>int Isleapyear(int year){ return (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));}int GetMaxDay(int year, int month){ switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: return (Isleapyear(year) ? 29:28); default: return -1; } }int GetXDays(int *year, int *month, int day, int X){ int i; for(i = 0; i < X; i++) { if(day != GetMaxDay((int)*year, (int)*month)) { ++day; } else { day = 1; if(*month != 12) ++*month; else { *month = 1; ++*year; } } } printf("year= %d, month = %d, day = %d\n", *year, *month, day); return day;}int main(void){ int day, X; int year, month; year = 1777; month = 4; day = 30; X = 5343; day = GetXDays(&year, &month, day, X); printf("year= %d, month = %d, day = %d\n", year, month, day); return 0;}
/* resverse 1 2 3 4 5 6 7 8 9 */#include<stdio.h>#include<string.h>#include<stdlib.h>int reverse(int price){ int i, len, tmp, opi; char buf[8] = {0}; sprintf(buf, "%d", price); len = (int)strlen(buf); if(buf[3] == 0) return -1; for(i = 0; i < len; i++) { if(buf[i] == '3' || buf[i] == '4' || buf[i] == '7') return -1; else if(buf[i] == '6') buf[i] = '9'; else if(buf[i] == '9') buf[i] = '6'; } for(i = 0; i < len / 2; i++) { opi = len - 1 - i; tmp = buf[i]; buf[i] = buf[opi]; buf[opi] = tmp; } price = atoi(buf); return price;}int find_price(void){ int sub1, sub2, i, j; for(i = 1000; i < 9999; i++) { if(reverse(i) == -1) continue; sub1 = i - reverse(i); if(sub1 < 200 || sub1 > 300) continue; for(j = 1000; j < 9999; j++) { if (reverse(j) == -1) continue; sub2 = j - reverse(j); if(sub2 < 800 || sub2 > 900) continue; if((sub2 - sub1) == 558) { printf("i = %d , j = %d, opi = %d, opj = %d\n", i, j,reverse(i), reverse(j)); printf("i - opi = %d, j - opj = %d opj - opi = %d\n", i - reverse(i), j - reverse(j), j - reverse(j) - i + reverse(i)); } } } return 0;}int main(void){ find_price(); return 0;}
/* find the number such as: 203879 * 203879 = 41566646641 */#include<stdio.h>#include<stdlib.h>#include<string.h>int same(int x){ int i, j, tmp; //char buf[32] = {0}; char buf[32]; sprintf(buf, "%d", x); //printf("buf = %d", (int)strlen(buf)); for(i = 0; i < 5; i++) { tmp = buf[i]; for(j = i+1; j < 6; j++) { if(tmp == buf[j]) return 1; } } return 0;}int has_same_bit(int x, long num){ int i, j; char buf1[32], buf2[64]; sprintf(buf1, "%d", x); sprintf(buf2, "%ld", num); for(i = 0; i < 6; i++) { for(j = 0; j < (int)strlen(buf2); j++) { //printf("buf1[%d] = %c, buf2[%d] = %c\n", i, buf1[i], j, buf2[j]); if(buf1[i] == buf2[j]) return 1; } } return 0;}int main(void){ int i; long num; for(i = 100000; i < 999999; i++){ num = (long)i*i; //printf("i = %ld, num = %ld\n", i, num); if(same(i)) continue; if(has_same_bit(i, num)) continue; else printf("the number is %d\n", i); } return 0;}
strlen:
/* strlen */#include<stdio.h>//int mystrlen(const char a[])int mystrlen(const char *a) { if(*a == '\0'){ printf("this is a comment\n"); return 0; } else { printf("call myself\n"); return 1 + mystrlen(a+1); } }int main(void){ printf("%d\n", mystrlen("test")); return 0; }
/* jump grid:*/#include<stdio.h>#define START_ROW 0#define START_COL 0#define END_COL 4#define END_ROW 3int sum = 0;void visit(int row, int col){ if(row == END_ROW && col == END_COL) ++sum; if(row + 1 < 4) visit(row+1, col); if(col + 1 < 5) visit(row, col+1);}int main(void){/* const int array[][] = { {0, 1, 2, 3, 4}, {1, 2, 3, 4, 5}, {2, 3, 4, 5, 6}, {3, 4, 5, 6, 7} }; */ int row, col; int a[4][5]; /* initial array */ for(row = 0; row < 4; row++) for(col = 0; col < 5; col++) a[row][col] = row + col; visit(START_ROW, START_COL); printf("sum = %d\n", sum); return 0;}
#include<stdio.h>#include<stdlib.h>int main(){ char ch[7]; int a[100] = {0}; int i = 0, c; int n = 0; int max = 0, min = 99; int missing = 0, repeating = 0; while(n < 2 && (ch[i] = getchar()) != EOF) { if (ch[i] <= '9' && ch[i] >= '0') i++; else if (ch[i] == ' ') { i = 0; c = atoi(ch); if(max < c) max = c; if(min > c) min = c; a[c]++; printf("c = %d, a[%d] = %d\n", c, c, a[c]); } else if(ch[i] == '\n') { i = 0; n++; c = atoi(ch); if(max < c) max = c; else if(min > c) min = c; a[c]++; printf("n++, c = %d, a[%d] = %d\n", c, c, a[c]); } } for(i = min; i < max; i++) { if(a[i] == 0) { missing = i; } if(a[i] > 1) { repeating = i; } } printf("min = %d, max = %d\n", min, max); printf("missing = %d, repeating = %d\n", missing, repeating); return 0;}
- C练习题
- C练习题
- c练习题
- c练习题
- c练习题
- [c] 练习题
- [c] 练习题
- C#.NET程序设计 练习题
- c++primer 练习题模板
- C 语言练习题
- c语言循环练习题
- C语言程序练习题
- c语言练习题
- c语言练习题2
- c语言练习题1
- c语言练习题3
- c语言练习题
- c语言练习题
- hadoop使用中常见问题的总结
- 第14周项目6-成绩处理
- 网站开发积累(id)
- Box2D C++ tutorials - 运行轨迹(Projected trajectories)
- Word Reversal 逆序输出
- c练习题
- Android离线操作的一点
- Python3.x和Python2.x的区别
- 电容品牌汇总
- 故事
- 仿YouToBe给页面顶部加一个进度条
- 交叉编译ncurses-5.9
- 思维的惯性之游戏中buf管理
- 水平导航条效果 div+css