2019-08-16

1、定义一个函数,任意传递三个整数类型的值,返回这三个值的和、差、平均值。

int

  demo(int v1, int v2, int v3, int *p1, int *p2);

int

  main(int argc, const char * argv[]) {

    //要求定义一个函数, 传递三个值, 返回这三个值得和,差,平局值

    int a = 10;

    int b = 20;

    int c = 30;

//    int res = 

  demo(a , b , c);

//    printf("res = %i\n", res);


    //定义三个变量用于保存计算结果

    int res1 = 0; //和

    int res2 = 0; //差

//    int res3 = 0; //平局值


    // *p1 == res1 *p2 == res2

    //我们想要的就是调用完函数之后, 和差平均值对应的变量都被"修改"为对应的值

   int res3 = demo(a, b, c, &res1,  &res2);


    printf("和 = %i, 差 = %i, 平均值 = %i\n", res1, res2,

  res3);


    return 0;

}


int

  demo(int v1, int v2, int v3, int *p1, int *p2)

{

    int sum = v1 + v2 + v3;

    *p1 = sum;

    int m = v1 - v2 - v3;

    *p2 = m;

    int average = sum / 3;


    return average;


    /*

    //因为返回的是一个逗号表达式, 而逗号表达式的值是最后一个表达式的值, 所有返回的是average

//    return sum, m, average;

    */


    /*

    // return连个作用 1.返回值给调用者  2.结束函数

    //注意点: return后面不可以写任何语句, 因为执行不到

    return sum;

    printf("--------------\n");

    return m;

    return average;

     */

}




[if !supportLists]1、     [endif]编写一个函数char_contains(char str[],char key), 如果字符串str中包含字符key则返回数值1,否则返回数值0。

#include

  <stdio.h>

#include

  <math.h>

int

  char_contains(char str[], int length,char key);

int

  char_contains2(char str[],char key);


int

  main(int argc, const char * argv[]) {

    //编写一个函数char_contains(char str[],char

  key), 如果字符串str中包含字符key则返回数值1,否则返回数值0

    //给你一个字符串和一个key, 要求从字符串中找出key, 如果找到就返回1没有找到就返回0

    char str[] = "xiaomage";

    char key = 'z';

    int length = sizeof(str) /  sizeof(str[0]);

   int res = char_contains(str, length, key);

//    int res = char_contains2(str, key);

    printf("res = %i\n", res);



    return 0;

}

int

  char_contains2(char str[],char key)

{

    /*

     xiaomage 

  a

     x != a 

  x != \0

     i != a 

  i != \0

     a != a


     xia 

  z

     x != z x != \0

     i != z i != \0

     a != z a != \0

     \0 != z \0!=\0

     */

    /*

     // 1.定义一个变量记录当前的索引

     //   

  int index = 0;

     // 2.遍历数组, 取出当前的字符判断是否不等于key, 并且当前出去的字符不是\0


    while (str[index] != key &&  str[index] != '\0') {

        index++;

    }

     */

    int index = -1;

    while (str[++index] != key &&  str[index] != '\0');


    //          a != '\0'

    //          \0 != \0

//    int res = str[index] != '\0' ? 1 : 0;

//    return 

  res;

    return str[index] != '\0' ? 1 : 0;

}


int

  char_contains(char str[], int length,char key)

{

    for (int i = 0; i < length; i++) {

        if (str[i] == key) {

            return 1;

        }

    }

    return 0;


}


[if !supportLists]2、     [endif]编程实现从键盘输入3个0~9的数字,然后输出0~9中哪些数字没有出现过。

#include <stdio.h>


int main(int argc, const char *

  argv[]) {


  //从键盘输入3个0~9的数字,然后输出0~9中哪些数字没有出现过


  //从键盘输入100个0~2000的数字,然后输出0~2000中哪些数字没有出现过


  /*


  输入: 1, 3 ,5


  输出: 0, 2, 4, , 6, 7, 8, 9


  */


  /*


  // 1.接收用户输入的数据


  int num1, num2, num3;


  printf("输入三个整数, 用逗号隔开\n");


  scanf("%i,%i,%i", &num1, &num2, &num3);




  // 2.遍历打印0~9


  for (int i = 0; i <= 9; i++) {

        // 3.判断当前打印的值是否是用户输入的值, 如果是就不打印

        if (num1 != i &&

            num2 != i &&

            num3 != i) {


            printf("%i\n", i);

        }


  }


  */




  //空间换时间


  // 1.定义数组保存所有用户输入的数


  int nums[10] = {0};


  // 2.接收用户输入的数据


  int value = -1;


  for (int i = 0; i < 3; i++) {

        printf("请输入%i个整数\n", i+1);

        scanf("%i", &value);

        nums[value] = 1;


  }




  for (int i = 0; i < 10; i++) {

//        printf("nums[%i] = %i\n", i  , nums[i]);

        if (nums[i] != 1) {

            printf("%i\n", i);

        }


  }




  return 0;

}


[if !supportLists]3、     [endif]已知一个无序的数组, 里面有5个元素, 要求写一个函数对数组进行排序int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};

#include <stdio.h>


void selectSort(int nums[], int

  length);

void printArray(int nums[], int

  length);

//void swap(int v1, int v2);

