嗯,很佩服lz的自學能力。
創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站設(shè)計、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元撫遠做網(wǎng)站,已為上家服務(wù),為撫遠各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
譚浩強的c語言的書,很權(quán)威,很詳細,很適合自學的。
學習c語言很重要的一點就是學習理論知識與上機訓練結(jié)合起來。學完一章后就按課本后面的習題上機練練。這樣穩(wěn)扎穩(wěn)打的學起來很好了。又win—tc軟件配合上機訓練不錯。
指針是學習者公認的最難學的。還有指向指針的指針。后面還有結(jié)構(gòu)體和鏈表,里面都有用到指針的知識。如果指針學得后,那在以后的設(shè)計里會相當實用方便。
c學起來也不是很難,主要是指針和其他的知識點入數(shù)組、函數(shù)等組合起來難理解一些
要想學習,主要有幾點需要注意
一、記憶部分
1、保留字,如if,int,for等
2、常規(guī)的結(jié)構(gòu),如條件,循環(huán),switch、數(shù)組的結(jié)構(gòu),指針定義,結(jié)構(gòu)體的定義等
3、語法的構(gòu)成,如printf,scanf等一些語句的構(gòu)成
4、一些系統(tǒng)帶的函數(shù),常用的要記住,如strlen,printf等
5、一些經(jīng)典的算法,如素數(shù)的計算,排序的寫法等
二、算法,語法等
這個就是解決問題的方法,沒有好的捷徑,只要慢慢的積累,數(shù)學方面的算法要加深
其實,c基礎(chǔ)也就是那么一些基礎(chǔ)點
1、保留字
2、定義變量等,int,float等
3、條件語句if,選擇語句switch,循環(huán),do--while、for、while、goto
4、注意逗號語句,scanf和printf要熟練,知道格式(這個很基礎(chǔ),用錯了很麻煩)
5、數(shù)組,這里注意二維數(shù)組和字符串的一些函數(shù)
6、指針,這個是難點,也就是說很難理解,特別是和數(shù)組函數(shù)結(jié)構(gòu)體等結(jié)合使用的時候
7、結(jié)構(gòu)體共用體,這個不難,就是繁瑣而已。這里涉及到鏈表,其實不難理解,可以想象成一串珠子,next指針就是串珠子的線,結(jié)構(gòu)體就是珠子
8、文件操作,這個就是套用格式,沒難度
9、宏定義,這個沒難度,就是最簡單的直接替換。注意一點就是在定義宏的時候多用幾個括號增加優(yōu)先級沒壞處
10、函數(shù)。這個難度不大,主要是要理解,參數(shù)是在調(diào)用的時候另外開辟內(nèi)存空間。除了數(shù)組和用定義的參數(shù)。要不然子函數(shù)改變了參數(shù)變量,調(diào)用它的地方的變量時不會改變的
其實就是這些基本的知識點
莫非這點小問題就打擊到你了, 你漫漫長征第一步都還沒開始, 以后的數(shù)據(jù)庫 數(shù)據(jù)結(jié)構(gòu) 操作系統(tǒng) 計算機網(wǎng)絡(luò) 每一門課程都是很難的
C語言的函數(shù)其實很簡單 你就把他當成一個功能模塊就行了, 這個東西理解清楚了其實很簡單的, 比如說你想請客吃飯, 這是你的最后功能,中間你可能叫別人通知另外的人, 那么你叫別人通知的這個過程就可以當成一個函數(shù)了, 因為你叫他幫你做一件事, 但可能不知道他是怎么做的, 你只關(guān)注入口和出口, 即你叫他通知和他是否通知到.
既然是叫別人幫忙做事的話, 你可能需要傳一些東西給別人這就是參數(shù), 別人做完后, 可能要返回給你一個東西, 這就是返回值, 但這不是必須的.
C語言程序全都是函數(shù), 他就是一個函數(shù)的集合, 在main函數(shù)中調(diào)用其他的函數(shù), 所以說C語言里全是函數(shù), 鋤此之外再沒別的東西了
先看下我的運行結(jié)果吧,會自動判斷輸入的m、n是否合法哦!
上代碼,注釋只寫了部分有助理解的。
#include stdio.h
int Found(int m, int n, int a[])
{
int i = 0;
int Count = 0;
int offset = 0;?//數(shù)組a的下標
int qian, bai, shi, ge;?//千位、百位、十位、個位的值
for(i=m; i=n; i++)
{
//取出千位、百位、十位、個位的值
qian = i/1000;
bai = (i%1000)/100;
shi = (i%100)/10;
ge = i%10;
if((qian= bai bai=shi shi=ge) (qian+ge == bai+shi))?//找到一個符合條件的數(shù)
{
Count++;
a[offset++] = i;
}
}
return Count;
}
int main()
{
int m = 0;
int n = 0;
int nResult[100] = {0};
int Count = 0;
int i = 0;
FILE* pFile = NULL;
char szInfo[100] = {0};
while(1)
{
printf("Please enter m and n:");
scanf("%d %d", m, n);
printf("\n");
if(m=1000 n=1200 mn)
break;
else
printf("輸入數(shù)據(jù)不合法,請重新輸入\n");
}
Count = Found(m, n, nResult);
pFile = fopen("104.out", "w");
if(NULL == pFile)
printf("打開文件失敗\n");
sprintf(szInfo, "found %d numbers in %d ~ %d:\n", Count, m, n);
printf("%s", szInfo);
if(NULL != pFile)
{
fwrite("No. 104\n", 1, strlen("No. 104\n"), pFile);?//?寫入學號
fwrite(szInfo, 1, strlen(szInfo), pFile);???//寫入部分信息
}
for(i=0; iCount; i++)
{
printf("%d? ", nResult[i]);
sprintf(szInfo, "%d? ", nResult[i]);
if(NULL != pFile)??//輸出到屏幕的同時,順便把該值寫進文件
fwrite(szInfo, 1, strlen(szInfo), pFile);
}
printf("\n");
if(NULL != pFile)
fclose(pFile);
return 0;
}
自從工作以來,兩年沒上過百度知道了,當初上大學的時候天天在百度知道問問題,今偶爾閑娛,幫忙解答,想不到這里還是這么熱鬧,不禁想起了當年為一個鏈表、一個函數(shù)挑燈夜戰(zhàn)的場景。只能嘆時間太快,想不到都過去好幾年了。做程序最需要毅力,小師弟,好好努力吧,嘿嘿,下班回家咯!