c语言编写程序,判断输入的日期(月,日)属于哪个星座?

#include<stdio.h>#include<string.h>structDate{intmonth,day;public:Date(intm,intd){set... #include<stdio.h>
#include<string.h>

struct Date
{
int month, day;
public:
Date(int m, int d)
{
set(m, d);
}
void set(int m, int d);

void constell();
};

void Date::set(int m, int d)
{
//在此最好检查日期是否输入正确...
month=m, day=d;
}

void Date::constell()
{
string c[12][2]={ {"魔蝎座", "水瓶座"}, {"水瓶座", "双鱼座"}, {"双鱼座", "白羊座"},
{"白羊座", "金牛座"}, {"金牛座", "双子座"}, {"双子座", "巨蟹座"},
{"巨蟹座", "狮子座"}, {"狮子座", "处女座"}, {"处女座", "天秤座"},
{"天秤座", "天蝎座"}, {"天蝎座", "射手座"}, {"射手座", "魔蝎座"}
};

int x=month-1;
int y=day/21;
printf("%s",c[x][y]);
}

int main()
{
int month,day;
printf("请输入月份: ");
scanf("%d",&month);
cout<<"请输入日期: ";
scanf("%d",&day);
Date d(month,day);
d.constell();
return 0;
}
这是在网上找到的资料我对其中的几个语句有些小问题希望大侠能解决我的疑惑:
printf("请输入月份: ");
scanf("%d",&month);
print和scanf是什么意思老师没教过还有就是%d是什么意思。然后就是
Date d(month,day);
d.constell();
为什么和Date(int m, int d) ,set(m, d);表示形式不一样不应该是一样的吗?
这样的函数名怎么乱变啊。
,&是取址,会把刚才读入的这个整型数据存入month代表的地址中。
我同学说&是引用就是当month输入一个新的数据就引用它改变month的值。
还有就是Date d(month,day);这个是调用函数所以d(month,day)的函数名d可以随便写对把?d.constell();又是什么意思为什么前面有个d.
&在C++里确实是引用的意思,不过仅限于作为一个参数进行函数调用的时候。函数传入参数的方式一共有三种:
1. 传值
2. 传指针
3. 传引用。
嗯嗯,能分别给个例子我给我讲讲吗。我金币都给你啦。。谢谢大侠帮忙
展开
 我来答
百度网友4275a6b
2011-01-31 · TA获得超过211个赞
知道答主
回答量:101
采纳率:0%
帮助的人:85.4万
展开全部
c语言的输出输入是格式化的,printf表示输出,在屏幕上打印出来;scanf表示读入,即把你在屏幕上如果打10,按回车,10就存储到month那个变量里面,%d代表输入一个整数。

还有,要注意,你那个不是c语言……已经是c++了。你看上面定义的那个struct结构体里竟然已经有public……而且还有函数的定义……

Date(int m, int d) 是函数的声明,set(m, d)是函数的定义。声明嘛,就是说,我声明有这个函数存在(注意哦,不一定要给出这个函数具体怎样的)~定义嘛,就是我要给出这个函数的具体内容和定义。就比如说,我声明我和张三是好朋友,但我不一定要介绍张三是一个怎样的人。但我定义张三这个朋友的话,我就必须从各方面都介绍他。声明和定义在程序设计中,表示形式往往就不一样了。

函数名是自己起的,爱怎么起都行,只要调用和定义能对上号就好。

学程序一开始慢慢来,不用急。当年我写第一个c语言程序,漏了许多分号,被朋友嘲笑了很久……当时也和你一样,printf什么的一直不会用。不过现在就好了……

c语言的教材的话,国内的鲜有好书,还是推荐你看谭浩强写的,清华大学出版社。确实编的很好,深入浅出,很多抽象概念他老人家都解释得特别好,国内其他教材都比不上。当你学好基础,想进一步学习的话,推荐两本国外教材,C PRIMER PLUS 和THE C PROGRAMMING。C PRIMER PLUS比较全,THE C PROGRAMMING是c语言发明者写的,很牛,不过他写法和中国传统思维很不一样,建议看完谭浩强的书之后再去看。

祝你享受编程的快乐~!

补充,代码注释:

#include<stdio.h>
#include<string.h>
//这个程序写得实在不敢恭维,可读性极低。变量名起得很不好,重复太多,很容易引起误解。所以我建议初学者还是去看一些精挑细选的例子,比如谭浩强书上那些真的很不错。我在THU学EE的,这是我亲身经验和个人建议。。

struct Date //定义了一个叫Date的结构体
{
int month, day;
public:
Date(int m, int d) //声明一个叫Date的函数
{
set(m, d);
}
void set(int m, int d);

void constell(); //Date结构体底下有一个叫constell的函数
};

void Date::set(int m, int d)
{
//在此最好检查日期是否输入正确...
month=m, day=d;
}

