6.1 用筛选法求100之内的素数.
#include
#define N 101
void main()
{ int
i,j,line,a[N];
for(i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for(i=2;i
for(j=i+1;j<=100;j++)
{ if(a[i]!=0
&& a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for(i=2,line=0;i<=100;i++)
{ if(a[i]!=0)
{ printf("%5d",a[i]);
line++;
if(line==10)
{
printf("\n");
line=0;
}
}
}
}
6.2 用选择法对10个数排序.
#define N 10
main()
{
int
i,j,min,temp,a[N];
printf("请输入十个数:\n");
for
(i=0;i<=10;i++)
{ printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
for
(i=1;i<=9;i++)
{ min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j]) min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf("\n排序结果如下:\n");
for(i=0;i
printf("%5d",a[i]);
}
6.3 对角线和:
main()
{
float
a[3][3],sum=0;
int
i,j;
printf("请输入矩阵元素:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("对角元素之和= 6.2f",sum);
}
6.4 插入数据到数组
main()
{ int
a[11]={1,4,6,9,13,16,19,28,40,100};
int
temp1,temp2,number,end,i,j;
printf("初始数组如下:");
for
(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("输入插入数据:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{
for(i=0;i<10;i++)
{ if(a[i]>number)
{
temp1=a[i];
a[i]=number;}
for(j=i+1;j<11;j++)
{ temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;j<11;i++)
printf("a%6d",a[i]);
}
6.5 将一个数组逆序存放。
#define N 5
main()
{
int
a[N]={8,6,5,4,1},i,temp;
printf("\n 初始数组:\n");
for(i=0;i
printf("%4d",a[i]);
for(i=0;i
{
temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\n 交换后的数组:\n");
for(i=0;i
printf("%4d",a[i]);
}
6.6 杨辉三角
#define N 11
main()
{
int i,j,a[N][N];
for(i=1;i
{ a[i][i]=1;
a[i][1]=1;
}
for(i=3;i
for(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i
{ for(j=1;j<=i;j++)
printf("%6d",a[i][j];
printf("\n");
}
printf("\n");
}
6.7
打印“魔方阵解: #include
main()
{ int a[15][15],i,i,k,p,m,n;
p=1;
while(p==1) { printf("Enter
n(n=1~15):");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0))
p=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;)
a[i][j]=0
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j-1;
if((i<1)&&(j>n))
{
i=i+2;
j=j+2;
}
else
{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]= =0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i
{
for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n")
}
}
6.8鞍点
#define N 10
#define M 10
main()
{ int
i,j,k,m,n,flag,a[N][M],max,maxj,flag;
printf("please input
matrix:\n");
for(i=0;i
for(j=0;j
scanf("%d",&a[i][j]);
for(i=0;i
{
max=a[i][0];
maxj=0;
for(j=0;j
if(a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
flag=1;
for(k=0;k
if(max>a[k][maxj])
{ flag=0;
continue;
}
if(flag)
{
printf("a[%d][%d]=%d\n",i,maxj,max);
break
}
}
if(!flag2)
printf("it is not
exist!\n");
}
6.9
(变量说明:top,bott:查找区间两端点的下标;loca:查找成功与否的开关变量.)
#include
#define N 15
main()
{ int
i,j,number,top,bott,min,loca,a[N],flag;
char
c;
printf("输入15个数(a[i]>[i-1])\n);
scanf("%d",&a[0]);
i=1;
while(i
{ scanf("%d",&a[i]);
if(a[i]>=a[i-1])
i++;
esle
{ printf("请重输入a[i]");
printf("必须大于%d\n",a[i-1]);
}
}
printf("\n");
for(i=0;i
printf("%4d",a[i]);
printf("\n");
flag=1;
while(flag)
{
printf("请输入查找数据:");
scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((numbera[N-1]))
loca=-1;
while((loca==0)&&(top<=bott))
{ min=(bott +
top)/2;
if(number==a[min])
{ loca=min;
printf("%d位于表中第%d个数\n",number,loca+1);
}
else
if(number
bott=min-1;
else
top=min+1;
}
if(loca==0||loca==-1)
printf("%d不在表中\n",number);
printf("是否继续查找?Y/N!\n");
c=getchar();
if(c=='N'||c=='n')
flag=0;
}
}
6.10
main()
{ int
i,j,uppn,lown,dign,span,othn;
char
text[3][80];
uppn=lown=dign=span=othn=0;
for(i=0;i<3;i++)
{ printf("\n请输入第%d行:\n",i);
gets(text[i]);
for(j=0;j<80 &&
text[i][j]!='\0';j++)
{if(text[i][j]>='A'
&&
text[i][j]<='Z')
uppn+=1;
else if(text[i][j]>='a'
&&
text[i][j]<='z')
lown+=1;
else if(text[i][j]>='1'
&&
text[i][j]<='9')
dign+=1;
else if(text[i][j]=' ')
span+=1;
else
othn+=1;
}
}
for(i=0;i<3;i++)
printf("%s=n",text[i]);
printf("大写字母数:%d\n",uppn);
printf("小写字母数:%d\n",lown);
printf("数字个数:%d\n",dign);
printf("空格个数:%d\n",span);
printf("其它字符:%d\n",othn);
}
6.11
main()
{static
char a[5]={'*','*','*','*','*'};
int i,j,k;
char space='
';
for(i=0;i<=5;i++)
{
printf("\n");
for(j=1;j<=3*i;j++)
printf("%lc",space);
for(k=0;k<=5;k++)
printf("%3c",a[k];
}
}
6.12
#include
main()
{ int i,n;
char
ch[80],tran[80];
printf("请输入字符:");
gets(ch);
printf("\n密码是%c",ch);
i=0;
while(ch[i]!='\0')
{
if((ch[i]>='A')&&(ch[i]<='Z'))
tran[i]=26+64-ch[i]+1+64;
else
if((ch[i]>='a')&&(ch[i]<='z'))
tran[i]=26+96-ch[i]+1+96;
else
tran[i]=ch[i];
i++;
}
n=i;
printf("\n原文是:");
for(i=0;i
}
6.13
main()
{
char
s1[80],s2[40];
int
i=0,j=0;
printf("\n请输入字符串1:");
scanf("%s",s1);
printf("\n请输入字符串2:");
scanf("%s",s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("\n连接后字符串为:%s",s1);
}
6.14
#include
void
main()
{ int
i,resu;
char
s1[100],s2[100];
printf("请输入字符串1:\n");
gets(s1);
printf("\n
请输入字符串2:\n");
gets(s2);
i=0;
while((s1[i]==s2[i])
&& (s1[i]!='\0'))i++;
if(s1[i]=='\0'
&& s2[i]=='\0')
resu=0;
else
resu=s1[i]-s2[i];
printf("
%s与%s比较结果是%d",s1,s2,resu);
}
6.15
#include
void main()
{
char
from[80],to[80];
int
i;
printf("请输入字符串");
scanf("%s",from);
for(i=0;i<=strlen(from);i++)
to[i]=from[i];
printf("复制字符串为:%s\n",to);
}