行星吞噬者 2022-04-28 20:13 采纳率: 100%
浏览 107
已结题

C语言程序设计, c++

1.输入一个班30个学生的成绩,统计各个分数段059,6069,7079,8089,90~100 的人数;分别统计在60 70 80 90以上的人数。学生成绩由用户根据实际需要输入。
2.有一个长度不大于40的字符串,已知其中包含个字符“A”,求处于这两个字符“A”中间 的字符个数,并把这些字符依此打印出来。(#include<string.h>

//#include<stdlib.h>

main()

{

      int a,j,i,c;

      char x[100];

     while(gets(x))

     {

      j=strlen(x);

      for(i=0;i<j;i++)

      if(x[i]=='A')

         {

           a=i;

           break;

         }

         for(i=0;i<j;i++)

      if(x[i]=='A')

         {

           c=i;)这是第二个的部分,但我不知道为什么不对?

  • 写回答

4条回答 默认 最新

  • 南柯一梦818 2022-04-28 20:52
    关注
    
    #include <stdio.h>
    #include <string.h>
    int main(){
        
         int a,j,i,c;
          char x[100];
         while(gets(x))
         {
    
          j=strlen(x);
    
          for(i=0;i<j;i++){
          if(x[i]=='A')
             {
    
               a=i;
    
               break;
    
             }//找到第一个A 
         }
    
        /*for(i=0;i<j;i++)
          if(x[i]=='A')
    
             {
    
               c=i;)*/
               //这里错啦,这段循环应该从a开始循环到j找到第二个A
           
        for(i = a + 1; i < j; i++){
              if(x[i]=='A'){
    
               c=i;
    
               break;
    
             }
         }//找到第2个A
     }
         
    
         
         
         
         int t = c - a;
         printf("%d",t);
         
        
        return 0;
    }
    

    按照你的想法是第一次找到A把下标存到a,
    而第二次找A的方法错啦,你应该从a开始找第二个A。

    
     
    #include <stdio.h>
    int main()
    {
        int stu[30];                  
        int i;
        int cnt1 = 0, cnt2 = 0, cnt3 = 0, cnt4 = 0, cnt5 = 0;
     
        printf("请输入30位学生的成绩:\n");
        for (i = 0; i < 30; i++)
        {
            scanf("%d", &stu[i]);     
            if (stu[i] >= 90)
                count1++;
            else if (stu[i] >= 80)
                count2++;
            else if (stu[i] >= 70)
                count3++;
            else if (stu[i] >= 60)
                count4++;
            else
                count5++;
        }
     
        printf("90及90分以上有%d人\n", cnt1);
        printf("80~89分有%d人\n", cnt2);
        printf("70~79分有%d人\n", cnt3);
        printf("60~69分有%d人\n", cnt4);
        printf("60分以下有%d人\n", cnt5);
     
        return 0;
    }
    

    这个方法比较简单,还可以用switch case 将分数/10分成区间来做

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月8日
  • 已采纳回答 4月30日
  • 修改了问题 4月28日
  • 创建了问题 4月28日

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用