14 下面是一个5*5阶的螺旋方阵。编程打印出此形式的n*n(n<10)阶的方阵(顺时针方向旋进)。
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
解: main()
{
int a[10][10],i,j,m,n,k=0;
printf(“Enter n(n<10):n”);
scanf(“%d”,&n);
if(n%2= =0) m=n/2;
else m=n/2+1;
for(i=0;i<m;i++)
{for(j=i;j<n-i;j++)
{k++;a[i][j]=k;}
{for(j=i+1;j<n-i;j++)
{k++;a[j][n-i-1]=k;}
{for(j=n-i-2;j>=i;j–)
{k++;a[n-i-1][j]=k;}
{for(j=n-i-2;j>=i+1;j–)
{k++; a[j][i]=k;}
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(“%5d”,a[i][j]);
printf(“n”);
}
}
15 键盘输入一个字符民用折半查找法找出该字符在已排序的字符a 中的位置。若该字符不在a中,则打印Can’t Search!.
解: #define m 10
#include <stdio.h>
main()
{
char c,a[m];
int i,top,bot,mid;
printf(“Tnput a string:n”);
gets(a);
printf(“Tnput a charactern”);
scanf(“%c”,&c);
printf(“c=’%c’n”,c);
for(top=0,bot=M-1; top<=bot;)
{ mid=(top+bot)/2;
if(c= =a[mid])
{printf{“The position is %dn”,mid+1};
break;
}
else if(c>a[mid]) top=mid+1;
else bot=mid-1;
}
if (top>bot) printf(“Can’t Search!”);
}
16 用函数实现:从键盘输入一个整数,判断其是否为素数;若是素数,则打印YES,否则,打印NO。
解: #include <stdio.h>
main()
{
int x;
printf(“输入一个整数给:”);
scanf(“%d”,&x);
if(prime(x)) printf(“YESn”);
else printf(“Non”);
}
prime(int a)
{
int e,i,yes;
yes=1;e=a/2;
i=2;
while((i<=e)&&yes)
if((a%i)= =0) yes=0;
else i++;
return yes;
}