&&(逻辑与):同时为真时,整个表达式结果为真。
||(逻辑或):一个为真即为真,同时为假才为假。
if语句的复杂形式
if(条件表达式){ 语句1;}
else if(条件表达式){ 语句2;}
........
else if(条件表达式){ 语句n;}
else {语句n+1;}
最需要注意的是:“;”是一段程序结束的标志所以条件表达式后面不能加“;”,否则不管条件表达式是否成立,语句都会被执行。
循环结构
while循环:
经典例题:求1~100中不是7的倍数且不包含7的数。
inte = 1;
while(e <= 100) {
if(!(e %7==0) && !(e %10==7) && !(e /10==7)){
printf("1~100中不是7的倍数且不包含7的数:%d\n",e);
}
e ++;
}
break:switch语句中,跳出本层循环
continue:跳出本次循环,接着执行下次
do....while循环:
先执行循环体,再判断循环条件,直到条件不满足时,循环结束。
do....while循环:
for循环的嵌套:
例如:编程将所有“水仙花数”打印出来,并打印其总个数。“水仙花数”是一个各个位立方之和等于该整数的三位数。
printf("所有水仙花数:\n");
int p;
for(int i = 1;i <= 9;i++){
for(int j = 0;j <= 9;j++){
for(int m = 0;m <= 9;m++){
if(i * i * i + j * j * j + m * m * m == 100 * i + 10 * j +m){
printf("%d%d%d\n",i , j, m)
p++;
}
}
}
}
printf("水仙花个数 p = %d\n",p);
字符数组
有'\0'结束表示的字符数组也称为字符串。
字符数组长度要比字符长度大1,用来存放'\0'标识
字符串处理函数:
strlen() 计算字符串长度
strcpy() 字符串拷贝
strcat() 字符串拼接
strcmp() 字符串比较
特别需要注意的是:字符串比较函数是根据对应下标字符的ASCII码值作比较(减法),如果差值为0,说明两个字符相等,接着比较下一位ASCII码值,直到遇到'\0',如果不为0就返回差值,表示两个字符。
冒泡排序:
随机产生10个[20,40]的数,并对10个数从小到大排序。
//初始化一个具有10个元素的整型数组
intsortArray[10] = {0}, temp =0;
//用for循环对数组中的每个元素赋值
for(inti =0; i <10; i++) {
sortArray[i] = arc4random() % (40-20+1) +20;
printf("sortArray[%d] = %d\n",i + 1,sortArray[i]);
}
for (inti =0; i <10 - 1; i++) {
sortArray[i] = arc4random() % (40-20+1) +20;
printf("sortArray[%d] = %d\n",i + 1,sortArray[i]);
}
for (inti =0; i <10 - 1; i++) {
//10-1防止j+1下标越界
for(intj =0; j <10-1 - i; j++) {
// 比较两个相邻元素的大小,第j位的元素和第j+1位的元素
if(sortArray[j] > sortArray[j + 1]){
temp = sortArray[j];
sortArray[j] = sortArray[j +1];
sortArray[j +1] = temp;
}
}
}
}
}
for(inti =0; i <10; i++) {
printf("sortArray[%d] = %d\n",i +1,sortArray[i]);
}