#Linux中的GCC编程# 20170719 C培训作业

C 培训作业

2017年7月19号

1、实现字符串的翻转。例如:输入abcdef,输出fedcba

/*-------------------------------------------------------------------
    @功能:实现字符串的翻转。例如:输入abcdef,输出fedcba
    @日期:2017年7月19日
-------------------------------------------------------------------*/
#include"stdio.h"
#include"string.h"                   //用到了string.h中的strlen()函数。
/*
    函数原型声明
*/
void input_string(char str[]);       //输入接受函数
void change_string(char str[]);      //字符翻转函数
/*
   @定位:主函数main()
*/
int main(void)
{
    char str[30]="";                 //定义字符数组str,并初始化。
    input_string(str);               //调用,输入数据。
    change_string(str);              //调用,数据处理。
    puts(str);                       //直接输出
    return 0;
}
/*
   @定位:子函数change_string()
   @功能:字符翻转
   @返回值:无
   @形参:字符数组地址
*/
void change_string(char str[])
{   
    char temp=0;
    int i=0;
    int len=strlen(str)-1;
    while(i<=len/2)             //循环次数
    {
         temp=str[i];           
         str[i]=str[len-i];     //镜像交换
         str[len-i]=temp;
         i++;
    }
    
}
/*
    @定位:子函数input_string()
    @功能:输入接受
    @返回值:无
    @形参:字符数组地址
*/
void input_string(char str[])
{
   printf("please input your string!\n");
   scanf("%s",str);
}

运行结果

[root@localhost Kshine]# gcc test13.c -o test 
[root@localhost Kshine]# ./test
please input your string!
Kshine2017
7102enihsK

2、打印大于整数m且紧靠m的k个素数

/*------------------------------------------------------------------
    功能:请编写一个函数int printPrime(int m,int k,int arr[]),
该函数的功能是:将大于整数m且紧靠m的k个素数存入数组arr中。 
其中k表示数组arr的所指的数组中
--------------------------------------------------------------------*/
#include"stdio.h"
/*
    函数原型声明
*/
void go();                                 //控制总运行的函数
void output_arr(int k,int arr[]);          //输入打印数组
void print_Prime(int m,int k,int arr[]);   //数据处理,将相关的素数存入数组
int is_Prime(int num);                     //判断是否为素数
/*
    @定位:主函数main()
*/
int main()
{
    go();                                  //总运行
    return 0;
}
/*
    @定位:子函数go()
    @功能:集合所有步骤,控制总开断
    @返回值:无
    @形参:无
*/
void go()
{
     int m=0,k=0;                         //数据定义及初始化
     int arr[20]={0};                     //数组定义及初始化
     printf("请输入数字和个数:\n");       
     scanf("%d%d",&m,&k);                 //输入接受数据
     print_Prime(m,k,arr);                //数据处理,将相关素数存入arr
     output_arr(k,arr);                   //输出arr中的元素
}
/*
    @定位:子函数print_Prime()
    @功能:将m后的k个素数存入数组
    @返回值:无
    @形参:目标数字,素数个数,以及数组的地址
*/  
void print_Prime(int m,int k,int arr[])
{
    int counter=0,num=m+1;
    printf("大于整数m且紧靠m的k个素数:\n");
    for(;;)
    {
        if(is_Prime(num))       //判断为真,则是素数
        { 
           arr[counter]=num;    //先 存入该素数
           counter++;           //再 计数
        //   printf("%d\t",num);//该函数的定义,只是将数据存在数组里。
        }
        num++;
        if(counter==k)          //得到k个素数
        {
            break;
        }
    }

}
/*
    @定位:子函数is_Prime()
    @功能:判断是否为素数
    @返回值:是素数则1,否则为0
    @形参:待判断的数字
*/
int is_Prime(int num)
{
    int i=2,flag=0;
    if(num==2)                           //将num==2的情况,单独给出结果
    {
        return 1;
    }
    for(i=2;i<num/2;i++)
    {
        if(num%i)
        {
            flag=1;                       //flag==1,该数字可能为素数
        }
        else 
        {
            flag=0;                       //flag==0,一定不是素数
            break;                        //不是素数,直接跳出循环
        }
    }
    if(flag==1)                       //经过循环,仍旧为1,则判定为素数
    {
       return 1;
    }
    return 0;
}
/*
    @定位:子函数output_arr()
    @功能:输出显示数组中的元素
    @返回值:无
    @形参:输出的元素个数k,以及数组的地址
*/
void output_arr(int k,int arr[])
{
    int i=0;
    for(i=0;i<k;i++)
    {
        printf("%d\t",arr[i]);
    }
    printf("\n");
}


运行结果:

[root@localhost Kshine]# gcc test14.c -o test 
[root@localhost Kshine]# ./test
请输入数字和个数:
10 3
大于整数m且紧靠m的k个素数:
11      13      17
[root@localhost Kshine]# ./test
请输入数字和个数:
55 7
大于整数m且紧靠m的k个素数:
59      61      67      71      73      79      83

3、输入10整型数字,并求和

/*-------------------------------------------------------------
   定义一个可以保存10个元素的整型数组,从终端上输入给数组赋值,
最后求出数组中所有元素的和并输出。(要求输入和计算所有元素的和要有函数设计)
-----------------------------------------------------------------------*/
#include"stdio.h"
/*
    函数原型声明
*/
void go();                                        //总控制函数
void input_num(int arr[]);                        //输入接受函数
int sum_num(int arr[]);                           //求和函数
void output_num(int arr[]);                       //输出显示函数
/*
    @定位:主函数main()
*/
int main()
{
    go();                                         //总运行
    return 0;
}
/*
    @定位:子函数go()
    @功能:控制总运行
    @返回值:无
    @形参:无
*/
void go()
{
    int arr[10]={0};
    input_num(arr);
   // sum_num(arr);       //已经在 输出函数中 调用了。//已注释掉
    output_num(arr);
}
/*
    @定位:子函数input_num()
    @功能:键盘输入,循环接受数据
    @返回值:无
    @形参:数组地址
*/
void input_num(int arr[])
{
    int i=0;    
    printf("请输入10个整数,用于组成一个数组:\n");
    for(i=0;i<10;i++)
    {
        printf("请输入第%d个数:",i+1);
        scanf("%d",&arr[i]);
        printf("\n");
    }
 
}
/*
    @定位:子函数sun_num()
    @功能:计算数组中元素之和
    @返回值:sum,元素之和
    @形参:数组地址
*/
int sum_num(int arr[])
{
   int i=0,sum=0;
   for(i=0;i<10;i++)
   {
       sum+=arr[i];
   }
   return sum;
}
/*
   @定位:子函数output_num()
   @功能:输出数组元素和和
   @返回值:无
   @形参:数组地址
*/
void output_num(int arr[])
{
    int i=10;
    for(i=0;i<10;i++)
    {
        printf("%d\t",arr[i]);
    }
    printf("\n数组中元素之和为:%d\n",sum_num(arr));    
}

运行结果:

[root@localhost Kshine]# gcc test15.c -o test 
[root@localhost Kshine]# ./test
请输入10个整数,用于组成一个数组:
请输入第1个数:23

请输入第2个数:3

请输入第3个数:13

请输入第4个数:21

请输入第5个数:12

请输入第6个数:56

请输入第7个数:45

请输入第8个数:2

请输入第9个数:3

请输入第10个数:1

23      3       13      21      12      56      45      2       3       1
数组中元素之和为:179

猜你喜欢

转载自blog.csdn.net/Kshine2017/article/details/85048080