基础知识回顾
要点1: boolean 类型
非0即为真
&&一假即为假
||一真即为真
要点2:分支语句 if(){} if(){}else{}
要点3:条件运算符 a > b ? a : b;
要点4:switch 语句,要加break.break作用是跳出switch语句,如果不加,当选择一个case 语句后,将不再做其他判断,直接执行下面的所有语句.
要点5:enum X{};枚举类型
难点知识:
要点1:据说面试淘汰85%的人..
问题:依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。
代码: 纯手打不需要环境
#include <stdio.h>
int main(){
for(int i=0;i<101;i++){
if(i%3==0&&i%5==0){
printf("%d*#\n",i);
}else if(i%3==0){
printf("%d*\n",i);
}else if(i%5==0){
printf("%d#\n",i);
}
}
}
要点2: 关于排序问题:
插入排序和冒泡排序等问题
插入排序:
原理:一般来说,插入排序都采用in-place在
数组上实现。具体算法描述如下:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2~5
C代码:
voidinsert_sort(
int
*array,unsigned int n)
{
inti,j;
inttemp;
for
(i=1;i<n;i++)
{
temp=*(array+i);
for
(j=i;j>0&&*(array+j-1)>temp;j--)
{
*(array+j)=*(array+j-1);
}
*(array+j)=temp;
}
}
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
voidbubble_sort(inta[],intn)
//n为数组a的元素个数
{
inti,j,temp;
for
(j=0;j<n-1;j++)
for
(i=0;i<n-1-j;i++)
{
if
(a[i]>a[i+1])
//数组元素大小按升序排列
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
学习的路上,与君共勉!
明天就可以看吸血鬼日记了...期待呀!
;
}