日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.绪论

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.绪论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

(1)C語言傳值與傳地址變量

(2)算法效率的度量

(3)基本操作

(4)主函數


主要由實現基本操作和算法的程序構成。這些程序有6類:

  • 數據存儲結構,文件名第一個字母為c,以h為擴展名。如c1-1.h是第1章的第1種存儲結構。
  • 每種存儲結構的一組基本操作函數。以bo開頭,cpp為擴展名。
  • 調用基本操作的主程序。以main開頭,cpp為擴展名。
  • 實現算法的程序。以algo開頭,cpp為擴展名。
  • 不同于基本操作又被多次調用的函數,以func開頭,cpp為擴展名。
  • 數據文件,以txt為擴展名。
  • (1)C語言傳值與傳地址變量

    #include <stdio.h>void fa(int a) {a++;printf("在函數fa中:a=%d\n", a); } void fb(int *a) {(*a)++;printf("在函數fb中:a=%d\n", *a); }int main() {int n = 1;printf("在主程序中,調用函數fa之前:n=%d\n", n);fa(n);printf("在主程序中,調用函數fa之后:n=%d\n", n);fb(&n);printf("在主程序中,調用函數fa之后:n=%d\n", n); }

    傳地址變量,若變量值在函數中被修改,則變化的值會帶回到主函數中,運行結果為:

    (2)算法效率的度量

    //計算1-1/x+1/(x*x)…的更快捷的算法 //計算程序運行時間 #include<sys/timeb.h> #include<stdio.h>void main() {timeb t1, t2;long t;double x, sum1=1, sum=1;int i, n;printf("請輸入x n:");scanf("%lf%d", &x, &n);ftime(&t1); for(i=1; i<=n; i++){ sum1*=-1.0/x;sum+=sum1;}ftime(&t2); t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm); printf("sum=%lf,用時%ld毫秒\n", sum, t); }

    運行結果為,具體運行時間跟計算機有關。

    (3)基本操作

    這里介紹抽象數據類型的8個基本操作函數,返回值類型都是Status,即智能返回OK、ERROR.

    // bo1-1.h 抽象數據類型Triplet和ElemType(由c1-1.h定義)的基本操作(8個) Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3) { //操作結果,構造三元組T,依次置T的3個元素的初值為v1,v2,v3T=(ElemType*)malloc(3*sizeof(ElemType)); if(!T)exit(OVERFLOW); //OVERFLOW為定義的宏變量T[0]=v1, T[1]=v2, T[2]=v3;return OK; }Status DestroyTriplet(Triplet &T) { //操作結果,三元組T被銷毀free(T); T=NULL; return OK; }Status Get(Triplet T, int i, ElemType &e) { //初試條件:三元組T已存在,操作結果:用e返回T的第i個元素的值if(i<1 || i>3) return ERROR;e=T[i-1]; return OK; }Status Put(Triplet T, int i, ElemType e) { //改變T的第i元的值為eif(i<1 || i>3) return ERROR;T[i-1]=e; return OK; }Status IsAscending(Triplet T) { // 判斷T的3個元素是否按升序排列return(T[0]<=T[1] && T[1]<=T[2]); }Status IsDescending(Triplet T) { //判斷T的3個元素是否按降序排列return(T[0]>=T[1] && T[1]>=T[2]); }Status Max(Triplet T, ElemType &e) { //返回最大值e=(T[0]>=T[1]) ? (T[0]>=T[2] ? T[0] : T[2]) : (T[1]>=T[2] ? T[1] : T[2]);return OK; }Status Min(Triplet T, ElemType &e) { //返回最小值e=(T[0]<=T[1]) ? (T[0]<=T[2] ? T[0] : T[2]) : (T[1]<=T[2] ? T[1] : T[2]);return OK; }

    (4)主函數

    主函數是用來檢驗基本操作函數是否正確。

    // main1-1.cpp 檢驗基本操作bo1-1.h的主函數 // 以下兩行可根據需要選其一(且只能選其一),而無須改變基本操作. typedef int ElemType; //typedef double ElemType; // 定義抽象數據類型ElemType在本程序中為雙精度型。 #include"c1-1.h" #include"bo1-1.h" #include"func1-1.h"int main() {Triplet T;ElemType m;Status i;i=InitTriplet(T, 5, 7, 9);//i=InitTriplet(T, 5.0, 7.1, 9.3); // 當ElemType為雙精度型時,可取代上句。第15行printf("調用初始化函數后,i=%d(1:成功)。T的3個值為",i);PrintT(T);i=Get(T, 2, m);if(i==OK){printf("T的第2個值為");PrintE(m);}i=Put(T, 2, 6);if(i==OK){printf("將T的第2個值改為6后,T的3個值為");PrintT(T);}i=IsAscending(T);printf("調用測試升序的函數后,i=%d(0:否 1:是)\n", i);i=IsDescending(T);printf("調用測試降序的函數后,i=%d(0:否 1:是)\n", i);if((i=Max(T, m))==OK){printf("T中的最大值為");PrintE(m);}if((i=Min(T, m))==OK){ printf("T中的最小值為");PrintE(m);}DestroyTriplet(T);printf("銷毀T后,T=%u\n", T);return 0; }

    運行結果為:

    ?

    總結

    以上是生活随笔為你收集整理的1.绪论的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。