一如代码深似海,从此妹子是路人,今天继续为大家带来一些初识C语言的简单小程序。
(一)给定两个变量的值,将两个值的内容进行交换
int main(){
int a = 1;
int b = 2;
printf("%d %d \n", a, b);
int exchange = 0;//定义一个中间值便于进行交换
exchange = a;
a = b;
b = exchange;
printf("%d %d \n", a, b);
system("pause");
return 0;
}
两个变量值的交换。简单来说有两个苹果分别放在A,B篮子中,要交换两个篮子中的苹果,最简单就是找一个空篮C,以此为中介交换。
这里想到如果身边因为某些条件没有“篮子C”怎么办了?方法总比困难多,提供如下攻略:
1)使用两者之间的差值完成任务
int main(){
int a = 0;
int b = 0;
scanf("%d%d",&a, &b);
printf("%d %d\n", a, b);
if (a > b){
b = a - b;
a = a - b;
b = a + b;
printf("%d %d\n", a, b);
}
else {
a = b - a;
b = b - a;
a = b + a;
printf("%d %d\n", a, b);
}
system("pause");
return 0;
}
这个很好理解,找到两个篮子中苹果多的那一个,把多出的苹果放到苹果少的篮子中,不就完成了交换么?
2)连续异或解决问题
int main(){
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
printf("%d %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d\n", a, b);
system("pause");
return 0;
}
此方法用到异或,其简单可以理解为“同为1 异为0”。这里面逻辑并不难,不妨大家拿1与2 在二进制中连续异或,就会发现规律,快动手试试吧~
(二)求十个整数中的最大值
int main(){
int a[10] = { 0, 1, 2, 3, 4, 9, 8, 7, 6, 5 };//将十个数放置到数组中
int i = 0;
int Maxnumber = a[0];//然后将每次比较中最大的数进行记录
for (i = 0; i < 10; i++){
if (a[i] > a[i-1]){
Maxnumber = a[i];
}
}
printf("十个数中最大的数为:%d\n", Maxnumber);
system("pause");
return 0;
}
运行这个代码你会发现结果好像是对的,但如果把数组中的数字改为{0,1,2,3,4,9,12,8,7,11,5}呢?好像发现了问题所在....
Maxnumber记录的是每次比较中的最大值,然而并不一定是数组中的最大值,所以需要改进
int main(){
int a[10] = { 0, 1, 2, 3, 4, 9, 12, 7, 11, 5 };
int i = 0;
int Maxnumber = a[0];//加上一个条件,拿Maxnumber与每次比较中的最大值比较
for (i = 1; i < 10; i++){
if (a[i] > a[i-1]){
if (a[i] > Maxnumber){
Maxnumber = a[i];
}
}
}
printf("十个数中最大的数为:%d\n", Maxnumber);
system("pause");
return 0;
}
改进后发现满足要求,代码逻辑要细心呀~好比女神说:我感冒了,你在干什么?当然不能回我在码代码,女神感冒了才是重点啊~~~~~
(三)将三个数从大到小输出
int main(){
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%d %d %d\n", a, b, c);
int Max = 0;
if (a < c){
Max = c;
c = a;
a = Max;
}
if (a < b){
Max = b;
b = a;
a = Max;
}
if (b < c){
Max = c;
c = b;
b = Max;
}
printf("三个数从大到小依次为:");
printf("%d %d %d\n", a, b, c);
system("pause");
return 0;
}
从大到小输出三个数,这个问题逻辑看似很乱,其实无非就是:1)找到三个数中最大的数。2)找到剩下两个数中最大的数
所以搞清楚逻辑后,这个“小怪”不堪一击。
(四)求两个数的最大公约数
int main(){
int a, b;
scanf("%d%d", &a, &b);
printf("%d %d \n", a, b);
int Max = 0;
if (a < b){
Max = b;
b = a;
a = Max;
}//这里找到最大的数,方便下面循环终止条件的确定
int i = 0;
int num = 0;
for (i = 1; i <= b; i++){
if ((a % i == 0) && (b % i == 0)){
num = i;
}
}//简单条件的判定(能够同时被两个数整除)
printf("最大公约数为:");
printf("%d\n", num);
system("pause");
return 0;
}
最大公约数:能够被两个数同时整除的最大数。围绕这个点进行编程即可
编程过程中要注意是否考虑掉一些不被注意的条件,当然这只是初识阶段,但还是希望各位未来的大佬们养成习惯,不断对自己的代码提出质疑,改正~当然,这也是我应该做的,一起加油。