前言
想学好C语言,练习是必须的,今天我给大家带来了几个小程序,新手可以练下。
1.switch语句实例
/*********************************************
输入一个日期,判断这个日期是那年的第几天
********************************************/
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned short yes,month,day,d;
printf("请输入年份:");
scanf("%hd",&yes);
printf("请输入月份:");
scanf("%hd",&month);
printf("请输入日期:");
scanf("%hd",&day);
//if(yes<0||(month<||month>12)||(day<1||day>31))
if(yes<0||month<1||month>12||day<1)
{
printf("您的输入有误:\n");
return 0;
}
if(yes%4==0&&yes/100!=0) d = 1;
else d = 0;
switch(month)
{
case 1:
if(day > 31)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",day);
break;
case 2:
if((d == 1 && day>29)||(d == 0 && day>28))
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31 + day);
break;
case 3:
if(day > 31)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31 +28+ day + d);
break;
case 4:
if(day > 30)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+d+day);
break;
case 5:
if(day > 31)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+d+day);
break;
case 6:
if(day > 30)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+31+d+day);
break;
case 7:
if(day > 31)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+31+30+d+day);
break;
case 8:
if(day > 31)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+31+30+31+d+day);
break;
case 9:
if(day > 30)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+31+30+31+31+d+day);
break;
case 10:
if(day > 31)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+31+30+31+31+30+d+day);
break;
case 11:
if(day > 30)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+31+30+31+31+30+31+d+day);
break;
case 12:
if(day > 31)
{
printf("您的输入有误:\n");
return 0;
}
printf("这是这一年的第%hd天\n",31+28+31+30+31+30+31+31+30+31+30+d+day);
break;
default:
break;
}
return 0;
}
2.猴子吃桃问题
/*************************************************
问题描述:
猴子第一天摘了若干个桃,第一天吃了一半,感觉还不过瘾,多吃了一个;
第二天又吃了一半,感觉还不过瘾,又多吃了一个;
以后按照这种方式吃桃,到第十天吃桃前发现只剩一个桃了;
问:猴子第一天摘了多少个桃?
**************************************************/
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned short sum = 1,day=9;
while(1)
{
sum = (sum+1)*2;
day--;
if(day < 1) break;
}
printf("猴子第一天摘了%hd个桃\n",sum);
return 0;
}
3.身高预测问题
/************************************
身高预测问题
设faHeight为父亲身高,moHeight为母亲身高。
身高预测为:
男性身高 = (faHeight+moHeight)*0.54;
女性身高 = (faHeight*0.923+moHeight)/2;
此外,孩子身高还与孩子自身是否爱运动,是否注意饮食有关,具体如下:
热爱体育锻炼:身高加增2%
良好的饮食习惯:身高增加1.5%
************************************/
#include <stdio.h>
#include <stdbool.h>
int main(int argc, const char *argv[])
{
float faHeight,moHeight,H;
char duanl,yinshi,boy;
bool key = true;
printf("请输入父亲身高:");
scanf("%f",&faHeight);
printf("请输入母亲身高:");
scanf("%f",&moHeight);
getchar();
while(key){
printf("是否为男孩(Y/N):");
scanf("%c",&boy);
getchar();
if(boy=='y'||boy=='Y'||boy=='n'||boy=='N') key=false;
printf("请输入Y/N\n");
}
key = true;
while(key){
printf("是否为热爱锻炼(Y/N):");
scanf("%c",&duanl);
getchar();
if(duanl=='y'||duanl=='Y'||duanl=='n'||duanl=='N') key=false;
printf("请输入Y/N\n");
}
key = true;
while(key){
printf("是否注意饮食(Y/N):");
scanf("%c",&yinshi);
getchar();
if(yinshi=='y'||yinshi=='Y'||yinshi=='n'||yinshi=='N') key=false;
printf("请输入Y/N\n");
}
if(boy=='Y'||boy=='y') {
H = (faHeight+moHeight)*0.54;
}
else {
H = (faHeight*0.923+moHeight)/2;
}
if(duanl=='Y'||duanl=='y') H=H*(1+0.02);
if(yinshi=='Y'||yinshi=='y') H=H*(1+0.015);
printf("您的预测身高为:%.2fcm\n",H);
return 0;
}