C语言基础03

1.随机数 :一个范围内随机数字的返回值. 格式为: arc4random() % ( num大值 -num小值 + 1 ) + num小值.

int n,i= 0;           //控制随机数的个数

int a=30,b=125;  //设置区域范围

printf("Please Enter two different nums : "); 

scanf("%d",&n); 

while( i < n ){

  int rand =arc4random() % ( b - a + 1) +a;  //输出n个范围内的 随机数.

  printf("%d\n",rand);

  i++;

}

能输出多个随机数,需要求其最小的那个随机数? 怎么办,我们可以考虑新添加新变量min,同时 结合if判断 和循环赋值.

在上一个的 while循环里面进行一次判断就可以;

int min = 0 ;    //假设min的值为0 

...

while(..){

  int rand =arc4random() % ( b - a + 1) +a;

  if(rand < min ) {

     min=rand;    //第一次循环 min的值发生改变为rand. 循环还没结果,第二次循环在进行判断,第二次判断的min就是前面的第一个随机数....

  }  

}

  printf(" %d",min);

}

2.continue和break的区别

continue和break都是应用在if或者循环里面,break是终止所有的循环次数,即使后面的循环还在.

而continue则只是针对这次循环,并且后面的代码不执行(忽略), 但是下一次循环依旧执行.

int sum = 0;

for( int i = 0; i <10 ;i++){    

  if( i % 2 == 0 ){

    continue;       // 在10以内的偶数,则停止该循环,后面代码不会执行.

    printf("%d\n",i);  // 不会有输出i .

   }

    sum+= i;      //10以内的奇数和

}

while( i< 10){

  if( i % 2 !==0){  

    break;     //结束所有的循环,只要整除2 就直接输出while循环外面的输出语句了.

    i++;    //根本没执行++

  }

  printf("%d\n",i);  // 只输出0和1 ,后面的循环结束了.

}

printf("break之后就来到了这里 嘿嘿!");

输入的字符比较是否有相同字符,最后输出完全不包含相同字符的字符串?

char a,b=0;

printf("Please enter char :");

a = getchar();  //或者文本流的第一个字符,相当于scanf,不过每次只获取一个字符.

while(a=getchar() !=EOF ){   //a获取下一个字符,并且循环继续获取 EOF就是最后一个字符的表示,

  if( a = b ) {

    //去除a 不知道怎么搞

    printf("find an same ");

    break;

}

  b=a;    //讲a的旧值赋值给b ,a的新值一直在循环. 这样就可以保证一直可以比较是否相同.

}

 面试遇到一个数学问题,感觉有点贱,求2个数的最大公约数和最小公倍数?

很简单:2个数的最大的公约数一般是小于给定的2个数值,所以我们尽量求较小的值  符合该条件.a% i ==0 && b % i==0

int a,b;

int c =a<b?a:b;

for(int i=c;i<c;i--){

  if( a % i ==0 && b %i==0 ){  

    c=i   //i就是公约数最大的

    break;

  }

}

原文地址:https://www.cnblogs.com/liruoxuan/p/4063237.html