任务1:分析下面的例子,给出z和w的计算值、说明为什么?
我的程序:
#include<stdio.h>
void main()
{
int z,w,x=2,y=5;
z= (x+3,y++,x++);
w = (x++,x+3,x+7);
printf("z=%d,w=%d\n",z,w);
}
程序截图:
说明分析:括号内的为逗号表达式,逗号运算是所有运算中最低级的,运算从左到右一次运算,以最后的表达式的值作为该逗号表达式的值。该计算中,第一个结果为2,即x++为x=x,x=x+1,所以输出为2 ,第二个由于第一个x=3,在x=x+1,所以最后为4+7=11,即为11。
任务2:自行设计一个程序,程序须运用switch语句。要求有一定技术含量!
我的程序:(计算星座)
#include<stdio.h>
int xingzuo(int a,int b)
{
if(a==1)
{ if(b>=1&&b<=19) return 12; if(b>=20&&b<=31) return 1; }
if(a==2)
{ if(b>=1&&b<=18) return 1 ; if(b>=19&&b<=29) return 2; }
if(a==3)
{ if(b>=1&&b<=20) return 2 ; if(b>=21&&b<=31) return 3; }
if(a==4)
{ if(b>=1&&b<=20) return 3 ; if(b>=21&&b<=30) return 4; }
if(a==5)
{ if(b>=1&&b<=20) return 4 ; if(b>=21&&b<=31) return 5; }
if(a==6)
{ if(b>=1&&b<=21) return 5 ; if(b>=22&&b<=30) return 6; }
if(a==7)
{ if(b>=1&&b<=22) return 6 ; if(b>=23&&b<=31) return 7; }
if(a==8)
{ if(b>=1&&b<=22) return 7 ; if(b>=23&&b<=31) return 8; }
if(a==9)
{ if(b>=1&&b<=22) return 8 ; if(b>=23&&b<=30) return 9; }
if(a==10)
{ if(b>=1&&b<=23) return 9; if(b>=24&&b<=31) return 10; }
if(a==11)
{ if(b>=1&&b<=22) return 10; if(b>=23&&b<=30) return 11; }
if(a==12)
{ if(b>=1&&b<=21) return 11; if(b>=22&&b<=31) return 12; }
}
void main()
{
int a,b,c,d=1;
while(d)
{
printf("请输入你的出生月日(例如1 1):");
scanf("%d%d",&a,&b);
c=xingzuo(a,b);
switch(c)
{
case 1:printf("你的星座为水瓶座!\n");break;
case 2:printf("你的星座为双鱼座!\n");break;
case 3:printf("你的星座为白羊座!\n");break;
case 4:printf("你的星座为金牛座!\n");break;
case 5:printf("你的星座为双子座!\n");break;
case 6:printf("你的星座为巨蟹座!\n");break;
case 7:printf("你的星座为狮子座!\n");break;
case 8:printf("你的星座为处女座!\n");break;
case 9:printf("你的星座为天称座!\n");break;
case 10:printf("你的星座为天蝎座!\n");break;
case 11:printf("你的星座为人马座!\n");break;
case 12:printf("你的星座为摩羯座!\n");break;
default:printf("error\n");
}
printf("继续输入请输入1,结束请输入0 ");
scanf("%d",&d);
}
}
截图:
![](https://img-my.csdn.net/uploads/201304/12/1365764746_9067.png)
说明:刚开始时是想到有什么可以做的,突然想到有的程序是可以知道你的星座是什么,不用再费劲的查看星座表。刚开始时觉得要用二维数组,虽然我还不是很熟悉,但是仔细想想自己不能实现,这是要输入的数而没办法赋值。所以想到了直接用if语句,可是switch中case后只能是用常量表达式,在同学提示下想到了可以先定义函数,返回值,然后在用switch。本身程序可以直接舍去switch进行,还有就是想到了是否定义函数可以加循环,因为日期没有多大规律,且输出的值每个月份有两个,所以放弃循环。整体还是比较简单的程序,由于能力有限,希望谁有更好的方法可以和我分享,谢谢!
任务3: 自行设计一个程序,程序须运用break和continue语句。要求有一定技术含量!
我的程序:
#include<stdio.h>
void main()
{
int a,b,c,n,i=1;
printf("请输入你要查寻的人数:");
scanf("%d",&n);
while(i<=n)
{
printf("请输入你的身高(cm)和体重(kg)(其中有一个为0程序将结束):");
scanf("%d%d",&a,&b);
if(a>300||b<10||b>300)
continue;
if(a==0||b==0) break;
c=a-105;
if(b/c<0.6)
printf("严重营养不良!\n");
if(b/c>=0.6&&b/c<=0.8)
printf("中度营养不良!\n");
if(b/c>0.8&&b/c<0.9)
printf("轻度营养不良!\n");
if(b/c>=0.9&&b/c<=1.1)
printf("正常范围!\n");
if(b/c>1.2)
printf("肥胖!\n");
i++;
}
}
截图:
![](https://img-my.csdn.net/uploads/201304/12/1365768592_9193.png)
说明:测试纯属娱乐,估计可信度不高,但是有一定的依据,详细请咨询医师。