java吧 关注:1,225,475贴子:12,682,438
  • 14回复贴,共1

求大佬帮忙看一下

只看楼主收藏回复



IP属地:河北1楼2018-04-10 19:28回复
    结果不对,而且不会调试,求大佬帮一下啊


    IP属地:河北3楼2018-04-10 19:31
    回复
      整了一下午了,头晕


      IP属地:河北4楼2018-04-10 19:35
      回复
        你这是c


        IP属地:浙江来自Android客户端5楼2018-04-10 19:41
        收起回复
          额。。。进错吧了。。打扰了各位


          IP属地:河北7楼2018-04-10 19:43
          回复
            再次求助


            IP属地:河北来自Android客户端8楼2018-04-10 20:27
            回复
              正则表达,或者数据切割,自己百度做下吧


              IP属地:甘肃来自Android客户端9楼2018-04-10 20:30
              回复
                把数据按照数字分割,分割每个数据最后一位是数字,前面是字母,将字母送入一个方法中,方法归还一个值,然后相乘,思路就是这样,代码自己写


                IP属地:甘肃来自Android客户端10楼2018-04-10 20:33
                收起回复
                  #include<stdio.h>
                  #include<ctype.h>
                  #include<string.h>
                  int search(char *a,char (*b)[3]);
                  void main()
                  {
                  char a[10],temp[3],b[10][3]={"H","C","N","O","S","Na","Al","Cl","Ca","Zn"};
                  int m[11]={1,12,14,16,32,23,27,35,40,65};
                  int i=0,sum=0;
                  printf("输入化学式\n");
                  gets(a);
                  while(a[i]!='\0')
                  {
                  temp[0]=a[i];
                  i++;
                  if(isalpha(a[i]))//第二个字符是字母
                  {
                  temp[1]=a[i];
                  if(search(temp,b)!=-1)//俩字母是整体
                  {
                  i++;
                  if(isdigit(a[i]))//第三个字符是数字
                  sum+=m[(search(temp,b))]*(a[i]-'0');
                  else//第三个字符不是数字
                  {
                  sum+=m[search(temp,b)];
                  i--;
                  }
                  }
                  else//不是整体
                  {
                  temp[1]='\0';
                  i--;
                  sum+=m[search(temp,b)];
                  }
                  }
                  else//第二个字符不是字母
                  {
                  if(a[i]!='\0')
                  sum+=(a[i]-'0')*m[search(temp,b)];
                  else
                  {
                  sum+=m[search(temp,b)];
                  i--;
                  }
                  }
                  i++;
                  temp[0]=temp[1]='\0';
                  }
                  printf("%d\n",sum); /*char a[3]="O",b[10][3]={"H","C","N","O","S","Na","Al","Cl","Ca","Zn"};
                  int m[11]={1,12,14,16,32,23,27,35,40,65};
                  printf("%d\n",m[search(a,b)]);*/
                  }
                  int search(char *a,char (*b)[3])
                  {
                  int i;
                  for(i=0;i<10;i++)
                  {
                  if(strcmp(a,*(b+i))==0)
                  return i;
                  }
                  return -1;
                  }


                  IP属地:河北11楼2018-04-10 21:36
                  回复