谭浩强数组相关代码

简介: 谭浩强数组相关代码
#include <stdio.h>
int main()
{
  int arr[2][2] = { {1,2},{3,4} };//全体元素都赋值
  int i, j;
  for (i = 0; i < 2; i++)
  {
    for (j = 0; j < 2; j++)
    {
      if (j% 2 == 0)
        printf("\n");
      printf("%5d", arr[i][j]);
    }
  }
    return 0;
}
//转置数组的练习
int main()
{
  int arr1 [2] [3] = { {1,2,3},{4,5,6} };
  int arr2[3][2];
  int i, j;
  printf("arr1:\n");
  for (i = 0; i < 2; i++)
  {
    for (j = 0; j < 3; j++)
    {
      if (j % 3 == 0)
        printf("\n");
      printf("%7d", arr1[i][j]);
      arr2[j][i] = arr1[i][j];
    }
  }
  printf("\n");
  printf("arr2(转置后):\n");
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 2; j++)
    {
      if (j % 2 == 0)
        printf("\n");
      printf("%7d", arr2[i][j]);
    }
  }
  return 0;
}
//利用擂台算法来找出数组中最大值,并给出其row,column;
int main()
{
  int arr[4][5] = { {12,23,31,26,11},{10,11,56,67,79} ,{64,65,98,90,35 },{10,20,30,40,50} };
  int i, j,row,column;
  int max;
  max = arr[0][0];//定义一个最大值,并使数组第一个元素为擂主
  for (i = 0; i < 4; i++)
  {
    for (j = 0; j < 5; j++)
    {
      if (arr[i][j] > max)
      {
        max = arr[i][j];
        row = i;
        column = j;
      }
    }
  }
  printf("max=%d\nrow=%d\ncolumn=%d\n" ,max,row,column);
  return 0;
}
                                                   //练习使用字符数组
#include <stdio.h>
int main()
{
  char ch[3][3] = { {' ','*',' '},{'*',' ','*'},{' ','*',' '} };
  int i, j;
  for (i = 0; i < 3; i++)
  {
    for (j = 0; j < 3; j++)
    {
      printf("%c", ch[i][j]);
    }
    printf("\n");//循环一次,换行一次
  }
  return 0;
}
#include <stdio.h>
int main()
{
    printf("love\0you");//字符串的结束标志为\0,这个程序的只会输出love;对于一般情况下,系统会自动在字符串末尾添加\0,作为结束标志;
    return 0;
}
                                        //字符数组的输入与输出
#include <stdio.h>
#include <string.h>
int main()
{
    char ch[100];
    fgets(ch, 99, stdin);
    printf("%s", ch);
    return 0;
}
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
strcat(str1, str2);//表示将字符串2连接到字符串1;
char str1[] = "i and";
char str2 [] = "you";
printf("%s", strcat_s(str1, str2));
    return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
