前言
大佬就可以撤退了!!(当然也可以温故而知新呀!!)
本次为C语言入门刷题!重在扎实基础,温习学过的基础知识!!!
夯实基础,走得更远!!
一、冒泡排序的重要性!
在一些入门题目中,题目经常会让我们输入n个数,之后以升序或者降序的方式输出,或者比较。
这就需要我们来掌握一种排序方式——冒泡排序!下面举例说明:
思路:
首先,要输出最高成绩的前五项,我们必须将所有输入成绩通过冒泡排序的方式,以降序的方式排好序后,通过输出数组前五个,即(i=0;i<5;i++) ,来输出前五项!
那么接下来就要看你是否认真学习了呢?
来和我的代码对比一下吧!
#include<stdio.h> void max(int arr[], int sz) { for (int i = 0; i < sz - 1; i++) { int flag = 0; for (int j = 0; j < sz - 1 - i; j++) { if (arr[j] < arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; //冒泡排序!! arr[j + 1] = temp; flag = 1; } } if (flag == 0) { break; } } } int main() { int n = 0; int arr[50] = { 0 }; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } max(arr, n); for (int i = 0; i < 5; i++) //输出前五项 { printf("%d ", arr[i]); } return 0; }
这里使用flag的作用是针对已经排好序的数组元素,无需排序而设立,从而减小时间复杂度。
假设起初flag=0,若需要排序,则flag=1。最后只需判断flag是否等于0,等于0则无需排序,直接退出即可!
二、简易计算机的实现(switch语句的重温)!
思路:首先,简易计算机简而言之,即输入 两个数 和 运算操作符,而后输出结果。
那我们可能会想,使用if else 语句可以吗?即如果输出的为 ’ / ’,就做除法运算等等......
if else 代码如下:
#include<stdio.h> int main() { double a=0,b=0; char ch=0; while(scanf("%lf %c %lf",&a,&ch,&b)!=EOF) { if(ch=='+'||ch=='-'||ch=='*'||ch=='/') //如果输入的是四则运算符号 { if(ch=='+') printf("%.4lf%c%.4lf=%.4lf\n",a,ch,b,a+b); else if(ch=='-') printf("%.4lf%c%.4lf=%.4lf\n",a,ch,b,a-b); else if(ch=='*') printf("%.4lf%c%.4lf=%.4lf\n",a,ch,b,a*b); else if(ch=='/') //做除法时,分母不能为0 { if(b==0.0) printf("Wrong!Division by zero!\n"); else printf("%.4lf%c%.4lf=%.4lf\n",a,ch,b,a/b); } } else //如果输入的不为四则运算符号 printf("Invalid operation!\n"); } return 0; }
那既然都是判断,有没有想过switch呢?
可以通过输入的不同运算符,来进入不同的入口,进行计算输出!!
switch()代码如下:
#include<stdio.h> int main() { double m=0; double n=0; char a=0; scanf("%lf %c %lf",&m,&a,&n); switch(a) { case '+': { double b=m+n; printf("%.4lf%c%.4lf=%.4lf",m,a,n,b); break; } case '-': { double b=m-n; printf("%.4lf%c%.4lf=%.4lf",m,a,n,b); break; } case '*': { double b=m*n; printf("%.4lf%c%.4lf=%.4lf",m,a,n,b); break; } case '/': { double b=m/n; if(n==0.0) { printf("Wrong!Division by zero!"); } else { printf("%.4lf%c%.4lf=%.4lf",m,a,n,b); } break; } default : printf("Invalid operation!"); break; return 0; } }
switch 语句必须遵循下面的规则:
switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。 switch(sepression)
在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
一个 switch 语句可以有一个可选的 default: ,出现在 switch 的结尾。default:可用于在上面所有 case 都不为真时执行一个任务。 你学会了吗??