C语言学习第5天ifelse switchcase while for

该文展示了一系列C语言编程练习,包括使用ifelse进行条件判断,如恋爱案例和成绩等级划分;运用switchcase处理列表选择,如字母判断和成绩等级;以及while和for循环的运用,例如计算折扣和求和。这些练习旨在帮助学习者掌握C语言中的条件控制和循环结构。
摘要由CSDN通过智能技术生成

1. ifelse 编程练习(22.3.4)

  • ifelse.c 有钱有颜吗 没有没机会:
#include <stdio.h>

int main()
{
	int haveMoneyOrNot;
	int handsomeYesOrNot;
	
	puts("你有钱吗?有钱扣1,否则扣0:");
	scanf("%d",&haveMoneyOrNot);
	puts("你长的帅吗?帅的话扣1,否则扣0:");
	scanf("%d",&handsomeYesOrNot);
	
	if(haveMoneyOrNot ==1 && handsomeYesOrNot == 1){
		printf("我们结婚吧!\n");
	}else{
		printf("你没有机会。\n");
	}
	
	printf("相亲结束。\n");
	
	return 0;
}
  • uptolower.c 判断大小写字母,大写转换小写再输出,小写直接输出
#include <stdio.h>
//输入一个字符,若是小写字母直接输出,若是大写字母先转换为小写再输出
int main()
{
	int cdata;
	
	printf("请输入一个字母字符\n");
	scanf("%c",&cdata);
	
	if(cdata>=97 && cdata<=122){
		printf("您输入的字母为%c\n",cdata);
	}else if(cdata>=65 && cdata<=90){
		printf("您输入的字母为%c\n",cdata+32);
	}else{
		printf("请输入正确的字母字符\n");
	}
	printf("done!\n");
	return 0;
}

2. if嵌套案例(23.3.5)

  • ifelseEx.c 谈恋爱案例:身体好>有钱且有颜>愿意给花吗>在一起
#include <stdio.h>

int main()
{
	int healthyYesOrNot;
	int richYesOrNot;
	int handsomeYesOrNot;
	int moneyYesOrNot;
	
	puts("你身体好吗?(tips:1好,0不好)");
	scanf("%d",&healthyYesOrNot);
	if(healthyYesOrNot==1){
		puts("你有钱且有颜吗?(tips:输俩数 1有,0没有)");
		scanf("%d%d",&richYesOrNot,&handsomeYesOrNot);
		if(richYesOrNot==1 && handsomeYesOrNot==1){
			puts("你愿意给我花钱吗?(tips:1可,0不可)");
			scanf("%d",&moneyYesOrNot);
			if(moneyYesOrNot==1){
				puts("我们在一起。");
			}else{
				puts("gun。");
			}
		}else{
			printf("骚瑞,我喜欢有钱有颜的。\n");
		}
	}else{
		printf("身体不好不做朋友哦。\n");
	}
	return 0;
}

3. 列表选择switchcase(24.3.6)

  • demo_switchCase.c 输入数和字符,系统判断后输出对应情况
#include <stdio.h>

int main()
{
	int idata;
	char cdata;
	
	printf("请输入一个数:\n");
	scanf("%d",&idata);
	switch(idata){
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			puts("满足了1 2 3 4 5的情况");
			break;
		case 6:
			puts("满足了6的情况");
			break;
		default:				//不满足以上
			puts("满足了非列表中的情况");
	}	
	getchar();	//9行的回车被26行当成回车符,so用以吸收9行的回车符
	printf("请输入一个字符\n");
	scanf("%c",&cdata);
	switch(cdata){
		case 'a':
			puts("满足了条件a的情况");
			break;
		case 'b':
			puts("满足了条件b的情况");
			break;
		case 'c':
			puts("满足了条件c的情况");
			break;
		case 'd':
			puts("满足了条件d的情况");
			break;
		case 'e':
			puts("满足了条件e的情况");
			break;
		default:
			puts("满足了非列表中的情况");
	}
	
	return 0;
}

4. switch练习学生成绩等级划分(25.3.7)

  • demo_switchCaseEx.c 输入分数,输出成绩等级
#include <stdio.h>

int main()
{
	int score;
	puts("请输入分数");
	scanf("%d",&score);
	
	switch(score/10){	//将分数/10,会只保留整数部分
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			puts("等级为D,不及格。");
			break;
		case 6:
		case 7:
			puts("等级为C,刚好及格,再接再厉。");
			break;
		case 8:
		case 9:
			puts("等级为B,优秀,继续保持。");
			break;
		case 10:
			puts("等级为A,天才啊!");
			break;
		default:
			puts("非法成绩,请重新输入。");
	}
	puts("done!");
	
	return 0;
}

5. 选择练习题之根据路程算折扣(26.3.8)

  • demo_ex_if.c 用if语句的方法算折扣
