这题还是很耗时间,不过在助教的帮助下纠正了一个错误还是独立完成了!
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 ;
}
浙公网安备 33010602011771号