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;
}
}