机试快过去一个月了,现在把代码整理一下,做个纪念吧。
1.忘记是什么题目了,简单的迭代,类似“兔子的繁殖”、“斐波那契数列”之类的~
1 #include<stdio.h> 2 3 #define N 100000 4 int arr[N]; 5 void Init(); 6 void main() 7 { 8 int i; 9 Init(); 10 while(scanf("%d",&i)!=EOF) 11 { 12 printf("%d ",arr[i]); 13 } 14 } 15 void Init() 16 { 17 int i; 18 arr[0] = 1; 19 arr[1] = 1; 20 arr[2] = 2; 21 for(i=3 ; i<=100000 ; i++) 22 { 23 arr[i] = arr[i-1]+arr[i-2]+arr[i-3]; 24 } 25 }
2.约瑟夫环问题
1 #include<stdio.h> 2 #define N 1000 3 int arr[N]; 4 int Next(int k,int n); 5 void main() 6 { 7 int n,k,m,i,cnt,sum; 8 char ch; 9 while(scanf("%d%d%d",&n,&k,&m)!=EOF) 10 { 11 ch = getchar(); 12 //Init 13 k-=1; 14 for(i=0 ; i<n ; i++) arr[i]=1;//1 means the elem in queue 15 //Deal 16 sum=1; 17 while(sum<n) 18 { 19 cnt=0; 20 while(cnt<m) 21 { 22 cnt++; 23 //Get Next 24 if(cnt!=m) k=Next(k,n); 25 } 26 printf("%d",k+1); 27 sum++; 28 if(sum == n) 29 { 30 printf("\n"); 31 break; 32 } 33 else 34 printf(","); 35 36 arr[k]=0; 37 k=Next(k,n); 38 } 39 } 40 } 41 int Next(int k,int n) 42 { 43 int i=k; 44 do{ 45 i=(i+1)%n; 46 }while(arr[i]==0); 47 return i; 48 }
3.输入英文数字表达式,输出对应结果:
例如:123 + 20 =
就输入:one two three + two zero =
应输出:143
1 #include<stdio.h> 2 #include<string.h> 3 4 char strNo[10][10]={ 5 "zero","one","two","three","four","five","six","seven","eight","nine" 6 }; 7 8 void main() 9 { 10 int i,a=1,b=1,t; 11 char temp[10]; 12 while(a!=0 || b!=0) 13 { 14 t=0; 15 while(scanf("%s",temp),temp[0] != '=') 16 { 17 if(temp[0] == '+') 18 { 19 a=t; 20 t=0; 21 } 22 else 23 { 24 for(i=0;i<10;i++) 25 { 26 if(strcmp(temp,strNo[i]) == 0) 27 { 28 t*=10; 29 t+=i; 30 break; 31 } 32 } 33 } 34 } 35 b=t; 36 if(a!=0 || b!=0) 37 printf("%d\n",a+b); 38 } 39 }
4.统计每个分数线都有多少人
输入n(人数)然后输入n个分数
统计每个分数都有多少人。
1 #include<stdio.h> 2 #include<string.h> 3 int arr[101]; 4 void main() 5 { 6 int i,n,idx,sc; 7 while(scanf("%d",&n),n) 8 { 9 memset(arr,0,sizeof(arr)); 10 for(i=0;i<n;i++) 11 { 12 scanf("%d",&idx); 13 arr[idx]++; 14 } 15 scanf("%d",&sc); 16 printf("%d\n",arr[sc]); 17 } 18 19 }
5.把100-999之间不含9的素数写到result.txt文件中【采用筛选法打表】
1 #include<stdio.h> 2 #include<string.h> 3 int arr[1001]; 4 void Init(); 5 int IsLegal(int i); 6 int main() 7 { 8 int i,cnt; 9 FILE *fp; 10 if((fp=fopen("result.txt","w")) == NULL) 11 { 12 printf("OPEN FILE ERROR!\n"); 13 return -1; 14 } 15 Init(); 16 cnt=0; 17 for(i=100;i<=1000;i++) 18 { 19 if(arr[i]==0 && IsLegal(i)) 20 { 21 cnt++; 22 fprintf(fp,"%-5d",i); 23 } 24 } 25 fprintf(fp,"\n一共有%d个。\n",cnt); 26 fclose(fp); 27 return 0; 28 } 29 void Init() 30 { 31 int i,j; 32 memset(arr,0,sizeof(arr)); 33 for(i=2;i<=35;i++) 34 { 35 for(j=i+i;j<=1000;j+=i) 36 arr[j]=1; 37 } 38 } 39 int IsLegal(int i) 40 { 41 int n=i; 42 while(n!=0) 43 { 44 if(n%10==9) 45 return 0; 46 n/=10; 47 } 48 return 1; 49 }
本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/11/06/2756273.html,如需转载请自行联系原作者