1. 【c语言】键盘上输入数字形式的年月日,输出英文形式的年月日,并指出这天是当年的第几天.哪里错了【在线】
一楼14级的大神,C语言中的注释行能用“//”引出吗?是不是看成C++了。。。。。。
LZ,你的int f(int a,int b,int c)这个函数是不是a是年、b是月、c是日,对吧,那么你的第一句if语句的逻辑条件中有点混乱哦——
if ((c<=31&&c>=1)&&(b==1||b==3||b==5||b==7||b==8||b==10||b==12))||((a<=28&&a>=1)&&(b==4||b==6||b==9||b==11))||((c<=29&&c>=1)&&(b==2)&&(c%400==0||(c%4==0&&c%100!=0))))
你的第一部分((c<=31&&c>=1)&&(b==1||b==3||b==5||b==7||b==8||b==10||b==12))是说,当月份b为1、3、5、7、8、10、12时,日期c在1和31之间,这个没问题;
但是你的第二部分((a<=28&&a>=1)&&(b==4||b==6||b==9||b==11))怎么和年a扯上关系了?应该把a改成c才对,而且要把28改成30!4、6、9、11这4个月份不就是30天么……
第三部分((c<=29&&c>=1)&&(b==2)&&(c%400==0||(c%4==0&&c%100!=0)))),首先,你括号貌似多半个,这是语法错误。再看逻辑。上面第一第二部分把11个月份都解决了,只剩下2月了。2月要分两种情况。当是闰年是29天,当是平年28天。你最好分开说,即把最后一部分再分成两部分作逻辑与运算,这样逻辑更清晰。第一部分((c<=28&&c>=1)&&(b==2)),第二部分(c==29)&&(b==2)&&((a%400==0)||(a%4==0&&a%100!=0)))。
总结一下,int f(int a,int b,int c)函数第一句的if语句的条件表达式应该是:
((c<=31&&c>=1)&&(b==1||b==3||b==5||b==7||b==8||b==10||b==12))||((c<=30&&c>=1)&&(b==4||b==6||b==9||b==11))||((c<=28&&c>=1)&&(b==2))||((c==29)&&(b==2)&&((a%400==0)||(a%4==0&&a%100!=0))))
【先看到这里,留个爪,去吃个饭回来再继续。】
【不好意思刚才上面少了个括号,我给加上了。虽然LZ已经把一楼的选为满意答案了,但我还是决定把我要说的写完】
然后后面的int f(int a,int b,int c)函数没问题。再看main函数。main函数前半部分没问题,直到计算s的时候出错了:
if ((a%4==0||(a%400==0&&y%100!=0))&&m>2
for (i=0;i<b;i++)
s+=mon[i];
首先,y和m都是未定义的变量,我想LZ应该表达的是年和月,所以,应该把y改成a,m改成b。改完之后再看,LZ只是对“当年为闰年且月份大于2”的情况对s进行了计算,其余情况循环体是执行不了的。应该改成
if !((a%400==0)||(a%4==0&&a%100!=0))/*不是是闰年的话,该咋算咋算*/
for (i=0;i<b;i++)
s+=mon[i];
else/*是是闰年的话,把mon[2]换成29再算*/
{
mon[2]=29;
for (i=0;i<b;i++)
s+=mon[i];
}
这样写,就简单明了了。后面再跟上LZ的语句,应该就大功告成了。把最终的源代码写下来:
#include<stdio.h>
int f(int a,int b,int c)
{
if ((c<=31&&c>=1)&&(b==1||b==3||b==5||b==7||b==8||b==10||b==12))||((c<=30&&c>=1)&&(b==4||b==6||b==9||b==11))||((c<=28&&c>=1)&&(b==2))||((c==29)&&(b==2)&&((a%400==0)||(a%4==0&&a%100!=0))))
return 0;
else
return 1;
}
void main()/*不知道LZ为何喜欢用int main(),这里我改回了习惯表达void main()*/
{ /*虽然变量可以等到要用的时候再定义,但那样会使代码变得杂乱,这里都给LZ集中到开头了*/
int a,b,c,i,s=0;
char *str[]={" ","January","February","March","April","Mary","June","July","August","September","Octocber","November","December"};
int mon[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d %d %d",&a,&b,&c);
if (f(a,b,c))
printf("日期不合法\n");
else /*这里直接给LZ改成else语句了,使代码更紧凑*/
{
if !((a%400==0)||(a%4==0&&a%100!=0))/*不是是闰年的话,该咋算咋算*/
for (i=0;i<b;i++)
s+=mon[i];
else/*是是闰年的话,把mon[2]换成29再算*/
{
mon[2]=29;
for (i=0;i<b;i++)
s+=mon[i];
}
printf("%s %d,%d\n%d",str[b],c,a,s+c);
}
}
2. C语言 ctime()
没有 #include <ctime> 的写法,只有 #include <time.h>,time.h 是C语言里时间的库函数。
ctime在C语言里,只是一个把日期和时间转换为字符串的函数。具体函数原型为:
char *ctime( const time_t *timer )
用法实例:
#include <stdio.h>
#include <time.h>
int main( void )
{
time_t ltime;
time( <ime ); //获取当前的系统时间
printf( "The time is %s\n", ctime( <ime ) ); //把当前的系统时间转换成字符串格式输出来
return 0;
}
假如当前的系统时间是2011年1月19日,15时16分20秒,星期三,那么经过这段程序运行后,在显示终端上出现:The time is Wed Jan 19 15:16:20 2011
3. c语言,如何进行日期格式转换
time.h 有函数 strftime 输出各种格式,但没有 你的 11th 13rd 格式。
简单办法是用查表法
#include "stdio.h"
#include "stdlib.h"
void main()
{
char dmy[20]="13/12/2010";
int i,j;
int a,b,c;
char d[32][5]={"0","1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th",
"11th","12th","13rd","14th","15th","16th","17th","18th",
"19th",.....,"31st"}; // 请自己补全
char m[13][4]={" ","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
j = strlen(dmy);
printf("j=%d\n",j);
for (i=0;i<j ;i++) if ( dmy[i] =='/') dmy[i]=' ';
sscanf(dmy,"%d %d %d",&a,&b,&c);
printf("%s %s %d",d[a],m[b],c); // 打印出你要的 13rd Dec 2010
}
4. C语言将输入日期以英文输出
#include"stdio.h"
intf(inta,intb,intc)
{
if (
(c<=28&&c>=1)||//所有月份都有1-28
((c<=31&&c>=1)&&
(b==1||b==3||b==5||b==7||b==8||b==10||b==12))||//这些月份有1-31
((c<=30&&c>=1)&&
(b==4||b==6||b==9||b==11))||//这些月份有1-30
((c<=29&&c>=1)&&
(b==2)&&(a%400==0||(a%4==0&&a%100!=0)))//闰年2月有1-29
)
return0;
else
return1;
}
intmain()
{
inta,b,c,i,s=0;
scanf("%d%d%d",&a,&b,&c);
if(f(a,b,c))
{
printf("日期不合法 ");
return0;
}
char*str[]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
//某些月份拼写错误
intmon[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(a%4==0&&(a%400==0||a%100!=0))mon[2]++;//如果闰年2月+1
for(i=0;i<b;i++)
s+=mon[i];
printf("%s%d,%d %d",str[b],c,a,s+c);
return0;
}
5. C语言转换日期的表示形式
#include <stdio.h>
#include <string.h>
int main()
{int month,b,c;
scanf("%d/%d/%d",&month,&b,&c);
switch(month)
{
case 1:printf("Jan,%d,%d\n",b,c);
break;
case 2:printf("Feb,%d,%d\n",b,c);
break;
case 3:printf("Mar,%d,%d\n",b,c);
break;
case 4:printf("Apr,%d,%d\n",b,c);
break;
case 5:printf("May,%d,%d\n",b,c);
break;
case 6:printf("Jun,%d,%d\n",b,c);
break;
case 7:printf("Jul,%d,%d\n",b,c);
break;
case 8:printf("Aug,%d,%d\n",b,c);
break;
case 9:printf("Sep,%d,%d\n",b,c);
break;
case 10:printf("Oct,%d,%d\n",b,c);
break;
case 11:printf("Nov,%d,%d\n",b,c);
break;
case 12:printf("Dec,%d,%d\n",b,c);
break;
default:printf("Data Error\n");
}
return 0;
}
6. 如何用C语言将输入的数字转化成英语
对照字母的ASCII码进行输入数字,然后再输出字母。
和你的相比,不知是否复杂。
此程序的计算范围:0<=num<1000。如果还想要计算更大的数,可以在最后面加判断语句,方法类似。
#include<stdio.h>
void main()
{
char *Eng1[20]={"zero","one","two","three","four","five","six","seven",
"eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen",
"sixteen","seventeen","eighteen","nineteen"};
char *Eng2[8]={"twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"};
int num;
printf("请输入数字: ");
scanf("%d",&num);
printf("对应的英文为: ");
if(num>=0&&num<=19)
printf("%s\n",Eng1[num]);
else if(num<100)
{
int s,y;
s=num/10;
y=num%10;
printf("%s %s\n",Eng2[s-2],Eng1[y]);
}
else if(num<1000)
{
int b,s,y;
b=num/100;
y=num%100;
if(y>9)
{
s=(num%100)/10;
y=(num%100)%10;
if(y==0)
printf("%s hundred and %s\n",Eng1[b],Eng2[s-2]);
else
printf("%s hundred and %s %s\n",Eng1[b],Eng2[s-2],Eng1[y]);
}
else
printf("%s hundred and %s\n",Eng1[b],Eng1[y]);
}
}
7. C语言题 如何输入数字转换成英文
#include
#include
int main()
{
char a=0,b;
printf("===========start============\n");
printf("字母转成ASCII,输入0退出程序\n");
do
{
printf("输入一个字母:");
scanf("%s",&a);
if(a!='0')
printf("对应ASCII码值:%d\n",a);
else
printf("退出程序\n",a);
}while(a!='0');
printf("===========end==============\n");
return 0;
}
8. c语言:从键盘上输入数字形式的年月日,输出英文形式的年月日,并指出这天是星期几.
voidmain()
{
inty,m,d,a;
scanf("%d%d%d",&y,&m,&d);
if(m==1||m==2)
{
m+=12;
y--;
}
a=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;//这是一个公式,网络下就知道了。
printf("输入的这一天是星期%d ",a);
}
9. 如何用if语句实现星期的中英文转换在c语言
具体操作步骤如下:
1、正确打开VC++,熟悉所在环境,调节字体大小,让自身舒适。
编辑程序:
#include
voidmain()
{
inta;
printf("请输入一个数字:");
scanf("%d",&a);
switch(a){
case1:printf("Monday
");break;
case2:printf("Tuesday
");break;
case3:printf("Wednesday
");break;
case4:printf("Thursday
");break;
case5:printf("Friday
");break;
case6:printf("Saturday
");break;
case7:printf("Sunday
");break;
default:printf("error");
}
}
点击“编译”,“连接”,“运行”,检验程序是否正确。
c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种不同的操作系统中,其设计也影响了Java、Python等编程语言。
10. C语言提问:将一个月份数字转换成月份的英文名称
#include<stdio.h>
void main()
{
int n;
char M;
do
{
printf("Please input the number of the month:\n");
scanf("%d",&n);
switch(n)
{
case 1:
printf("您输入的月份的英文名称是:January\n");
break;
case 2:
printf("您输入的月份的英文名称是:February\n");
break;
case 3:
printf("您输入的月份的英文名称是:March\n");
break;
case 4:
printf("您输入的月份的英文名称是:April\n");
break;
case 5:
printf("您输入的月份的英文名称是:May\n");
break;
case 6:
printf("您输入的月份的英文名称是:June\n");
break;
case 7:
printf("您输入的月份的英文名称是:July\n");
break;
case 8:
printf("您输入的月份的英文名称是:Augest\n");
break;
case 9:
printf("您输入的月份的英文名称是:September\n");
break;
case 10:
printf("您输入的月份的英文名称是:October\n");
break;
case 11:
printf("您输入的月份的英文名称是:November\n");
break;
case 12:
printf("您输入的月份的英文名称是:December\n");
break;
}
printf("Do you want to continue? Input Y or not\n");
scanf(" %c",&M);
}while(M=='Y');
}