实验7-3-8 统计字符出现次数(字符按照ASCII大小进行排序,用char转化为int类型,两种大小比较的方法)

实验7-3-8 统计字符出现次数 (20分)

本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。

输入格式:
输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。

输出格式:
在一行中输出给定字符在给定字符串中出现的次数。

输入样例:
programming is More fun!
m

输出样例:
2

#include<stdio.h>
int main(){
      char a[80];
      int i,j;
      for(i=0;(a[i]=getchar())!='\n';i++);
      //------>这里最后结尾一定是\n,否则程序会报错;
      a[i]='\0';
      //printf("%s",a);
      char x;
      scanf("%c",&x);
      int cnt=0;
      for(j=0;j<i;j++){
            if(x==a[j]){
                  cnt++;
            }
      }
      printf("%d",cnt);
      return 0;
}

实验7-3-9 字符串字母大小写转换 (15分)
本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。

输入格式:
输入为一个以“#”结束的字符串(不超过30个字符)。

输出格式:
在一行中输出大小写转换后的结果字符串。

输入样例:
Hello World! 123#

输出样例:
hELLO wORLD! 123

#include<stdio.h>
int main(){
      char a[30];
      int i,j;
      for(i=0;(a[i]=getchar())!='\n';i++);
      a[i]='\0';
      printf("%s",a);
      printf("\n");
      for(j=0;j<i;j++){
            if(a[j]>='a'&&a[j]<='z'){
                  a[j]=a[j]-32;
            }else if(a[j]>='A'&&a[j]<='Z'){
                  a[j]=a[j]+32;
      	//a和A之间的关系:a-A=32;
            }else if(a[j]=='#'){
                  a[j]='\0';//------->'\0'是字符串结束的标志
            }
      }
      printf("%s\n",a);
      return 0;
}

//   最后根据ASCII的顺序使用冒泡排序算法进行排序,注意:本题默认只有数字和小写字母
//       两种字符,且根据ASCII码表可知,数字的ASCII值小于小写字母的ASCII值。
//  如何利用ASCII码表进行排序?

#include<stdio.h>
int main(){
      char a[100],b[100];
      int i,j,k;
      for(i=0;(a[i]=getchar())!='\n';i++);
      a[i]='\0';
      printf("a=%s",a);
      printf("\n");
      int t=0;
      for(j=0;j<i;j++){       //去掉非重复元素的过程;
            int flag=0;
            for(k=0;k<j;k++){
                  if(a[j]==a[k]){
                        flag=1;
                  }
            }
            if(flag==0){
                  b[t]=a[j];        //b中的元素都是非重复的元素;
                  t++;
                  printf("%c",a[j]);
            }
      }
      // 如何利用ASCII码表进行排序?冒泡法,要进行循环的次数超级多;
      int temp;
      for(j=0;j<t-1;j++){
            for(k=0;k<t-j-1;k++){
                  if(b[k]>b[k+1]){
                        temp=b[k+1];	
       //----->int 类型等于char类型,在这里已经进行了转化;
                        b[k+1]=b[k];
                        b[k]=temp;
                  }
            }
      }
//---------------------------------------------------------//
另外一种比较大小的方法:
   int temp;
      for(j=0;j<t-1;j++){
            for(k=j;k<t-1;k++){
                  if(b[k]<b[j]){
                        temp=b[j];
                        b[j]=b[k];
                        b[k]=temp;
                  }
            }
      }
      printf("\n");
      printf("%s\n",b);
      return 0;
}

发布了54 篇原创文章 · 获赞 0 · 访问量 986

猜你喜欢

转载自blog.csdn.net/hellobettershero/article/details/103971640
今日推荐