您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Linux如何實現程序設計,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
例子:
指數函數
/*4-1.c 輸入兩個實數x,y 求指數x^y * gcc -g -o 4-1 4-1.c -lm * **/ #include <stdio.h> #include <math.h> int main() { double answer,x,y; printf("please input two double x,y:\n"); scanf("%lf %lf",&x,&y); answer=pow(x,y); printf("%lf的%lf次方是:%lf\n", x,y,answer); return 0; }
開平方
/*4-2.c 先輸入整數n:然后要求逐個輸入n個實數并開平方 * gcc -g -o 4-2 4-2.c -lm * **/ #include <stdio.h> #include <math.h> int main() { int i,n; float x,y; printf("please input an int n:\n"); scanf("%d",&n); for(i=0;i<n;i++){ printf("please input %dth double number:\n",i+1); scanf("%f",&x); y=sqrt(x); printf("%f的開平方是:%f\n", x,y); } return 0; }
隨機數
/*4-3.c 產生10個介于1~10的隨機數 gcc -g -o 4-3 4-3.c **/ #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i,j; srand((unsigned int)time(0)); printf("RAND_MAX= %d\n",RAND_MAX); for(i=0;i<10;i++){ j=1+(int)(10.0*rand()/(RAND_MAX+1.0)); /* 1+(int)(10.0*rand()/(RAND_MAX+1.0)) 的意思是生成1到10的隨機數 (int)10.0*rand()/(RAND_MAX+1.0)的意思是將0到RAND_MAX之間的整數等分成十份,如果隨機的生成數落在第一份,則映射成0, 如落在第二份,則映射成1。。。。。。如落在第十分,則映射成9. */ printf(" %d",j); } printf("\n"); return 0; }
/*4-3_1.c 產生0 到 50 之間的 n 個隨機數 * gcc -g -o 4-3_1 4-3_1.c void srand(unsigned seed); 用法: 它初始化隨機種子,會提供一個種子,這個種子會對應一個隨機數,如果使用相同的種子后面的 rand() 函數會出現一樣的隨機數,如: srand(1); 直接使用 1 來初始化種子。不過為了防止隨機數每次重復,常常使用系統時間來初始化,即使用 time函數來獲得系統時間,它的返回值為從 00:00:00 GMT, January 1, 1970 到現在所持續的秒數,然后將time_t型數據轉化為(unsigned)型再傳給srand函數,即: srand((unsigned) time(&t)); 還有一個經常用法,不需要定義time_t型t變量,即: srand((unsigned) time(NULL)); 直接傳入一個空指針,因為你的程序中往往并不需要經過參數獲得的數據。 進一步說明下:計算機并不能產生真正的隨機數,而是已經編寫好的一些無規則排列的數字存儲在電腦里,把這些數字劃分為若干相等的N份,并為每份加上一個編號用srand()函數獲取這個編號,然后rand()就按順序獲取這些數字,當srand()的參數值固定的時候,rand()獲得的數也是固定的,所以一般srand的參數用time(NULL),因為系統的時間一直在變,所以rand()獲得的數,也就一直在變,相當于是隨機數了。只要用戶或第三方不設置隨機種子,那么在默認情況下隨機種子來自系統時鐘。如果想在一個程序中生成隨機數序列,需要至多在生成隨機數之前設置一次隨機種子。 即:只需在主程序開始處調用 srand((unsigned)time(NULL)); 后面直接用rand就可以了。不要在 for 等循環放置 srand((unsigned)time(NULL)); **/ #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i, n; time_t t; n = 20; /* 初始化隨機數發生器 */ srand((unsigned) time(&t)); /* 輸出 0 到 50 之間的 20 個隨機數 */ for( i = 0 ; i < n ; i++ ) { printf("%d\n", rand() % 50); } return(0); }
/*4-4.c 從鍵盤讀入一行字符,判斷其是否為大寫 gcc -g -o 4-4 4-4.c **/ #include <stdio.h> #include <ctype.h> int main() { char c; while((c=getchar())!='\n'){ if(isupper(c)) printf(" %c is an upppercase character\n",c); } printf("\n"); return 0; }
/*4-5.c 從鍵盤讀入一行字符,判斷其是否為十六進制數字 gcc -g -o 4-5 4-5.c QAc6587Abaaa669DReAEgg **/ #include <stdio.h> #include <ctype.h> int main() { char c; /* for( ; (c=getchar())!='\n' ; ) if(isxdigit(c)) printf(" %c is a hexadecimal digits\n",c); **/ while((c=getchar())!='\n') if(isxdigit(c)) printf(" %c is a hexadecimal digits\n",c); printf("\n"); return 0; }
/*4-6.c 顯示當前系統時間 gcc -g -o 4-6 4-6.c **/ #include <stdio.h> #include <time.h> int main(void) { char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; char *chwday[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; time_t timep; struct tm *p_tm; time(&timep); //timep = time(NULL); p_tm = gmtime(&timep); /*獲取GMT時間*/ printf("%d-%d-%d ", (p_tm->tm_year+1900), (p_tm->tm_mon+1), p_tm->tm_mday); printf("%s %d:%d:%d\n", wday[p_tm->tm_wday], p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec); p_tm = localtime(&timep); /*獲取當地時間并按照中文時間日期顯示*/ printf("%d年 %d月 %d日 ", (p_tm->tm_year+1900), (p_tm->tm_mon+1), p_tm->tm_mday); printf("%s %d:%d:%d\n", chwday[p_tm->tm_wday], p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec); printf("當前的本地時間和日期:%s", asctime(p_tm)); /* asctime(struct tm * ptr)返回的時間字符串格式為:星期,月,日,小時:分:秒,年 */ /* ctime函數 函數原型: char *ctime(const time_t * timer) 函數功能: 將日歷時間參數timer轉換為一個表示本地當前時間的字符串 函數返回: 返回字符串格式:星期,月,日,小時:分:秒,年 參數說明: timer參數應由函數time獲得,其等價于 astime( localtime(timer) ) */ time(&timep); printf("當前時間 = %s", ctime(&timep)); printf("\n"); return 0; }
思考與實驗:
1.編寫一個簡單的c語言程序:函數int input(int a[ ],int n)用于輸入一個有n個元素的整型數組,void output(int b[ ],int n),函數int sum(int a[ ],int n)用于數組求和,在main函數中依次調用函數input、output、sum
/*ex4-1.c gcc -g -o ex4-1 ex4-1.c $ ./ex4-1 113 123 13 12 14 13 11 1 12 53 113 123 13 12 14 13 11 1 12 53 365 */ #include <stdio.h> int input(int a[],int n); void output(int b[],int n); int sum(int a[],int n); void main() { int a[10]; input(a, 10); output(a, 10); printf("%d\n", sum(a, 10)); } int input(int a[],int n) { for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } return 1; } void output(int b[],int n) { for (int i = 0; i < n; i++) { printf("%d ", b[i]); } } int sum(int a[],int n) { int s = 0; for (int i = 0; i < n; i++) { s = s + a[i]; } return s; }
3. 編寫C語言程序:用隨機函數產生兩個整型數,根據輸入的字符:+-*/做算術運算,不是這四個字符則報錯
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int i,b,d; char a; srand((int)time(0)); for(i=0;i<2;i++){ b=1+(int)(4.0*rand()/(RAND_MAX+1.0)); d=1+(int)(4.0*rand()/(RAND_MAX+1.0)); } printf("%d %d\n",b,d); printf("請輸入+、-、*、/ 中的任意一個符號:"); a=getchar(); int m,n,p; float q; m=b+d; n=b-d; p=b*d; q=(float)(b/d); switch(a){ case '+':printf("這兩個數的和是:%d\n",m); break; case '-':printf("這兩個數的差是:%d\n",n); break; case '*':printf("這兩個數的積是:%d\n",p); break; case '/':printf("這兩個數的商是:%f\n",q); break; default:printf("error!\n"); } return 0; }
4.編寫程序,測試某一程序段運行時間
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { long i = 10000000L; clock_t start, finish; double Total_time; printf( "CLOCKS_PER_SEC= %ld\n",CLOCKS_PER_SEC ); /* 測量一個事件持續的時間*/ printf( "Time to do %ld empty loops is ", i ); start = clock(); while(i--) ; finish = clock(); Total_time = (double)(finish-start) / CLOCKS_PER_SEC; printf( "%f seconds\n", Total_time); return 0; }
或
/* ex4-4_1.c https://blog.csdn.net/HelloZEX/article/details/53744838 * * gcc -g -o ex4-4_1 ex4-4_1.c * */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { clock_t start, finish; double Total_time; /* 測量一個事件持續的時間*/ start = clock(); /*被測試代碼*/ int size = 64 * 1024 * 1024; int *arr = (int *) malloc( sizeof(int)*size); for (int i = 0; i < size; i++) arr[i] *= 3; for (int i = 0; i < size; i += 8) arr[i] *= 3; finish = clock(); Total_time = (double)(finish-start) / CLOCKS_PER_SEC; printf( "%f seconds\n", Total_time); return 0; }
關于“Linux如何實現程序設計”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。