字符串选择输出。从键盘输入一个字符串,再输入两个正整数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;
}