第4关:把它“脱”出去
本关需要完成将字符串中某字符全部删去的小程序。
编程要求
要求编写程序将字符串中的指定字符删去。
测试输入: I am happy
a
预期输出:I m hppy
#include<stdio.h>
#include <string.h>
void string(char a[],char ch);//函数声明
void string(char a[],char ch)
{
for(int i=0;a[i]!='\0';i++){
if(a[i]==ch){
for(int j=i;j<strlen(a);j++)
a[j]=a[j+1];
}
}
puts(a);
}
int main()
{
char s[100];
char x;
fgets(s,sizeof(s),stdin);
scanf("%c",&x);
string(s,x);
}
第3关:接龙也可以这么玩
本关要求:如果两个字符串不相等,将短的字符串连接到长的字符串的末尾并输出新字符串,否则输出“相等”。
#include<stdio.h>
#include<string.h>
int main()
{
char s1[100];
char s2[100];
int x,y;
scanf("%s %s",s1,s2);
x=strlen(s1);
y=strlen(s2);
if(x!=y){
if(x>y)
printf("%s",strcat(s1,s2));
else{
printf("%s",strcat(s2,s1));
}
}else
printf("相等");
}
第2关:远亲不如近邻
本关要求:将任意一个大写字母,转换成小写字母并输出这个小写字母左右相邻的两个字母,以及它们的ASCII
码值。
#include<stdio.h>
int main()
{
char x,y;
scanf("%c",&x);
if(x>'A'&&x<'Z'){
y=x+32;
printf("小写字母为:%c ,ASCII码为:%d\n",y,y);
printf("前一个小写字母为:%c ,ASCII码为:%d\n",y-1,y-1);
printf("后一个小写字母为:%c ,ASCII码为:%d\n",y+1,y+1);
}else if(x=='A'){
y=x+32;
printf("小写字母为:%c ,ASCII码为:%d\n",y,y);
printf("后一个小写字母为:%c ,ASCII码为:%d\n",y+1,y+1);
}else{
y=x+32;
printf("小写字母为:%c ,ASCII码为:%d\n",y,y);
printf("前一个小写字母为:%c ,ASCII码为:%d\n",y-1,y-1);
}
}
第1关:变身
将字符串s
转化为整型返回。
输入格式:输入包括一行,是一个字符串(只包含数字和‘-’)。
输出格式:输出只有一行,转换后的整数。
测试说明:
测试输入: -123
。 预期输出: -123
。
测试输入: 45
。 预期输出: 45
。
#include <stdio.h>
#include <stdlib.h>
/*int atoi(char s[])
{
int num = 0;
int sign = 1;
int i = 0;
if(s[i] == '-')
{
sign = -1;
i++;
}
for (;s[i] != '\0';i++)
{
num = num *10 + (int)(s[i] - '0');
}
num *= sign;
return num ;
}*/
int main ()
{
char a[100];
fgets(a,sizeof(a),stdin);
int b;
b = atoi(a);
printf("%d",b);
}
第5关:Y大还是y小
编写一个能实现两个字符串相互比较的小程序。
相关知识
strcmp函数
一般形式为strcmp(字符串1,字符串2)
。
比较规则:
对两个字符串自左至右逐个字符相比(按ASCII
码值大小比较),直到出现不同的字符或遇到‘0’
为止。如果全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。
当s1<s2
时,返回为负数; 当s1==s2
时,返回值=0; 当s1>s2
时,返回正数。
自定义一个strcmp
函数实现两个字符串比较,函数原型为int strcmp(char * p1, char *p2)
。
平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。
测试输入:hello
hair
。
预期输出:hello>hair
。
测试输入:egg
egg
。
预期输出:egg=egg
。
#include<stdio.h>
#include<stdlib.h>
int strcmp(char *p1,char *p2);
int main()
{
char s1[100];
char s2[100];
scanf("%s",s1);
scanf("%s",s2);
//fgets(s1,sizeof(s1),stdin);
//fgets(s2,sizeof(s2),stdin);
if(strcmp(s1,s2)>0){
printf("%s>%s",s1,s2);
}else if(strcmp(s1,s2)<0){
printf("%s<%s",s1,s2);
}else{
printf("%s=%s",s1,s2);
}
}
int strcmp(char *p1,char *p2)
{
int i=0,j=0;
while(p1[i]==p2[i]&&p1[i]!='\0'&&p2[i]!='\0'){
i++;
}
if(p1[i]>p2[i])
return 1;
else if(p1[i]<p2[i])
return -1;
else if(p1[i]=p2[i]){
//printf("%c\n",p1[i+1]);
//printf("%c",p2[i+1]);
if(p1[i+1]!='\0'&&p2[i+1]=='\0'){
return 1;
}else if(p1[i+1]=='\0'&&p2[i+1]!='\0'){
return -1;
}
return 0;
}
}
如果文章对你有帮助的话,可不可以点个赞鼓励以下我!! ^o^ 谢谢了!!!