1、用筛选法求100以内素数
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int i,j,n,a[101]; 6 for(i=1;i<=100;i++) 7 a[i]=i; 8 a[1]=0; 9 for(i=2;i<sqrt(100);i++) 10 for(j=i+1;j<=100;j++) 11 { 12 if(a[i]!=0&&a[j]!=0) 13 if(a[j]%a[i]==0) 14 a[j]=0; 15 } 16 printf(" "); 17 for(i=2,n=0;i<=100;i++) 18 {if(a[i]!=0) 19 {printf("%5d",a[i]); 20 n++; 21 } 22 if(n==10) 23 {printf(" "); 24 n=0; 25 } 26 } 27 printf(" "); 28 return 0; 29 }
2、用选择法对十个整数排序
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,min,temp,a[11]; 5 printf("enter data: "); 6 for(i=1;i<=10;i++) 7 { 8 printf("a[%d]=",i); 9 scanf("%d",&a[i]); 10 } 11 printf(" "); 12 printf("the number is"); 13 for(i=1;i<=10;i++) 14 printf("%5d",a[i]); 15 printf(" "); 16 for(i=1;i<=9;i++) 17 {min=i; 18 for(j=i+1;j<=10;j++) 19 if(a[min]>a[j]) 20 21 /* min=j;//法1 22 temp=a[i]; 23 a[i]=a[min]; 24 a[min]=temp;*/ 25 {temp=a[i]; //法2 26 a[i]=a[j]; 27 a[j]=temp;} 28 } 29 printf("number is: "); 30 for(i=1;i<=10;i++) 31 printf("%5d",a[i]); 32 printf(" "); 33 return 0; 34 }
3、求一个3*3矩阵对角元素之和1
1 #include<stdio.h> 2 int main() 3 { 4 int a[3][3],sum=0; 5 int i,j; 6 printf("enter data:"); 7 for(i=0;i<3;i++) 8 for(j=0;j<3;j++) 9 scanf("%d",&a[i][j]); 10 for(i=0;i<3;i++) 11 sum=sum+a[i][i]; 12 printf("sum=%6d ",sum); 13 return 0; 14 }
4、将一个数插入到已经排好的数组中
1 //假设为升序排序 2 #include<stdio.h> 3 int main() 4 { 5 int a[11]={1,4,6,9,13,16,19,28,40,100}; 6 int temp1,temp2,number,end,i,j; 7 printf("array a: "); 8 for(i=0;i<10;i++) 9 printf("%5d",a[i]); 10 printf(" "); 11 printf("inset data:"); 12 scanf("%d",&number); 13 end=a[9]; 14 if(number>a[9]) 15 a[10]=number; 16 else 17 { 18 for(i=0;i<10;i++) 19 {if(a[i]>number) 20 {temp1=a[i]; 21 a[i]=number; 22 for(j=i+1;j<11;j++) 23 {temp2=a[j]; 24 a[j]=temp1; 25 temp1=temp2; 26 } 27 break; 28 } 29 } 30 } 31 printf("now array a: "); 32 for(i=0;i<11;i++) 33 printf("%5d",a[i]); 34 printf(" "); 35 return 0; 36 }
5、将数组中的值逆序排放
1 #include<stdio.h> 2 #define N 6 3 int main() 4 { 5 int a[N],i,temp; 6 printf("enter array : "); 7 for(i=0;i<N;i++) 8 scanf("%d",&a[i]); 9 printf("array a: "); 10 for(i=0;i<N;i++) 11 printf("%4d",a[i]); 12 for(i=0;i<N/2;i++) 13 {temp=a[i]; 14 a[i]=a[N-i-1]; 15 a[N-i-1]=temp; 16 } 17 printf(" now array is: "); 18 for(i=0;i<N;i++) 19 printf("%4d",a[i]); 20 printf(" "); 21 return 0; 22 }
6、杨辉三角形
1 #include<stdio.h> 2 #define N 10 3 int main() 4 { 5 int i,j,a[N][N]; 6 for(i=0;i<N;i++)//先让对角线和第一列等于1 7 {a[i][i]=1; 8 a[i][0]=1; 9 } 10 for(i=2;i<N;i++)//从第三行开始 11 for(j=1;j<=i-1;j++)//从第二列开始 12 a[i][j]=a[i-1][j-1]+a[i-1][j];//等于上一列元素加上上一列元素的前一个元素 13 for(i=0;i<N;i++) 14 { 15 for(j=0;j<=i;j++) 16 printf("%6d",a[i][j]); 17 printf(" ");//每一行结束换行 18 } 19 printf(" "); 20 return 0; 21 }
7、输出魔方阵
1 #include<stdio.h> 2 int main() 3 { 4 int a[15][15],i,j,k,p,n; 5 p=1; 6 while(p==1) 7 { 8 printf("enter n(n=1--15):"); 9 scanf("%d",&n); 10 if((n!=0)&&(n<=15)&&(n%2!=0)) 11 p=0; 12 } 13 //初始化 14 for(i=1;i<n;i++) 15 for(j=1;j<=n;j++) 16 a[i][j]=0; 17 //建立魔方阵 18 j=n/2+1; 19 a[1][j]=1; 20 for(k=2;k<=n*n;k++) 21 { 22 i=i-1; 23 j=j+1; 24 if((i<1)&&(j>n)) 25 { i=i+2; 26 j=j-1;} 27 else 28 {if(i<1) i=n; 29 if(j>n) j=1;} 30 31 if(a[i][j]==0) 32 a[i][j]=k; 33 else 34 {i=i+2; 35 j=j-1; 36 a[i][j]=k; 37 } 38 } 39 //输出 40 for(i=1;i<=n;i++) 41 {for(j=1;j<=n;j++) 42 printf("%5d",a[i][j]); 43 printf(" "); 44 } 45 return 0; 46 }
8、找出二维数组中的鞍点,即在该行最大,该列最小
1 #include<stdio.h> 2 #define N 4 3 #define M 5 4 int main() 5 { 6 int i,j,k,a[N][M],max,maxj,flag; 7 printf("please input matrix: "); 8 for(i=0;i<N;i++) 9 for(j=0;j<M;j++) 10 scanf("%d",&a[i][j]); 11 for(i=0;i<N;i++)//循环N行 12 { 13 max=a[i][0]; 14 maxj=0; 15 for(j=0;j<M;j++) 16 if(a[i][j]>max)//找到行最大 17 {max=a[i][j]; 18 maxj=j; 19 } 20 flag=1; 21 for(k=0;k<N;k++)//判断是不是列最小 22 if(max>a[k][maxj]) 23 {flag=0; 24 continue;} 25 if(flag) 26 {printf("a[%d][%d]=%d ",i,maxj,max); 27 break;} 28 } 29 if(!flag) 30 printf("not exit! "); 31 return 0; 32 }
9、折半法查找元素
1 #include<stdio.h> 2 #define N 15 3 int main() 4 { 5 int i,number,top,bott,mid,loca,a[N],flag=1,sign; 6 char c; 7 printf("enter data: "); 8 scanf("%d",&a[0]); 9 i=1; 10 while(i<N) 11 { 12 scanf("%d",&a[i]); 13 if(a[i]>a[i-1]) 14 i++; 15 else 16 printf("enter again: "); 17 } 18 printf(" "); 19 for(i=0;i<N;i++) 20 printf("%5d",a[i]); 21 printf(" "); 22 while(flag) 23 { 24 printf("enput number:"); 25 scanf("%d",&number); 26 sign=0; 27 top=0; 28 bott=N-1; 29 if((number<a[0])&&(top>a[N-1])) 30 loca=-1; 31 while((!sign)&&(top<=bott)) 32 { 33 mid=(bott+top)/2; 34 if(number==a[mid]) 35 {loca=mid; 36 printf("%d,is %d ge ",number,loca+1); 37 sign=1; 38 } 39 else if(number<a[mid]) 40 bott=mid-1; 41 else 42 top=mid+1; 43 } 44 if(!sign||loca==-1) 45 printf("not "); 46 printf("y/n"); 47 scanf("%C",c); 48 if(c=='N'||c=='n') 49 flag=0; 50 } 51 return 0; 52 }
10、统计三行文字大写字母、小写字母、数字、空格、以及其他字符的个数。
1 #include<stdio.h> 2 int main() 3 { 4 int i,j,upp,low,dig,spa,oth; 5 char text[3][80]; 6 upp=low=dig=spa=oth=0; 7 for(i=0;i<3;i++) 8 {printf("please enter line%d: ",i+1); 9 gets(text[i]); 10 for(j=0;j<80&&text[i][j]!='