C语言 选择结构程序设计

帮一个同学完成C语言的实验报告,看到这些熟悉的一年之前的内容,还是有点蒙,所以有些知识点还是打开书看了看,有点印象就开始写了。但是,现在想要重拾C语言的全部知识还是有些苦难的。

1.将输入的小写字母改写成大写字母输出,其他字符不变

#include <stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='a'&&ch<='z')?(ch-32):ch;
printf("%c\n",ch);
}

这个按要求修改,基本满足要求,但是如果输出一句英语(全部小写),再来全部转换为大写字母就达不到要求了。

2.实现公路收费站的车辆收费问题,根据输入的车辆类型,输出对应的收费

#include <stdio.h>
int main ( )
{
   char t_type;
   scanf("%c",&t_type);
   switch(t_type)
    {
      case 'A':printf("RMB60.00");  /*大客车*/ 
               break;
      case 'B':printf("RMB50.00");  /*大货车*/
               break;
      case 'C':printf("RMB40.00");  /*面包车*/
               break;
      case 'D':printf("RMB20.00");  /*小轿车*/
               break;
      default: printf("RMB10.00"); /*其他车辆*/
               break;
   }  
} 

这个设计到switch语句,可以再熟悉一下结构和特点,拒绝不懂装懂。

3.将输入的3个实数 a, b, c按从大到小的顺序输出

#include<stdio.h>
int main(  )
{ 
  float a,b,c,t;
  scanf("%f,%f,%f",&a,&b,&c);
  if(a<b)
   {t=a; _a=b___ b=t;}
  if(a>c)
   {t=a;a=c;c=t;}
  if(b<c)
   {t=b;b=c;c=t;}
printf("%f,%f,%f",a,b,c);
}

if语句的几种类型变换,可以继续深入一下,我尽量重温一下C语言。

4.判断输入的字符是数字、大写字母、小写字母或其他字符

#include <stdio.h>
void main()
{
  char c;
  printf("Enter a character:");
  c=getchar();
  if(c>'0'&&c<'9')
    printf("Digit!\n");
 else if(c>='A'&&c<='Z')
    printf("Uppercase!\n");
 else if(c>='a'&&c<='z')
    printf("Lowercase!\n");
 else 
    printf("Other charater!\n");
}

5.显示输出从终端输入的两个整数中绝对值较大的数

#include<stdio.h>
#include<math.h>
int main()
{
	printf("请输入两个数,用空格隔开\n");
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%d\n",abs(a)>abs(b)?a:b); 
 } 

关于绝对值,我是真的不太会,毕竟涉及到数学,所以这道题是我copy别人的,勿喷、勿怪,毕竟C语言的知识点也是比较多,还有那个文件我也是不会。

6.身高预测
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为
男性成人时身高=(faHeight + moHeight)×0.54cm
女性成人时身高=(faHeight×0.923 + moHeight)/2cm
此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。
编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。

#include <stdio.h>
#include <string.h>
 
double height(double faHeight,double moHeight,char sex)
{
	if(sex=='M'||sex=='m')
		return (faHeight + moHeight)*0.54;
	if(sex=='F'||sex=='f')
		return (faHeight*0.923 + moHeight)/2;
	return 0;
}
 
double sport(double height,char sports)
{
	if(sports=='Y'||sports=='y')
		return height*1.02;
	if(sports=='N'||sports=='n')
		return height;
	return 0;
}
 
double diet(double height,char diets)
{
	if(diets=='Y'||diets=='y')
		return height*1.15;
	if(diets=='N'||diets=='n')
		return height;
	return 0;
}
 
int main()
{
	char sex,sports,diets,ch;
	double h,faHeight,moHeight;
	printf("请输入男女,M/F:");
	scanf("%c",&sex);
	printf("请输入父亲身高: ");
	scanf("%lf",&faHeight);
	printf("请输入母亲身高: ");
	scanf("%lf",&moHeight);
	h=height(faHeight,moHeight,sex);
	while((ch = getchar()) != '\n' && ch != EOF);
	printf("喜爱体育锻炼吗?Y/N: ");
	scanf("%c",&sports);
	h=sport(h,sports);
	while((ch = getchar()) != '\n' && ch != EOF);
	printf("有良好的饮食习惯吗?Y/N: ");
	scanf("%c",&diets);
	h=diet(h,diets);
	while((ch = getchar()) != '\n' && ch != EOF);
	if(h)
		printf("我预测你身高有 %lf CM\n",h);
	else
		printf("您输入有误!!!\n");
	return 0;
}

7.输入某年某月某日,判断这一天是这一年的第几天

#include<stdio.h>
int main()
{
	int day, month, year, sum, leap;
	printf("\nplease input year,month,day\n");
	scanf("%d%d%d",&year,&month,&day);
	switch(month){   //先计算某月以前月份的总天数 
		case 1:sum = 0;break;
		case 2:sum = 31;break;
		case 3:sum = 59;break;
		case 4: sum = 90;break;
		case 5:sum = 120;break;
		case 6:sum = 151;break;
		case 7:sum = 181;break;
		case 8:sum = 212;break;
		case 9:sum = 243;break;
		case 10:sum = 273;break;
		case 11:sum = 304;break;
		case 12:sum = 334;break;
		default:printf("data error!");break;
	}
	sum = sum + day;    //再加上某天的天数 
	if(year%400==0||(year%4==0&&year%100!=0)){  //判断是不是闰年 
		leap = 1;
	}else{
		leap = 0;
	}
	if(leap == 1&&month > 2){  //如果是闰年且月份大于2,总数加1天 
		sum++;
	}
	printf("It is the %dth day.",sum);
}

这个题很经典,判断这天是这一年的第几天之后,还能不断延申,玩到你崩溃为止。。。不多赘述,如果我要重拾C语言,这道题必定更多拓展。

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想去见见你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值