c语言逆数不用循环,C语言入门-循环

favicon.ico摘要:

;stdio.h>intmain(){intx;for(x=1;x<=100;x++){inti;intisPrime=1;for(i=2;i

",x);}}return0;}也可以这样,算出50个素数#include

一、循环

输入一个数字,输出该数字有几位

tf("%d",x);if(cnt%5==0){printf("

");}}x++;}return0;}从嵌套的循环中跳出break和continue只能对它

#include

int main()

{

int x;

int n = 0;

scanf("%d" , &x);

n++;

x /= 10;

while(x > 0){

n++;

x /= 10;

}

printf("%d

",n);

return 0;

}

二、while循环

循环体内要有改变条件的机会,避免死循环

num>other=(Enum>)o;Enumself=this;if(self.getClass()!=other.getClass()&&

while循环的意思就是:当条件满足时,不断地重复循环体内的语句

r循环像一个计数循环,设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计算器以一定步进行调整。计算n!#includeintmain

循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行

NTER",3);ENUM$VALUES=(newT[]{SPRING,SUMMER,AUTUMN,WINTER});}}可以看到经过编译后,枚举类也是一个普通的Java类。这个类继承了En

看我们上面的代码,是否有点多余的成分,我们来进行改造,但是还有一个问题就是输入0的时候是没有位数的

rintf("%d

",a%100);return0;}具体的实现如下:#include#include#includ

#include

int main()

{

int x;

int n = 0;

scanf("%d" , &x);

while(x > 0){

n++;

x /= 10;

}

printf("%d

",n);

return 0;

}

三、do-while循环

在进入循环的时候不检查,再执行一轮之后再进行检查条件是否满足,至少是执行一次循环具体格式如下

,也可以统一实现//在枚举类的定义中实现一个就好了publicvoidrun(){System.out.println("llikerun...");}@Overridepubli

do{

循环体

}whlie(条件)

数位数的算法

INSTANCE;publicEnumSingletongetInstance(){returnINSTANCE;}}5.枚举实例的创建过程是线程安全的从第二部分的代码我们可以看出,枚举实例的创建是在

用户输入x

初始化n为0

x = x /10 , 去掉个位

n++

如果n > 0 ,回到3

否则n就是结果

把上面的代码进行改造

进来的值,以及用户输入值的位数printf("x=%d,mask=%d

",x,mask);do{intd=x/mask;printf("%d",d);//最后

#include

int main()

{

int x;

int n = 0;

scanf("%d" , &x);

do{

n++;

x /= 10;

}while(x > 0);

printf("%d

",n);

return 0;

}

此时输入0也是可以显示位数,

NoData、writeReplace和readResolve等方法。//Quarter是一个枚举类Quarter[]values=Quarter.values();Quarterone=values

四、循环计算

int x;

int ret = 0;

scanf("%d" , &x);

int t = x;

while(x > 1){

x /= 2;

ret++;

}

printf("log2x of %d is %d" , t , ret );

猜数游戏

让计算机想一个数字,然后让用户来猜,用户每输入一个数组,就告诉他是大了还是小了,直到用户猜中为止,并且告诉用户猜了多少次

和%d个2角和%d个5角的组成%d元

",one,two,five,x);exit=1;break;}}if(exit==1)break;}if(exit==1)break;}goto,当有

这里用到了一个随机数

eturn(zuper==Enum.class)?(Class)clazz:(Class)zuper;}//通过name来获得枚举publicstatic

#include

#include

#include

int main(){

srand(time(0));

int a = rand();

// 但是这个随机数有点大,这里取余100

printf("%d

" , a%100);

return 0;

}

具体的实现如下:

d

",i);}printf("

最后的i=%d

",i);return0;}i=0i=1i=2i=3i=4最后的i=5如果有固定的次数,用for循环如果必须执行一次,用

#include

#include

#include

int main(){

srand(time(0));

int number = rand()%100+1;

int a = 0;

int count = 0;

// 用来作弊

// printf("%d

",number);

while(number != a){

printf("亲,请输入100以内的数字:");

scanf("%d", &a);

if(a > number){

printf("亲,你输入的数字大了

");

}else if(a < number){

printf("亲,你输入的数字小了

");

}

count++;

}

printf("恭喜你,输入正确!你一共输入了%d次" , count);

return 0;

}

算平均数

让用户输入一系列正整数,然后输入-1表示输入结束,然后计算这些数字的平均数

//这个就是指代我们定义的枚举实例的名字,比如上面的“SPRING”和“SUMMER”等privatefinalStringname;publicfinalStringname(){returnnam

int number;

int count = 0;

int sum = 0;

printf("请输入数字(-1结束):");

scanf("%d" , &number);

while(number != -1){

printf("请输入数字(-1结束):");

count++;

sum += number;

scanf("%d" , &number);

}

printf("你一共输入了%d次,平均数为%d", count , sum/count) ;

五、整数求逆

对一个整数做%10的操作,就得到他的个位数

");}count++;}printf("恭喜你,输入正确!你一共输入了%d次",count);return0;}算平均数让用户输入一系列正整数,然后输入-1表示输入

对一个整数做/10的操作,就去掉他的个位数

数默认是priva的*@paramsex*/EnumDemo(Stringsex){this.sex=sex;}/***抽象方法,需要枚举类实例实现这个方法*/publicabstractvoidte

求:输入一个正整数,输入逆序的数

n(){intx;intn=0;scanf("%d",&x);while(x>0){n++;x/=10;}printf("%d

",n);retu

int number;

int digit;

int ret = 0;

printf("请输入数字:");

scanf("%d" , &number) ;

while(number != 0){

digit = number%10;

//printf("%d",digit);

ret = ret * 10 + digit;

printf("x=%d,digit=%d,ret=%d

", number, digit, ret);

number /= 10;

}

printf("%d",ret);

六、for循环

for循环像一个计数循环,设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计算器以一定步进行调整。

;for(i=1;i<=min;i++){if(a%i==0){if(b%i==0){ret=i;}}}printf("%d和%d的最大公约数是%d

",a,b,ret);但

计算n!

InputStream.readObject();//返回trueSystem.out.println(object==one);枚举类在序列化的时候只会将name属相序列化。在上面代码中Object

#include

int main(){

int n;

scanf("%d" , &n);

int fact = 1;

// for(int i = 1; i<=n; i++){

// fact *= i;

// }

for(int i = n; i>1; i--){

fact *= i;

}

printf("%d!=%d" , n , fact);

return 0;

}

循环的计算和选择

for(初始动作;条件;每轮的动作){

",one,two,five,x);//直接跳到你指定的位置gotoout;}}}}out:return0;}八、循环应用前n项求和$$f(n)=1+1/2+1/3+....+1/n$$

​ 循环体;

icalName()+"."+name);}protectedfinalvoidfinalize(){}//禁止从流中获取对象privatevoidreadObject(Objec

}

ti;intisPrime=1;for(i=2;i

&quo

for中的每一个表达式都是可以省略的,分号不能省

name=name;this.ordinal=ordinal;}publicStringtoString(){returnname;}publicfinalbooleanequals(Objectot

#include

int main(){

int i;

for(i = 0; i<5; i++){

printf("i=%d

" , i);

}

printf("

最后的i=%d

",i);

return 0;

}

i=0

i=1

i=2

i=3

i=4

最后的i=5

如果有固定的次数,用for循环

如果必须执行一次,用do_while

其他情况用while

七、循环控制

素数:只能被1和自己整除的数,不包括1

到他的个位数对一个整数做/10的操作,就去掉他的个位数求:输入一个正整数,输入逆序的数intnumber;intdigit;intret=0;printf("请输入数字:");sc

int x;

scanf("%d" , &x);

int i;

int isPrime = 1;

for(i=2; i

if( x % i == 0){

isPrime = 0;

break;

}

}

if( isPrime == 1){

printf("是素数

");

}else{

printf("不是素数

");

}

嵌套的循环

100以内的素数

cstaticTvalueOf(Strings){return(T)Enum.valueOf(demo/T,s);}publicstaticfinalTSPRING;publicstaticfinal

#include

int main(){

int x;

for( x=1; x<=100; x++){

int i;

int isPrime = 1;

for(i=2; i

if(x % i == 0){

isPrime = 0;

break;

}

}

if (isPrime == 1){

printf("%d

" , x);

}

}

return 0;

}

也可以这样,算出50个素数

循环计算intx;intret=0;scanf("%d",&x);intt=x;while(x>1){x/=2;ret++;}printf("log2xof

#include

int main(){

int x;

int cnt = 0;

// for( x=1; cnt<50; x++){

x = 1;

while(cnt < 50){

int i;

int isPrime = 1;

for(i=2; i

if(x % i == 0){

isPrime = 0;

break;

}

}

if (isPrime == 1){

cnt++ ;

// 制表符

printf("%d" , x);

if(cnt % 5 == 0){

printf("

");

}

}

x++ ;

}

return 0;

}

从嵌套的循环中跳出

break和continue只能对它所在的那层循环,

类的底层实现3.枚举类的序列化实现4.用枚举实现单列5.枚举实例的创建过程是线程安全的谈谈枚举如果一个类的对象个数是有限的而且是不变的,我们通常将这样的类设计成枚举类。1.枚举类的定义枚举类有如下特点

goto:直接跳转到你指定的位置

ameisnull");thrownewIllegalArgumentException("Noenumconstant"+enumType.getCanonicalNa

凑硬币

如何用1角、2角、5角硬币凑出10元以内的金额,接力break,太麻烦了

p;n);for(i=1;i<=n;i++){if(i%2==0){sum-=1.0/i;}else{sum+=1.0/i;}printf("%f

",sum);}retur

int x;

int exit = 0;

int one, two, five;

printf("请输入金额:");

scanf("%d", &x);

for(one = 1; one < x *10; one++){

for(two=1; two < x*10/2; two++){

for(five=1; five < x*10/5; five++){

if(one + two*2 + five*5 == x*10){

printf("可以用%d个1角和%d个2角和%d个5角的组成%d元

",one ,two,five,x);

exit = 1;

break;

}

}

if (exit == 1) break;

}

if (exit == 1) break;

}

goto,当有多层循环的时候可以使用这个,其他的时候不要使用

Serializable接口之后,就不再是单例了,因为,每次调用readObject()方法返回的都是一个新创建出来的对象,有一种解决办法就是使用readResolve()方法来避免此事发生。但是,为

#include

int main(){

int x;

int one, two, five;

printf("请输入金额:");

scanf("%d", &x);

for(one = 1; one < x *10; one++){

for(two=1; two < x*10/2; two++){

for(five=1; five < x*10/5; five++){

if(one + two*2 + five*5 == x*10){

printf("可以用%d个1角和%d个2角和%d个5角的组成%d元

",one ,two,five,x);

// 直接跳到你指定的位置

goto out;

}

}

}

}

out:

return 0;

}

八、循环应用

前n项求和

$$

f(n) = 1+1/2+1/3 +....+1/n

$$

}从嵌套的循环中跳出break和continue只能对它所在的那层循环,goto:直接跳转到你指定的位置凑硬币如何用1角、2角、5角硬币凑出10元以内的金额,接力break,太麻烦了intx;inte

#include

int main(){

int n;

int i;

double sum = 0.0;

scanf("%d" , &n);

for(i=1; i<=n; i++){

sum += 1.0/i;

printf("%f

", sum);

}

return 0;

}

但是这样呢?

$$

f(n)=1-1/2+1/3-1/4+...+1/n

$$

这个方法就比较多了,这里我自己写了一个

ss()!=other.getClass()&&//optimizationself.getDeclaringClass()!=other.getDeclaringClass())th

#include

int main(){

int n;

int i;

double sum = 0.0;

scanf("%d" , &n);

for(i=1; i<=n; i++){

if(i%2 == 0){

sum -= 1.0/i;

}else{

sum += 1.0/i;

}

printf("%f

", sum);

}

return 0;

}

整数分解

输入一个非负整数,正序输出它的每一位数字

输入:1314

输出:1 3 1 4

#include

int main(){

int x;

printf("输入任意位数数字:

");

scanf("%d" , &x);

// 记录位数

int mask = 1;

// 输入的值赋值给t,用于记录输入数字的位数

int t = x;

while( t > 9){

t /= 10;

mask *= 10;

}

// 用户输入进来的值,以及用户输入值的位数

printf("x=%d, mask=%d

",x, mask );

do{

int d = x / mask;

printf("%d",d );

// 最后一位不用输出空格

if (mask > 9)

{

printf(" ");

}

// 得到他的个位数

x %= mask;

// 去掉它的个位数

mask /= 10;

}while( mask >0);

printf("

");

return 0;

}

求最大公约数

输入两个数a和b,输出它们的最大公约数

输入:12 18

输出:6

普通计算

ncludeintmain(){intn;scanf("%d",&n);intfact=1;//for(inti=1;i<=n;i++)

int a,b;

int min;

printf("请输入两个数字:");

scanf("%d %d" , &a, &b);

if(a < b){

min = a;

}else{

min = b;

}

int ret = 0;

int i;

for (i = 1; i <= min; i++)

{

if ( a%i == 0)

{

if ( b%i == 0)

{

ret = i;

}

}

}

printf("%d和%d的最大公约数是%d

", a , b , ret );

但是还有更厉害的

编译后,枚举类也是一个普通的Java类。这个类继承了Enum这个类,并且使用final修饰,所以枚举类都是不能被继承的。枚举类中定义的枚举值都是这个枚举类的静态成员变量,而且在初始化代码块中会一次性初

如果b等于0,计算结束,a就是最大公约数

否则,计算a除以b的余数,让a等于b,而b等于那个余数

回到第一步

a

b

t(余数)

12

18

12

18

12

6

12

6

0

6

0

代码如下:

nclude#includeintmain(){srand(time(0));intnumber=rand()%100+1;inta=0;i

#include

int main(){

int a,b;

int t;

scanf("%d %d" , &a , &b);

while(b != 0){

t = a % b;

a = b;

b = t;121

printf("%d,%d

", a ,b);

}

printf("最大的公约数是%d

", a);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值