7-1 统计字符出现次数 分数 13
本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。
输入格式:
输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。
输出格式:
在一行中输出给定字符在给定字符串中出现的次数。
输入样例:
programming is More fun!
m
输出样例:
2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
#include<string.h>
int main(){
char ch;
char A[81];
int i, j;
fgets(A, 80, stdin);
scanf("%c", &ch);
for(i=j=0;i<strlen(A);i++)
if(A[i]==ch)
j++;
printf("%d", j);
return 0;
}
7-2 字符串逆序 分数 10
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
输入格式:
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
输出格式:
在一行中输出逆序后的字符串。
输入样例:
Hello World!
输出样例:
!dlroW olleH
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main(){
char A[81];
int i;
gets(A);
for(i=strlen(A)-1;i>=0;i--)
putchar(A[i]);
return 0;
}
7-3 删除重复字符 分数 13
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
#include<string.h>
int main(){
char ch, t;
char A[81];
int i, j, s, r;
gets(A);
for(i=0,s=strlen(A);i<s;i++)//删除重复字符
for(j=i+1;j<s;j++)//遍历数组与A[i]比较,若相同则覆盖并将后部分字符下标前移一位
if(A[i]==A[j]){
for(r=j;r<s;r++)
A[r]=A[r+1];
s--;//每移动一次则数组下标数-1
j--;//将移动后的首位与A[i]比较
}
for(i=0;i<s-1;i++)//冒泡法排序
for(j=0;j<s-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<s;i++)//输出排序后的字符
putchar(A[i]);
return 0;
}
7-4 字符串字母大小写转换 分数 10
本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。
输入格式:
输入为一个以“#”结束的字符串(不超过30个字符)。
输出格式:
在一行中输出大小写转换后的结果字符串。
输入样例:
Hello World! 123#
输出样例:
hELLO wORLD! 123
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>//利用ctype头文件判断字符大小写并转换
#include<ctype.h>
int main() {
int N, j, i = 0;
char A[31];
char ch;
while ((ch = getchar()) != '#') {
if (islower(ch))
putchar(toupper(ch));
else if (isupper(ch))
putchar(tolower(ch));
else
putchar(ch);
}
return 0;
}
7-5 说反话-加强版 分数 15
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
感谢杭州电子科技大学李卫明老师修正数据! 感谢浙江工业大学之江学院石洗凡老师修正测试点提示。
代码长度限制
16 KB
时间限制
300 ms
内存限制
64 MB
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
int main(){
char A[500001];
bool R=false, P=true;
long long t,i,j;
gets(A);
long long L=strlen(A)-1;//从字符串末尾向首位遍历
for(i=L, t=0;i>=0;i--){
if(A[i]==' '&&R){//如果该字符是空格且上一个字符不是空格
if(P)
P=false;//该字符串有空格的情况(第一个单词)
else
putchar(' ');//第二个单词及以后在单词前打出一个空格
for(j=i+1;j<i+1+t;j++)//打印单词
putchar(A[j]);
t=0;
R=false;//该字符为空格
}
else if(A[i]!=' '){//该字符若不是空格则字符数+1,下一次判断为真
t++;
R=true;
}
}
if(t>0){
if(!P)//判断整个字符串是否有空格,若有则在最后一个单词前打出一个空格
putchar(' ');
for(j=0;j<t;j++)
putchar(A[j]);
}
return 0;
}