这题还是很耗时间,不过在助教的帮助下纠正了一个错误还是独立完成了!

1.学会了定义一个可变数组的方法

   scanf("%d",&n);     //前后的顺序不能颠倒
   int a[n]={0};

2.布尔表达式在if 和while中条件的使用

  在数学上1<a<2 / a=2 但在计算机中必须用1<a&&a<2 / a==2

3.计数器可以判别0和1+

但要注意的是1和1+是一类

4.参考答案中 While 与break的配合

while (scanf("%d",&n) != EOF) 含义为持续为n输入一个有效数值 

同时可以用break跳出这个condition

 

#include<cstdio>3
int main(){
    int n,x;
 //    int a[n]={0}; 数组不明确大小不能定义 
    printf("请输入1到200之间的一个数n:");
    scanf("%d",&n);
    int a[n]={0};
    if(1<=n&&n<=200){    //必须为布尔表达式  1<=n<=200是惯性错误 它固定执行if下的语句 
         
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);  // 引用号 又忘记 妈的 
        }
        printf("请再输入任意一个数x:");
        scanf("%d",&x);
        
/*        int i=0;               // 你不能让它计算一个不存在的单元 200错误 
        while(x!=a[i]) {
            if(i<n) 
             { i++;
             }else 
             {printf("-1");    //输出-1 不能用 return !
             break; }          //break 用法 :直接condition为 false 
                                  
        }
        printf("x的下标为%d",i);
*/  

        int m=0;    //计数器 
        for(int i=0;i<n;i++){       // 求多个可能位置 
            if(x==a[i]) {           // x!=a[i]  找到一个记录一下  
                m++;
                printf("%d ",i);   
            }                       
        }
        if(m==0) printf("-1");      //遍历完毕后 m若没变 说明不存在  (关系运算符的等于为两个等号)
    }
    else{
       printf("您输入的数不符合规格!\n"); 
    } 
    return 0 ;

posted on 2022-03-03 12:29  Niu的呀  阅读(86)  评论(0)    收藏  举报