为啥数组中虽然没有,但是还是提示重复。哪里错了吗?

#include<stdio.h>
main()
{//输入一个数字判断是否与数组重复
    int num;//输入的数字
    int a[10]={45,52,75,76,79,81,90,92,100};
    printf("请输入一个数字\n");
    scanf("%d",&num);
    if(a[10] == num)
        {
            printf("数字%d重复了",num);
        }

    else
        {
             printf("抱歉,没有重复的\n");
        }

            return 0;
}
http://img.mukewang.com/593c056d0001496a07520536.jpg



日光倾城4
浏览 1637回答 2
2回答

进击的学霸No1

#include<stdio.h> main() {//输入一个数字判断是否与数组重复     int num,i;//输入的数字     int a[10]={45,52,75,76,79,81,90,92,100};     printf("请输入一个数字\n");     scanf("%d",&num); for(i=0;i<10;i++) { if(a[i]==num) break;//如果num和数组内的数相等就跳出循环 } if(i<10)//如果没有重复的数,for会循环到最后即i=10,若i<10则说明是中途跳出的 printf("%d重复了!\n",num); else printf("没有重复!\n"); //printf("%d\n",a[10]); return 0; }在你的代码中,第一个a[10]代表的是这个数组的长度为10,第二个a[10]表示的是下标为10的数组元素,不可以直接用整个数组进行比较。应该用for循环,比较每一个数,如果有相等的就break,输出此时的下标的数即相同的数

望远

#include<stdio.h> int main() {//输入一个数字判断是否与数组重复     int num;//输入的数字     int i;     int a[10]={45,52,75,76,79,81,90,92,100};//一共有10个元素,最后有一个默认的0     printf("请输入一个数字\n");     scanf("%d",&num);     //a[10]没有元素a[10]     for(i=0;i<10;i++)     {         if(a[i]==num){              break;         }     }     if(i!=10)//如果a[i]==num会成立跳出循环i的取值就是0-9,最大就是9         {             printf("数字%d重复了",num);         }     else         {              printf("抱歉,没有重复的\n");//未执行break,正常结束循环         }             return 0; }
打开App,查看更多内容
随时随地看视频慕课网APP