温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux如何实现程序设计

发布时间:2021-10-11 11:06:29 来源:亿速云 阅读:138 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关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如何实现程序设计”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI