1. 三角形的边
源代码:
#include <stdio.h>void fun(int a,int b,int c){ int min,mid,max; int t; if(a>b) t=a,a=b,b=t; if(b>c) t=b,b=c,c=t; if(a>b) t=a,a=b,b=t; min=a,mid=b,max=c; PRintf("%d/n",min+mid-max);}int main(){ int a,b,c; while(scanf("%d %d %d",&a,&b,&c)!=EOF) { if(a==0) break; fun(a,b,c); } return 0;}程序截图:2. 平方因子
源代码:
#include <stdio.h>int main(){ int i,n; int flag; while(scanf("%d",&n)!=EOF) { flag=0; if(n==0) break; for(i=2;i<n;i++) { if(n%i==0 && (i*i)%n==0) { flag=1; break; } } if(flag==1) printf("Yes/n"); else printf("No/n"); } return 0;}程序截图:3. 排列与二进制
分析:正常的顺序应该先求出排列数,再将其转化成二进制数,之后进行末尾连续0的判断,但是要注意其中有几个难点: ①求排列数的结果是否越界,越界之后用数组是否方便? ②转换成二进制也需要存入数组中。 但是根据十进制转换成二进制的商除法就会发现,不断除以2,先出现的就是最后二进制从后往前的数(即除2取余)。故要求二进制末尾的连续0的个数,只要看n(n-1)(n-2)……(n-m+1)最多可以整除几个2即可(利用此方法可以避免可能的数组越界和int型超精度问题)
源代码:
#include <stdio.h>int main(){ int n,m; int i,t,num; //num记录排列数后面0的个数 while(scanf("%d %d",&n,&m)!=EOF) { num=0; if(n==0) break; for(i=n-m+1;i<=n;i++) // n*(n-1)*(n-2)*...*(n-m+1) { t=i; while(t%2==0) //除2取余得0时,即为排列数后面的0 { num++; t/=2; //除2 } } printf("%d/n",num); } return 0;}程序截图:4. 怪异的洗牌
源代码:
#include <stdio.h>#define maxn 1000void Shift(int poker[],int result[],int x,int n) //移位(数组循环移位问题) { int i,j=0; for(i=x;i<n;i++) //将数组第x+1个元素到最后一个元素移到最前面 result[j++]=poker[i]; for(i=0;i<x;i++) //其余元素置后 result[j++]=poker[i];}void Flip(int result[],int half) //翻转(数组逆置/逆序输出问题) { int i=0,j=half-1; //以下用逆序存储完成 int temp; while(i<j) { temp=result[i]; result[i]=result[j]; result[j]=temp; i++,j--; }}int main(){ int i,n,k,x; int t,half; //t-移位/翻转操作次数 half-翻转操作标记 int poker[maxn],result[maxn]={0}; //两数组分别记录操作前和操作后的牌 while(scanf("%d %d",&n,&k)!=EOF) { if(n==0) break; t=0; for(i=0;i<n;i++) //操作前扑克牌赋值 poker[i]=i+1; while(t<k) { scanf("%d",&x); Shift(poker,result,x,n); //移位操作 结果存入result数组 if(n%2==0) //确定翻转操作位置 half=n/2; else half=(n-1)/2; Flip(result,half); //在上述result数组结果基础上翻转 t++; for(i=0;i<n;i++) //将一轮操作结束后的结果赋给poker数组(之前因为忽略此步操作WA了,k>1时将会派上大用场:( ) poker[i]=result[i]; } for(i=0;i<n;i++) //k次操作结束后的结果 printf("%d ",result[i]); printf("/n"); } return 0;}程序截图:
新闻热点
疑难解答