c语言高手进。 帮我编程下 。 小弟感激不尽~

1,读入一个长度小于63个字符的英语句子,将其中每个单词的最后一个字母改成大写,然后输入此句子。
我要的句子是。
i an a student take the the examination.
2, 输入两个日期,要求开始日期在 终止日期之前,例如,开始日期 2007.11.15.终止日期2008.8.7
用C语言设计一个程序计算两个给定日期之间所包括的完整月份数。将计算的年数和 完整月份输出。
说明,
规定两个相邻年份的同月同日之间的间隔为一年。例如,2007.11.30—2008.11.30时间间隔为一年,若相邻两年中前一年是闰年,并且如期为2月29,则到下一年的2月28日为一年,即2008.2.29—2009.2.28的间隔为一年。
规定两个相邻月份的相同日之间的间隔给1个月,但需要特别考虑月末的特殊情况。例如2007.1.29——2007.2.28的间隔为一个月。同理。2007.1.30——2007.2.28,2007.1.31—2008.2.28的间隔都是1个月。
计算起止日期间隔不足一年的完整月份数时,分两种情况
1.起止日期不跨年度,先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修改。例如,起止日期为2008.3.31——2008.9.20.通过计算月号算出 月份数为6.修正时,通过日数比较后,将月份数修改为5.
2起止日期跨年度。计算方法如下所示:对于起止日期2008.7.25——2009.3.31.先计算2008.7.25—2008.12.25的月份数为5.再算出2008.12.25-2009.3.25的月份数为3.因此2008.7.25——2009.3.31之间的完整月份数为8.

