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;

}

苹果系统编写....

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容