7-11 删除字符串中指定字符
题目:
删除字符串中的指定字符,字符串和要删除的字符均由键盘输入。
输入格式:
在第一行中输入一个长度不超过20的字符串、并以回车结束;在第二行中输入待删除的一个字符,并以回车结束。
输出格式:
在一行中输出删完指定字符的字符串。
输入样例:
abcdcf
c
输出样例:
abdf
#include<stdio.h>
#include<string.h>
int main(){
char ch[21];
gets(ch);
char a;
scanf("%c",&a);
int i,n=strlen(ch);
int point=0;
for(i=0;i<n;i++){
if(ch[i]!=a){
ch[point]=ch[i];
point++;
}
}
for(i=0;i<point;i++){
printf("%c",ch[i]);
}
return 0;
}
7-12 统计字符串中字母、数字、空格和其他字符的个数
题目:
统计字符串中字母、数字、空格和其他字符的个数。
输入格式:
在一行中输入长度不超过40的字符串。
输出格式:
第一行中输出“zimu=x“
第二行中输出“shuzi=y“
第三行中输出“kongge=z”,
第四行中输出“qita=m”
所有结果均原样输出,没有列宽控制。
输入样例:
sd$2h b57 sA
输出样例:
zimu=6
shuzi=3
kongge=2
qita=1
#include<stdio.h>
#include<string.h>
int main(){
char ch[40];
fgets(ch,40,stdin);
int n=strlen(ch);
int x=0,y=0,z=0,m=0;
for(int i=0;i<n;i++){
if((ch[i]>='A'&&ch[i]<='Z')||(ch[i]>='a'&&ch[i]<='z')) x++;
else if(ch[i]>='0'&&ch[i]<='9') y++;
else if(ch[i]==' ') z++;
else m++;
}
printf("zimu=%d\n",x);
printf("shuzi=%d\n",y);
printf("kongge=%d\n",z);
printf("qita=%d\n",m);
return 0;
}
7-13 整理队伍
题目:
体育课上,教数学的体育老师怎么看这个队伍都不大对劲,于是对队伍进行了调整。张三,你和李四换一下位置......经过几次调整,队伍终于变得有条不紊了。
输入格式:
输入第一行包括一个整数n,表示班级里总共有n个人(1<=n<=100);第二行包括n个整数,表示同学们原来的顺序。第三行包括一个数m(m>=0),表示体育老师总共进行了m次调换;下面包括m行,每行包括两个数x,y,表示x位置的同学和y位置的同学调换位置。
输出格式:
输出调换之后的队伍,每两个同学的编号之间有一个空格。
输入样例:
5
1 2 3 4 5
3
1 2
1 5
3 4
输出样例:
5 1 4 3 2
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n],i;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int m;
scanf("%d",&m);
int x,y,tmp=0;
for(i=0;i<m;i++){
scanf("%d %d",&x,&y);
tmp=a[x-1];
a[x-1]=a[y-1];
a[y-1]=tmp;
}
for(i=0;i<n;i++){
printf("%d",a[i]);
if(i!=n-1) printf(" ");
}
return 0;
}
7-14 数组元素的删除
题目:
完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置。
重复若干次这样的删除,得到最后的结果。
输入格式:
第一行包括一个整数n(1<=n<=100),表示数组元素的个数。
第二行输入n个数组元素,均为整数,用空格隔开。
第三行输入一个数k(1<=k<=100),表示要进行k次删除。
接下来k行,每行一个数x,表示要删除第x个元素。
输出格式:
输出经过k次删除后的数组,每两个元素之间用空格隔开。
输入样例:
10
1 2 3 4 5 6 7 8 9 10
4
3
2
4
6
输出样例:
1 4 5 7 8 10
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int i,a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int k,x;
scanf("%d",&k);
for(i=0;i<k;i++){
scanf("%d",&x);
for(int j=0;j<n;j++){
if(j>=x-1){
a[j]=a[j+1];
}
}
n--;
}
for(i=0;i<n;i++){
printf("%d",a[i]);
if(i!=n-1) printf(" ");
}
return 0;
}
7-15 及格率
题目:
键盘输入n个成绩[0-100],60分(含)以上的为及格,现在要求根据输入的n个成绩计算及格率并输出,结果保留两位小数(四舍五入)。
输入格式:
输入第一行为一个整数n,表示成绩个数,接下第二行有n个实数[0-100],表示成绩,用一个空格隔开。
输出格式:
用一行输出及格率,结果保留两位小数(四舍五入)。
输入样例:
5
56.5 80 95 49 60
输出样例:
0.60
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
double a[n],sum=0.0,count=0.0;
int i;
for(i=0;i<n;i++){
scanf("%lf",&a[i]);
if(a[i]>=60.0) count++;
}
printf("%.2f",count/n);
return 0;
}