题目长了点。
分就这么点了。
我会赚分去。
希望能快点解答。
小弟感激不尽。
...肯定是不会做呀..
我刚刚才学```

5楼的辛苦了。

可是运行不了啊?

#include<stdio.h>

int main(void)
{
int yearB=0, monthB=0, dayB=0;
int yearE=0, monthE=0, dayE=0;
int difYear, difMonth;
// 输入日期1
printf("Input the beginning date(yyyy.mm.dd)\n");
scanf("%d.%d.%d", &yearB, &monthB, &dayB);
// printf( "%d.%d.%d\n", yearB, monthB, dayB); 这行是我测试用的,甭管
// 检验日期1的合法性
switch(monthB)
{
case 2:
if( dayB<=0 || dayB>29 )
{
printf("Illegal date. exiting...");
exit(1);
}
else if( dayB==29 && !((yearB%4==0&&yearB%100!=0)||yearB%400==0) )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 4:
case 6:
case 9:
case 11:
if( dayB<=0 || dayB>30 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if( dayB<=0 || dayB>31 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

default:
printf("Illegal date. Exiting...");
exit(1);
break;
}

// 输入日期2
printf("Input the end date(yyyy.mm.dd)\n");
scanf("%d.%d.%d",&yearE,&monthE,&dayE);
// printf("%d.%d.%d\n", yearE, monthE, dayE); 甭管
// 检验日期2的合法性
switch(monthE)
{
case 2:
if( dayE<=0 || dayE>29 )
{
printf("Illegal date. Exiting...");
exit(1);
}
else if( dayE==29 && !((yearE%4==0&&yearE%100!=0)||yearE%400==0) )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 4:
case 6:
case 9:
case 11:
if( dayE<=0 || dayE>30 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if( dayE<=0 || dayE>31 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

default:
printf("Illegal date. Exiting...");
exit(1);
break;
}

// 检验日期1是否在日期2之前
if(
(yearB>yearE)
|| ((yearB==yearE)&&(monthB>monthE))
|| ((yearB==yearE)&&(monthB==monthE)&&(dayB>dayE))
)
{
printf("Error! Beginning date is later than end date. Exiting...\n");
exit(1);
}

// 相隔年数
if(monthE>monthB || (monthE==monthB&&judge_lastDay(yearE,monthE,dayE)) )
{
difYear = yearE-yearB;
}
else
{
difYear = yearE-yearB-1;
}

// 相隔完整月数
if( judge_lastDay(yearE, monthE, dayE) )
{
difMonth = (monthE-monthB+12)%12;
}
else
{
difMonth = (monthE-monthB+11)%12;
}

// 输出
printf( "There are %d year(s) and %d month(s) from beginning date to end date.\n", difYear, difMonth );

}

// 月末日期判断函数
int judge_lastDay( int year, int month, int day )
{
switch(day)
{
case 28:
if( month==2 && !((year%4==0&&year%100!=0)||year%400==0) )
return 1;
break;

case 29:
if(month==2 && ((year%4==0&&year%100!=0)||year%400==0))
return 1;
break;

case 30:
if( month==4||month==6||month==9||month==11)
return 1;
break;

case 31:
if( month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return 1;
break;

default:
return 0;
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-11
1.

#include<stdio.h>

int main(void)
{
char input[63], c;
int i=0;

// 输入句子
printf("Input your sentence\n");
while((c=getchar())!='\n'&&i<63)
{
*(input+i)=c;
i++;
}
input[i]='\0';

// printf("%s\n", input);
i=0;

// 改变大小写
while(input[i]!='\0')
{
if( (input[i]<'A' || (input[i]>'Z'&&input[i]<'a') || input[i]>'z')
&& (input[i-1]>='a'&&input[i-1]<='z') )
{
input[i-1]-=32;
}
i++;
}
// 输出
printf("%s\n", input);

return 0;
}

2.完整月份的问题我还有些疑问,1月18日到4月15日之间是 2个完整月吗?应该不能用1月份的13天填补4月份吧?如果我理解有误,你把完整月计算部分改一下就行了。

#include<stdio.h>

int main(void)
{
int yearB=0, monthB=0, dayB=0;
int yearE=0, monthE=0, dayE=0;
int difYear, difMonth;
// 输入日期1
printf("Input the beginning date(yyyy.mm.dd)\n");
scanf("%d.%d.%d", &yearB, &monthB, &dayB);
// printf( "%d.%d.%d\n", yearB, monthB, dayB); 这行是我测试用的,甭管
// 检验日期1的合法性
switch(monthB)
{
case 2:
if( dayB<=0 || dayB>29 )
{
printf("Illegal date. exiting...");
exit(1);
}
else if( dayB==29 && !((yearB%4==0&&yearB%100!=0)||yearB%400==0) )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 4:
case 6:
case 9:
case 11:
if( dayB<=0 || dayB>30 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if( dayB<=0 || dayB>31 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

default:
printf("Illegal date. Exiting...");
exit(1);
break;
}

// 输入日期2
printf("Input the end date(yyyy.mm.dd)\n");
scanf("%d.%d.%d",&yearE,&monthE,&dayE);
// printf("%d.%d.%d\n", yearE, monthE, dayE); 甭管
// 检验日期2的合法性
switch(monthE)
{
case 2:
if( dayE<=0 || dayE>29 )
{
printf("Illegal date. Exiting...");
exit(1);
}
else if( dayE==29 && !((yearE%4==0&&yearE%100!=0)||yearE%400==0) )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 4:
case 6:
case 9:
case 11:
if( dayE<=0 || dayE>30 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if( dayE<=0 || dayE>31 )
{
printf("Illegal date. Exiting...");
exit(1);
}
break;

default:
printf("Illegal date. Exiting...");
exit(1);
break;
}

// 检验日期1是否在日期2之前
if(
(yearB>yearE)
|| ((yearB==yearE)&&(monthB>monthE))
|| ((yearB==yearE)&&(monthB==monthE)&&(dayB>dayE))
)
{
printf("Error! Beginning date is later than end date. Exiting...\n");
exit(1);
}

// 相隔年数
if(monthE>monthB || (monthE==monthB&&judge_lastDay(yearE,monthE,dayE)) )
{
difYear = yearE-yearB;
}
else
{
difYear = yearE-yearB-1;
}

// 相隔完整月数
if( judge_lastDay(yearE, monthE, dayE) )
{
difMonth = (monthE-monthB+12)%12;
}
else
{
difMonth = (monthE-monthB+11)%12;
}

// 输出
printf( "There are %d year(s) and %d month(s) from beginning date to end date.\n", difYear, difMonth );

}

// 月末日期判断函数
int judge_lastDay( int year, int month, int day )
{
switch(day)
{
case 28:
if( month==2 && !((year%4==0&&year%100!=0)||year%400==0) )
return 1;
break;

case 29:
if(month==2 && ((year%4==0&&year%100!=0)||year%400==0))
return 1;
break;

case 30:
if( month==4||month==6||month==9||month==11)
return 1;
break;

case 31:
if( month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return 1;
break;

default:
return 0;
}
return 0;
}

你觉得我写这么长的代码敢不调试运行就放上来吗?我这里完全可以运行,应该是编译器的问题,一般都是库函数所属头文件的问题。还有就是一些标识符转到文档编辑器里可能就不是合法符号了。你可以自己调试一下呀,编译器里错误和警告出现在哪一行都写的很清楚,实在不行再提问,难道都等别人喂着吃吗?

下面是我这里的输出,我用的gcc在windows下的兼容版本mingw。

F:\C\MyFile>gcc 83.c

F:\C\MyFile>a.exe
Input your sentence
areyousick alkdge alkg; dalsk.
areyousicK alkdgE alkG; dalsK.

F:\C\MyFile>gcc 84.c

F:\C\MyFile>a.exe
Input the beginning date(yyyy.mm.dd)
2002.12.1
Input the end date(yyyy.mm.dd)
2005.6.21
There are 2 year(s) and 5 month(s) from beginning date to end date.

F:\C\MyFile>
第2个回答  2008-11-11
#include <stdio.h>
#define MAX 64

int main(void)
{
char a[MAX];
int i,n;

for(i=0;;i++)
{
scanf("%c",&a[i]);
if(a[i]=='\n')
break;
}
n=i;
for(i=0,flag=0;i<=n;i++)
{
if('a'<=a[i]&&a[i]<='z'||'A'<=a[i]&&a[i]<='Z')
flag=1;
else
{
if(flag==1)
{
a[i-1]=a[i-1]<='Z'?a[i-1]:a[i-1]-'a'+'A';
flag=0;
}
}
}
for(i=0;i<n;i++)
printf("%c",a[i]);
printf("\n");
return 0;
}
第3个回答  2008-11-11
题目很繁琐,我想知道的是你是 不会做 还是 懒得做??
第4个回答  2008-11-11
分有点少吧,兄弟

c语言高手进。 帮我编程下 。 小弟感激不尽~
int main(void){ int yearB=0, monthB=0, dayB=0;int yearE=0, monthE=0, dayE=0;int difYear, difMonth;\/\/ 输入日期1 printf("Input the beginning date(yyyy.mm.dd)\\n");scanf("%d.%d.%d", &yearB, &monthB, &dayB);\/\/ printf( "%d.%d.%d\\n", yearB, monthB, day...

编程达人帮下忙,在下感激不尽。
void main(){ double num[100],s,a,tem;int i,j,n;while(scanf("%d",&n)!=EOF){ for (i=0;i<n;i++)scanf("%lf",&num[i]);for (i=0;i<n;i++)for(j=i+1;j<n;j++)if(num[i]>num[j]){ tem=num[i];num[i]=num[j];num[j]=tem;} s=0.0;for(i=1;i...

C语言编程求助!!!求高手帮忙!感激不尽!
include"string.h"int main(){ int i,s = 0; \/*请修改此处:int和i间有空格; 计算的和值s首先要清零 *\/ char str[80];i=0;while ((str[i]=getchar())!='\\n')i++;str[i]='\\0';for(i=0;i<80;i++)if (str[i]>='0' && str[i]<='9') \/*请修改此处:应该是...

...帮我解答一下,各位哥哥姐姐帮帮忙啊!小弟感激不尽,请把过程也写下来...
6.没题目

求C语言高手帮我编下这几个程序。
我要的句子是。i an a student take the the examination.2, 输入两个日期,要求开始日期在 终止日期之前,例如,开始日期 2007.11.15.终止日期2008.8.7 用C语言设计一个程序计算两个给定日期之间所包括的完整月份数。将计算的年数和 完整月份输出。说明,规定两个相邻年份的同月同日之间的间隔为...

想认真学习下C语言,找个师傅指导下,感激不尽
那劝你最好在两到三个星期内把唐浩强的《c语言程序设计教程第二版》把它看完,然后把书上的每个程序都自己敲一遍。这做完后再去买本《c语言课程设计》敲上面的程序,然后再自己做一些实际的题目,总的来说就是要不断的敲程序,不断地练,积累代码量,量变引起质变 ...

C语言题目,谁帮我解决,感激不尽,最好用最简单的方式写,因为我们还没学...
1、这真的是个很基础的题目,希望楼主自己查阅相关资料然后敲一下,现在初学连这点代码量都懒得敲怎么学的好?2、反正我是很反感楼主这种“拿来主义”,希望楼主真的自己去独立完成。3、如果你真的不愿意敲,那我只能祝福楼主找到一个勤快的人发份代码给你吧~ 反正我是不会做这种事情~

C程序求助。高手进
include<stdlib.h> include srand((int)time(0));r = min + (int)rand()%(max-min);

C语言大作业,C语言高手们救下小弟啊```
这是我在大学做过的课程设计,你看看:\/ 程序功能:能完成每位学生的某门课程的平时成绩和期末考试成绩的录入,完成每位学生的总评成绩计算(平时成绩*30%+期末考试成绩*70%)并生成数据文件,生成分数段统计文件(不及格人数,60-69数,70-79人数,80-89人数,90-100人数,及格率),通过学生成绩的...

...我参加笔试的一个题目,希望高手能给帮助,感激不尽!
\/\/不断地该系统分配内存,直到溢出,为测试这东西害我死机了,多少意思一下哦 ^0 0^ include<stdio.h> include<stdlib.h> int main(){ int *die;int t = 1;while(1){ t++;die = (int*)malloc(1024*1024*t);} return 0;}

相似回答
大家正在搜