这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的。贴出来纯粹是聊胜于无。

实验题目:Linux环境下系统函数综合实验

实验目的:熟悉并掌握Linux环境下数学函数、字符函数、系统时间与日期函数、环境控制函数、内存分配函数以及数据结构中常用函数的使用方法。

一、Linux环境下数学函数的使用

设计程序,满足如下要求:

1、使用rand函数产生10个介于110之间的随机数值。要求在程序中对每行代码添加注释。

 #include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
srand((int)time());
for(i=;i<;i++)
{
j=+(int)(10.0*rand()/(RAND_MAX + 1.0));
printf(" %d",j);
}
printf("\n");
return ;
}

2、使用srandom函数对上题中的程序进行修改,实现相同功能。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
srandom(time(NULL));
int i;
for(i=;i<;i++)
{
printf("%ld ",random()%); }
printf("\n");
return ;
}

二、Linux环境下字符函数的使用

设计程序,满足如下要求

从键盘中输入一行字符,同时测试读入字符是否为1)大写字符;2)十六进制数字符号;3)标点符号或特殊符号。

 #include<stdio.h>
#include<ctype.h>
int main()
{
char c;
while((c=getchar())!='\n')
{
if(isupper(c))
printf("%c is an uppercase character\n",c); if(isxdigit(c))
printf("%c is an hexadecimal digits\n",c);
if(ispunct(c))
printf("%c is an punct\n",c);
}
return ;
}

三、Linux环境下系统时间与日期函数的使用

设计程序,满足如下要求:

1、使用timelocaltimegmtime等时间相关的系统函数分别显示当前的系统时间。

 #include<time.h>
#include<stdio.h>
int main()
{
time_t timep;
char * wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
struct tm *p;
time(&timep);
printf("%s",asctime (gmtime(&timep)));
p=localtime (&timep);
printf("%d年 %d月 %d日",(+p->tm_year),(+p->tm_mon),p->tm_mday);
printf("%s %d :%d:%d\n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
return ;
}

2、应用结构体struct timeval的成员tv_sec与tv_usec显示系统时间的秒与微妙,并测试输出成员tv_sec与tv_usec这段程序所用的时间。

 #include<stdio.h>
#include<sys/time.h>
#include<unistd.h>
int main()
{
struct timeval tv1,tv2;
struct timezone tz;
gettimeofday(&tv1,&tz);
printf("tv_sec; %d\n",tv1.tv_sec);
printf("tv_usec; %d\n",tv1.tv_usec);
gettimeofday(&tv2,&tz);
printf("tv_usec-tv1_usec; %d\n",tv2.tv_usec-tv1.tv_usec); return ;
}

3、设计一个程序,计算机屏幕随机呈现一个字符,持续0.5s后字符消失,此时取得结构体timeval成员tv_sec与tv_usec的值,然后作出按键正确反应后再取得tv_sec与tv_usec的值,循环5次,计算正确反应率以及正确反应的平均时间。

 #include<stdio.h>
#include<sys/time.h>
#include<unistd.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
int i,j;
struct timeval tv1,tv2;
struct timezone tz;
float ave,sum;
ave=;sum =;
int a,b;
for(a=;a<;a++){
srand(int time ());
while(){
j=+(int)(122.0* rand()/(RAND_MAX +1.0));
if (j>= && j<= || j<= && j>=){
printf("%c",char(j));
break;
}
}
system(sleep(0.5));
gettimeofday(&tv1,&tz);
char c;
while(){
c=getchar();
sum++;
if (c==char(j))
break;
}
gettimeofday(&tv2,&tz);
ave=tv2.tv_usec-tv1.tv_usec;
}
sum =/sum;
ave=ave/;
printf("%f",sum);
printf("%f",ave);
return ;
}

四、Linux环境下环境控制函数的使用

设计程序,满足如下要求:

显示当前所登录的用户,并使用环境控制函数分别将登录用户修改为zhangsannull,同时输出系统中所有的环境变量及其值。

 #include<stdio.h>
#include<stdlib.h>
int main()
{
char *p;
if((p=getenv("USER")))
printf("USER =%s\n",p);
setenv ("USER","zhangsan",);
printf("USER =%s\n",getenv("USER"));
unsetenv("USER");
printf("USER =%s\n",getenv("USER"));
printf("===============所有环境变量=================\n");
extern char ** environ;
int i;
for(i=;environ[i]!=NULL;i++)
printf("%s\n",environ[i]);
return ;
}

五、Linux环境下内存分配函数的使用

设计程序,满足如下要求:

1、用单向链表实现下述功能。某手机用户要增加通讯录,通讯录的结构体定义如下:

struct co

{

int index;

char name[8];

char htel[12];

char tel[12];

};

       其中,index为用户在通讯录中的序号;name存放用户名;htel存放手机号;tel存放电话号码。如果要增加一用户,就分配一存储空间,输入数据,请编写一程序进行模拟,最后检测此内存的大小。

2、利用mmap()来读取/etc/passwd文件内容,把文件中的内容映射到内存中的区域,可读取此区域中的内容,对映射区域的写入操作会产生一个映射文件。要求在程序中对每行代码添加注释。

六、综合部分

设计程序,满足如下要求:

1、从键盘读入不多于50个数的int型数据,组成一个数组,应用qsort函数进行排序。

2、编一个程序:求2~n间的素数,n由键盘输入,循环变量分别从2n2(int)sqrt(n),分别测出两个循环的所用时间。

 #include<stdio.h>
