9.1日学习,以及作业

一、冒泡排序

原理:一 一比较,然后一 一排序

步骤较多

用于:升序,降序

未见新的程序,在之前数组、for循环,if判断,的基础上加入三杯水交换变量。

终端输入五个数,存入数组arr中,进行降序排列。

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{    
    int arr[5] = {90,21,132,6,34};
    int i,j;
    int temp=0;//定义中间变量,用于三杯水交换

    for(i=1;i<5;i++)//循环外层的躺数
    {
        for(j =0;j<5-i;j++)//循环次数
        {
            if(arr[j]>arr[j+1])//判断相邻两项大小
            {
                //交换数据
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }

    //循环打印数据验证
    for(i=0;i<5;i++)
    {
        printf("%d\t",arr[i]);
    }
    printf("\n");
    return 0;
}

二,一维字符数组(字符串)

1、字符串常量赋值给一维字符数组,字符串

char arr[] ={'a','b','c','d'};//一维字符数组

char brr[] = "hellowolrd"; //字符串最后会自动补一个'\0'。代表字符串的结束的标志

2、字符串的输入与输出

新学的程序gets()puts()       (无越界保护)

之前学习的

getchar() 单个字符的输入

putchar() 单个字符的输出

scanf() 格式化输入(char、int、float) 不能输入空格,遇到空格,直接截断,只显示空格之前 printf() 格式化输出

格式gets(数组名);

gets(arr);

练习:

.终端输入若干字符存入数组中,以回车作为结束的标志,求数组逆置后的结果 示例: "abcde" "edcba" 变量的交换。

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    char arr[30]="";
    int len=0;
    gets(arr);
    char b[30]="";
    char temp;
    int i;
    for(i=0;arr[i] != '\0';i++)//求长度的
    {
        len++;
    }
    for(i=0;i<len/2;i++)//循环交换的次数
    {
        temp = arr[i];
        arr[i] = arr[len-1-i];
        arr[len-1-i] = temp;
    }

    puts(arr);


    return 0;
}

三、函数族(新程序)

1.strlen() 功能: 求实际长度(不带'\0')         替换sizeof(brr)/sizeof(char))

原型:size_t strlen(const char *s);

参数1:当前可以理解为是数组,其实是指针(地址)

2.strcat 功能:字符串拼接(替代了之前利用变量变化的拼接)

原型:char *strcat(char *dest, const char *src);

参数: char *dest 目标字符串的地址 ,目前理解为数组的首地址

char *src 源字符串的地址 ,目前理解为数组的首地址 返回值:

char *; 目前理解为数组的dest的首地址

作业

1、1. 在终端输入一个字符串,然后再输入一个字符a,计算这个字符串 中a有几个。

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{//输入一串字符,再输入一个a,查找字符串中有几个a
	char let;
	char arr[30]="";
	int num=0,i;
printf("请输入字符串");
	gets(arr);//输入字符串
	printf("请输入字符a");
    scanf("%s",&let);//输入a
	for(i=0;arr[i]!='\0';i++)//一个一个查找数组里的字符
	{
	  if(arr[i]==let)
	  {
	  num++;
	  }
	}
	printf("个数为%d\n",num);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值