Linux编程题(采纳再加100)

Linux编程题(采纳再加100),第1张

我这里正好有一个类似的程序,改了一下,看看能否满足需要吧

//file: read_write_fifo.c

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <fcntl.h> 

#include <errno.h>

#include <sys/stat.h>

int main(int argc,char **argv)

{

    int fd

    int len = 0

    char read_buf[1024]

    char write_buf[1024]

    pid_t pid

    int status = 0

    

    if(mkfifo("fifo1", 0666) < 0 && errno!=EEXIST) // 创建FIFO管道

        perror("Create FIFO Failed")

    

    if((pid = fork()) < 0)  // 创建子进程

     perror("Fork error\n")

    else if (pid == 0)

    {

        if((fd = open("fifo1", O_WRONLY)) < 0) // 以写打开一个FIFO

        {

            perror("Open FIFO Failed")

            exit(1)

        }

        while(1)

        {

            printf("Child send:")

            scanf("%s",write_buf)

            if(!strcmp(write_buf,"quit"))

            {

                close(fd)

                exit(0)

            }  

            if(write(fd, write_buf, 1024) < 0)  // 写入到FIFO中

            {

                perror("Write FIFO Failed")

                close(fd)

                exit(1)

            }

        usleep(100)

        }        

    }

    if((fd = open("fifo1", O_RDONLY)) < 0)  // 以读打开FIFO

    {   

        perror("Open FIFO Failed")

        exit(1)

    }   

    while(waitpid(pid, &status, WNOHANG) == 0)

    {   

        len = read(fd, read_buf, 1024) // 读取FIFO管道

        if(len > 0)

            printf("Father recv: %s\n", read_buf)

    }   

   

    close(fd)  // 关闭FIFO文件

    return 0

}

1.#include<stdio.h>

#include<string.h>

#include<malloc.h>

main()

{ char *s,*h,*tint l

s=(char*)malloc(20*sizeof(char))

printf("input a string:")

scanf("%s",s)

l=strlen(s)/*求字符串长度赋给l*/

h=st=s+l-1/*h指针指向第一个字符,t指向最后一个*/

for(h<th++,t--) /*从头尾向中比较*/

{if((*h)!=(*t)){printf("not symmetric")break} /*发现不同的字符,显示不对称,并结束比较*/

}if(h>=t)printf("symmetric")/*如果比较完了,则显示对称*/

getch()

}

2.#include<stdio.h>

#include<string.h>

#include<malloc.h>

main()

{ char *s,*p,*q

s=(char*)malloc(20*sizeof(char))

printf("input string:")

scanf("%s",s)

p=s

while(*p)

{if(*p=='a'||*p=='e'||*p=='i'||*p=='o'

||*p=='u')

{q=p/*让q指针和q指针指向同一个字符*/

while(*q)

{*q=*(q+1)q++} /*将当前字符后面的字符前移,相当于把p指着的当前字符删除*/

p--}

p++}

printf("%s",s)

getch()

}

3.#include<stdio.h>

#include<string.h>

main()

{ int a,i=0,s=0char b[52],c[100],t

for(t='A't<='Z't++)

b[i++]=t

for(t='a't<='z't++)

b[i++]=t

for(i=0i<52i++)

printf("%c",b[i])/*将52个大小写字母存入数组b中*/

srand(time(NULL))/*使每次随机产生的数不同*/

for(i=0i<100i++) /*循环100次,产生100个随机字母*/

{ a=rand()%51/*每次从0到51中产生一个随机数,从而从b〔0〕到b〔51〕中选出一个字母*/

c[i]=b[a]/*每次产生的随机字母存入数组c中*/

if(b[a]=='a'||b[a]=='e'||b[a]=='i'||

b[a]=='o'||b[a]=='u'||b[a]=='A'||

b[a]=='E'||b[a]=='I'||b[a]=='O'||b[a]

=='U')s++/*当是元音字母时,用s来统计个数*/

}

printf("\n")

for(i=0i<100i++)printf("%c ",c[i])

printf("\ns:%d",s)

getch()

}

先占下楼层,空了慢慢给你做!

先做第一题1月12日:

#!/bin/bash

echo this "date" :`date`

echo this "cal" :`cal`

echo this "pwd" :`pwd`

echo this "ls" : `ls`.

第二题1月12日:

这个没法写了撒 太笼统;建议翻翻书。

我列个环境变量的例子吧:

#!/bin/bash

echo "第二题":

TEST_DIR=/root

export $TEST_DIR

echo "环境变量TEST_DIR是/root".

第三题1月12日:

#!/bin/bash

echo "第三题for":

echo "3.1 for"

x=0

for ((i=1 i<101 i++))

do

x=$(($x+$i))

done

echo $x

echo "---------------------------------"

echo "第三题while":

echo "3.2 while"

x=0

i=1

while [ $i -lt 101 ]

do

i=$(($i+1))

x=$(($x+$i))

done

echo $x

第三题第二个

#!/bin/bash

echo "3.2"

function fib {

if [ $1 -lt 2 ]then

echo -n $1

else

local n_2=$(($1 - 2))

local n_1=$(($1 - 1))

local f_n_2=$(fib $n_2)

local f_n_1=$(fib $n_1)

local f_n=$((f_n_2 + f_n_1))

echo -n $f_n

fi

}

n=10

for ((i = 0i <$ni++))

do

printf "fib(%2d) = %d\n" $i $(fib $i)

done


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8590856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存