IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言入门】笔记三 -> 正文阅读

[C++知识库]【C语言入门】笔记三

3.1?

3.1.2 二分支结构和if-else语句

二分支结构

...
if(表达式){
    表达式为真时执行的语句
}else{
    表达式为假时执行的语句
}
...
...
if(表达式){
    表达式为真时执行的语句
}
...

if-else语句

if(表达式1){
	语句1 
} else if (表达式2){
	语句2 
}
...
 else if (表达式n-1) {
	语句n-1 
} else {
	语句n 
} 

练习3-2

输入整数x,计算输出下列分段函数sign(x)的值(不好放图就不展现了)

(x<0,y=-1;x=0,y=0;x>0,y=1)

#include <stdio.h>
int main(void){
	int x,y;
	printf("输入整数x\n");
	scanf("%d",&x);
	if (x<0){
		y=-1;
	}else if(x==0){
		y=0;
	}else{
		y=1;
	}
	printf("sign(%d)=%d",x,y);
	return 0; 
}

练习3-3

统计学生平均成绩与及格人数:输入一个正整数n,再输入n个学生的成绩,计算平均成绩,并统计所有及格学生的人数。

#include <stdio.h>
int main(void){
	double score,all;
	int n,win,i;
	printf("输入学生数量:\n");
	scanf("%d",&n);
	printf("分别输入%d个学生的成绩:\n",n);
	for (i=1;i<=n;i++){
		scanf("%lf",&score);
		all=all+score;
		if(score>=60){
			win++;
		}
	}
	printf("平均分:%.1f\n",all/n);
	printf("及格人数:%d",win);
	return 0;
}

3.2

3.2.2 字符型数据

  • 字符型常量,用一对单引号及其所括起来的字符表示(注:1是整数,'1'是字符)
  • 字符型变量,定义时用类型名char,char op;

3.2.3 字符类型数据的输入和输出

  1. scanf(),printf()就不介绍惹~
  2. 字符输入函数getchar(),调用getchar()可以从键盘输入一个字符,如果ch是字符类型,调用格式为:ch=getchar(); 即从键盘上输入一个字符赋值给ch
  3. 字符输出函数putchar(),调用putchar()可以输出一个字符,一般格式为putchar(输出参数);,即输出参数是字符变量或常量

注:getchar()putchar()只能输入或输出一个字符,处理多个字符要多次调用

3.2.4 逻辑运算符

恰巧笔记二中写了,这里还是重新粘贴出来吧:

  1. 运算符 "&&" :逻辑与
  2. 运算符 "||" :逻辑或
  3. 运算符 "!" :逻辑非

练习3-4

统计字符,输入正整数n,再输入n个字符,统计英文字母、空格或回车、数字字符和其他字符的个数

#include <stdio.h>
int main(void){
	int i,en=0,num=0,other=0,n;
	char ch;
	printf("输入字符个数n:\n");
	scanf("%d",&n);
	getchar(); //读入舍弃换行符
	printf("请输入这%d个字符:\n",n);
	for(i=1;i<=n;i++){
		ch=getchar();
		if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
			en++;
		}else if(ch>='0'&&ch<='9'){
			num++;
		}else{
			other++;
		}
	} 
	printf("英文字母%d个,数字%d个,其他%d个",en,num,other);
	return 0;
}

这里要设置变量他们的默认值为0

练习3-5

输出21世纪中截至某个年份之前的所有闰年年份

#include <stdio.h>
int main(void){
	int year,i;
	printf("输入21世纪中的计算闰年的截至年份:\n");
	scanf("%d",&year);
	if((year<2001)||(year>2100)){  //这里依据"2000年是20世纪的结束之年,2001年是21世纪的开始之年"以此类推的观点判断是否在21世纪内
		printf("输入的年份不在21世纪内"); 
	}else{
		printf("21世纪中截至%d年的闰年的所有年份如下:\n",year);
		for(i=2001;i<=year;i++){
			if((i%4==0&&i%100!=0)||(i%400==0)){
				printf("%d\n",i);
			}
		}
	}
	return 0;
}

3.3

3.3.2 switch语句

...
switch(表达式){
	case 常量表达式1: 语句1; break;
	case 常量表达式2: 语句2; break;
	...
	case 常量表达式n: 语句n; break;
	default: 语句n+1; break; 
}
...

其中,break语句表示跳出switch语句。(应该是这样吧,hhh)

switch语句中default可忽略,忽略后,当表达式中的值与任何一个常量表达式的值都不相等时,就什么也不执行。

例3-10

