user-0 提问: 数组中查找数字并返回比其大的数的个数

回复:
user: user-0
content: 引用 5 楼 自信男孩的回复:#include<stdio.h> #include <stdlib.h>   int main() {     int n, x, sum, flag = 0;     int *a;     int i;      scanf("%d", &n);      a = (int *)malloc(sizeof(int) * n);     if (!a)         exit(0);      for (i = 0; i < n; i++)         scanf("%d", a+i);     scanf("%d", &x);      sum = 0;     for (i = 0; i < n; i++) {         if (x == a[i])             flag = 1;         if (x < a[i])             sum++;     }     if (flag > 0)         printf("Find %d\n",sum);     else         printf("No find");  #if 0     sum = pro = 0;     a[0]=scanf("%d", &n);     for(i=1;i<=n+1;i++)     {         if(i<=n)             scanf("%d ",&a[i]);         else             scanf("%d", &a[n+1]);     }     for(i=1;i<=n;i++)     {         if(a[i]>a[n+1])             sum++;         if(a[i]!=a[n+1])             pro++;     }     if(pro<n)         printf("Find %d",sum);     else         printf("No find"); #endif     free(a);     return 0; } 供参考～  楼主的逻辑不够清晰，建议查一下scanf返回值，pro与n比较有何意义～ pro和n比较是为了找这个数组中是否有跟最后输入的一个数相同的数，不对吗？？

user: user-1
content: #include<stdio.h> #include <stdlib.h>   int main() {     int n, x, sum, flag = 0;     int *a;     int i;      scanf("%d", &n);      a = (int *)malloc(sizeof(int) * n);     if (!a)         exit(0);      for (i = 0; i < n; i++)         scanf("%d", a+i);     scanf("%d", &x);      sum = 0;     for (i = 0; i < n; i++) {         if (x == a[i])             flag = 1;         if (x < a[i])             sum++;     }     if (flag > 0)         printf("Find %d\n",sum);     else         printf("No find");  #if 0     sum = pro = 0;     a[0]=scanf("%d", &n);     for(i=1;i<=n+1;i++)     {         if(i<=n)             scanf("%d ",&a[i]);         else             scanf("%d", &a[n+1]);     }     for(i=1;i<=n;i++)     {         if(a[i]>a[n+1])             sum++;         if(a[i]!=a[n+1])             pro++;     }     if(pro<n)         printf("Find %d",sum);     else         printf("No find"); #endif     free(a);     return 0; } 供参考～  楼主的逻辑不够清晰，建议查一下scanf返回值，pro与n比较有何意义～

user: user-2
content: 引用 3 楼 suifengsanjin 的回复:1 这里有问题 a[0]=scanf("%d",&n); 你注意看下scanf的说明 2 scanf 里面的格式你带有空格，导致输入数字后必须带上一个空格才能满足格式 我把你的代码改了，你看看 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { 	int length,index,search,total = 0; 	int *array = NULL; 	printf("Set array length:"); 	scanf("%d",&length); 	// 	printf("Array length is:%d\n",length); 	array = (int*)malloc(sizeof(int) * length); 	memset(array,0x00,sizeof(int) * length); 	for(index = 0; index<length; index++) { 		printf("Set %d Element:",index); 		scanf("%d",&array[index]); 	} 	printf("Set Search element:"); 	scanf("%d",&search);  	for(index = 0; index<length; index++) { 		total += (array[index] > search?1:0); 	} 	if(total) 		printf("Find %d",total); 	else 		printf("No find"); 	return 0; }最后没有释放malloc出来的内存，虽然程序退出会自动释放，还是要注意下

user: user-2
content: 1 这里有问题 a[0]=scanf("%d",&n); 你注意看下scanf的说明 2 scanf 里面的格式你带有空格，导致输入数字后必须带上一个空格才能满足格式 我把你的代码改了，你看看 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { 	int length,index,search,total = 0; 	int *array = NULL; 	printf("Set array length:"); 	scanf("%d",&length); 	// 	printf("Array length is:%d\n",length); 	array = (int*)malloc(sizeof(int) * length); 	memset(array,0x00,sizeof(int) * length); 	for(index = 0; index<length; index++) { 		printf("Set %d Element:",index); 		scanf("%d",&array[index]); 	} 	printf("Set Search element:"); 	scanf("%d",&search);  	for(index = 0; index<length; index++) { 		total += (array[index] > search?1:0); 	} 	if(total) 		printf("Find %d",total); 	else 		printf("No find"); 	return 0; }

user: user-0
content: 引用 1 楼 早打大打打核战争的回复:Find，No find 应该是found、not found  哈哈哈哈哈哈哈哈，给我老实交代，这个程序哪里有问题！不说没晚饭吃了哦

user: user-3
content: Find，No find 应该是found、not found