C 语言没办法透过比较运算检查两个阵列(或字串)是否相等,必须要透过阵列对每个圆一个一个做比较
另外宣告一个变数储存目前状态,初始值为1,如果不相等就指派为0,最後在用 if
判断比较的结果
#include<stdio.h>
#include<stdlib.h>
int main(){
char passWord[10]="abc123", input[10];
int correct=1;
scanf("%s", input);
for(int i=0; passWord[i]!='\0'; i++){
if(passWord[i] != input[i])
correct=0;
}
if(correct==1)
puts("Succeed");
else
puts("Failed")
return 0;
}
如果两个元不相等,可以执行 break
中断比较减少执行时间
#include<stdio.h>
#include<stdlib.h>
int main(){
char passWord[10]="abc123", input[10];
int correct=1;
scanf("%s", input);
for(int i=0; passWord[i]!='\0'; i++){
if(passWord[i] != input[i]){
correct=0;
break;
}
}
if(correct==1)
puts("Succeed");
else
puts("Failed")
return 0;
}
实际上 true 就是整数1,false 就是整数0,所以最後 if()
的条件可以不用透过比较运算
#include<stdio.h>
#include<stdlib.h>
int main(){
char passWord[10]="abc123", input[10];
int correct=1;
scanf("%s", input);
for(int i=0; passWord[i]!='\0'; i++){
if(passWord[i] != input[i]){
correct=0;
break;
}
}
if(correct)
puts("Succeed");
else
puts("Failed")
return 0;
}
反转实际上就是让阵列的第 n 个元和倒数第 n 个元交换,所以先来看怎麽交换两个变数的值
下面例子中:
temp
被设为 a
的值(10),可以想成 a
被复制变成两个,所以现在有 10, 10, 2三个数a
被设为 b
的值(2),现在 a
的值和 b
一样b
设为 temp
的值(10),现在 b
的值和一开始的 a
一样,两变数的数值交换#include<stdio.h>
#include<stdlib.h>
int main(){
int a=10, b=2;
int temp=a;
a=b;
b=temp;
printf("%d %d", a, b);
return 0;
}
或者可以用数学运算达成,可以省下一个变数
a
加上 b
,现在 a
是 12b
设为 a-b
(12-2)是10,b
的值和一开始的 a
相同a
设为 a-b
(12-10)是2,a
的值和一开始的 b
相同,两变数的数值交换#include<stdio.h>
#include<stdlib.h>
int main(){
int a=10, b=2;
a+=b;
b=a-b;
a=a-b;
printf("%d %d", a, b);
return 0;
}
利用回圈,将阵列的头尾两两交换,达成阵列反转的目的
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[7]={1, 2, 3, 4, 5, 6, 7}, n=7;
for(int i=0; i!=n/2; i++){
int t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
}
for(int i=0; i!=n; i++)
printf("%d ", arr[i]);
}
因为元两两交换,所以回圈执行的次数是阵列长度的一半,不管阵列长度是奇数或偶数,都可以用 i!=n/2
或 i!=n/2
作为回圈的条件
n
是4,四个元的索引就是 0, 1, 2, 3,所以回圈需要从 i
等於0执行到 i
等於1,因为 n/2
是2,回圈条件是 i!=n/2
或 i!=n/2
可以满足以上情况n
是5,五个元的索引就是 0, 1, 2, 3, 4,但奇数个数时正中间的数(这边是第三个,索引是2)不需要交换,所以回圈需要从 i
等於0执行到 i
等於1,因为 n/2
是2,回圈条件是 i!=n/2
或 i!=n/2
可以满足以上情况因为索引从0开始,所以最後一个元的索引是 n-1
,和 arr[i]
(第 i+1
个)交换的就是 arr[n-1-i]
(倒数第 i+1
个)
<<: 初探网路安全(四):加密演算法,何谓对称及非对称式加密?
>>: JavaScript Day23 - 条件(三元)运算子
KTX是Jetpack中的一套extension, 提供了许多简洁、惯用的 Kotlin用法。 写法...
前言 接下来这一篇算是收割前面几个章节的章节小练习,基本上我是尽量规划每过几个章节就有一些小作业、小...
今天将会介绍简易的todo list 功能 新增事项(push将输入值放入阵列) Enter加入资料...
Cloud SQL 今天主题Mysql,所有的开发我想一定无法脱离资料库的使用,这点Google也帮...
今天先来介绍一个,我第一次看到之後有点被吓到的工具 Hotjar Hotjar是一个质化的网站分析工...