1.从给定字符串中查找某指定的字符
输入样例1:
m
programming
输出样例1:
index = 7
scanf("%c",&c);
getchar(); //吃掉一个空格,否则会被认为是字符串中的内容
gets(b); //受到gets输入的影响,字符串都以\0作为结尾
for(int i=0;b[i]!='\0';i++) //所以这里就从0开始,一直执行到等于\0时才结束
if(b[i]==c) //当出现一次待查询字符时,就标记一次,一直到循环结束为止
index=i;
2.输入一个字符串,对该字符串进行逆序,输出逆序后的字符串
输入样例:
Hello World!
输出样例:
!dlroW olleH
#include <stdio.h>
#include <string.h>
int main()
{
int a; char b[100];
gets(b);
for (int i = strlen(b) - 1; i >= 0; i--)
printf("%c", b[i]);
return 0;
}
3.字符串替换
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:
原字母 | 对应字母 |
---|---|
A | Z |
B | Y |
C | X |
D | W |
… | … |
X | C |
Y | B |
Z | A |
#include<stdio.h>
#include<string.h>
int main(){
int l,i;
char s[85];
gets(s);
l=strlen(s);
for(i=0;i<l;i++)
if(s[i]>='A'&&s[i]<='Z')
s[i]='A'+'Z'-s[i];
puts(s);
return 0;
}
4.字符串大小写转换
strupr(a)
将字符串中的小写字母转换成大写字母
strlwr(a)
将字符串中的大写字母转换成小写字母
#include<stdio.h>
#include<string.h>
void main()
{
char a[] = "aBcD", b[] = "aBcD";
printf("%s\n%s", strlwr(a), strupr(b));
}//abcd ABCD
5.找最长的字符串之strcpy
字符串复制函数 strcpy(),strcpy 是 string copy 的缩写
strcpy(a,b)相当于a=b,将字符串b赋给a
需要头文件string.h的支持
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
char a[100],b[100]; //a→拿来输入的,b→拿来得到最长的字符串
scanf("%d",&n);
getchar(); //吃掉空格or'\n'
for(i=0;i<n;i++){
gets(a);
if(i==0)
strcpy(b,a); //第一此需复制,防止第一个就是最长的情况
if(strlen(b)<strlen(a)) //若新来的比原来的还要长,那么就复制新来的来覆盖掉原来的
strcpy(b,a);
}
printf("The longest is: ");
puts(b);
return 0;
}
6.按照字符ASCII码顺序从小到大排序后输出
输入样例:
dionfefh238hfifme,eekksj
输出样例:
,238deeeeffffhhiijkkmnos
#include<stdio.h>
#include<string.h>
int main()
{
char a[85];
gets(a);
int i = 0;
int len = 0;
len = strlen(a);
int j = 0;
char t; //开启冒泡排序
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - i - 1; j++)
{
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
for (i = 0; i < len; i++)
{
printf("%c", a[i]);
}//此段为重点
}
7.倒序输入单词
输入样例:
Hello World Here I Come
结尾无空行
输出样例:
Come I Here World Hello
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[500001];
int i = 0;
int j = 0;
int k = 0;
int rear = 0;
int front = 0;
int count = 0;
int len = 0;
gets(str);
len = strlen(str);
for (i = len - 1; i >= 0; i--)//逆向遍历 //再来一遍后i--,i位于单词最后一个字母
{
if (str[i] != ' ')
{
rear = i;//指向当前单词的最后一个字母
for (j = i - 1; j >= 0; j--)
{
if (str[j] == ' ')//计算单词长度
{
break;
}
}
front = j + 1;//指向当前单词的第一个字母
if (count > 0)
{
printf(" ");
}
for (k = front; k <= rear; k++)//从单词第一个字母开始打印
{
printf("%c", str[k]);
}
count++;
i = j;//再来一遍,j位于两个单词之间的空格
}
}
return 0;
}
8.中心对称的字符串
for (i = 0; i < (n / 2); i++)
{
if (a[i] == a[n - 1 - i]) //核心操作
}
输入说明:
每组数据有2行:第一行为整数n,表示字符的个数,n小于100;第二行为n个字符组成的字符串。
输出说明:
判断这个字符串是否是中心对称的,是输出“YES”,不是输出“NO”。
输入样例:
12
ThanksThanks
输出样例:
NO
#include<stdio.h>
int main()
{
char a[100];
int i, n;
int key = 1;
scanf("%d", &n);
scanf("%s", a);
for (i = 0; i < (n / 2); i++)
{
if (a[i] != a[n - 1 - i])
{
printf("NO");
return 0;
}
}
printf("YES");
return 0;
}
冷知识:
输入abcd
char a[100];
scanf("%s", a); ---- a="abcd"
char a[100];
scanf("%s", &a); ----- a={'a','b','c','d','\0'}