求解决的办法(语言-c语言)

img


在编译的时候出现这个错误不知道怎么解决,如有其他不足之处请多多指教

12行x>b&&e==0
是==不是=
另外25行也应该是类似的问题,只是你的图看不到25行的代码

首先12行

//不是赋值=号,是双等于,
//还有if的地方加上大括号吧,
/#还有你25行出错了,图片上我看不到
if(x>b&&e==0)
{

}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/190377
  • 这篇博客也不错, 你可以看下c的计算和输出的数字和字符串为什么经常出错(附录c语言常见错误)
  • 除此之外, 这篇博客: 只出现一次的数字 -- C语言中的 方法二:通过异或取得单次数组的特征值,然后从数组提取的方式 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    int* singleNumber2(int* nums, int numsSize, int* returnSize){
    	if(NULL == nums || numsSize == 0){
    		printf("singleNumber param error\n");
    		*returnSize = 0;
    		return NULL;
    	}
    
    	int * p = NULL;
    	int i = 0, k = 0;
    	int bitmask = 0;
    	int diff = 0;
    	int x = 0;
    		
    	p = (int *)malloc(2 * sizeof(int));
    	if(NULL == p){
    		printf("singleNumber alloc error\n");
    		*returnSize = 0;
    		return NULL;
    	}
    
    
    	/*
    	 * 出现两次的数,被从bitmask中去掉了,出现一次的保存到了bitmask中
    	 * 其实bitmask是数字的特征值,出现两个数字的会通过异或把特征值去除,
    	 * 剩下的就是单独出现的两个数字的特征值。
    	 * 如果单独出现的两个数字在某位上都是1的怎么处理呢?那不是情况了吗?
    	 * 这就对了,相同为的特征值被抵消掉了,但一定会有不同的为,有特征值被保留下来,
    	 * 否则就成相同的两个数字了
    	 */
    	for(i = 0; i < numsSize; i++){
    		bitmask ^= nums[i];
    	}
    
    	/*取得最右侧的1,到diff中*/
    	diff = bitmask & (-bitmask);
    	/* 
    	 * 这是的diff只有第一个出现一次的数 X 对应的bit位置
    	 * 但是可能有很多的数,在改bit位上为1;
    	 * 但是 x 通过不断的异或,把其他出现两次的数字去掉,
    	 * 最后就剩下了只出现一次的且该位为1的 X
    	 */
    	for(i = 0; i < numsSize; i++){
    		if(0 != (diff & nums[i])){
    			x ^= nums[i];
    		}
    	}
    	
    	p[k++] = x;
    
    	/*从bitmask中分离出x,就剩下了y*/
    	p[k++] = bitmask ^ x;
    	
    out:
    	*returnSize = k;
    	return p;
    }
    
    
    
    void testsingleNumber(void){
    	
    	printf("\n************  testsingleNumber ************ \n");
    	int nums[] = {1,2,1,3,2,5};
    	int numsSize = sizeof(nums) / sizeof(int);
    	int returnSize = 0;
    	int * p= NULL;
    	int i = 0;
    
    	/*testcase 1*/
    	p = singleNumber(nums, numsSize, &returnSize);
    	if(NULL != p){
    		printf("\t returnSize = %d \n",returnSize);
    		printf("\t [ ");
    		for(i = 0; i < returnSize; i++){
    			printf(" %d ", p[i]);
    		}
    		printf(" ] \n");
    		free(p);
    		p = NULL;
    	}
    
    	/*testcase 2*/
    	p = singleNumber2(nums, numsSize, &returnSize);
    	if(NULL != p){
    		printf("\t returnSize = %d \n",returnSize);
    		printf("\t [ ");
    		for(i = 0; i < returnSize; i++){
    			printf(" %d ", p[i]);
    		}
    		printf(" ] \n");
    		free(p);
    		p = NULL;
    	}
    	
    	return; 
     
     }
    
    
     int main(int argc, char ** argv){
    	testsingleNumber();
     }
    
    
    
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^