0102|c基础day6作业

一、思维导图

1、字符串函数

2、二维字符数组

二、作业

1、实现字符串逆置

例如:char a[]=”hello my student”
输出:student my hello
#include <stdio.h>#include <string.h>intmain(int argc, constchar *argv[])
{
	//实现单词的逆置
	char a[]="hello my student";
	int i=0,k;
	char temp,t;
	//先把整体逆置
	int j=strlen(a)-1;
	while(i<j)
	{
		t=a[i];a[i]=a[j];a[j]=t;
		i++;j--;
	}
	puts(a);  //输出查看整体逆置效果
	printf("\n");
	//单个单词逆置
	i=0;j=0;
	while(a[i]!='\0')
	{
		//确定单词的结束符号“空格”或者字符串结束符“\0”    j的位置
		while(a[j]!=' '&&a[j]!='\0')
		{
			j++;  //j代表‘ ’或者‘\0’
		}
		k=j-1;    //k代表单词的最后一个字母
		//实现单词的交换
		while(i<k) //当i小于k时,实现单词交换
		{
			temp=a[i];a[i]=a[k];a[k]=temp;
			i++;k--;
		}
		//把j移动到下一个单词的第一个字母下标
		while(a[j]==' ')
		{
			j++;
		}
		i=j;
	}
	puts(a);
	return0;
}

2、使用非函数方法实现字符串比较

#include <stdio.h>intmain(int argc, constchar *argv[])
{
	//使用非函数方法实现字符串比较
	char a[10]="",b[10]="";
	printf("请输入两个字符串:");
	scanf("%s%s",a,b);
	//char a[10]="asdtia",b[10]="asbb";
	int i=0,j=0;
	int cha;
	while(a[i]==b[j])
	{
		if(a[i]=='\0'&&b[j]=='\0')
		{
			cha=a[i]-b[j];
			break;
		}
		else
		{
			i++;j++;
		}

	}
	cha=a[i]-b[j];
	if(cha==0)
		printf("a=b\n");
	else if(cha>0)
		printf("a>b\n");
	else
		printf("a<0\n");
	return0;
}

3、使用非函数方法实现字符串连接

#include <stdio.h>#include <string.h>intmain(int argc, constchar *argv[])
{
	//使用非函数链接两个字符串
	char a[30]="",b[30]="";
	printf("请输入两个字符串:");
	scanf("%s%s",a,b);
	int i=strlen(a);
	for(int j=0;b[j]!='\0';j++)
	{
		a[i++]=b[j];
	}
	a[i]='\0';
	puts(a);
	return0;
}

4、打印m行n列的杨辉三角

#include <stdio.h>intmain(int argc, constchar *argv[])
{
	//打印m行n列的杨辉三角
	int a[20][20]={0};
	int i,j,m,n;
	printf("请输入杨辉三角的行数和列数:");
	scanf("%d%d",&m,&n);
		for(i=0;i<m;i++)//控制行数
		{
			for(j=0;j<=n-i;j++)//控制列数
			{
				printf("  ");
			}
			for(j=0;j<=i;j++)
			{
				if(j==0||i==j)
					a[i][j]=1;
				else
					a[i][j]=a[i-1][j-1]+a[i-1][j];
				printf("%4d",a[i][j]);
			}
			printf("\n");
			}
	return0;
}

三、今日课程练习代码

1、利用strcmp对字符串比较

1.1定义3个字符串,计算最大值[两个参数都为变量]

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    //定义3个字符串,计算最大值[两个参数都为变量]
    char a[]="asd";
    char b[]="baad";
    char c[]="sgw";
    if(strcmp(a,b)>0&&strcmp(a,c)>0)
        printf("最大值为%s\n",a);
    if(strcmp(b,a)>0&&strcmp(b,c)>0)
        printf("最大值为%s\n",b);
    if(strcmp(c,a)>0&&strcmp(c,b)>0)
        printf("最大值为%s\n",c);
    
    return 0;
}

1.2输入一个字符串,[和常量进行比较]

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    //输入一个字符串,[和常量进行比较]
    char a[50]="";
    int i=0;
    printf("请输入一个字符串:");
    scanf("%s",a);
    if(strcmp(a,"ilovechina")==0)
        printf("你是一个爱国的中国人\n");
    else if(strcmp(a,"ilikechina")==0)
        printf("你是一个优秀的中国人\n");    
    else if(strcmp(a,"ihatechina")==0) 
        printf("你是一个不友好的中国人\n"); 
    esle
        printf("无效字符\n");

    return 0;
}

2、利用strcpy实现两个字符串交换

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    //实现两个字符串交换
    char a[20]="asdv",b[20]="fairjw",t[10]="";
    strcpy(t,a);strcpy(a,b);strcpy(b,t);
    printf("%s\n%s\n",a,b)    ;
    return 0;
}

3、利用二维数组存储班级5个人的姓名(冒泡排序)

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    //利用二维数组存储班级5个人的姓名(冒泡排序)
    int i,j,count;
    char a[5][10],t[50]="";
    for(i=0;i<5;i++)
    {
        printf("请输%d个人的名字:",i);
        scanf("%s",a[i]);
    }
    for(i=1;i<5;i++) //循环轮数
    {
        count=0; //计算每一轮比较的次数,每一轮的次数清0
        for(j=0;j<5-i;j++)//每一轮比较的次数
        {
            if(strcmp(a[j],a[j+1])<0)
            {
                strcpy(t,a[j]);
                strcpy(a[j],a[j+1]);
                strcpy(a[j+1],t);
                count++;
            }
        }
        if(count==0)//每一轮比较的次数为0,该顺序已经有序
            break;
    }

    for(i=0;i<5;i++)
        printf("%s\n",a[i]);
    return 0;
}

4、计算二维字符数组的最大字符串

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    //计算二维字符数组的最大字符串
    int i,j;
    char a[2][3],max[20]="";
    for(i=0;i<5;i++)
    {
        scanf("%s",a[i]);
    }
    for(i=0;i<5;i++)
    {
        if(i==0)
            strcpy(max,a[i]);
        for(j=0;j<5-i;i++)
        {
            if(strcmp(max,a[i])<0)
            strcpy(max,a[i]);
        }
    }
    printf("最大值是:%s\n",max);
    return 0;
}

5、计算二维字符数组的最长字符串

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    //计算二维字符数组的最长字符串
    char a[3][20]={"dfsagdhf","rwtey","rtyu"};
    int i;
    char max[20]=""; //解决乱码
    for(i=0;i<3;i++)
    {
        if(i==0) //第一次循环
            strcpy(max,a[i]);
        if(strlen(max)<strlen(a[i]))//if(max<a[i])
        {    
            strcpy(max,a[i]);
        }
    }
    printf("最长值是:%s 长度是:%ld\n",max,strlen(max));

    return 0;
}

6、将3行5列的二维数组中的字符数据,按列的顺序依次放到一个字符串中

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    //将3行5列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
    char a[3][5]={"asdf","wert","tyui"};
    char b[50]="";
    int i,j,k=0;
    for(j=0;j<5;j++)
    {
        for(i=0;i<3;i++)
        {
            if(a[i][j]!='\0')
                b[k++]=a[i][j];
        }
    }
    puts(b);
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值