printf("%c,%d;",s[a[j]],a[j]+1);
}
printf("\n");
}
}
}
}
第二题:
输入一个四行五列的矩阵,找出每列最大的两个数,如:
输入:
12498
-14988
129870
78970
输出:
129989
78978
#include
#include
intcmp(constvoid*a,constvoid*b){//qsort的比较函数;
return(*(int*)a)-(*(int*)b);
}
intmain(){
inta[4][5],i,j,b[5][4];
for(i=0;i<4;i++){
for(j=0;j<5;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<5;i++){
for(j=0;j<4;j++){
b[i][j]=a[j][i];//逆置数组a;
}
}
for(i=0;i<5;i++){
qsort(b[i],4,sizeof(int),cmp);
printf("%d%d\n",b[i][2],b[i][3]);
}
}
第三题:
输入一个字符串,建立一个二叉排序树,并中序遍历输出;
#include
#include
#include
typedefstructnode{//二叉树结点数据结构定义;
charvalue;
structnode*lchild,*rchild;
}BTNode,*BTree;
voidinsertNode(BTree&t,charc){//向二叉排序树中插入节点;
BTreep,q,temp;
p=(BTree)malloc(sizeof(BTNode));
p->value=c;
p->lchild=NULL;//貌似没有这2行不行,纠结了半天啊
p->rchild=NULL;
if(t==NULL){
t=p;
}
else{
q=t;
while(q!
=NULL){
temp=q;
if(cvalue){
q=q->lchild;
}
else{
q=q->rchild;
}
}
if(cvalue){
temp->lchild=p;
}
else{
temp->rchild=p;
}
}
}
voidinOrderTra(BTreet){//中序遍历二叉排序树;
if(t!
=NULL){
inOrderTra(t->lchild);
printf("%c",t->value);
inOrderTra(t->rchild);
}
}
intmain(){
chars[1000];
intlen,i;
while(gets(s)!
=NULL){
len=strlen(s);
BTreet;
t=NULL;
for(i=0;iinsertNode(t,s[i]);
}
inOrderTra(t);
printf("\n");
}
}
2000年
1.输入n,
求y1=1!
+3!
+...m!
(m是小于等于n的最大奇数)
y2=2!
+4!
+...p!
(p是小于等于n的最大偶数)
#include
intmain(){
__int64a[100],y1,y2;//存放阶乘;
inti,n,p,m;
while(scanf("%d",&n)!
=EOF){
if(n%2==0){
m=n-1;
p=n;
}
else{
p=n-1;
m=n;
}
a[1]=1;
for(i=2;i<100;i++){
a[i]=a[i-1]*i;
}
y1=0;
y2=0;
//printf("m=%d,p=%d\n",m,p);
i=1;
while(i<=m){
y1+=a[i];
i+=2;
}
i=2;
while(i<=p){
y2+=a[i];
i+=2;
}
printf("y1=%I64d,y2=%I64d\n",y1,y2);
}
}
2。
输入一个5×5的矩阵,判断是否对称
#include
intmain(){
inta[6][6],i,j,flag;
flag=1;//标记矩阵是否对称;
for(i=1;i<=5;i++){
for(j=1;j<=5;j++){
scanf("%d",&a[i][j]);
}
}
for(i=2;i<=5;i++){
for(j=1;j
if(a[i][j]!
=a[j][i]){
flag=0;
}
}
}
if(flag==1)