千家信息网

Linux如何实现程序设计

发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,这篇文章将为大家详细讲解有关Linux如何实现程序设计,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。例子:指数函数/*4-1.c 输入两个实数x,y 求指数x^y
千家信息网最后更新 2024年12月04日Linux如何实现程序设计

这篇文章将为大家详细讲解有关Linux如何实现程序设计,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

例子:

指数函数

/*4-1.c 输入两个实数x,y  求指数x^y * gcc -g -o 4-1 4-1.c -lm * **/#include #include 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 #include int main(){    int i,n;    float x,y;    printf("please input an int n:\n");    scanf("%d",&n);    for(i=0;i

随机数

/*4-3.c 产生10个介于1~10的随机数   gcc -g -o 4-3 4-3.c **/#include #include #include 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 #include #include  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 #include 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.cQAc6587Abaaa669DReAEgg **/#include #include 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 #include 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.cgcc -g -o ex4-1 ex4-1.c$ ./ex4-1 113 123 13 12 14 13 11 1 12 53113 123 13 12 14 13 11 1 12 53 365*/#include 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 #include #include 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 #include #include 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 #include #include 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如何实现程序设计"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0