3,蛇型矩阵
#include<stdio.h>
#define max_length 16
main()
{
int a[16][16]={0};
int i,j,k,p=2,q,n=16;/*i,j,k用来循环,n用来存要输出放阵的长度*/
int flag=0;
while(n>15)
{
printf("Please input the length of the phalanx:");
scanf("%d",&n);
}
a[1][1]=1;
j=1;
flag=0;
for(i=3;i<n+2;i++)
{
q=p;
if(j==1&&flag==0)
for(;j<i;j++)
{
for(k=1;k<i;k++)
{
if(j+k==i)
a[j][k]=p++;
if(p-q==i-1)
{
flag=1;
goto NEXT;
}
}
if(flag==2)
NEXT:{break;}
}
q=p;
i++;
if(k==1&&flag==1)
for(;k<i;k++)
{
for(j=1;j<i;j++)
{
if(j+k==i)
a[j][k]=p++;
if(p-q==i-1)
{
flag=0;
goto NEXT2;
}
if(flag==2)
NEXT2:{break;}
}
}
}
for(j=1;j<n+1;j++)
for(k=1;k<n+1;k++)
if(a[j][k]==0)
a[j][k]=(n*n+1)-a[n-j+1][n-k+1];
for(j=1;j<n+1;j++)
{
for(k=1;k<n+1;k++)
{
printf("%5d",a[j][k]);
}
printf("\n\n");
}
getch();
}
第二题论坛上有,我看过。你可以搜下。
第一题(1):
#include "stdio.h"
#include "conio.h"
typedef struct NODE
{
char ch;
struct NODE *rlink,*llink;
}node;
main()
{
node *head=NULL,*p=NULL,*q=NULL;
char *s=" I like programming";
int i=0;
head=(node *)malloc(sizeof(node));
head->ch=s[i++];
head->rlink=head->llink=NULL;
q=head;
while(s[i])
{
p=(node *)malloc(sizeof(node));
p->rlink=NULL;
q->rlink=p;
p->llink=q;
p->ch=s[i++];
q=p;
}
q=head;
while(q)
{
if(q->ch==' ')
{
if(q==head)
{
q=q->rlink;
free(head);
head=q;
q->llink=NULL;
}
else
if(q->rlink->ch==' '||q->llink->ch==' ')
{
q->rlink->llink=q->llink;
q->llink->rlink=q->rlink;
p=q;
q=q->rlink;
free(p);
}
else q=q->rlink;
}
else
q=q->rlink;
}
while(head)
{
printf("%c",head->ch);
head=head->rlink;
}
getch();
}
1(2)查了下函数库,用memccpy来做,没动手。
第4题:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int check(char *s);
void PrintStrrev(char *p);
int main()
{
char s[20];
int choice,num,i,sum=0;
do{
puts("enter the string:");
gets(s);
}while(check(s));
puts("Enter choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("Result:");
PrintStrrev(s);
break;
case 2:
printf("Result:");
printf("%s",s);
PrintStrrev(s);
break;
case 4:
puts("Enter Number:");
scanf("%d",&num);
printf("Result:");
for(i=1;i<=num;putchar(s[strlen(s)-1]+i),i++);
break;
case 5:
printf("Result:");
for(i=0;i<strlen(s);sum+=s[i],i++)
{
if(i<strlen(s)-1)
printf("%d+",s[i]);
else printf("%d=",s[i]);
}
printf("%d",sum);
break;
default:puts("Your choice is invalid");
}
getch();
}
int check(char *s)
{
int i=0,judge;
for(;s[i+1];i++)
{
judge=s[i]+1==s[i+1]?0:1;
if(judge)
return 1;
}
return 0;
}
void PrintStrrev(char *p)
{
if(*p)
{
PrintStrrev(p+1);
putchar(*p);
}
}
因choice 3没讲清楚,按dafault处理。