心得感悟
對(duì)于宏定義的使用,我還只是一知半解,不過(guò)在日后學(xué)習(xí)過(guò)程中回頭看,應(yīng)該會(huì)有新的理解和感悟吧。封裝和數(shù)組的使用的確讓程序變得更加簡(jiǎn)潔方便,在練習(xí)數(shù)組的使用時(shí),了解到了知識(shí)盲區(qū),如果給一個(gè)數(shù)組賦初值0(或不賦值),則里面的所有元素的值都為0。經(jīng)過(guò)幾天的練習(xí),我明顯感覺(jué)到我編程的速度比以前快了,準(zhǔn)確地說(shuō)應(yīng)該是程序邏輯思維更強(qiáng)了。果然編程還是需要自己思考多一點(diǎn),想明白每個(gè)程序的原理,慢慢地就會(huì)發(fā)現(xiàn)自己不知何時(shí)就掌握了程序的邏輯思維。
1. 目的
- 復(fù)習(xí)
float,int,long,char類型用法 - 復(fù)習(xí)比較運(yùn)算符
- 理解掌握數(shù)據(jù)類型轉(zhuǎn)換
- 掌握自定義頭文件和實(shí)現(xiàn)文件的使用
- 掌握數(shù)組的使用
2. 技術(shù)
-
char類型的使用 - 比較運(yùn)算符的注意事項(xiàng)
- ++ -- 的運(yùn)用
- 自定義頭文件和實(shí)現(xiàn)文件
- 封裝
- 解決“頭文件互相引用出錯(cuò)”的問(wèn)題
- 數(shù)組的基本使用
- 寫一個(gè)程序,用數(shù)組儲(chǔ)存1-100的數(shù),并輸出它們的和
- 寫一個(gè)程序,實(shí)現(xiàn)由十進(jìn)制轉(zhuǎn)二進(jìn)制,十進(jìn)制轉(zhuǎn)十六進(jìn)制
3. 技術(shù)的使用
-
char類型的使用
char型數(shù)值可用%d,%c打印,用%d打印出來(lái)則為ASCII碼
- 比較運(yùn)算符的注意事項(xiàng)
比較運(yùn)算符有 > < == != || &&
&& 前為假,后面不執(zhí)行
| | 前為假,后面執(zhí)行
i = 10;
j = 20;
if(i < 20 && j++ >10){…};//前為假,j++不執(zhí)行
運(yùn)行后 j = 20
if(i < 20 || j++ >10){…};//前為假,j++執(zhí)行
運(yùn)行后 j = 21
- ++ -- 的運(yùn)用
a++ 表達(dá)式結(jié)束后才+1
++a 先+1,再運(yùn)算
int temp1 = 20;
printf("1:%d\n",temp1++);
printf("1:%d\n",temp1);
//運(yùn)行結(jié)果為20,21
//a++ 當(dāng)表達(dá)式結(jié)束之后 在+1
//++a;先+1 再去運(yùn)算
- 自定義頭文件和實(shí)現(xiàn)文件
.h 函數(shù)的聲明,變量的聲明(不能賦值)
.c 具體實(shí)現(xiàn) 實(shí)現(xiàn)函數(shù)的功能 操作變量
1.新建一個(gè)頭文件
void login(void);
2.新建一個(gè)實(shí)現(xiàn)文件
#include"ATMapp.h"
#include<stdio.h>
#include "stdafx.h"
void login(void) {
printf("************************\n\n");
printf(" 登錄\n\n");
printf("************************\n\n");
}
- 封裝
1.創(chuàng)建.h文件
2.創(chuàng)建.c文件
3.在.h文件導(dǎo)入.c文件
4.在使用的地方導(dǎo)入.h文件
#include "stdafx.h"
#include"ATMapp.h"
#include<iostream>
int main()
{
login();
return 0;
}
- 解決“頭文件互相引用出錯(cuò)”的問(wèn)題
解決辦法:使用宏定義
宏定義優(yōu)點(diǎn):
1.給特定數(shù)值一個(gè)特定的意義
2.便于管理
#ifndef
#define
代碼塊(.c)
#endif
- 數(shù)組的基本使用
什么時(shí)候用?
答:需要存儲(chǔ)多個(gè)同種類型數(shù)據(jù)時(shí)。
1.能存儲(chǔ)數(shù)據(jù) 就必須有內(nèi)存
2.如何定義一個(gè)數(shù)組同時(shí)為他分配內(nèi)存
3.數(shù)組定義必須明確知道數(shù)組大小
??a.初始化幾個(gè)就是幾個(gè)
4.數(shù)組的名字就是數(shù)組的首地址(第一個(gè)元素的地址)
int main(int argc, char const *argv[])
{
//int a = 10;
//定義一個(gè)數(shù)組 里面存的都是float的值 可以存4個(gè)數(shù)據(jù)
//4*4byte=16byte
float score[]={29,235,235,245};
//訪問(wèn)第一個(gè)元素的值 0....n-1
score[0];
//獲取第一個(gè)元素的地址
&score[0];
//使用%p打印地址
printf("%p\n",&score[0]);
printf("%p\n",score);
//b.在定義時(shí)明確指定數(shù)組的大小
int temp[5];
//c.明確指定大小 并且初始化部分?jǐn)?shù)據(jù)
int temp2[5] = {1,2};
//如何使用數(shù)組
//訪問(wèn) 通過(guò)下標(biāo)來(lái)訪問(wèn) 0 —— n-1
printf("%d\n",temp2[0] );
//賦值
temp2[0] = 6;
return 0;
}
- 寫一個(gè)程序,用數(shù)組儲(chǔ)存1-100的數(shù),并輸出它們的和
for循環(huán)實(shí)現(xiàn)
int main()
{
int num[100];
int i = 0;
int sum = 0;
for (i = 0; i < 100; i++) {
num[i] = i + 1;
sum += num[i];
}
printf("%d", sum);
system("pause");
return 0;
}
while循環(huán)實(shí)現(xiàn)
int main()
{
int num[100];
int i = 0;
int sum = 0;
while (i<100)
{
num[i] = i + 1;
sum += num[i];
i++;
}
printf("%d", sum);
system("pause");
return 0;
}
- 寫一個(gè)程序,實(shí)現(xiàn)由十進(jìn)制轉(zhuǎn)二進(jìn)制,十進(jìn)制轉(zhuǎn)十六進(jìn)制
先選一個(gè)十進(jìn)制數(shù)計(jì)算,弄清楚它的運(yùn)算順序,再進(jìn)行編寫
順序:對(duì)原數(shù)字求余,并存入數(shù)組→原數(shù)字/2(/16)→到數(shù)組下一個(gè)位置
十六進(jìn)制有字母,在此用以下方法打印
#include "stdafx.h"
#include<iostream>
int main()
{
int num1 = 0;
int i = 0;
int j = 0;
int two[20];
printf("【轉(zhuǎn)換成二進(jìn)制】\n");
printf("請(qǐng)輸入一個(gè)數(shù)字:");
scanf_s("%d", &num1);
while(1){
two[i] = num1 % 2;
num1 /= 2;
if (num1 == 0) {
break;
}
i++;
}
for (j=i; j >= 0; j--) {
printf("%d", two[j]);
}
printf("\n\n");
int num2 = 0;
int m = 0;
int n = 0;
char six[20];
printf("【轉(zhuǎn)換成十六進(jìn)制】\n");
printf("請(qǐng)輸入一個(gè)數(shù)字:");
scanf_s("%d", &num2);
while (1){
six[m] = num2 % 16;
num2 /= 16;
if (num2 == 0) {
break;
}
m++;
}
for (n=m; n >= 0; n--) {
int k = six[n];
if (k >= 10) {
printf("%c", 'A' + k - 10);
//'A'對(duì)應(yīng)的ASCII碼值為10
}
else
{
printf("%d", k);
}
}
printf("\n\n");
system("pause");
return 0;
}
4.進(jìn)制轉(zhuǎn)換程序的實(shí)現(xiàn)效果