void Date::constell()
{
string c[12][2]={ {"魔蝎座", "水瓶座"}, {"水瓶座", "双鱼座"}, {"双鱼座", "白羊座"},
{"白羊座", "金牛座"}, {"金牛座", "双子座"}, {"双子座", "巨蟹座"},
{"巨蟹座", "狮子座"}, {"狮子座", "处女座"}, {"处女座", "天秤座"},
{"天秤座", "天蝎座"}, {"天蝎座", "射手座"}, {"射手座", "魔蝎座"}
};

int x=month-1;
int y=day/21;
printf("%s",c[x][y]);
}

int main()
{
int month,day;
printf("请输入月份: ");
scanf("%d",&month);
cout<<"请输入日期: ";
scanf("%d",&day);
Date d(month,day); //声明一个Date类型的结构体变量(也可以叫对象),叫d(里面包含set,constell等函数,如一开头结构体定义所示)。其作用相当于int i,声明一个整型变量i
d.constell(); //调用结构体变量d下constell函数
return 0;
}
sunnaiti
2011-01-31 · TA获得超过157个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:0
展开全部
1.第一个问题printf("请输入月份: "); scanf("%d",&month);print和scanf是什么意思老师没教过还有就是%d是什么意思
答:printf是在屏幕上处处内容.printf("请输入月份: "); 就是在屏幕上输出"请输入月份: "这几个字.
scanf是等待用户从键盘输入,scanf("%d",&month);就是说用户在键盘上输出的内容保存以int形式保存到month这个变量中.其中%d是说用int形式保存.&month是说保存到month变量中.&是取地址的意思,用在这里&month就是month变量的地址.
2.第二个问题Date d(month,day);这个是调用函数所以d(month,day)的函数名d可以随便写对把?d.constell();又是什么意思为什么前面有个d.

Date d(month,day);这句是说一个日期类型的变量叫做d. 至于d.constell();这句前面的d就是你刚才声明的那个日期类型的变量d.如果你前面给那个变量起了别的名字,那后面也必须跟着换.

函数传入参数的方式一共有三种:
1. 传值
2. 传指针
3. 传引用。
嗯嗯,能分别给个例子我给我讲讲吗。我金币都给你啦。。谢谢大侠帮忙

1. 传值
void testChuanZhi(int x){
x++;
}
int main(){
int x=0;
testChuanZhi(x); //这个是传值调用,执行时只把main函数体里的x的值0传递进去,虽然testChuanZhi对x进行了修改,也不会改变main函数体里x的值
}

2. 传指针
void testChuanZhiZhen(int* px){
*px=9;
}
int main(){
int x=0;
int* px=x; //指针px指向x
testChuanZhiZhen(px); //这个是传指针调用,执行时只把main函数体里的px指针所指向的内存地址传递进去,这时testChuanZhiZhen对px进行了修改,改成9了,那么main函数体里px所指向的x的值就变成9了
}

3. 传引用。
实际说的是传递数组,这个实际和传递指针在本质上是一种.
char* h4(char b[]){
.
.
.
//函数体略
}

在进行char* s=h4(c);调用时,将把c这个数组的首元素地址传递进去,在h4函数体里如果修改数组b的内容,那么c数组的内容也会改变,以为数组传递实质上也是传递的指针,指向数组首元素的指针.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Miss不会消失
2016-02-01 · 知道合伙人游戏行家
Miss不会消失
知道合伙人游戏行家
采纳数:28 获赞数:584
现就读于陕西理工学院车辆工程专业。

向TA提问 私信TA
展开全部
  #include<stdio.h>
int main(void)
{
int x;
printf("输入生日:");
scanf("%d",&x);
if(x>=321&&x<=419){
printf("白羊座");
}
else if(x>=420&&x<=520){
printf("金牛座");
}
else if(x>=521&&x<=620){
printf("双子座");
}
else if(x>=621&&x<=721){
printf("巨蟹座");
}
else if(x>=722&&x<=822){
printf("狮子座");
}
else if(x>=823&&x<=922){
printf("处女座");
}
else if(x>=923&&x<=1022){
printf("天秤座");
}
else if(x>=1023&&x<=1121){
printf("天蝎座");
}
else if(x>=1122&&x<=1221){
printf("射手座");
}
else if(x>=120&&x<=218){
printf("水瓶座");
}
else if(x>=219&&x<=320){
printf("双鱼座");
}
else{
printf("摩羯座");
} r
eturn 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韩萧_寒
2011-02-07 · TA获得超过385个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:113万
展开全部
printf(" ")是输出地意思,引号内是输出地内容。
scanf("%d",&x)意思是给X赋值,值是由键盘输入的,%d是整型的占位符,例如输入scanf("%d",&x),然后在键盘上敲3,那么x的值就是3。Data和Set不是一个函数,且定义函数时要加上值类型,如题中的int,调用时则不需要,所以即使是同一函数形式也不一定要完全相同。传地址改变原函数中的值。调用时用的函数名和定义时一样就可以。不写d你怎么知道对谁进行操作.三种方法有点长,不作具体说明
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丨侽朲丶菋
2011-02-11 · 超过14用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:46.9万
展开全部
我举个例子
main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%\n",a,b,c);
}

&a,&b,&c中的“&”是“地址运算符”,&a指a在内存中的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式