#include<sys/time.h>
#include<stdlib.h>
#include<math.h>
#include<unistd.h>
void prime1(int n)
{
int i;
for(i=;i<n;i++)
{
if(n%i==)
break;
}
if(i>=n)
printf("%d\n",n);
}
void prime2(int n)
{
int i;
for(i=;i<=(int)sqrt(n);i++)
if(n%i==)
break;
if(i>(int)sqrt(n))
printf("%d\n",n);
} int main()
{
int n;
struct timeval tv1,tv2,tv3,tv4;
struct timezone tz;
int i;
printf("Please input a number :\n");
scanf("%d",&n);
printf("================Test1==============\n");
gettimeofday(&tv1,&tz);
for(i=;i<=n;i++){
prime1(i);
}
gettimeofday(&tv2,&tz);
printf("Use time : %f\n",tv2.tv_sec-tv1.tv_sec+0.000001*(tv2.tv_usec-tv1.tv_usec));
printf("================END==============\n");
printf("================Test2==============\n");
gettimeofday(&tv3,&tz);
for(i=;i<=n;i++){
prime2(i);
}
gettimeofday(&tv4,&tz);
printf("Use time : %f\n",tv4.tv_sec-tv3.tv_sec+0.000001*(tv4.tv_usec-tv3.tv_usec));
return ;
}

3、编写程序,类似于猜数游戏,程序产生一随机数,对游戏者输入的数据通过比较,在计算机屏幕上能提示太大了、太小了或恭喜你猜中了等。

4、编写一个简单的C语言程序,用随机数函数产生两个整型数,根据输入的字符‘+’、‘-’、‘*’、‘/’作算术运算。

【Linux程序设计】之环境系统函数综合实验的更多相关文章

  1. Linux网络编程2——系统函数

    socket信息数据结构 #include <netinet/in.h> struct sockaddr { unsigned short sa_family; /*地址族*/ ]; /* ...

  2. linux实操_shell系统函数

    basename函数: 功能:返回完整路径最后/的后面部分,常用于获取文件名. 基本语法: basename 路径 后缀 不加后缀:运行后 加后缀:运行后 dirname函数: 功能:返回完整路径最后 ...

  3. Linux程序设计学习笔记(独乐乐版)

    在Android的开发过程中经常会遇到Linux相关的问题,为了更彻底的了解Linux准备整点没用的,找到一本 <Linux程序设计>开始系统的学习. 期间记录下自认为重要的内容,本以为是 ...

  4. 【Linux程序设计】之Linux库函数的使用,多文件程序开发,静态与共享函数

    这个系列的博客贴的都是我大二的时候学习Linux系统高级编程时的一些实验程序,都挺简单的.贴出来纯粹是聊胜于无. 实验题目:Linux基础程序设计综合实验 实验目的:熟悉并掌握Linux库函数的使用, ...

  5. 2018-2019-20175205实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-20175205实验二面向对象程序设计<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>< ...

  6. 20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20165230 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指 ...

  7. 2018-2019-2 20175306实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-2 20175306实验二面向对象程序设计<Java开发环境的熟悉>实验报告 面向对象程序设计-1 实验要求: 参考:> http://www.cnblogs.c ...

  8. 20175325 《JAVA程序设计》实验二《JAVA开发环境的熟悉》实验报告

    20175325 <JAVA程序设计>实验二<JAVA开发环境的熟悉>实验报告 一.实验报告封面 课程:Java程序设计 班级:1753班 姓名:石淦铭 学号:20175325 ...

  9. Linux环境fork()函数详解

    Linux环境fork()函数详解 引言 先来看一段代码吧, 1 #include <sys/types.h> 2 #include <unistd.h> 3 #include ...

随机推荐

  1. Android软键盘隐藏,遮挡EidtText解决办法

    一.自动弹出软键盘 Timer timer=new Timer(); timer.schedule(new TimerTask() { public void run() { InputMethodM ...

  2. 在服务器上远程链接另一台服务器的数据库的方法how to connet the database from the other host

    iwangzheng.com 16:57 [root@a02.cmsapi]$ mysql -u<username> -p<password> -h10.103.xx.xx W ...

  3. BNUOJ 1038 Flowers

    春天到了,师大的园丁们又开始忙碌起来了. 京师广场上有一块空地,边界围成了一个多边形,内部被划分成一格一格的.园丁们想在这个多边形内的每一格内种植一些花. 现在请你帮忙计算一下一共最多可以种多少花. ...

  4. OJ 1188 全排列---康托展开

    题目描述 求n的从小到大第m个全排列(n≤20). 输入 n和m 输出 输出第m个全排列,两个数之间有一空格. 样例输入 3 2 样例输出 1 3 2 #include<cstdio> # ...

  5. QQ,MSN,Skype在线客服代码

    QQ,MSN,Skype在线客服代码 在网站建设时,为了更好的实施网站的营销型,会用到QQ,MSN等在线交流,以便客户能够快捷方便的联系我们.在这里,提供QQ,MSN的在线客服代码给大家分享: 1.Q ...

  6. 【转】velocity 显示List和Map方法

    一.遍历个map类型 1.先看后台java程序Java代码     Map<String,String> paramValues=new HashMap<String, String ...

  7. Java for LeetCode 029 Divide Two Integers

    Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...

  8. NEFU 2016省赛演练一 F题 (高精度加法)

    Function1 Problem:F Time Limit:1000ms Memory Limit:65535K Description You know that huicpc0838 has b ...

  9. Http协议之Request和Response

    GET / HTTP/1.1表示向服务器用GET方式请求首页,使用HTTP/1.1协议 Cache-Control作用: 用来指定Response-Request遵循的缓存机制.各个指令含义如下Cac ...

  10. php 获取当前时间

    <?php echo $showtime=date("Y-m-d H:i:s");?>