这个系列的博客贴的都是我大二的时候学习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. [NOIP2015]推销员

    [NOIP2015]推销员 试题描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有 N 家住户,第 i 家住 ...

  2. 从Trie谈到AC自动机

    ZJOI的SAM让我深受打击,WJZ大神怒D陈老师之T3是SAM裸题orz...我还怎么混?暂且写篇`从Trie谈到AC自动机`骗骗经验. Trie Trie是一种好玩的数据结构.它的每个结点存的是字 ...

  3. PHP中magic_quotes_gpc动态关闭无效的问题

    昨天浏览线上项目,发现了一个问题:部分文本输出中的引号前多了一道反斜杠,比如: 引号内容多了\"反斜杠\" 单从页面展现的结果来看,猜测应该是PHP中的magic_quotes_g ...

  4. 【持续集成】[Jenkins]Job中如何传递自定义变量

    [Jenkins]Job中如何传递自定义变量 来自dweiwei   2015-06-27 18:37:19|  分类: 自动化测试 |举报 |字号大中小 订阅 用微信  “扫一扫” 将文章分享到朋友 ...

  5. IOC原理解释

    spring ioc它其实是一种降低对象耦合关系的设计思想,通常来说,我们在一个类调用另一个类的方法的时候,需要不断的new新的对象来调用该方法,类与类之间耦合度比较高,有了ioc容器以后,ico容器 ...

  6. ACdream 1112 Alice and Bob(素筛+博弈SG函数)

    Alice and Bob Time Limit:3000MS     Memory Limit:128000KB     64bit IO Format:%lld & %llu Submit ...

  7. c++流的读写

    std::istream input_stream;//这是一个文件流,想把它写入文件 思路是,先将input_stream流读入一个char* buffer; 然后用std::ofstream将bu ...

  8. UEditor插入表格没有边框但有间距

    百度编辑器ueditor插入一个表格后,在编辑过程中有表格,但是保存后,在前台网页中没有边框,但有间距,设置方法如下: 在UEditor文件夹下打开ueditor.all.js文件,找到UE.comm ...

  9. Linux创建用户并赋予Root权限

    添加普通用户 [root@server ~]# useradd test //添加一个名为test的用户[root@server ~]# passwd test //修改密码Changing pass ...

  10. Linux查询网址

    1.man查询手册 LINUX MAN PAGES ONLINE: http://man.he.net/ 2.编码规范 https://www.kernel.org/doc/Documentation ...