1、ASCII碼
printf("%c\n", 'a');
printf("%c\n", 97);
輸出的都是a,ASCII碼97對應的是a
int main()
{
int arr[] = { 73,32,99,97 };
int i = 0;
int size = sizeof(arr) / sizeof(arr[10]);//計算數組元素 個數
while (i<size)
{
printf("%c", arr[i]);//列印ASCII碼
i++;
}
return 0;
}
列印出來的是{73,32,99,97}對應的ASCII碼 => I ca
//列印出生年月日
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%4d%2d%2d", &year, &month, &day);//%2d是 擷取2位
printf("year = %d\n", year);
printf("month = %02d\n", month);//%02d是拿0補齊2位
printf("day = %02d\n", day);
return 0;
}
//學生基本資訊
int main()
{
int id = 0;
float c = 0.0f;//後面加f以float存儲,否則以double存儲形式
float math = 0.0f;
float eng = 0.0f;
scanf("%d,%f,%f,%f", &id, &c, &math, &eng);
printf("學号為%d每科分數:%.2f,數學為%.2f,英語為%.2f ",id,c,math,eng);
return 0;
}
//float存儲小數
0 1 0 1 bit
2^-1 2^-2 2^-3
0.5 0.25 0.125
0.5 0 0.125
=> 0.625 結果
//printf的傳回值
int main()
{
int n = printf("hello world!\n");
printf("%d\n", n);
printf("printf(\"Hello world\\n\");\n");
printf("count << \"Hello world!\" << endl;\n");
return 0;
}
=>
hello world!
13
printf("Hello world\n");
count << "Hello world!" << endl;
//printf傳回值為int ,數值為字元串的大小
\為列印的時候防止轉義
//找最大數
int main()
{
int arr[4] = { 0 };//初始化
int i = 0;
while (i < 4)
{
scanf("%d", &arr[i]);
i++;
}
int max = arr[0];
i = 1;
while (i < 4)
{
if (arr[i] > max)
{
max = arr[i];
}
i++;
}
printf("%d\n", max);
return 0;
}
//計算球體積
int main()
{
float r = 0.0f;
float v = 0.0f;
scanf("%f", &r);
v = 4 / 3.0 * 3.1415 * r * r * r;
printf("%.3f\n", v);
return 0;
}
//計算體重指數
int main()
{
int weight = 0;
int high = 0;
scanf("%d %d", &weight, &high);
float bmi = weight / (high / 100.0) / (high / 100.0);
printf("%.2f\n", bmi);
return 0;
}
2、while循環
//while 循環
int main()
{
int i = 1;//初始化
while (i <= 10)//判斷
{
printf("%d ", i);//循環語句
i++;//調整
}
}
3、for循環
for(表達式1;表達式2;表達式3)
循環語句
表達式1:初始化
表達式2;判斷
表達式3:調整
for(int i = 1;i <= 10;I++)
{
printf("%d ",i);
break;//跳出循環
continue;//跳過本次循環後面的代碼,直接來到i++,與while循環不一樣
//建議:不可在for循環體更改循環變量,for循環控制變量采用前閉後開
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//0--9
for (int i = 0; i < 10; i++)//最好不要i <=9
{
printf("%d ", arr[i]);
}
return 0;
}
for循環的變種
for( ; ; )//for循環,判斷部分省略,意味着判斷值恒成立為真
= > 死循環
int main()
{
int i = 0;
for (; i < 10; i++)//省略了初始化
{
printf("%d\n", i);
}
return 0;
}
=>可以執行
int main()
{
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)//外此循環一次後,j = 10,不滿足内循環,循環一次
{
}
}
return 0;
}
如果省略初始化,列印10次
for(int i = 0;i<10;i++)與int i = 0;for(i = 0;i<10;i++),C99文法支援int 寫在for裡面
//for循環采用多個變量控制變量
int main()
{
int y = 0;
for (int x = 0, y = 0; x < 10, y < 10; x++, y++)
{
printf("%d %d\n", x, y);
}
return 0;
}//可以運作
3、do while循環
do
{
循環語句;
}while(條件式);
break:跳出循環
continue:跳過後面循環語句接着判斷下一次循環
//計算n的階層
int main()
{
int ret = 1;
int i = 1;
int n = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
return 0;
}
//計算1!+2!+3!......+10!;
int main()
{
int n = 0;
int ret = 1;
int sum = 0;
for (n = 1; n <= 10; n++)
{
ret = 1;
for (int i = 1; i <= n; i++)
{
ret += ret * i;
}
sum = sum + ret;
}
printf("%d\n", sum);
}
//優化
int main()
{
int n = 0;
int ret = 1;
int sum = 0;
for (n = 1; n <= 10; n++)
{
ret = ret * n;
sum = sum + ret;
}
printf("%d\n", sum);
return 0;
}
//周遊查找在一個有序數組查找一個數
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int find = 7;
int size = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < size; i++)
{
if (arr[i] == find)
{
printf("找到了,下标是:%d\n", i);
break;
}if (i == size)
{
printf("找不到\n");
}
}
}
二分法查找
//二分法查找在一個有序數組查找一個數
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int find = 7;
int size = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = size-1;
while(left <= right)
{
int mid = (left + right)/2;
if (arr[i] find)
{
left = mid +1;
}else if (arr[mid]>find)
{
right = mid -1;
}else
{
printf("找到了,下标是:%d\n", i);
}
if(left > right)
{
printf("找到了,下标是:%d\n", i);
}
}
}