@Arbalest-Laevatain
2018-05-21T15:32:32.000000Z
字数 3708
阅读 1211
C语言
/******
******/
int min(int x, int y, int z)/* 返回3个整数x,y和z中最小的数 */{int min=x;if (y<min){min=y;}if (z<min){min=z;}return min;}
/******
支付n元钱共有多少种支付法?
例如,16元可有6种支付方法:
方法 1 2 3 4 5 6
10元 0 0 0 0 1 1
5元 0 1 2 3 0 1
1元 16 11 6 1 6 1
******/
int change(int n){int m=0;int x=1,i,y=5,j,z=10,k;for (i=0;i<=n;i++){for (j=0;j<=n;j++){for (k=0;k<=n;k++){if (i*x+j*y+k*z == n)m++;}}}return m;}int change(int n){int i,j,k,t=0;for (i=0;i<n/10;i++){k=(n-i*10)/5;for (j=0;j<=k;j++){t++;}}return t;}
/******
将一个偶数表示为两个素数之和,并返回其中较小的素数。
注:素数指只能被1和自身整除的正整数。规定0,1不是素数。
******/
int prime(int n)/* 判断素数,如果是素数返回1,不是素数则返回0 */{int flag=1,i;for (i=2;i<n;i++){if (n%i==0){flag=0;return flag;}}return flag;}int f(int i)/* 将偶数i表示为两个素数之和,返回其中较小的素数*/{int max=0,min=0,j,k;for (j=1;j<i;j++){for (k=1;k<i;k++){if (prime(j) && prime(k) && j+k==i){if (j<k){min=j;max=k;if (min>1)return min;}}}}return min;}
/******
放在第一个字符位置,其余字符依次往后移。
******/
void func(char *str)/* 将字符串str中ASCII码最小的字符放在第一个 *//* 字符位置,其余字符依次往后移。 */{int i,t=0;char min=str[0];int l=strlen(str);for (i=0;i<l;i++){if(str[i]<min){min=str[i];t=i;}}if (t)for (i=t-1;i>=0;i--){str[i+1]=str[i];}str[0]=min;}
/******
例如:翻转前的数组 翻转后的数组
1 2 3 9 6 3
4 5 6 ---> 8 5 2
7 8 9 7 4 1
******/
void invert(char a[N][N]){int i,j,k;for (i=0;i<N;i++){for (j=0;j<N-i;j++){k=a[i][j];a[i][j]=a[N-1-j][N-1-i];a[N-1-j][N-1-i]=k;}}}
/******
例如:翻转前的数组 翻转后的数组
1 2 3 7 8 9
4 5 6 ---> 4 5 6
7 8 9 1 2 3
******/
void invertH(char a[N][N]){int i, j;char t[N];for (i = 0; i < N / 2; i++){for (j = 0; j < N; j++){t[j] = a[i][j];a[i][j] = a[N - 1 - i][j];a[N - 1 - i][j] = t[j];}}}
/******
例如:翻转前的数组 翻转后的数组
1 2 3 3 2 1
4 5 6 ---> 6 5 4
7 8 9 9 8 7
******/
void invertV(char a[N][N]){int i, j;char t;for (i = 0; i < N; i++){for (j = 0; j < N / 2; j++){t = a[i][j];a[i][j] = a[i][N - 1 - j];a[i][N - 1 - j] = t;}}}
/******
“顺时针”轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 4 1 2
4 5 6 ---> 7 5 3
7 8 9 8 9 6
******/
void turningClockwise(char a[N][N]){t1 = a[0][N - 1];t2 = a[N/2][0];t3 = a[N/2][N - 1];t4 = a[N-1][0];for (i = N-1; i >0; i--){a[0][i] = a[0][i-1];}for (i = 1; i < N ; i++){a[N-1][i-1] = a[N-1][i];}a[0][0] = t2;a[1][N - 1] = t1;a[N - 1][N - 1] = t3;a[N / 2][0] = t4;}void turningClockwise(char a[N][N]){int i;int float=1;int t=a[0][N-1];for (i=N;i>0;i--)a[0][i]=a[0][i-1];for (i=0;i<N;i++)a[i][0]=a[N-1][i+1];for (i=N-1;i>0;i--)a[i][N-1]=a[i-1][N-1];a[1][N-1]=t;}
/******
周边元素“逆时针”轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 2 3 6
4 5 6 ---> 1 5 9
7 8 9 4 7 8
******/
void turningAnticlockwise(char a[N][N]){int i, j;char t1,t2,t3,t4;t1 = a[0][0];t2 = a[N/2][0];t3 = a[N/2][N - 1];t4 = a[N-1][N-1];for (i = 0; i <N-1; i++){a[0][i] = a[0][i+1];}for (i = N-1; i >0 ; i--){a[N-1][i] = a[N-1][i-1];}a[0][N-1] = t3;a[N/2][0] = t1;a[N/2][N - 1] = t4;a[N -1][0] = t2;}
/******
按行向右轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 3 1 2
4 5 6 ---> 6 4 5
7 8 9 9 7 8
******/
void turningRight(char a[N][N]){}
/******
按行向左轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 2 3 1
4 5 6 ---> 5 6 4
7 8 9 8 9 7
******/
void turningLeft(char a[N][N]){}
/******
按列向下轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 7 8 9
4 5 6 ---> 1 2 3
7 8 9 4 5 6
******/
void turningDown(char a[N][N]){}
/******
按列向上轮转1位。
例如:轮转前的数组 轮转后的数组
1 2 3 4 5 6
4 5 6 ---> 7 8 9
7 8 9 1 2 3
******/
void turningUp(char a[N][N]){}
/******
并作为函数的返回值。
******/
int gdc(int m, int n){}
/******
并作为函数的返回值。
******/
int lcm(int m, int n){}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int prime(int n)
/* 判断素数,如果是素数返回1,不是素数则返回0 */
{
int flag=1,i;
for (i=2;i
{
if (n%i==0)
{
flag=0;
printf("prime=%d\n",flag);
return flag;
}
}
printf("prime=%d\n",flag);
return flag;
}
int f(int i)
/* 将偶数i表示为两个素数之和,返回其中较小的素数*/
{
int max=0,min=0,j,k;
for (j=1,k=1;j
{
if (prime(j) && prime(k) && j+k==i)
{
min=j;
max=k;
}
}
printf("f=%d %d\n",min,max);
return min;
}
int main(int argc, char *argv[]) {
int a,b,c;
scanf("%d",&c);
if (c%2==0)
{
f(c);
}
prime(c);
return 0;
}