//实现0—9的逆序输出
#include <stdio.h>
int main()
{
  int arr[10];
  int i;
  for (i = 0; i <= 9; i++)//先把0-9这十个数字存到数组中;
  {
    arr[i] = i;
  }
  for (i = 9; i >= 0; i--)
  {
    printf("%d ", arr[i]);
  }
  return 0;
}
//解决数组中与斐波那契数列有关的问题
//输出数列中前25号元素,并每行5个数字打印出来
#include <stdio.h>
int main()
{
  int arr[25] = { 1,1 };//将前25号元素存到数组中
  int i;
  for (i = 2; i <= 24; i++)
  {
    arr[i] = arr[i - 1] + arr[i - 2];//利用数列性质
  }
  for (i = 0; i <= 24; i++)      //存储完毕,接下来按要求输出
  {
    if (i % 5 == 0)
      printf("\n");    //利用if语句实现换行printf("\n")系统会自动换行
    printf("%12d  ", arr[i]);
  }
  return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
//利用折半查找法判断用户输入的数字是否在数组1-10;
#include <stdio.h>
int main()
{
  int k = 10;
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  int left = 0;
  int right = sz - 1;
  while (left <= right)
  {
    int mid = (left + right) / 2;
    if (arr[mid] < k)
    {
      left = mid + 1;
    }
    else if (arr[mid] > k)
    {
      right = mid - 1;
    }
    else;
    {
      printf("查到了,下标为:%d\n", mid);
      break;
    }
  }
  if (left > right)
  {
    printf("查无此数");
  }
  return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
//练习使用冒泡排序法,输入10个整数,最终使其升序排序。
//冒泡排序法就是两两比较,将较大的数字通过比较移动到后面,实现升序处理;
#include <stdio.h>
int main()
{
  int arr[10];
  int i, j, t;
  printf("请输入十个数字:\n");
  for (i = 0; i <= 9; i++)
  {
    scanf("%d", &arr[i]);//将输入的十个数字存到数组中;
  }
  for (j = 0; j < 9; j++)//十个数字,第一趟需要比较九次,第二趟需要比较八次;以此类推
  {
    for (i = 0; i < 9 - j; i++)
    {
      if (arr[i] > arr[i + 1]) //接下来进行比较
      {
        t = arr[i + 1]; arr[i + 1] = arr[i]; arr[i] = t;
      }//交换前后两个数字顺序
    }
  }
  for (i = 0; i < 10; i++)
  {
    printf("%d ", arr[i]);
  }
  printf("\n");//一定要注意循环{}的对应
  return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
//利用折半查找法判断用户输入的数字是否在数组1-10;
#include <stdio.h>
int main()
{
  int k;
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  printf("请输入一个数字: ");
  scanf("%d", &k);
  int left = 0;
  int right = sz - 1;
  while (left <= right)
  {
    int mid = (left + right) / 2;
    if (arr[mid] < k)
    {
      left = mid + 1;
    }
    else if (arr[mid] > k)
    {
      right = mid - 1;
    }
    else
    {
      printf("查到了,下标为:%d\n", mid);
      break;
    }
  }
  if (left > right)
  {
    printf("查无此数");
  }
  return 0;
}


目录
相关文章
|
8天前
|
存储 编译器 程序员
C语言数组yyds
C语言数组yyds
|
7月前
|
存储 C语言
C语言进阶教程(再论指针和数组 (1))
C语言进阶教程(再论指针和数组 (1))
61 2
|
8天前
|
存储 人工智能 程序员
爱上C语言:超详细讲解数组,学数组看这一篇就够了(数组篇)
爱上C语言:超详细讲解数组,学数组看这一篇就够了(数组篇)
|
8天前
|
C语言
C语言进阶教程(再论指针和数组3)
C语言进阶教程(再论指针和数组3)
25 1
|
9月前
|
C语言
c语言学习第二十一课-指针和数组笔试题解析
c语言学习第二十一课-指针和数组笔试题解析
62 0
|
11月前
|
存储 小程序 编译器
C语言学习分享(第六次)------数组
C语言学习分享(第六次)------数组
|
11月前
|
C语言
C语言程序设计(王立柱)第九章答案 二维数组和指针
只有聪明人才能看见的摘要~( ̄▽ ̄~)~
55 0
|
12月前
|
存储 人工智能 程序员
C语言编程—数组
C语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、...、runoob99,而是声明一个数组变量,比如 runoob,然后使用 runoob[0]、runoob[1]、...、runoob[99] 来代表一个个单独的变量。 所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
173 0
|
存储 C语言
初阶C语言 第三章-------《数组》(一维数组,二维数组,数组越界.....) 知识点+思维导图+基本练习题+超详细+通俗易懂(建议收藏)
初阶C语言 第三章-------《数组》(一维数组,二维数组,数组越界.....) 知识点+思维导图+基本练习题+超详细+通俗易懂(建议收藏)
|
C语言
C语言白话之数组
大家好这里是三岁,C语言是各类语言的基础,由于个人学习需要特别开设了C语言基础专题,内容不一定深入,都是基础知识,还是白话C语言,最简单的方式带领大家学习不是那么容易理解的C语言!
100 0
C语言白话之数组