#include<stdio.h>
#include<math.h>
int main()
{
//求顺位数
/* int num=2222;
int a,b,c,d;
a=num/1000;
b=(num-1000*a)/100;
c=(num-1000*a-100*b)/10;
d=(num-1000*a-100*b-10*c)/1;
printf("%10d\n%20d\n%30d\n%40d\n",a,b,c,d);
*/
//求逆位数
/* int num=1234;
int a,b,c,d;
a=num%10;
b=((num-a)/10)%10;
c=((num-a-10*b)/100)%10;
d=((num-a-10*b-100*c)/1000)%10;
printf("%11d%22d%33d%44d",a,b,c,d);
*/
//求位数
/* int num=2314;
char leap;
/*if((num/10000)!==0) printf("五位数");
else if((num/1000)!==0) printf("四位数");
else if((num/100)!==0) printf("三位数");
else if((num/10)!==0) printf("二位数");
else if((num/1)!==0) printf("个位数");
*/
//?
//
/* if(num>9999) putchar('5');
else if(num>999) putchar('4');
else if(num>99) putchar('3');
else if(num>9) putchar('2');
else putchar('1');
*/
/*
//输出最大值
int x1=23,x2=31525,x3=5235,x4=333;
int max=x1;
if(x2>max) printf("%d",max=x2);
else if(x3>max) printf("%d",max=x3);
else printf("%d",max=x4);
*/
//按序输出
/*
int a=432,b=2352,c=54,d=255;
int t;
if(a<b)
{t=a;a=b;b=t;}
if(a<c)
{t=a;a=c;c=t;}
if(a<d)
{t=a;a=d;d=t;}
if(b<c)
{t=b;b=c;c=t;}
if(b<d)
{t=b;b=d;d=t;}
if(c<d)
{t=c;c=d;d=t;}
printf("%11d\t%22d\t%33d\t%44d\t",a,b,c,d);
*/
int h;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x=1,y=0.2,d1,d2,d3;
d1=pow((x-x1),2)+pow((y-y1),2);
d2=pow((x-x2),2)+pow((y-y2),2);
d3=pow((x-x3),2)+pow((y-y3),2);
if(d1<1&&d2<1&&d3<1)
{
h=0;
printf("高度为%d",h);
}
else
{
h=10;
printf("10");
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main()
{
/* int x=1,y=0;
switch(x)
{
case 1:
switch(y)
{
case 0:printf("**1**");break;
case 1:printf("0");break;
}
break;
case 2: putchar('*');break;
}
*/
/* int x=33,c;
float y;
if(x<0) c=-1;
else c=x/10;
switch(c)
{
case -1: y=0;break;
case 0: y=x;break;
case 1: y=10;break;
case 2:
case 3: y=-0.5*x+20;break;
}
printf("y=%f",y);
*/
/*char grade='c';
switch(grade)
{
case 'a':printf("90~100");break;
case 'b':printf("80~90");break;
case 'c':printf("70~80");break;
case 'd':printf("60~70");break;
}
*/
/*int a=2,b=7,c=5;
switch(a>0)
{
case 1:
switch(b<0)
{
case 2:putchar('@');
case 1:putchar('!');
}
case 0:
switch(c==5)
{
case 1:putchar('#');break;
case 0:putchar('$');
}
default:putchar('&');
}
*/
//求某月某日到同年的某月某日的天数
/*int y=2002,m1=2,m2=2,d1=22,d2=28,d;
//y=(y%4==0&&y%100!=0||y%400==0)?1:0;
d=0-d1;
for(int i=m1;i<=m2;i++)
switch(i)
{
case 1:case 5:case 3:case 7:case 8:case 10:case 12:
d=d+31;break;
case 4:case 6:case 9:case 11:
d=d+30;break;
case 2:
if(y%4==0&&y%100!=0||y%400==0) {d=d+29;break;}
else d=d+28;break;
}
printf("%d",d+d2);
*/
/*int a=6,b=3,m=a*a+b*b;
int c=(a*a+b*b)>100;
switch(c)
{
case 1:printf("%d",m%100);break;
case 0:printf("%d",m);
}
*/
/*
int a=35;
if(a%5==0&&a%7==0) printf("yes");
else printf("no");
*/
//double x=22,y;
/*if(x<0) y=0;
else if(x>0&&x<=10) y=x;
else if(x>10&&x<=20) y=10;
else if(x>20&&x<=40) y=-0.5*x+20;
else putchar('?');
printf("%100.2f",y);
*/
//int num=13543;
//if(num%3==0&&num%5==0&&num%7==0) putchar("yes");
/*double x=2,y;
switch(x<0)
{
case 1:y=1;break;
case 0:switch(x==0)
{
case 1:y=0;break;
default:y=-1;break;
}
}
printf("%f",y);
*/
/*int a=12,b=21,c;
char op;
switch(op)
{
case '+':c=a+b;
case '-':c=a-b;
}
printf("%d",c);
#include <stdio.h>
int main()
{
/* int i,amount;
int m1=m2=m3=1344,m4=m5=m6=2000;
for(int i=1;i<=6;i++)
{total=total+m;
if(total>sum) break;
printf("num=%d",total);
}
*//*
//输出能整除3的100到300的数,注意continue容易搞反逻辑。
int i;
for(i=100;i<300;i++)
{
if(i%3!=0) continue; printf("%d\n",i);//能整除
}
*/
//输出一行数
//for(int i=1;i<=10;i++) printf("%5d",i);
//输出一列数
//for(int i=1;i<=10;i++) printf("%d\n",i);
//输出一个指定规律的矩阵
/*int x,y,n=0;
for(x=1;x<=4;x++)
for(y=1;y<=5;y++,n++)
{
if(n%5==0) printf("\n");
printf("%16d\t",x*y);
}
printf("\n");
*/
/*int hang,lie,n=0;
for(hang=1;hang<=5;hang++)//外循环控制输出五行数据
for(lie=1;lie<=4;lie++,n++)//内循环控制每行的四个数据hang*lie
{
if(n%4==0) printf("\n");//每行四个数输出完成就转行
printf("%16d\t",hang*lie); //按列输出一行,按tab位排输出
}
printf("\n");//该句可有可无
*/
//附加变形
/*int i,j,x=0;
for(j=1;j<=6;j++)
for(i=1;i<=4;i++,x++)
{
if(x%4==0) printf("\n");
// if(j==3&&i==1) break;//第三行为空,注意列标i必须等于1才能让整行为空
// if(j==2&&i==4) continue;//不输出第j行i列的值,其他数前移
printf("%19d\t",i+2*j);
}
*/
//判断素数
//法1用i整除num 2~num-1次
/*int num=7,i;
for(i=2;i<num;i++)
//法二 for(i=2;i<k;i++) k=sqrt(num)
//改进:调用库函数判断2~根号num之间的数,提高效率
if(num%i==0) break;
if(i<num) printf("%d is not a 素数 ",num);//通过i的值判断有没有被break中断流程,
//从而判断出是不是素数
else printf("%d is a 素数",num);
//法3直接判断是中途退出还是正常结束
for(n=1,i=2;i<=num;i++)
if(num%i==0) break;
if(i==num) printf("是素数")
*/
/*int n=0;
while(n++<=2);
printf("%d",n);
*/
//把一个整数写成俩个加数的和,且俩加数分别被两个数整除
/*int i=0,j,k;//
do
{
i++;
k=316-13*i;//循环取k
} while(k%11);//当k%11为真,循环进行,为假结束,即找到一个k能被11整除
j=k/11;
printf("316=13*%d+11*%d",i,j);
*/
/*int i=0,a,b;
do
{
i++;
a=200-5*i;
}while(a%8);
printf("%12d\t%12d\t",a/8,i);
*/
/*int i=0,a,b;
do
{
i++;
a=78-2*i;
}while(a%5);
printf("20=%d*2+%d*5",i,a/5);//√
*/
/*
int i=0,a,b;
a=104-8*i;
while(a%6)
{
i++;
a=104-8*i;//该语句必须在while前写出,不然(a%6)中a无初始值
} //while语句do while 语句转换的时候要注意括号里的变量有无初始值
printf("104=%d*8+%d*6",i,a/6);
*/
/*int a=1,b=10;
do
{
b=b-a;
a++;
}while(b--<0);
printf("%d%44d",a,b);
*/
/*char c=Total\r;
int v1=0,v2=0;
do
{switch(c)
{
case 'a':v1+=1;
case 't':case 'T':v2+=1;
default:v1+=1;v2+=1;
}
}while(c!=\r);
printf("%d%12d",v1,v2);
*/
/*int x,y;
for(y=1;y<10;y=((x=3*y,x+1),x-1))
if(y>10) break;
printf("%21d\n",y);
*/
//等于for(y=1;y<10;)
// y=((x=3*y,x+1),x-1);
//表达式3为空时用循环体内语句填补,达到的功能一样,但数值有区别
//如若
//for(y=1;y<10;y=((x=3*y,x+1),x-1))输出值和前两不同
/*
int x,y;
//for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf("%d%d",x,y);
//输出单个x,y
for(y=1;y<10;y=((x=3*y,x+1),x-1)) printf("%d",y);
//输出全部符合条件的y,即循环体为空时输出结果是一个序列
*/
/*int k=0;
do
{
++k;
}while(k>=0);
printf("%d",k);
*/
/*for(int i=1;i++<4;)
{if(i>3) break;
}
printf("%d",i);
*/
/*int m,x1,x2,x3;
m=4*x1+2;
m=7*x2+3;
m=9*x3+5;
printf("%d",m);
*/
//一堆零件按个数的不同的分组方案(根据不同因数和余数求整数)
/*int i;
for(i=100;i<200;i++)
if((i-2)%4==0)
if((i-3)%7==0)
if((i-5)%9==0)
printf("%d",i);//√
*/
/*int n;
for(n=200;n>100;n--)
if((n-4)%6==0)
if((n-3)%2==0)
printf("%d",n);
else putchar('A');
*/
//int sum=0,i=50;
/*for(i;i>=0;i--)
if(i%7==0) { printf("%d\t",i);
}
printf("sum=%d",sum+=i);
*/
int i,j=0,o=0;
for(i=0;i<=10;i++)
if(i%2==1) j+=i;
else o+=i;
printf("奇数和是%d\n 偶数和是%d"j,o);
return 0;
return 0;
}
}
#include<stdio.h>
#include<math.h>
int main()
{
/*
//求最大公约数
int m=9,n=6,r;
r=m%n;//取余运算表辗转相除
while(r)//while语句表达出数学中的 辗转相除法
//余数不为0时除数n赋值给m作为被除数,余数r赋值给n做除数;
//再循环做求余运算,直到r为0
{
m=n,n=r,r=m%n;
}
printf("%d",n);
*/
/* int l=123,m=21,n=32,r;
r=l%m;
while(r)
{
l=m,m=r,r=l%m;
// printf("%d\n",m);
}
printf("%d",m);
*/
//如何求三个数的最大公约数
//先求其中两个较小数的公约数,再求此公约数与最大数的公约数
/* int x1=12,t,x2=22,x3=4,r1,r2;
if(x1>x2) {t=x1;x1=x2;x2=t;}
if(x2>x3) {t=x2;x2=x3;x3=t;}
if(x1>x3) {t=x1;x1=x3;x3=t;}
r1=x2%x1;
r2=x3%r1;
while(r1)
{
x2=x1,x1=r1,r1=x2%x1;
}
printf("%d\n",x1);//r1=0时,r1前面的余数为被不断循环赋值后变化的到的x1
while(r2)
{
x3=r1,r1=r2,r2=x3%r1;
}
printf("%d\n",r1);//如果实在理解不了为什么输出的最大公约数用什么表示,
//就记住用循环体里中间语句的被赋值的变量。
//如何求多个数的最大公约数? 待解决,,,,,,,
*/
//求最大公倍数===两数的乘积/两数的最大公约数
//求2+22+222+2222+22222
//法1:for循环
/*int ton=0,a=2,sum=0;
for(int i=1;i<=5;i++)
{
int po=pow(10,i-1);
ton+=2*po;
// printf("%10d\t",ton);
sum+=ton;
}
printf("%d",sum);
*/
//法2:while循环
/*int i,ton=0,sum=0,a=2;
while(i<=5)
{
int po=pow(10,i-1);
ton+=2*po;
sum+=ton;
i++;
}
printf("%12d\t",sum);
*/
// 求阶乘
/*int i=1,jie=1;
for(i;i<=7;i++)
{
jie*=i;
}
printf("%d",jie);
*/
//求阶乘的和
/*int i,j,jie=1,sum=0;
for(i=1;i<=20;i++)
{
jie*=i;
sum+=jie;
}
//sum+=jie;
printf("%d",sum);
*/
//求前100项和
/*int sum=0;
for(int i=1;i<=100;i++)
{
//int sum=0; 若sum在for循环里定义则出错啦 !
sum+=i;
}
printf("%d",sum);
*/
//求前100项平方和
/*int sum=0,po=1;
for(int i=1;i<=100;i++)
{
po= pow(i,2);
sum+=po;
}
printf("%d",sum);
*/
//输出水仙花数
int bai=1,shi=1,ge=1;
for(int i=1;i<=1000;i++)
{
bai=i/100;
shi=i/10-bai*10;
ge=i%10;
if((i=ge*ge*ge+shi*shi*shi+bai*bai*bai)&&i>99) printf("%d\n",i);
}//cuo
return 0;
}
#include<stdio.h>
int main()
{
/* int i,a[10];
for(i=1;i<=10;i++)
{ a[i]=i;
printf("%d\t",11-a[i]);
}// for(i=10;i>=1;i--)
// printf("%d\t",a[i]);
*/
/*int i=0,a[10];
do
{
a[i]=i;
// i++;
printf("%d\t",a[i]);//printf语句前若出现会干扰输出结果的表达式就错了
// i++;//若i++放在打印语句前面就错了,
}while(i<10);
*/
// int i=0,a[4]={1,2,3,4};
//for(i;i<=4;i++)//应改为i<4,数组下标是从0开始的
//printf("%d\t",a[i]);
/*int i,sum=0,a[10]={0};
for(i=1;i<10;i++)
sum+=a[i];
printf("%d",sum);
*/
/* int j, i,t=0,a[10]={6,2,8,3,5,1,9};
for(j=1;j<=6;j++)
{
for(i=1;i<=7;i++)
{
if(a[i]<a[i+1]) t=a[i],a[i]=a[i+1],a[i+1]=t;
printf("%d\t%d\t",a[i]);
}
printf("%d\t",a[i]);
*///cuo
//冒泡排序法
/*int a[]={10,6,8,5,2,};//初始化一个数组
int i,j,t;
for(i=0;i<5;i++) //5个数排序,比4趟
for(j=0;j<5-i;j++) //因为数组下表从零开始,故j=0;比第i趟,换5-i次
if(a[i]<a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<5;i++) //输出序列
printf("%12d",a[i]);
*/
/*int a[]={262,25,346,234,31,166,96,135,134,12356};
int i,j,t;
//先排序
for(i=0;i<9;i++) //i表示下标,表比几次
for(j=0;j<9-i;j++)//j表示换的次数,递减
if(a[j]<a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;//注意三个表达式之间是分号,易错!
}
//再输出
for(i=0;i<10;i++)
printf("%d\t",a[j]);
*/ // cuo
/*int a[]={253,1356,1436,123,3,346};
int i,j,t;
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(a[j]<a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
for(j=0;j<6;j++) //注意输出时是j<6才能输出所有数,j<6时输出的是部分有序数的排列
printf("%13d\t",a[j]);
*/
//√
//该程序代码中i,j要分清楚,i只在前面外城循环出现一次。
/*
int a[]={235,43245,3264,43623,123523,4154367,134343516,3};//此处花括号后面的分号不可省略
int i,j,t;
for(i=0;i<7;i++)
for(j=0;j<7-i;j++)
if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}//花括号后分号可以省略,这是if语句
for(j=0;j<8;j++)
printf("%10d",a[j]);
*/
int a[]={43634,46436,23,145,87,156,6945,780,234};
int x,y,t;
for(x=0;x<8;x++)
for(y=0;y<8-x;y++)
if(a[y]<a[y+1]) {t=a[y];a[y]=a[y+1];a[y+1]=t;}
for(y=0;y<9;y++)
printf("%1d\t",a[y]);
//注意数字变化x<8,y<8-x,y<9.
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
//矩阵转置:
//从先初始化一个待转置的矩阵,再定义1个矩阵,用for先实现两矩阵的行列互换,
//在用一个for实现矩阵输出
/*
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int b[3][3],i,j,t;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
b[j][i]=a[i][j];
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%6d",b[i][j]);
printf("\n");
}
*/
/*
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j,t;
for(i=0;i<2;i++)//用for按a的行列数给b赋值
{
for(j=0;j<3;j++)
b[j][i]=a[i][j];
printf("\n");
}
for(i=0;i<3;i++) //用for按转置后的a的行列数输出b【i由2变为3,j由3变为2】
{ //或者i,j值不变,但交换内外层循环顺序也可,见下一程序
for(j=0;j<2;j++)
printf("%5d",b[i][j]);
printf("\n");
}
*/ //√
/*
int a[1][5]={1,2,3,4,5};
int b[5][1],i,j,t;
for(i=0;i<1;i++)
{
for(j=0;j<5;j++)
b[j][i]=a[i][j] ;
printf("\n");
}
for(j=0;j<5;j++)
{
for(i=0;i<1;i++)
printf("%4d",b[j][i]);
printf("\n");
}
*/
//求取矩阵中特定的数(的行列号)
/*
int a[2][3]={{1,242,3},{4,34236,6}},i,j,max,t,h,l;
max=a[0][0];
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(max<a[i][j])
{
max=a[i][j];h=i+1;l=j+1;//此处应该改为h=i+1,l=j+1.
//否则得出的行列都少一位
}
}
}
printf("最大的数是第%d行第%d列的%d",h,l,max);
*/
/*
int a[3][3]={{34,525,643},{2342,34,32},{2,466,4}};
int i,j,min,h,l;
for(i=1;i<=3;i++)//i,j初始值赋为0!
{
for(j=1;j<=3;j++)
if(min>a[i][j])
{min=a[i][j];h=i;l=j;}
}
printf("最小的数是第%d行第%d列的%d",h,l,min);
*/ //cuo
//char a[]={"slhgdjkdf"};
//printf("%s",aint a[]={1,2,3,4};
//printf("%3d",a);
//char a[]={"aspogghjido"};
//printf("%s\t",a);
//用字符型数组输出一串字符
// 1
//char a[]={"gomperap"};
//printf("%s",a);//输出项是数组名不是数组元素a[]
// 2
//int a[]={"dfjkhd"};
//printf("%s",a);
//char c[10]={"china"};
//printf("%s",c);
//char c[]="\t\v\\\0will\n";
// printf("%d",strlen(c));
//char str1[]={"af"},str2[]={"ca"};
//if(strcmp(str1,str2)>0) printf("yes");
//char str1[40]="china",str2[]="is a big state";
//此处若为str1[]="china"就错了,str1数组太小了放不下str2
//printf("%s",strcat(str1,str2));
//char str1[]=",,AAAFGW, love jty",str2[]="qwysffddjty";
//printf("%d",strupr("FEFdsfs"));
/*
//统计一句话中单词的数量
//判断出现新单词:
// 当前字符=空格?是:没有出现新单词
// 否:前一个字符是空格?是:出现了新单词
// 否:没出现
char str[]={"avsad dsdvfe scdd sdv w vb d dfee"};
int i,num,word;
char c;
for(i=0;(c=str[i])!='\0';i++) //没遇到结束标识就一直进行下去
if(c==' ') word=0;//判断状态归零,
else if(word==0)//当前字符为字母且word=0即之前没有出现新单词
{ //则出现了新单词
word=1;//用0,1赋值给word来表示新单词有没有出现的状态
num++;
}
printf("%d",num);
*/
/*
char str[]="q w yon love jiang tian yu";
int i,word=0,num=0;char c;
for(i=0;(c=str[i])!='\0';i++) //赋值表达式c=str[i]需加括号
if(c==' ') word=0;//单引号之间表空格键要点一下空格
else if(word==0) {word=1;num++;}
printf("%d",num);
*/
/*
char str[]="asd asdd sadd asdd";
int i,num=0,word=0;char c;
for(i=0;(c=str[i])!=0;i++)
if(c==' ') word=0;
else if(word==0)
{
word=1;
num++;
} //{word=1;num++}是常出现的错误(少了分号),因此花括号尽量和语句另起一行
printf("%d",num);
*/
//求三个字符串最大者
/*char str[3][26]={{"dsfdsvnngrrrg"},{"dfwed3dcc/"},{"fakk,lmo"}};
char string[31];int i;
for(i=0;i<3;i++)//将二维数组看做三个一维数组
if(strcmp(str[0],str[1])>0) // string[]=str[0];不能直接赋值,需用到复制函数,错误
strcpy(string,str[0]);//正确
else strcpy(string,str[1]);//将后面的复制到前面
if(strcmp(string,str[2])<0) strcpy(string,str[2]);
printf("%s",string);
//注意用法,strcmp函数括号中用的是数组名,该题一维数组名为string不是string[31],
//二维数组名为str,但tr[0],str[1],str[2]可看做是一维数组名
*/
/*
char s[3][235]={{"sdgbssv"},{"ghff"},{"qwq"}};
char c[29];//定义一个一维数组作交换中介,不可定义为c[]
int i;
for(i=0;i<3;i++)
if(strcmp(s[0],s[1])>0) strcpy(c,s[0]);
else strcpy(c,s[1]);
if(strcmp(s[2],c)>0) strcpy(c,s[2]);
printf("%s",c);
*/
/*
char str[3][222]={{"vb"},{"cd"},{"asx"}};
char c[10];int i;
for(i=0;i<3;i++)
if(strcmp(str[0],str[1])<0) strcpy(c,str[0]);
else strcpy(c,str[1]);
if(strcmp(str[2],c)<0) strcpy(c,str[2]);
printf("%s",c);
*/
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
//将字符串2按字符串1的排序规律插入字符串1
/*
//记住模板,变量顺序固定不要变
char a[20]="cehiknqtw",b[]="fbla";
int i,j,k;
for(j=0;b[j]!='\0';j++) //取b中四个元素进行下面操作
{
i=0;
while(b[j]>=a[i]&&a[i]!='\0') i++;// 循环判断,找插入点
for(k=strlen(a);k>=i;k--)//插入 //
a[k+1]=a[k];//其他元素从后面开头往后移一位
a[i]=b[j]; //将b[j]插入空出的a[i]上
}
puts(a);
*/
/*char a[23]="acdj",b[]="efxb";
int i,j,k;
for(j=0;b[j]!='\0';j++)
{
i=0;
while(b[j]>=a[i]&&a[i]!='\0') i++;
for(k=strlen(a);k>=i;k--)
{
a[k+1]=a[k];
a[i]=b[j];
}
}
puts(a);
*/
/*
int a[]={211,325,45,432,36,131,25,2552,123,4};
int min,i,j,t;
for(i=0;i<9;i++)
{
min=i;
for(j=i+1;j<10;j++)
if(a[j]<a[min]) a[min]=a[j];
{
t=a[i];a[i]=a[min],a[min]=t;
}
}
for(i=0;i<10;i++)
printf("%14d",a[i]);
*/
// 筛选法求100内素数
//算法思路:首先1不是素数(约数除了1么了)用0来标识,依次用2,3,4,,来除后面的数
//能整除就赋值为0,留下的都是素数。
//第一个for:写出数组。中间两个for:除掉非素数。第四个for:输出所有素数
/*
int a[100];
int i,j;
//先写出100内的数,表示出改数组
for(i=0;i<100;i++)
{
a[i]=i+1;
}
//1不是素数
a[0]=0;
for(i=1;i<100;i++)
{
if(a[i]==0) continue;
//用a[i]除a[i]后面的所有数,去除非素数
for(j=i+1;j<100;j++)
{
if((a[j]!=0)&&a[j]%a[i]==0)
{
a[j]=0;
}
}
}
//输出所有素数
for(i=0;i<100;i++)
if(a[i]!=0) printf("%d\t",a[i]);
*/
/* //√
int a[50];
int i,j;
for(i=0;i<50;i++)
{
a[i]=i+1;
}
a[0]=0;//用0表示a[0]去除非素数
for(i=1;i<50;i++)
{
if(a[i]==0) continue;
for(j=i+1;j<50;j++)
if(a[j]%a[i]==0)//用后面的数整除前面的数
a[j]=0;
}
for(i=1;i<50;i++)
{
if(a[i]!=0)//如果没有这个判断句,会输出好多0,一共会输出50个数。
printf("%4d",a[i]);
}
*/
/* //√
int a[200],i,j;
for(i=0;i<200;i++)
{
a[i]=i+1;
}
a[0]=0;
for(i=1;i<200;i++)
{
if(a[i]==0) continue;
for(j=i+1;j<200;j++)
{
if(a[j]%a[i]==0)
a[j]=0;//将非素数赋值为0,后面用一个if判断语句删除这些0值
}
}
for(i=0;i<200;i++)
{
if(a[i]!=0) printf("%4d",a[i]);
}
*/
// 判断素数
//基本方法
//用2~n-1中间的数分别除num
/*
int num=7,i,j;
for(i=2;i<15;i++)
if(num%i==0)
{ printf("%d 不是素数",num);break;
}
else
{putchar('Y');break;}
*/
/*int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if((i+j==2)||(i==j)) sum+=a[i][j];
}
printf("%d",sum);
*/
return 0;
}
#include<stdio.h>
int main()
{
//将一个数插入有序数组中
/* int a[10]={1,5,8,10,12,34},num=3;
int i,j,t1,t2;
if(num>a[5]) a[6]=num;//num大于最大数,直接加后面
else
{
for(i=0;i<6;i++)//num小于最大数,与每个数比较一次
{
if(a[i]>num)//直到在数中找到第一个大于num的数
{
t1=a[i];a[i]=num;//从第一个大于num的数开始的数全部往后移一位
//num添入a[i]的位置
for(j=i+1;j<7;j++)
{//用循环换值的方式来实现移位
t2=a[j];
a[j]=t1;//a[j]即a[i+1] a[i]和a[i+1]换值,但不可写成a[i]
t1=t2;
}
break;
}
}
}
for(i=0;i<7;i++)
printf("%4d",a[i]);
*/
/*
int a[10]={1,4,7,9,22,77},num=45,i,j,t1,t2;
if(a[5]<num) a[6]=num;
else
{
for(i=0;i<6;i++)
{
if(a[i]>num)
{
t1=a[i];a[i]=num;
for(j=i+1;j<7;j++)
{
t2=a[j];
a[j]=t1;
t1=t2;
}
break;
}
}
}
for(i=0;i<7;i++)
printf("%4d",a[i]);
*/ //√
/*
int a[10]={1,5,9},num=4;
int i,j,t1,t2;
if(a[2]<num) a[3]=num;
else
{
for(i=0;i<3;i++)
{
if(a[i]>num)
{
t1=a[i];a[i]=num;
for(j=i+1;j<4;j++)
{
t2=a[j];
a[j]=t1;
t1=t2;
}
break;
}
}
}
for(i=0;i<4;i++)
printf("%3d",a[i]);
*/ //√
// 逆序输出有序数
/*int a[]={12,14,23,34,45,56};
int i,j,t;
for(i=0;i<6/2;i++)
{
t=a[i];
a[i]=a[6-1-i]; //注意在数组里面一组对称有序数用a[i]和a[n-i-i]表示
a[6-1-i]=t; //n-1表示的是数组最后一个数标号
}
for(i=0;i<6;i++)
printf("%4d",a[i]);
*/
/*int a[]={111,222,444,666,999};
int i,j,t,r=5/2;
for(i=0;i<r;i++)
{
t=a[i];
a[i]=a[5-1-i];//此处容易错写成a[i]=a[5-i]
a[5-1-i]=t;
}
for(i=0;i<5;i++)
printf("%4d",a[i]);
*/
// 输出杨辉三角形
/* int a[10][10];
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
if(j==1||i==j) a[i][j]=1;
else a[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=0;i<10;i++)
for(j=0;j<=i;j++)
{
printf("%15d",a[i][j]);
if(i==j) printf("\n");
}
*/ /// 失败
/* int a[10][10];
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<10;j++)//易错点j<i-1
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=0;i<10;i++)
for(j=0;j<=i;j++)//易错点j<=i
{
printf("%5d",a[i][j]);
if(i==j) printf("\n");
}
*/ //失败
/*
int a[8][8];
int i,j;
for(i=0;i<8;i++) //写出外壳为1
for(j=0;j<8;j++)
{
a[i][0]=1;
a[j][j]=1;//易错点换作i也可以
}
for(i=2;i<8;i++) //从第三行第二列开始写值
for(j=1;j<=i-1;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=0;i<8;i++)
for(j=0;j<=i;j++)
{
printf("%4d",a[i][j]);
if(i==j) printf("\n");//控制排版
}
//对于j的 三个for循环控制表达式,j的范围逐渐变小
*/ //√
/*
int b[]={1,2,3,4,5,6,7,8,9};
int a[3][3];
int i,j,s,n;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(i==j||i+j==2) s+=a[i][j];
else a[0][j]+a[1][j]+a[2][j]==a[i][0]+a[i][1]+a[i][2]==s;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++,n++)
{
printf("%d\t",a[i][j]);
if(n%3==0) printf("\n");
*/
return 0;
}