课后习题
6.输出以下的杨辉三角形(要求输出10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…
#include<stdio.h>
int main()
{
int i,j;
int a[10][10];
for(i=0;i<10;i++)
{
a[i][i]=1;
a[i][0]=1;
}
for(i=2;i<10;i++)
{
for(j=1;j<i;j++)
{
a[i][j]= a[i-1][j-1] +a[i-1][j];
}
}
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
7.魔方阵(不知道哪里错了)
#include<stdio.h>
int main()
{
int a[15][15],i,j,k,p,n;
p=1;
while(p=1)
{
scanf("%d",&n);
if(n!=0 && n<=15 && n%2 != 0)
p=0;
}//初始化
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
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-1;
}
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;
a[i][j] = k;
}
}
//输出魔方阵
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
8 鞍点(有点问题)
#include<stdio.h>
int main()
{
int a[4][5];
int i,j,max=0;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if(a[i][j]>max)
{
max = a[i][j];
}
for(i=0;i<5;i++)
{
if(a[i][j] < max)
printf("%d",max);break;
//else continue;
}
}
}
return 0;
}
9折半查找 (有点问题)
#include<stdio.h>
int main()
{
int a[15],i,j,k,m=0,b=14,t=0,sign = 0,n;
for(i=0;i<15;i++)
{
a[i] = 15-i;
printf("%d ",a[i]);
}
printf("\n");
scanf("%d",&k);
while(m>=0)
{
m=(b+t)/2;
if(k=a[m])
{
sign = 1;
n=m;
printf("%d",m);break;
}
else if(k<m)
b=m-1;
else
t=m+1;
}
/*if(sign = 1)
printf("%d",m);*/
if(sign = 0)
printf("cannot find");
return 0;
}
10
#include<stdio.h>
int main()
{
char a[3][80];
int i,j,d=0,x=0,s=0,k=0,q=0;
for(i=0;i<3;i++)
{
printf("请输入第%d行:",i+1);
gets(a[i]);
for(j=0;i<80 && a[i][j] != '\0';j++)
{
if('a'<=a[i][j] && a[i][j]<='z')
x++;
else if('A'<=a[i][j] && a[i][j]<='Z')
d++;
else if('0'<=a[i][j] && a[i][j]<='9')
s++;
else if(a[i][j] == ' ')
k++;
else
q++;
}
}
printf("%d %d %d %d %d",x,d,s,k,q);
return 0;
}
11
#include<stdio.h>
int main()
{
//char a[5][10];
char b[5] ={'*','*','*','*','*'};
int i,j,k;
char space = ' ';
for(i=0;i<5;i++)
{
// printf("\n");
// printf(" ");
for(j=1;j<=i;j++)
printf("%c",space);//输出i个空格
for(k=0;k<5;k++)
printf("%c",b[k]);//输出*****
printf("\n");
}
return 0;
}
12
#include<stdio.h>
int main()
{
char a[100];
gets(a);
int i,m;
for(i=0;i<100 && a[i] != '\0';i++)
{
if('A'<=a[i] && a[i]<='Z')
{
m = 155-a[i];
printf("%c",m);continue;}
else if('a'<=a[i] && a[i]<='z')
{m=219-a[i];
printf("%c",m);}
else if(a[i]=' ')
printf(" ");
}
return 0;
}
13 连接两个字符串 (运行不出来 不知道问题在哪里)
#include<stdio.h>
int main()
{
char a[100],b[100],c[200];
gets(a);
gets(b);
int i=0,j=0,m=0;
while(a[i] != '\0')
{
i++;
}
while(b[j] != '\0')
{
b[j++] = a[i++];
}
a[i] = '\0';
printf("%s\n",a);
return 0;
}
14
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char a[10],b[10];
gets(a);
gets(b);
int i,j;
int m=0,n=0;
for(i=0;i<10 && a[i] != '\0';i++)
{
m = m + a[i];
}
printf("%d\n", m);
for(j=0;j<10 && b[j] != '\0';j++)
{
n = n + b[j];
}
printf("%d\n", n);
printf("%d\n",m-n);
}
15
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char s1[10],s2[10];
gets(s2);
int i;
for(i=0;i<10 && s2[i] != '\0';i++)
{
s1[i] = s2[i];
}
for(i=0;i<10 && s1[i] != '\0';i++)
{
printf("%c",s1[i]);
}
return 0;
}