本文目錄一覽:
- 1、怎樣提高C語言的編程能力?
- 2、C語言! 求教。
- 3、磁碟調度演算法SSTF演算法 不限制編程語言,可以選用C/C++等
- 4、請用C語言編寫一個磁碟讀取調度的程序(disk read scheduling)
- 5、請幫我把這個C語言小程序改為C++的,通過了追加分70+20一定給
怎樣提高C語言的編程能力?
1、學好C語言,你可以很好地應付任何一種編程工具。
2、一定要多上機練習,通過程式了解相關知識。幾經反覆方得正果。
3、不要把學習C語言當成一種任務,更不要把它看成很難完成的任務。要充滿自信,只要是一個智力正常的人都能學好C語言。始終保持遊戲的心態,多發現其中的樂趣。當感到編程趣味無窮,那你在電腦方面將前程無量。
4、如果一個程式一時無法弄清楚最後暫時放在一邊,過一段時間你可能會從其他的程式中悟出道理。
5、C語言是一個整體,各個方面是有機聯繫的,要從總體上把握它,不要把它割裂成互不關聯的部件。
6、不要完全相信教材(包括本講義),所有結論最好都上機驗證。
怎樣學好C語言
1. 工欲善其事,必先利其器
準備工作:一個開發環境,如Turbo C 2.0、Visual C++等開發工具;一本好教材,如譚浩強主編的《C語言程序設計》(第二版)。我當時看的是他的第一版,就為它的簡潔、完美所吸引,簡直愛不釋手,用了兩個星期一口氣看完。
2. 秘密武器
初學者學習計算機語言要會「讀程序」,要對小型的應用型、遊戲型程序感興趣,並模仿去加深對C語言程序設計的理解和操作,只有不斷地寫程序、調試程序才能得到編寫程序的經驗和加深對程序的理解,這也是學習編寫優秀高級程序的秘密武器。
3. 發揚探索精神
學習C語言程序設計有點像做數學難題,只要我們善於思考,善於探索,發揚探索精神去尋找好的設計思想和方法,才能把C語言的精髓真正地掌握。
備戰C語言考試要訣
1. 了解大綱,臨陣不亂
各類筆試中,大多數考題是與大綱要求的基本內容一致的,難度不高,但內容十分廣泛,應牢固掌握C語言考試大綱要求的基礎部分。只有熟悉題型,理解語法、句法,做到心中有數,才能臨陣不亂。
2. 善於歸納,強化記憶
對於需要記憶的計算機基礎知識和基本概念,如果考試時因此失分就十分可惜。如:C語言中有幾種不同的數據類型?運算的優先順序別是怎樣的?因此我們需要善於歸納這些計算機基礎知識,並在理解的基礎上強化記憶。
3. 重視實踐,善於調試
計算機科學是一門理論性、實踐性都很強的學科,對C語言考試的參加者來說,基礎理論方面要求不高,而上機試題往往是很多考生不能通過考試的重要原因,因此要勤於實踐。
4. 多做練習,查漏補缺
在認真地學完指定用書後,最好再找些試題,認真地測試一下,一則可以檢查自己的複習情況;二則可以查漏補缺;三則可以調節心理狀況,以備正式考試時沉著冷靜、萬無一失。
C語言! 求教。
演算法設計學過嗎,全排列演算法。
你想遍歷所有送法,只要產生全排列即可。
#include stdio.h
#include math.h
int A[] = {10,1,9,11,19}, N = 4, //N個用戶,數組A[1…N]存儲N個用戶的樓層,A[0]存儲送水工所在樓層
MIN = 10000;
//交換元素
void swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
//產生全排列
void func(int n)
{
int i, t = 0;
if(n==N) //遞歸葉子節點
{
for(i=0; iN; i++) //計算不滿意度之和
t += abs(A[i]-A[i+1])*(N-i);
if(MIN t)MIN = t; //更新MIN
return;
}
//遞歸過程
for(i=n; i=N; i++)
{
swap(A+n, A+i);
func(n+1);
swap(A+n, A+i);
}
}
int main()
{
func(1); //函數調用
printf(“%d”, MIN);
}
磁碟調度演算法SSTF演算法 不限制編程語言,可以選用C/C++等
Java版的磁碟調度演算法,
其中演算法包含
1 先來先服務
2 最短時間優先
3 最短時間優先
4 單向掃描演算法
程序是動畫演示的,程序以圓模擬磁軌,以方塊模擬磁頭根據演算法在界面上演示。
程序運行截圖如下圖所示:
請用C語言編寫一個磁碟讀取調度的程序(disk read scheduling)
#include stdio.h
#include string.h
int main()
{
char s[4]=”abc”,sc=’d’;//比較的字元串和字元
FILE *fp;
char filename[100],c;
int i=0,n1=0,n2=0;
long fpos,len;
printf(“input filename:\n”);
gets(filename);//輸入文件名稱
if((fp=fopen(filename,”r”))==NULL)//打開文件
{
printf(“open %s error!\n”,filename);
return 1;
}
len=strlen(s);
c=fgetc(fp);
while(!feof(fp))
{
if(c==s[0])//如果第一個字元相等,比較剩下的字元串
{
fpos=ftell(fp);//記住當前文件指針位置
for(i=1;ilen;i++)
{
if(fgetc(fp)!=s[i])//如果不匹配,跳出循環
{
fseek(fp,fpos,0);//重新設置指針位置
break;
}
}
if(i==len)//如果匹配成功,累加數目
n1++;
}
if(c==sc)//與字元sc匹配,累加數目
n2++;
c=fgetc(fp);
}
printf(“\n與字元串%s匹配的有%d個\n”,s,n1);//輸出匹配個數
printf(“與字元%c匹配的有%d個\n”,sc,n2);
getchar();
return 0;
}
請幫我把這個C語言小程序改為C++的,通過了追加分70+20一定給
#include stdio.h
void main()
{
char algorithm;
float l,m;
int a[100];
int direct,begin,i,j,t,k,n=0;
printf(“請輸入要調度序列的個數:\n”);
scanf(“%d”,n);
printf(“請輸入要調度的序列:\n”);
for(i=0;in;i++)
{
scanf(“%d”,a[i]);
}
printf(“\n”);
for(i=0;in-2;i++)
{
for(j=n-1;j=1;j–)
{
if(a[j]a[j-1])
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}
}
}
/* for(i=0;in;i++)
couta[i]endl;*/
printf(“請選擇磁碟調度演算法,其中s代表scan演算法,c代表cscan演算法:\n”);
//cinalgorithm;
scanf(“%c”,algorithm);
//以下為scan演算法實現磁碟調度
if(algorithm==’s’)
{
printf(“請輸入開始的磁碟序列號:\n”);
scanf(“%d”,begin);
printf(“\n”);
for(i=0;in;i++)
{
if(a[i]==begin)
k=i;
}
printf(“請輸入訪問方向,其中1為增大方向,0為減小方向:\n”);
scanf(“%d”,direct);
printf(“\n”);
m=float(n)-1;
if(direct==1)
{
for(i=k;in;i++)
//couta[i]” “;
printf(“%d “,a[i]);
for(i=k-1;i=0;i–)
//couta[i]” “;
printf(“%d “,a[i]);
//coutendl;
printf(“\n”);
l=((a[n-1]-a[k])+(a[n-1]-a[0]))/m;
//cout”平均尋道長度為:”lendl;
printf(“平均尋道長度為:%d\n”,l);
}
else
{
for(i=k;i=0;i–)
//couta[i]” “;
printf(“%d “,a[i]);
for(i=k+1;in;i++)
printf(“%d “,a[i]);
printf(“\n”);
l=((a[k]-a[0])+(a[n-1]-a[0]))/m;
printf(“平均尋道長度為:%d\n”,l);
}
}
//以下為cscan演算法實現調度
else
{
//cout”請輸入開始的磁碟序列號:”endl;
printf(“請輸入開始的磁碟序列號:\n”);
//cinbegin;
// coutendl;
scanf(“%d”,begin);
printf(“\n”);
for(i=0;in;i++)
{
if(a[i]==begin)
k=i;
}
//cout”請輸入訪問方向,其中1為增大方向,0為減小方向:”endl;
printf(“請輸入訪問方向,其中1為增大方向,0為減小方向:\n”);
//cindirect;
//coutendl;
scanf(“%d”,direct);
printf(“\n”);
m=float(n)-1;
if(direct==1)
{
for(i=k;in;i++)
printf(“%d “,a[i]);
for(i=0;ik;i++)
printf(“%d “,a[i]);
printf(“\n”);
l=((a[n-1]-a[k])+(a[n-1]-a[0])+(a[k-1]-a[0]))/m;
printf(“平均尋道長度為:%d\n”,l);
}
else
{
for(i=k;i=0;i–)
printf(“%d “,a[i]);
for(i=n-1;ik;i–)
printf(“%d “,a[i]);
printf(“\n”);
l=((a[k]-a[0])+(a[n-1]-a[0])+(a[n-1]-a[k+1]))/m;
printf(“平均尋道長度為:%d\n”,l);
}
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/227735.html