11.9

阵列的复制

不能:a[10]=n

  1. `a=v`
  1. #include<stdio.h>
  2. #include<stdio.h>
  3. #include<time.h>
  4. void hanshi(int a[10]);
  5. void hanshi2(int b);
  6. int main(){
  7. srand(time(0));
  8. int c=1,i,n[10],v[10];
  9. for(i=0;i<10;i++){
  10. n[i]=rand()%100;
  11. }
  12. for(i=0;i<10;i++){ //一个一个复制
  13. v[i]=n[i];
  14. }
  15. hanshi(n);
  16. hanshi(v);
  17. hanshi2(c);
  18. printf("%d",c); //c还是1,函式中的c是又复制了一遍,而非本身的c
  19. return 0;
  20. }
  21. void hanshi(int a[10]){
  22. int i;
  23. for(i=0;i<10;i++){ //特殊:函式中的阵列即为原来的函式
  24. printf("%d ",a[i]);
  25. }
  26. printf("\n");
  27. }
  28. void hanshi2(int b);{
  29. c++;
  30. }

在函式间传送阵列

一般资料形态会将引述复制一份传入函式,但阵列不行,阵列直接作为引数传入,因此函式回传值不能是阵列,不合法

有关阵列的一些错误

int a[3]={1,2,3};

printf("%d",a[0.5]); X编译错误 必须为整数

printf("%d",a[3/2.]); X编译错误

printf("%d",a[3]) X未定义行为

数字炸弹的练习

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
    srand(time(0));
    int ans,gue,max,min;
    ans=rand()%99+1;
    printf("请输入一个数字:");
    scanf("%d",&gue);
    max =99;
    min =0;
    while(gue!=ans){
      if(gue<ans){
        printf("数字炸弹在%d 到%d之间,请再输入一个数:",gue,max);
        min=gue;
        scanf("%d",&gue);
    } else if(gue>ans){
        printf("数字炸弹在%d到%d之间,请再输入一个数:",min,gue);
        max=gue;
        scanf("%d",&gue);
    } 
  }
  printf("炸弹爆炸了!");
  return 0;
}