1.判断一个数是否可以分解为两个素数之和
#include<stdio.h>
#include<math.h>
int isPrime(int x);
int main()
{
int num=0,x=1,flag=0;
printf("Please enter an integer(must be greater than 1):");
scanf("%d",&num);
if(num<=1)
printf("Please reenter!\n");
else if(num==2)
{
flag =1;
}
else
for(x=1;x<=num-1;x++)
{
if(isPrime(x)&&isPrime(num-x))
{
flag =1;
break;
}
}
if(flag==0)
{
printf("Not!!\n");
}
else
{
printf("Can\n");
}
return 0;
}
int isPrime(int x)
{
int i=0,ret=1;
if(x%2==0&&x!=2)
ret =0;
else
{
for(i=3;i<=sqrt(x);i+=2)
{
if(x%i==0)
ret =0;
break;
}
}
return ret;
}
2 递归实现字符串翻转
#include<stdio.h>
int reverse();
int main()
{
printf("Please enter a string:");
reverse();
return 0;
}
int reverse()
{
char s;
scanf("%c",&s);
if(s!='\n')
{
reverse();
printf("%c",s);
}
return 0;
}
3.矩阵转置
理论上可行,实际上玩花样玩失败了,程序崩溃
#include<stdio.h>
typedef int(*aa)[10];
aa enter(int r,int c);
int trans(int r,int c,int a[r][c]);
int main()
{
int r=0,c=0;
printf("Please enter the rows(<=10) and columns(<=10) of the matrix:");
scanf("%d %d",&r,&c);
int (*a)[c];
a=enter(r,c);
trans(r,c,a);
return 0;
}
aa enter(int r,int c)
{
int i=0,j=0;
static int (*a)[c];
printf("Please enter the matrix:\n");
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
scanf("%d",&a[i][j]);
printf("%2d",a[i][j]);
if(j==c-1)
printf("\n");
}
return a;
}
int trans(int r,int c,int a[r][c])
{
int i=0,j=0;
int b[c][r];
for(i=0;i<c;i++)
for(j=0;j<r;j++)
{
b[j][i]=a[i][j];
}
printf("Transpose of your matrix:\n");
for(i=0;i<c;i++)
for(j=0;j<r;j++)
{
printf("%2d",b[i][j]);
if(j==r-1)
printf("\n");
}
return 0;
}
补充说明:
1.指针是一类特殊的变量,主要用途是函数间的传址,用这种方式来改变实参内容。而数组是用来实现线性表的结构,用于把同类对象集中在一起放置。
2. 少玩花样,如无必要,勿增实体
3.简单的实现如下:
用4个嵌套for 循环
#include <stdio.h>
int main()
{
int a[10][10], transpose[10][10], r, c, i, j;
printf("输入矩阵的行与列: ");
scanf("%d %d", &r, &c);
// 存储矩阵的元素
printf("\n输入矩阵元素:\n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("输入元素 a%d%d: ",i+1, j+1);
scanf("%d", &a[i][j]);
}
// 显示矩阵 a[][] */
printf("\n输入矩阵: \n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("%d ", a[i][j]);
if (j == c-1)
printf("\n\n");
}
// 转换
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
transpose[j][i] = a[i][j];
}
// 显示转换后的矩阵 a
printf("\n转换后矩阵:\n");
for(i=0; i<c; ++i)
for(j=0; j<r; ++j)
{
printf("%d ",transpose[i][j]);
if(j==r-1)
printf("\n\n");
}
return 0;
}