#include <stdio.h>
int main(void){
	int blank,digit,i,n,other;
	char ch;
	
	blank=digit=other=0;
	printf("Enter n:");
	scanf("%d",&n);
	getchar();
	printf("Enter %d characters:",n);
	for(i=1;i<=n;i++){
		ch=getchar();
		switch(ch){
			case ' ':case' \n':blank++;break;
			case'0':case'1':case'2':case'3':case'4':
			case'5':case'6':case'7':case'8':case'9':
				digit++;break;
			default:other++;
			
		}
	}
	printf("blank=%d, digit=%d, other=%d\n",blank,digit,other);
	return 0; 
} 

这里' '' \n'公用一个语句段,同时'0'-'9'也公用一个语句段。当公用语句段时可以类似这样写。

if(表达式1)
    if(表达式2)语句1;
else        /* 与哪一个if匹配? */
    if(表达式3)语句2;
    else 语句3;

注:else与if的匹配准则:else与最靠近它的、没有与其他的else匹配过的if相匹配,虽然第一行的if与第三行的else对齐,但是它与第二行的if对应,因为它们的距离最近。

练习3-6

答:(简述)当switch语句中的所有break去掉后,即不能跳出switch语句,最后的查询结果为最后的case(无default)或者default(有default)的值。

练习3-7

成绩转换:输入一个百分制成绩,将其转换为五分制成绩(规则:>=90分为A,<90分且>=80分为B,<80分且>=70分为C,<70分且>=60分为D,<60分为E)

#include <stdio.h>
int main(void){
	double score1;
	char score2;
	printf("输入成绩:");
	scanf("%lf",&score1);
	if(score1>=90){
		score2='A';
	} else if(score1<90&&score1>=80){
		score2='B';
	} else if(score1<80&&score1>=70){
		score2='C';
	} else if(score1<70&&score1>=60){
		score2='D';
	} else {
		score2='E';
	}
	printf("五分制成绩为:%c",score2);
	return 0;
}

这里应该不能用switch语句,因为case后接的是常量表达式,不能接其他表达式