void swap(int nums[], int i, int j);

void bubbleSort(int nums[], int

  length);


int main(int argc, const char *

  argv[])

{


  //已知一个无序的数组, 里面有5个元素, 要求对数组进行排序


  int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};


  int length = sizeof(nums) / sizeof(nums[0]);




  printArray(nums, length);

//   

  selectSort(nums, length);


  bubbleSort(nums, length);




  printf("----------------\n");


  printArray(nums, length);



  return 0;

}


// 遍历数组

void printArray(int nums[], int

  length)

{


  for (int i = 0; i < length; i++) {

        printf("nums[%i] = %i\n",  i, nums[i]);


  }

}


void bubbleSort(int nums[], int

  length)

{


  for (int i = 0; i < length - 1; i++) {

        for (int j = 0; j < length - 1 -  i; j++) {

            if (nums[j] > nums[j + 1]) {

                swap(nums, j, j+1);

            }

        }


  }

}


// 选择排序

void selectSort(int nums[], int

  length)

{


  for (int i = 0; i < length - 1; i++) {

        for (int j = i+1; j < length; j++)  {

            if (nums[i] > nums[j]) {

                /*

                int temp = nums[i];

                nums[i] = nums[j];

                nums[j] = temp;

                 */

//                swap(nums[i], nums[j]);

                swap(nums, i, j);

            }

        }


  }


}


// 基本数据类型作为函数的参数, 是值传递, 在函数中修改形参不会影响实参的值

/*

void swap(int v1, int v2)

{


  int temp = v1;


  v1 = v2;


  v2 = temp;

}

 */

// 交换两个数的值

void swap(int nums[], int i, int j)

{


  int temp = nums[i];


  nums[i] = nums[j];


  nums[j] = temp;

}


[if !supportLists]4、     [endif]写一个函数,对传递任意两个整型类型的数据进行值的交换。

书上有


[if !supportLists]5、     [endif]构造一个函数,任意输入一个字符串,判断字符串里面每个字符出现的次数。

#include <stdio.h>

#include <string.h>

int main(int argc, const char *

  argv[]) {




  int count[128] = {0};


  char string[200];


  int i;


  printf("请输入一串字符串:");


  //scanf("%s",string);


  gets(string);//这个函数有安全隐患warning: this program uses //gets(),

  which is unsafe.


  for (i = 0; string[i] != '\0'; i++) {

        count[string[i]]++;


  }


  for (i = 0; i < 128; i++) {

        if (count[i] != 0) {

            printf("字符%c出现的次数:%d\n",i,count[i]);

        }


  }


  return 0;

}



[if !supportLists]6、     [endif]编写一个函数,求1+2!+3!+...+20!的和并返回输出。

#include <stdio.h>

#include <string.h>

int main(int argc, const char * argv[]) {


    float  n,s=0,t=1;


  for(n=1;n<=20;n++)

    {


  t*=n;


  s+=t;

    }


  printf("1+2!+3!...+20!=%e\n",s);

    return  0;

}


[if !supportLists]7、     [endif]编写一个函数有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

#include <stdio.h>

#include <string.h>

int age(int n){


  //逆向思维,递归函数


  int c;


  if(n==1) c=10;


  else c=age(n-1)+2;


  return c;

}

int main(int argc, const char *

  argv[]) {




  printf("第五个人的年龄是:%d岁\n",age(5));


  return 0;

}



[if !supportLists]8、     [endif]有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

#include <stdio.h>

#define nmax 50

int main(int argc, const char *

  argv[]) {




  int i,k,m,n,num[nmax],*p;


  printf("请输入游戏共计多少成员:");


  scanf("%d",&n);


  p=num;


  for(i=0;i

        *(p+i)=i+1;


  i=0;


  k=0;


  m=0;


  while(m

        if(*(p+i)!=0) k++;

        if(k==3){

            *(p+i)=0;

            k=0;

            m++;

        }

        i++;

        if(i==n) i=0;


  }


  while(*p==0) p++;


  printf("最后剩下的是%d号位\n",*p);


  return 0;

}


[if !supportLists]9、     [endif]写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。(不准使用系统的strlen函数)。

#include <stdio.h>

int strLenth(char *p)

{


  int n;


  n=0;


  while(*p!='\0')


  {

        n++;

        p++;


  }


  return n;

}

int main(int argc, const char *

  argv[]) {




  int len;


  char str[20];


  printf("请输入字符串\n");


  scanf("%s",str);


  len=strLenth(str);


  printf("你输入的字符串长度为 %d",len);


  return 0;

}


[if !supportLists]10、  [endif]计算字符串中子串出现的次数。

#include <stdio.h>

int main(int argc, const char *

  argv[]) {


  char str1[20],str2[20],*p1,*p2;


  int sum=0;


  printf("请输入两个字符串:");


  scanf("%s%s",str1,str2);


  p1=str1;p2=str2;


  while(*p1!='\0')


  {

        if(*p1 == *p2){

            while(*p1 == *p2 && *p2  != '\0'){

                p1++;

                p2++;

            }

        }

        else

            p1++;

        if(*p2=='\0')

            sum++;

        p2=str2;


  }


  printf("s2在s1中一共出现了%d次",sum);


  return 0;

}

苹果系统编写....

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容