Study__Life 2020-12-09 23:49 采纳率: 100%
浏览 50
已采纳

C语言萌新,遇到瓶颈了,有些题感觉做对了,但在OJ系统上提交通过不了,真心请求大佬帮忙

比如这里的这道Anagrams问题,两个单词若字母出现次数相等,则输出Y,否则输出N显示运行错误,刚学了数组的知识,我也在网上收了一下这题的程序,但都涉及到我还没学到知识,按道理来讲,这题只用数组的知识也能解出来的

#include <stdio.h>
int main()
{
    int i, j, c, temp1, temp2, min1, min2, d;
	char a[80], b[80];
	i = 0;
	while((a[i] = getchar()) != '\n') i++;
	a[i] = '\0';
	c = i;
	j = 0;
	while((b[j] = getchar()) != '\n') j++;
	b[j] = '\0';
	d = j;
	if(c != d)
	   printf("N");
	else 
	{
	 for(i = 0; i < c; i++)
	 {
	     if(a[i] >= 65 && a[i] <= 90) a[i] += 32;
		 if(b[i] >= 65 && b[i] <= 90) b[i] += 32;
	 }
	 for(i = 0; i < c - 1; i++)
	 {
	     min1 = i;
		 min2 = i;
		 for(j = i + 1; j < c; j++)
		 {
		     if(a[min1] > a[j]) min1 = j;
			 if(b[min2] > b[j]) min2 = j;
		 }
		 temp1 = a[i];
		 a[i] = a[min1];
		 a[min1] = temp1;
		 temp2 = b[i];
		 b[i] = b[min2];
		 b[min2] = temp2;
	 }
	 for(i = 0; i < c; i++)
	     if(a[i] != b[i]) break;
	 if(i == c) printf("Y");
	 else printf("N");
	}
	return 0;
}
  • 写回答

3条回答 默认 最新

  • qq_25376897 2020-12-10 11:02
    关注
    #include <stdio.h>
    int main()
    {
        int i, j, c, d;
    	char a[80], b[80];
    	int e[26]={0},f[26]={0};//表示26个字母出现的次数
    	i = 0;
    	while((a[i] = getchar()) != '\n') i++;
    	a[i] = '\0';
    	c = i;
    	j = 0;
    	while((b[j] = getchar()) != '\n') j++;
    	b[j] = '\0';
    	d = j;
    	if(c != d)
    	   printf("N");
    	else 
    	{
    	 for(i = 0; i < c; i++)
    	 {
    	     if(a[i] >= 'A' && a[i] <= 'Z')
    	     {
    	         e[a[i]-'A']++;//a[i]-'A',ASCII码相减得出下标,该数字代表的字母次数+1
    	     }
    	     if(a[i] >= 'a' && a[i] <= 'z')
    	     {
    	         e[a[i]-'a']++;
    	     }
    		 if(b[i] >= 'A' && b[i] <= 'Z')
    	     {
    	         f[b[i]-'A']++;
    	     }
    	     if(b[i] >= 'a' && b[i] <= 'z')
    	     {
    	         f[b[i]-'a']++;
    	     }
    	 }
    	 for(j=0;j<26;j++){
    	     if(e[j]!=f[j]){//对应字母的出现次数不相等,输出N,否则输出Y
    	         printf("N");
    	         return 0;
    	     }
    	 }
    	 printf("Y");
    	}
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境