(没说错吧??Σ(っ °Д °;)っ

练习3-8

查询四种水果的单价,有苹果、梨子、橘子和葡萄,单价分别为3.00、2.50、4.10和10.20(元/千克),屏幕上显示以下菜单,查询次数超过五次自动退出,显示水果单价保留一位小数,输入0退出查询,输入其他编号显示0。

#include <stdio.h>
int main(void){
	double price;
	int num,i;
	printf("[1] apples\n");
	printf("[2] pears\n");
	printf("[3] oranges\n");
	printf("[4] grapes\n");
	printf("[0] Exit\n");
	for (i=1;i<=5;i++){
		printf("输入编号:");
		scanf("%d",&num);
		if(num==0){
			break;
		}
		switch(num){
			case 1:price=3.00;break;
			case 2:price=2.50;break;
			case 3:price=4.10;break;
			case 4:price=10.20;break;
			default:price=0;break;
		}
		printf("价格为:%.1lf元/千克\n",price);
	}
	printf("Thanks for shopping~");
	return 0;
} 

练习3-9

改写例3-4的代码,使用嵌套的if-else语句(例题的代码就不列出来惹~

#include <stdio.h>
int main(void){
	double x,y;
	printf("Enter x:");
	scanf("%lf",&x);
	if(x<0){
		y=0;
	}else{
		if(x<=15){
			y=4*x/3;
		}else{
			y=2.5*x-10.5;
		}
	}
	printf("f(%.2f)=%.2f\n",x,y);
	return 0;
}

练习3-10

在例3-11中,改写if语句前,y=x+1;和y=x+2; 这两条语句的执行条件是什么?改写后又是什么?

答:

  • 改前:y=x+1;的执行条件为x<1y=x+2;的执行条件为x<2x>=1
  • 改后:y=x+1;的执行条件为x<1y=x+2;的执行条件为x>=2

习题3

if语句等同

填空题中

if(a>50) printf("%d", a);
if(a>40) printf("%d", a);
if(a>30) printf("%d", a);

等同于

if(a>50){
	printf("%d",a);
	if(a>40){
		printf("%d",a);
		if(a>30){
			printf("%d",a);
		}
	}	
}

程序设计题1

输入三个整数,按从小到大顺序排出

#include <stdio.h>
int main(void){
	int a,b,c,f,s,t;
	printf("整数一:"); 
	scanf("%d",&a);
	printf("整数二:"); 
	scanf("%d",&b);
	printf("整数三:"); 
	scanf("%d",&c);
	if(a>b){
		f=a;
		s=b;
		if(b>c){ //a>b>c 
			t=c;
		}else{ //当b<c 
			if(a>c){ //a>c>b
				s=c;
				t=b;
			}else{ //当a<c c>a>b
				f=c;
				s=a;
				t=b;
			}
		}
	}else{ //a<b的情况 
		f=b;
		s=a;
		if(a>c){ //b>a>c
			t=c;
		}else{ //当a<c 
			if(b>c){ //b>c>a
				s=c;
				t=a;
			}else{ //当b<c c>b>a 
				f=c;
				s=b;
				t=a;
			}
		}
	}
	printf("顺序为:%d<%d<%d",t,s,f);
	return 0;
}

还有更优解咩??(°ー°〃)

程序设计题2

高速公路上,超出车道限速的10%罚款200元;超出50%吊销驾照,根据车速和限速自动判断对该机车的处理

#include <stdio.h>
int main(void){
	double set_speed,true_speed;
	printf("输入限制车速:");
	scanf("%lf",&set_speed);
	printf("输入实际车速:");
	scanf("%lf",&true_speed);
	if(set_speed>=true_speed||true_speed<=set_speed*1.1){
		printf("没有违规");
	}else if(set_speed*1.5>=true_speed&&true_speed>set_speed*1.1){
		printf("罚款200元!");
	}else{
		printf("吊销驾照!");
	}
	return 0; 
}

程序设计题3

出租车起步里程为3千里,起步费10元,超过10公里后,每公里2元,超过10公里以上部分加收50%的空驶补贴费,每公里3元;营运过程中若要求停车的,每5分钟2元计费(不足5分钟则不收费)。运价计费位数四舍五入,保留到元。输入行驶里程(公里)和等待时间(分钟),计算输出乘客应该支付的价格。

#include <stdio.h>
int main(void){
	double drive,money1,money2;
	int time;
	printf("行驶里程(公里):");
	scanf("%lf",&drive);
	printf("等待时间(分钟):");
	scanf("%d",&time); 
	if(drive<=3){
		money1=10;
	}else{
		money1=10+(drive-3)*2+(drive-3)*3;
	}
	money2=time/5*2;
	printf("车费:%.0lf 元",money1+money2);
	return 0;
} 

程序设计题4

输入正整数n,在输入n个学生的成绩,统计五分制成绩的分布。(规则:>=90分为A,<90分且>=80分为B,<80分且>=70分为C,<70分且>=60分为D,<60分为E)

#include <stdio.h>
int main(void){
	int i,n,a,b,c,d,e,score;
	a=b=c=d=e=0;
	printf("输入整数n:");
	scanf("%d",&n);
	printf("分别输入这 %d 个人的成绩:\n",n);
	for(i=1;i<=n;i++){
		scanf("%d",&score);
		if(score>=90){
			a++;
		}else if(score<90&&score>=80){
			b++;
		}else if(score<80&&score>=70){
			c++;
		}else if(score<70&&score>=60){
			d++;
		}else{
			e++;
		}
	}
	printf("A: %d 人, B: %d 人, C: %d 人, D: %d 人, E: %d 人",a,b,c,d,e);
	return 0;
}

程序设计题5

输入平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验他们能否构成三角形。如果能,则输出周长和面积(保留两位小数);否则输出"Impossible"。

#include <stdio.h>
#include <math.h>
int main(void){
	double x1,x2,x3,y1,y2,y3,ab,bc,ac,area,s,c;
	printf("输入三个点的坐标[例如(5,6)则输入5 6]\n");
	printf("第一个点:");
	scanf("%lf %lf",&x1,&y1);
	printf("第二个点:");
	scanf("%lf %lf",&x2,&y2); 
	printf("第三个点:");
	scanf("%lf %lf",&x3,&y3);
	ab=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
	bc=sqrt(pow(x1-x3,2)+pow(y1-y3,2));
	ac=sqrt(pow(x2-x3,2)+pow(y2-y3,2));
	if(ab+bc<=ac||ab+ac<=bc||bc+ac<=ab){
		printf("Impossible");
	}else{
		c=ab+bc+ac;
		s=(ab+bc+ac)/2;
		area=sqrt(s*(s-ab)*(s-bc)*(s-ac));
		printf("周长为:%.2lf\n",c);
		printf("面积为:%.2lf",area);
	}
	return 0;
}

这里主要是坐标中两点间的距离公式?ab=\sqrt{(x1-x2)^{2}+(y1-y2)^{2}},以及书中提供的面积公式

- 第三章,END -

整理自书籍《C语言程序设计》

如有错误,欢迎纠正!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 09:58:18  更:2021-09-26 10:00:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:16:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码