#include <stdio.h>

int main()
{
	int distance;
	int discount;
	
	puts("请输入路程:");
	scanf("%d",&distance);
	
	if(distance<250){
		discount=0;
	}else if(distance>=250 && distance<500){
		discount=2;
	}else if(distance>=500 && distance<1000){
		discount=5;
	}else if(distance>=1000 && distance<2000){
		discount=8;
	}else if(distance>=2000 && distance<3000){
		discount=10;
	}else if(distance>=3000){
		discount=15;
	}
	
	printf("折扣是:%.2f\n",(float)discount/100);
	return 0;
}
  • demo_ex_sw.c 用switchCase语句的方法算折扣
#include <stdio.h>

int main()
{
	int distance;
	int discount;
	puts("请输入路程");
	scanf("%d",&distance);
	
	switch(distance/250){
		case 0:
			discount=0;
			break;
		case 1:
			discount=2;
			break;
		case 2:
		case 3:
			discount=5;
			break;
		case 4:
		case 5:
		case 6:
		case 7:
			discount=8;
			break;
		case 8:
		case 9:
		case 10:
		case 11:
			discount=10;
			break;
		default:
			discount=15;
	}
	printf("折扣是:%.2f\n",(float)discount/100);
	return 0;
}

6. 作业布置(27.3.9)

  • task1_ifelse.c y=f(x)函数
#include <stdio.h>

int main()
{
	int xdata;
	int ydata;
	
	puts("请输入一个整数x:");
	scanf("%d",&xdata);
	
	if(xdata<1){
		printf("y的值为:%d",xdata);
	}else if(xdata>=1 && xdata<10){
		printf("y的值为:%d",xdata*2-1);
	}else if(xdata>=10){
		ydata=xdata*3-11;
		printf("y的值为:%d",ydata);
	}
	
	return 0;
}
  • task2_sw.c 输入分数,输出成绩等级
#include <stdio.h>

int main()
{
	int score;
	puts("请输入分数");
	scanf("%d",&score);
	switch(score){
		case 101:
		case 102:
		case 103:
		case 104:
		case 105:
		case 106:
		case 107:
		case 108:
		case 109:
			puts("非法成绩,请重新输入。");
			return -1;
			break;
	}
	switch(score/10){	
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			puts("等级为E。");
			break;
		case 6:
			puts("等级为D。");
			break;
		case 7:
			puts("等级为C。");
			break;
		case 8:
			puts("等级为B。");
			break;
		case 9:
		case 10:
			puts("等级为A!");
			break;
		default:
			puts("非法成绩,请重新输入。");
	}
	puts("done!");
	return 0;
}

7. while循环爱你一万遍(28.3.10)

  • demo_while.c 无限循环天气真好
#include <stdio.h>

int main() 
{
	while(5){	
		puts("天气真好。");
	}

    return 0;
}
  • demo_while–.c 输入6遍天气真好,自减
#include <stdio.h>

int main() 
{
    int times;
	times=6;
	
	while(times){	//while只要条件为真,就一直执行;而if只执行一次
				    //避免死循环,到一定程度满足退出条件。除c51单片机代码外
		puts("天气真好。");
		//times=times-1;//自减
		times--;    //自减操作
	}

    return 0;
}
  • demo_while++.c 输入6遍天气真好,自加
#include <stdio.h>

int main() //注意3个表达式
{
    int times=0;//第1个表达式,条件的初始值
	
	while(times<6){//第2个表达式,条件的临界值
		puts("天气真好。");
		printf("times=%d\n",times);
		//times=times+1;//自加
		times++; 		//自加//第3个表达式,条件发生变化
	}

    return 0;
}
  • demo_while_exsum.c 用while计算1到100的和(29.3.11 while循环计算1到100所有数据之和)
#include <stdio.h>

int main() //注意3个表达式
{
	int sum=0;//变量最好初始化为0,编码习惯
	int data=1;//第1个表达式,条件的初始值
	
	while(data<=100){//第2个表达式,条件的临界值	
		//printf("data=%d\n",data);
		sum=sum+data;
		data++;	//第3个表达式,条件发生变化
	}
	printf("0到100的和为%d",sum);
    return 0;
}
  • demo_dowhile.c 先do一次,再while循环,条件内容判断多少次循环
#include <stdio.h>

int main() 
{
	int data=1;
	/*while(data != 0){	
		puts("a test");
		//data--;
	}*/
	//do{}while()
	do{
		puts("a test");
		data--;
	}while(data != 0);
    return 0;
}
  • demo_for.c for 循环和while循环二者无条件等价(31.3.13while的表达式及for循环等价引入)
#include <stdio.h>

int main() 
{
	int data;
	
	for(data=0;data<6;data++){
		puts("天气真好。");
		puts("天气真不好。");
	};
    return 0;
}

for循环的3个表达式均可省略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值