};
int GetAbsDaays(MyDate x) { int i;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; int year=x.year-1 //因为欲求距离1年1月1日的差值 int days=year*365+year/4-year/100+year/400;
if(x.year%4==0&&x.year0!=0||x.year@0==0) month_day[1]++; for(i=0;i<____;i++) days+=month_day[i]; days+=x.day-1; return days; }
int GetDiffDays(MyDate a,MyDate b) {
return GetAbsDays(b)-GetAbsDays(a); }
int main(int argc,char *argv[]) {
MyDate a={1842,5,18}; MyDate b={2000,3,13}; int n=GetDiffDays(a,b); printf(\}
第五题:轮转数(每个字符依次向右移) 例:
字符串abcd 经过一次轮转后为dabc 此时位移记作1 字符串abcd 进过两次轮转后为 cdab 此时位移记作2 以下代码为求字符串S,经过n次位移后的新字符串 void shift(char *s,int n) { char *p; char *q; int len=strlen(s); if(len==0) return;
char *s2=(char *)malloc(_______); p=s; q=s2+n%len; while(*p) {
*q++=*p++; if((q-s2)=len) {
*q=_____; q=s2; } }
strcpy(s,s2); free(s2); } 第六题: 金字塔数
space 为塔底边距离左边的空白长度 x 塔底中心字母 例:当space=0,x='C' 输出: A ABA ABCBA
当space=2,x='E' A ABA ABCBA ABCDCBA ABCDEDCBA void h(int space,char x) { int i;
if(x<'A'||x>'Z') return; _________________;
for(i=0;i 第七题:中奖计算 函数返回所中的最大连续数字的个数 int g(int a,int b) { char sa[]=\ char sb[]=\ int n; int i,j; sprintf(sa,\ sprintf(sb,\ for(i=0;i<8;i++) { for(j=1;j<=8-i;j++) { char t=______; sa[i+j]=0; if(strstr(sb,sa+i)) { if(j>n) ________; } sa[i+j]=t; } } return n; } 编程题: 第八题:字符串处理,满足以下要求: 1、单词首字母转换为大写 2、数字与字母或字母与数字间均用下划线(_)隔开 3、多个空格转换为一个 第九题:表格 例: 输入: cat,dog,good 1,2,5 do not use,,that 输出: +----------+---+----+ | cat |dog|good| +----------+---+----+ | 1 | 2| 5 | +----------+---+----+ |do not use| |that| +----------+---+----+ 第十题: 有5个砝码 重量为1,3,9,27,81 可以组合成1-121之间任意整数 对于用户给定的重量,给出砝码方案 如:输入5 输出:9-3-1 输入19 输出27-9+1 1、第二届全国软件专业设计与开发大赛选拔赛试题 2、代码填空(满分3分) 神秘的三位数 有这样一个三位数,组成它的3个数字阶乘之和正好等于它本身。即abc = a! + b! + c! 下面的程序用于搜索这样的3位数。请补全缺失的代码。 int JC[]={1,1,2,6,24,120,720,5040,40320,362880}; int i; for(i=100;i<1000;i++) { int sum = 0; int x = i; while( ) { sum + = JC[x]; x / = 10; } if( i==sum) printf(\ }

