字符串相关习题

字符串选择输出。从键盘输入一个字符串,再输入两个正整数m和n,输出字符串中从m开始,连续n个字符。
例如:
第一行输入:abcdefg
第二行输入:2 3
输出:bcd

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<string.h>
int main()
{
	char a[100] = { 0 };
    int i = 0;
    printf("请输入字符串");
    scanf("%s", &a);//或者scanf("%s",a);
    int m=0,n=0;
    scanf("%d%d", &m, &n);//标志开始和结束
    for (i = m-1; i < m + n-1; i++) //从0开始要减一
    {
        printf("%c", a[i]);
    }
    printf("\n");
    return 0;
}

输入字符串方法

一种  常用

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<string>
int main()
{
	char a[10];
	scanf("%s", &a);
	printf("%s", a);
	return 0;
}

 scanf(); 从键盘输入数据时,遇到 “空格”“回车” 都会终止。若要接受空格,使用 gets(); 代替 scanf(); 

第二种  清里缓冲区

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
int main()
{
	char ch2[20];//字符数组
	scanf("%s", ch2);
	printf("%s\n", ch2);
	fflush(stdin);//用完 scanf 后,清除缓冲区
}

 第三种

用#include<string.h>

char buffer1[20];定义字符数组
	char *ch3;//定义字符指针
	gets(buffer1);//输入字符串
	ch3=buffer1;//中间变量
	puts(ch3);//输出字符串
 

由于指针未初始化,必须有中间变量

去重与排序。输入n(n≤1000)个随机整数,对于其中重复的数字,/只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,并输出结果
具体思路:先排序再去重,然后往前进一格

第一种 

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
int main()
{
	int n = 0;//用户输入数据
	int i = 0;//i,j循环变量
	int j = 0;
	int t = 0;//排序时的中间变量
	int a[100] = { 0 };//保存输入数字
	printf("enter n:");
	scanf("%d", &n);
	printf("enter n numbers:");
//输入
	for (i = 0; i < n; i++)//下标从0开始
	{
		scanf("%d", &a[i]);
	}
//排序,大在后
	for (i = 1; i < n; i++)//排序,冒泡法
	{
		for (j = 0; j < n - i; j++)
		{
			if (a[j] > a[j + 1])
			{
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
		}
	}

///重点!去重,卡了
	for (i = 0; i < n; i++)
	{
		if (a[i] == a[i + 1])//去重(前一个和后一个等即可)
		{
			a[i + 1] = 0;//令后一个为0
			n--;//向前缩进
			for (j = i + 1; j < n + 1; j++)//后面的往前进一格
			{
				a[j] = a[j + 1];
			}
		}
	}
//输出
	for (i = 0; i < n; i++)//输出
	{
		printf("%2d", a[i]);
	}
}

第二种 

字符串倒序输出

int i = 0;//i相当于计数
while (i >= 0)
{
	if (arr[i] != '\0')
	{
		i++;//如果输入时i==0,那输出时便是i==1
	}
	else
	{
		break;
	}
}

倒叙后

printf("倒序后:");
for (int j = i; j >= 0; j--)
{
	printf("%c", arr[j]);
}
return 0;

整个

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<string>
int main()
{
	char a[100];
	printf("请输入一串字符串:");
    scanf("%s",&a);
    printf("%s",a);
    int i = 0;//i相当于计数
	while (i >= 0)
	{
		if (arr[i] != '\0')
		{
			i++;//如果输入时i==0,那输出时便是i==1
		}
		else
		{
			break;
		}
	}
	printf("倒序后:");
	for (int j = i; j >= 0; j--)
	{
		printf("%c", arr[j]);
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值