admin 管理员组

文章数量: 1087135


2023年12月24日发(作者:ncurses)

1-5 #include

int main ( )

{ printf ("**************************nn");

printf(" Very Good!nn");

printf ("**************************n");

return 0;

}

1-6#include

int main()

{int a,b,c,max;

printf("please input a,b,c:n");

scanf("%d,%d,%d",&a,&b,&c);

max=a;

if (max

max=b;

if (max

max=c;

printf("The largest number is %dn",max);

return 0;

}

4-4-1

#include

int main()

{

int a,b,c;

printf("请输入三个整数:");

scanf("%d,%d,%d",&a,&b,&c);

if (a

if (b

printf("max=%dn",c);

else

printf("max=%dn",b);

else if (a

printf("max=%dn",c);

else

printf("max=%dn",a);

return 0;

}

4-6.

#include

int main()

{ int x,y;

printf("输入x:");

scanf("%d",&x);

if(x<1) /* x<1 */

{ y=x;

printf("x=%3d, y=x=%dn" ,x,y);

}

else if(x<10) /* 1=

{ y=2*x-1;

printf("x=%d, y=2*x-1=%dn",x,y);

}

else /* x>=10 */

{ y=3*x-11;

printf("x=%d, y=3*x-11=%dn",x,y);

}

return 0;

}

4-7-1

#include

int main()

{

int x,y;

printf("enter x:");

scanf("%d",&x);

y=-1;

if(x!=0)

if(x>0)

y=1;

else

y=0;

printf("x=%d,y=%dn",x,y);

return 0;

}

4-7-2

#include

int main()

{

int x,y;

printf("please enter x:");

scanf("%d",&x);

y=0;

if(x>=0)

if(x>0) y=1;

else y=-1;

printf("x=%d,y=%dn",x,y);

return 0;

}

4-8

#include

int main()

{ float score;

char grade;

printf("请输入学生成绩:");

scanf("%f",&score);

while (score>100||score<0)

{printf("n 输入有误,请重输");

scanf("%f",&score);

}

switch((int)(score/10))

{case 10:

case 9: grade='A';break;

case 8: grade='B';break;

case 7: grade='C';break;

case 6: grade='D';break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0: grade='E';

}

printf("成绩是 %5.1f,相应的等级是%cn ",score,grade);

return 0;

}

4-11

#include

int main()

{int t,a,b,c,d;

printf("请输入四个数:");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

printf("a=%d,b=%d,c=%d,d=%dn",a,b,c,d);

if (a>b)

{ t=a;a=b;b=t;}

if (a>c)

{ t=a;a=c;c=t;}

if (a>d)

{ t=a;a=d;d=t;}

if (b>c)

{ t=b;b=c;c=t;}

if (b>d)

{ t=b;b=d;d=t;}

if (c>d)

{ t=c;c=d;d=t;}

printf("排序结果如下: n");

printf("%d %d %d %d n" ,a,b,c,d);

return 0;

}

4-12

#include

int main()

{

int h=10;

float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;

printf("请输入一个点(x,y):");

scanf("%f,%f",&x,&y);

d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); /*求该点到各中心点距离*/

d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);

d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);

d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);

if (d1>1 && d2>1 && d3>1 && d4>1) h=0; /*判断该点是否在塔外*/

printf("该点高度为 %dn",h);

return 0;

}

5-3

#include

int main()

{

int p,r,n,m,temp;

printf("请输入两个正整数n,m:");

scanf("%d,%d,",&n,&m);

if (n

{

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!=0)

{

r=n%m;

n=m;

m=r;

}

printf("它们的最大公约数为:%dn",n);

printf("它们的最小公约数为:%dn",p/n);

return 0;

}

5-4

#include

int main()

{

char c;

int letters=0,space=0,digit=0,other=0;

printf("请输入一行字符:n");

while((c=getchar())!='n')

{

if (c>='a' && c<='z' || c>='A' && c<='Z')

letters++;

else if (c==' ')

space++;

else if (c>='0' && c<='9')

digit++;

else

other++;

}

printf("字母数:%dn空格数:%dn数字数:%dn其它字符数:%dn",letters,space,digit,other);

return 0;

}

5-5

#include

int main()

{

int a,n,i=1,sn=0,tn=0;

printf("a,n=:");

scanf("%d,%d",&a,&n);

while (i<=n)

{

tn=tn+a; /*赋值后的tn为i个 a组成数的值*/

sn=sn+tn; /*赋值后的sn为多项式前i项之和*/

a=a*10;

++i;

}

printf("a+aa+aaa+...=%dn",sn);

return 0;

}

5-6

#include

int main()

{double s=0,t=1;

int n;

for (n=1;n<=20;n++)

{

t=t*n;

s=s+t;

}

printf("1!+2!+...+20!=%22.15en",s);

return 0;

}

5-7

#include

int main()

{

int n1=100,n2=50,n3=10;

double k,s1=0,s2=0,s3=0;

for (k=1;k<=n1;k++) /*计算1到100的和*/

{s1=s1+k;}

for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/

{s2=s2+k*k;}

for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/

{s3=s3+1/k;}

printf("sum=%15.6fn",s1+s2+s3);

return 0;

}

5-8

#include

int main()

{

int i,j,k,n;

printf("parcissus numbers are ");

for (n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if (n==i*i*i + j*j*j + k*k*k)

printf("%d ",n);

}

printf("n");

return 0;

}

5-10

#include

int main()

{

int i,n=20;

double a=2,b=1,s=0,t;

for (i=1;i<=n;i++)

{

s=s+a/b;

t=a,

a=a+b,

b=t;

}

printf("sum=%16.10fn",s);

return 0;

}

5-11

#include

int main()

{

double sn=100,hn=sn/2;

int n;

for (n=2;n<=10;n++)

{

sn=sn+2*hn; /*第n次落地时共经过的米数*/

hn=hn/2; /*第n次反跳高度*/

}

printf("第10次落地时共经过%f米n",sn);

printf("第10次反弹%f米n",hn);

return 0;

}

5-12

#include

int main()

{

int day,x1,x2;

day=9;

x2=1;

while(day>0)

{x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/

x2=x1;

day--;

}

printf("total=%dn",x1);

return 0;

}

5-13

#include

#include

int main()

{

float a,x0,x1;

printf("enter a positive number:");

scanf("%f",&a);

x0=a/2;

x1=(x0+a/x0)/2;

do

{x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x0-x1)>=1e-5);

printf("The square root of %5.2f is %8.5fn",a,x1);

return 0;

}

5-15

#include

#include

int main()

{float x0,x1,x2,fx0,fx1,fx2;

do

{printf("enter x1 & x2:");

scanf("%f,%f",&x1,&x2);

fx1=x1*((2*x1-4)*x1+3)-6;

fx2=x2*((2*x2-4)*x2+3)-6;

}while(fx1*fx2>0);

do

{x0=(x1+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6;

if ((fx0*fx1)<0)

{x2=x0;

fx2=fx0;

}

else

{x1=x0;

fx1=fx0;

}

}while(fabs (fx0)>=1e-5);

printf("x=%6.2fn",x0);

return 0;

}

5-16

#include

int main()

{int i,j,k;

for (i=0;i<=3;i++)

{for (j=0;j<=2-i;j++)

printf(" ");

for (k=0;k<=2*i;k++)

printf("*");

printf("n");

}

for (i=0;i<=2;i++)

{for (j=0;j<=i;j++)

printf(" ");

for (k=0;k<=4-2*i;k++)

printf("*");

printf("n");

}

return 0;

}

6-1

#include

#include

int main()

{int i,j,n,a[101];

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,n=0;i<=100;i++)

{ if(a[i]!=0)

{printf("%5d",a[i]);

n++;

}

if(n==10)

{printf("n");

n=0;

}

}

printf("n");

return 0;

}

6-2

#include

int main()

{int i,j,min,temp,a[11];

printf("enter data:n");

for (i=1;i<=10;i++)

{printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("n");

printf("The orginal numbers: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("nThe sorted numbers:n");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

printf("n");

return 0;

}

6-3

#include

int main()

{

int a[3][3],sum=0;

int i,j;

printf("enter data:n");

for (i=0;i<3;i++)

for (j=0;j<3;j++)

scanf("%3d",&a[i][j]);

for (i=0;i<3;i++)

sum=sum+a[i][i];

printf("sum=%6dn",sum);

return 0;

}

6-4

#include

int main()

{ int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

printf("array a:n");

for (i=0;i<10;i++)

printf("%5d",a[i]);

printf("n");

printf("insert data:");

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;

}

}

}

printf("Now array a:n");

for (i=0;i<11;i++)

printf("%5d",a[i]);

printf("n");

return 0;

}

6-5

#include

#define N 5

int main()

{ int a[N],i,temp;

printf("enter array a:n");

for (i=0;i

scanf("%d",&a[i]);

printf("array a: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("nNow,array a:n");

for (i=0;i

printf("%4d",a[i]);

printf("n");

return 0;

}

6-6

#include

#define N 10

int main()

{ int i,j,a[N][N];

for (i=0;i

{a[i][i]=1;

a[i][0]=1;

}

for (i=2;i

for (j=1;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

for (i=0;i

{for (j=0;j<=i;j++)

printf("%6d",a[i][j]);

printf("n");

}

printf("n");

return 0;

}

6-7

#include

int main()

{ int a[15][15],i,j,k,p,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;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("%5d",a[i][j]);

printf("n");

}

return 0;

}

6-8

#include

#define N 4

#define M 5 /* 数组为4行5列 */

int main()

{

int i,j,k,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]; /* 开始时假设a[i][0]最大 */

maxj=0; /* 将列号0赋给maxj保存 */

for (j=0;j

if (a[i][j]>max)

{max=a[i][j]; /* 将本行的最大数存放在max中 */

maxj=j; /* 将最大数所在的列号存放在maxj中 */

}

flag=1; /* 先假设是鞍点,以flag为1代表 */

for (k=0;k

if (max>a[k][maxj]) /* 将最大数和其同列元素相比 */

{flag=0; /* 如果max不是同列最小,表示不是鞍点令flag1为0 */

continue;}

if(flag) /* 如果flag1为1表示是鞍点 */

{printf("a[%d][%d]=%dn",i,maxj,max); /* 输出鞍点的值和所在行列号 */

break;

}

}

if(!flag) /* 如果flag为0表示鞍点不存在 */

printf("It is not exist!n");

return 0;

}

6-9

#include

#define N 15

int main()

{ int i,number,top,bott,mid,loca,a[N],flag=1,sign;

char c;

printf("enter data:n");

scanf("%d",&a[0]);

i=1;

while(i

{scanf("%d",&a[i]);

if (a[i]>=a[i-1])

i++;

else

printf("enter this data again:n");

}

printf("n");

for (i=0;i

printf("%5d",a[i]);

printf("n");

while(flag)

{printf("input number to look for:");

scanf("%d",&number);

sign=0;

top=0; //top是查找区间的起始位置

bott=N-1; //bott是查找区间的最末位置

if ((numbera[N-1])) //要查的数不在查找区间内

loca=-1; // 表示找不到

while ((!sign) && (top<=bott))

{mid=(bott+top)/2;

if (number==a[mid])

{loca=mid;

printf("Has found %d, its position is %dn",number,loca+1);

sign=1;

}

else if (number

bott=mid-1;

else

top=mid+1;

}

if(!sign||loca==-1)

printf("cannot find %d.n",number);;

printf("continu or not(Y/N)?");

scanf(" %c",&c);

if (c=='N'||c=='n')

flag=0;

}

return 0;

}

6-10

#include

int main()

{int i,j,upp,low,dig,spa,oth;

char text[3][80];

upp=low=dig=spa=oth=0;

for (i=0;i<3;i++)

{ printf("please input line %d:n",i+1);

gets(text[i]);

for (j=0;j<80 && text[i][j]!='0';j++)

{if (text[i][j]>='A'&& text[i][j]<='Z')

upp++;

else if (text[i][j]>='a' && text[i][j]<='z')

low++;

else if (text[i][j]>='0' && text[i][j]<='9')

dig++;

else if (text[i][j]==' ')

spa++;

else

oth++;

}

}

printf("nupper case: %dn",upp);

printf("lower case: %dn",low);

printf("digit : %dn",dig);

printf("space : %dn",spa);

printf("other : %dn",oth);

return 0;

}

6-12a-c

#include

int main()

{ int j,n;

char ch[80],tran[80];

printf("input cipher code:");

gets(ch);

printf("ncipher code :%s",ch);

j=0;

while (ch[j]!='0')

{ if ((ch[j]>='A') && (ch[j]<='Z'))

tran[j]=155-ch[j];

else if ((ch[j]>='a') && (ch[j]<='z'))

tran[j]=219-ch[j];

else

tran[j]=ch[j];

j++;

}

n=j;

printf("noriginal text:");

for (j=0;j

putchar(tran[j]);

printf("n");

return 0;

}

6-12b

#include

int main()

{int j,n;

char ch[80];

printf("input cipher code:n");

gets(ch);

printf("ncipher code:%sn",ch);

j=0;

while (ch[j]!='0')

{ if ((ch[j]>='A') && (ch[j]<='Z'))

ch[j]=155-ch[j];

else if ((ch[j]>='a') && (ch[j]<='z'))

ch[j]=219-ch[j];

else

ch[j]=ch[j];

j++;

}

n=j;

printf("original text:");

for (j=0;j

putchar(ch[j]);

printf("n");

return 0;

}

6-13

#include

int main()

{ char s1[80],s2[40];

int i=0,j=0;

printf("input string1:");

scanf("%s",s1);

printf("input string2:");

scanf("%s",s2);

while (s1[i]!='0')

i++;

while(s2[j]!='0')

s1[i++]=s2[j++];

s1[i]='0';

printf("nThe new string is:%sn",s1);

return 0;

}

7-1-1

#include

int main()

{int hcf(int,int);

int lcd(int,int,int);

int u,v,h,l;

scanf("%d,%d",&u,&v);

h=hcf(u,v);

printf("H.C.F=%dn",h);

l=lcd(u,v,h);

printf("L.C.D=%dn",l);

return 0;

}

int hcf(int u,int v)

{int t,r;

if (v>u)

{t=u;u=v;v=t;}

while ((r=u%v)!=0)

{u=v;

v=r;}

return(v);

}

int lcd(int u,int v,int h)

{

return(u*v/h);

}

7-3

#include

int main()

{int prime(int);

int n;

printf("input an integer:");

scanf("%d",&n);

if (prime(n))

printf("%d is a prime.n",n);

else

printf("%d is not a prime.n",n);

return 0;

}

int prime(int n)

{int flag=1,i;

for (i=2;i

if (n%i==0)

flag=0;

return(flag);

}

7-4

#include

#define N 3

int array[N][N];

int main()

{ void convert(int array[][3]);

int i,j;

printf("input array:n");

for (i=0;i

for (j=0;j

scanf("%d",&array[i][j]);

printf("noriginal array :n");

for (i=0;i

{for (j=0;j

printf("%5d",array[i][j]);

printf("n");

}

convert(array);

printf("convert array:n");

for (i=0;i

{for (j=0;j

printf("%5d",array[i][j]);

printf("n");

}

return 0;

}

void convert(int array[][3])

{int i,j,t;

for (i=0;i

for (j=i+1;j

{t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

#include

#include

int main()

{void inverse(char str[]);

char str[100];

printf("input string:");

scanf("%s",str);

inverse(str);

printf("inverse string:%sn",str);

return 0;

}

void inverse(char str[])

{char t;

int i,j;

for (i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)

{t=str[i];

str[i]=str[j-1];

str[j-1]=t;

}

}

7-6

#include

int main()

{void concatenate(char string1[],char string2[],char string[]);

char s1[100],s2[100],s[100];

printf("input string1:");

scanf("%s",s1);

printf("input string2:");

scanf("%s",s2);

concatenate(s1,s2,s);

printf("nThe new string is %sn",s);

return 0;

}

void concatenate(char string1[],char string2[],char string[])

{int i,j;

for (i=0;string1[i]!='0';i++)

string[i]=string1[i];

for(j=0;string2[j]!='0';j++)

string[i+j]=string2[j];

string[i+j]='0';

}

7-7

#include

int main()

{void cpy(char [],char []);

char str[80],c[80];

printf("input string:");

gets(str);

cpy(str,c);

printf("The vowel letters are:%sn",c);

return 0;

}

void cpy(char s[],char c[])

{ int i,j;

for (i=0,j=0;s[i]!='0';i++)

if (s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||

s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U')

{c[j]=s[i];

j++;

}

c[j]='0';

}

7-8

#include

#include

int main()

{char str[80];

void insert(char []);

printf("input four digits:");

scanf("%s",str);

insert(str);

return 0;

}

void insert(char str[])

{int i;

for (i=strlen(str);i>0;i--)

{str[2*i]=str[i];

str[2*i-1]=' ';

}

printf("output:n%sn",str);

}

7-9

#include

int letter,digit,space,others;

int main()

{void count(char []);

char text[80];

printf("input string:n");

gets(text);

printf("string:");

puts(text);

letter=0;

digit=0;

space=0;

others=0;

count(text);

printf("nletter:%dndigit:%dnspace:%dnothers:%dn",letter,digit,space,others);

return 0;

}

void count(char str[])

{int i;

for (i=0;str[i]!='0';i++)

if ((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z'))

letter++;

else if (str[i]>='0' && str [i]<='9')

digit++;

else if (str[i]==32)

space++;

else

others++;

}

7-10

#include

#include

int main()

{int alphabetic(char);

int longest(char []);

int i;

char line[100];

printf("input one line:n");

gets(line);

printf("The longest word is :");

for (i=longest(line);alphabetic(line[i]);i++)

printf("%c",line[i]);

printf("n");

return 0;

}

int alphabetic(char c)

{if ((c>='a' && c<='z')||(c>='A'&&c<='z'))

return(1);

else

return(0);

}

int longest(char string[])

{int len=0,i,length=0,flag=1,place=0,point;

for (i=0;i<=strlen(string);i++)

if (alphabetic(string[i]))

if (flag)

{point=i;

flag=0;

}

else

len++;

else

{flag=1;

if (len>=length)

{length=len;

place=point;

len=0;

}

}

return(place);

}

7-11

#include

#include

#define N 10

char str[N];

int main()

{void sort(char []);

int i,flag;

for (flag=1;flag==1;)

{printf("input string:n");

scanf("%s",&str);

if (strlen(str)>N)

printf("string too long,input again!");

else

flag=0;

}

sort(str);

printf("string sorted:n");

for (i=0;i

printf("%c",str[i]);

printf("n");

return 0;

}

void sort(char str[])

{int i,j;

char t;

for(j=1;j

for (i=0;(i

if(str[i]>str[i+1])

{t=str[i];

str[i]=str[i+1];

str[i+1]=t;

}

}

7-*14

#include

#define N 10

#define M 5

float score[N][M];

float a_stu[N],a_cour[M];

int r,c;

int main()

{ int i,j;

float h;

float s_var(void);

float highest();

void input_stu(void);

void aver_stu(void);

void aver_cour(void);

input_stu();

aver_stu();

aver_cour();

printf("n NO. cour1 cour2 cour3 cour4 cour5

for(i=0;i

{printf("n NO %2d ",i+1);

for(j=0;j

printf("%8.2f",score[i][j]);

printf("%8.2fn",a_stu[i]);

}

printf("naverage:");

for (j=0;j

printf("%8.2f",a_cour[j]);

printf("n");

h=highest();

printf("highest:%7.2f NO. %2d course %2dn",h,r,c);

printf("variance %8.2fn",s_var());

return 0;

}

void input_stu(void)

{int i,j;

for (i=0;i

{printf("ninput score of student%2d:n",i+1);

for (j=0;j

scanf("%f",&score[i][j]);

}

}

void aver_stu(void)

{int i,j;

float s;

for (i=0;i

{for (j=0,s=0;j

s+=score[i][j];

a_stu[i]=s/5.0;

avern");

}

}

void aver_cour(void)

{int i,j;

float s;

for (j=0;j

{s=0;

for (i=0;i

s+=score[i][j];

a_cour[j]=s/(float)N;

}

}

float highest()

{float high;

int i,j;

high=score[0][0];

for (i=0;i

for (j=0;j

if (score[i][j]>high)

{high=score[i][j];

r=i+1;

c=j+1;

}

return(high);

}

float s_var(void)

{int i;

float sumx,sumxn;

sumx=0.0;

sumxn=0.0;

for (i=0;i

{sumx+=a_stu[i]*a_stu[i];

sumxn+=a_stu[i];

}

return(sumx/N-(sumxn/N)*(sumxn/N));

}

7-15

#include

#include

#define N 10

int main()

{void input(int [],char name[][8]);

void sort(int [],char name[][8]);

void search(int ,int [],char name[][8]);

int num[N],number,flag=1,c;

char name[N][8];

input(num,name);

sort(num,name);

while (flag==1)

{printf("ninput number to look for:");

scanf("%d",&number);

search(number,num,name);

printf("continue ot not(Y/N)?");

getchar();

c=getchar();

if (c=='N'||c=='n')

flag=0;

}

return 0;

}

void input(int num[],char name[N][8])

{int i;

for (i=0;i

{printf("input NO.: ");

scanf("%d",&num[i]);

printf("input name: ");

getchar();

gets(name[i]);

}

}

void sort(int num[],char name[N][8])

{ int i,j,min,templ;

char temp2[8];

for (i=0;i

{min=i;

for (j=i;j

if (num[min]>num[j]) min=j;

templ=num[i];

strcpy(temp2,name[i]);

num[i]=num[min];

strcpy (name[i],name[min]);

num[min]=templ;

strcpy(name[min],temp2);

}

printf("n result:n");

for (i=0;i

printf("n %5d%10s",num[i],name[i]);

}

void search(int n,int num[],char name[N][8])

{int top,bott,mid,loca,sign;

top=0;

bott=N-1;

loca=0;

sign=1;

if ((nnum[N-1]))

loca=-1;

while((sign==1) && (top<=bott))

{mid=(bott+top)/2;

if (n==num[mid])

{loca=mid;

printf("NO. %d , his name is %s.n",n,name[loca]);

sign=-1;

}

else if (n

bott=mid-1;

else

top=mid+1;

}

if (sign==1 || loca==-1)

printf("%d not been found.n",n);

}

8-1

#include

int main()

{ void swap(int *p1,int *p2);

int n1,n2,n3;

int *p1,*p2,*p3;

printf("input three integer n1,n2,n3:");

scanf("%d,%d,%d",&n1,&n2,&n3);

p1=&n1;

p2=&n2;

p3=&n3;

if(n1>n2) swap(p1,p2);

if(n1>n3) swap(p1,p3);

if(n2>n3) swap(p2,p3);

printf("Now,the order is:%d,%d,%dn",n1,n2,n3);

return 0;

}

void swap(int *p1,int *p2)

{int p;

p=*p1; *p1=*p2; *p2=p;

}

8-2

#include

#include

int main()

{void swap(char *,char *);

char str1[20],str2[20],str3[20];

printf("input three line:n");

gets(str1);

gets(str2);

gets(str3);

if(strcmp(str1,str2)>0) swap(str1,str2);

if(strcmp(str1,str3)>0) swap(str1,str3);

if(strcmp(str2,str3)>0) swap(str2,str3);

printf("Now,the order is:n");

printf("%sn%sn%sn",str1,str2,str3);

return 0;

}

void swap(char *p1,char *p2)

{char p[20];

strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

}

8-3

#include

int main()

{ void input(int *);

void max_min_value(int *);

void output(int *);

int number[10];

input(number);

max_min_value(number);

output(number);

return 0;

}

void input(int *number)

{int i;

printf("input 10 numbers:");

for (i=0;i<10;i++)

scanf("%d",&number[i]);

}

void max_min_value(int *number)

{ int *max,*min,*p,temp;

max=min=number;

for (p=number+1;p

if (*p>*max) max=p;

else if (*p<*min) min=p;

temp=number[0];number[0]=*min;*min=temp;

if(max==number) max=min;

temp=number[9];number[9]=*max;*max=temp;

}

void output(int *number)

{int *p;

printf("Now,they are: ");

for (p=number;p

printf("%d ",*p);

printf("n");

}

8-4

#include

int main()

{void move(int [20],int,int);

int number[20],n,m,i;

printf("how many numbers?");

scanf("%d",&n);

printf("input %d numbers:n",n);

for (i=0;i

scanf("%d",&number[i]);

printf("how many place you want move?");

scanf("%d",&m);

move(number,n,m);

printf("Now,they are:n");

for (i=0;i

printf("%d ",number[i]);

printf("n");

return 0;

}

void move(int array[20],int n,int m)

{int *p,array_end;

array_end=*(array+n-1);

for (p=array+n-1;p>array;p--)

*p=*(p-1);

*array=array_end;

m--;

if (m>0) move(array,n,m);

}

8-5

#include

int main()

{int i,k,m,n,num[50],*p;

printf("ninput number of person: n=");

scanf("%d",&n);

p=num;

for (i=0;i

*(p+i)=i+1;

i=0;

k=0;

m=0;

while (m

{if (*(p+i)!=0) k++;

if (k==3)

{*(p+i)=0;

k=0;

m++;

}

i++;

if (i==n) i=0;

}

while(*p==0) p++;

printf("The last one is NO.%dn",*p);

return 0;

}

8-6

#include

int main()

{int length(char *p);

int len;

char str[20];

printf("input string: ");

scanf("%s",str);

len=length(str);

printf("The length of string is %d.n",len);

return 0;

}

int length(char *p)

{int n;

n=0;

while (*p!='0')

{n++;

p++;

}

return(n);

}

8-7

#include

#include

int main()

{void copystr(char *,char *,int);

int m;

char str1[20],str2[20];

printf("input string:");

gets(str1);

printf("which character that begin to copy?");

scanf("%d",&m);

if (strlen(str1)

printf("input error!");

else

{copystr(str1,str2,m);

printf("result:%sn",str2);

}

return 0;

}

void copystr(char *p1,char *p2,int m)

{int n;

n=0;

while (n

{n++;

p1++;

}

while (*p1!='0')

{*p2=*p1;

p1++;

p2++;

}

*p2='0';

}

8-8

#include

int main()

{int upper=0,lower=0,digit=0,space=0,other=0,i=0;

char *p,s[20];

printf("input string: ");

while ((s[i]=getchar())!='n') i++;

p=&s[0];

while (*p!='n')

{if (('A'<=*p) && (*p<='Z'))

++upper;

else if (('a'<=*p) && (*p<='z'))

++lower;

else if (*p==' ')

++space;

else if ((*p<='9') && (*p>='0'))

++digit;

else

++other;

p++;

}

printf("upper case:%d lower case:%d",upper,lower);

printf(" space:%d digit:%d other:%dn",space,digit,other);

return 0;

}

8-9

#include

int main()

{void move(int *pointer);

int a[3][3],*p,i;

printf("input matrix:n");

for (i=0;i<3;i++)

scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);

p=&a[0][0];

move(p);

printf("Now,matrix:n");

for (i=0;i<3;i++)

printf("%d %d %dn",a[i][0],a[i][1],a[i][2]);

return 0;

}

void move(int *pointer)

{int i,j,t;

for (i=0;i<3;i++)

for (j=i;j<3;j++)

{t=*(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

8-10-2

#include

int main()

{void change(int *p);

int a[5][5],*p,i,j;

printf("input matrix:n");

for (i=0;i<5;i++)

for (j=0;j<5;j++)

scanf("%d",&a[i][j]);

p=&a[0][0];

change(p);

printf("Now,matrix:n");

for (i=0;i<5;i++)

{for (j=0;j<5;j++)

printf("%d ",a[i][j]);

printf("n");

}

return 0;

}

void change(int *p) //交换函数

{int i,j,temp;

int *pmax,*pmin;

pmax=p;

pmin=p;

for (i=0;i<5;i++) //找最大值和最小值的地址,并赋给 pmax,pmin

for (j=i;j<5;j++)

{if (*pmax<*(p+5*i+j)) pmax=p+5*i+j;

if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;

}

temp=*(p+12); //将最大值与中心元素互换

*(p+12)=*pmax;

*pmax=temp;

temp=*p; //将最小值与左上角元素互换

*p=*pmin;

*pmin=temp;

pmin=p+1;

//将a[0][1]的地址赋给pmin,从该位置开始找最小的元素

for (i=0;i<5;i++) //找第二最小值的地址赋给 pmin

for (j=0;j<5;j++)

{if(i==0 && j==0) continue;

if (*pmin > *(p+5*i+j)) pmin=p+5*i+j;

}

temp=*pmin; //将第二最小值与右上角元素互换

*pmin=*(p+4);

*(p+4)=temp;

pmin=p+1;

for (i=0;i<5;i++) //找第三最小值的地址赋给pmin

for (j=0;j<5;j++)

{if((i==0 && j==0) ||(i==0 && j==4)) continue;

if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;

}

temp=*pmin; // 将第三最小值与左下角元素互换

*pmin=*(p+20);

*(p+20)=temp;

pmin=p+1;

for (i=0;i<5;i++) // 找第四最小值的地址赋给pmin

for (j=0;j<5;j++)

{if ((i==0 && j==0) ||(i==0 && j==4)||(i==4 && j==0)) continue;

if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;

}

temp=*pmin; //将第四最小值与右下角元素互换

*pmin=*(p+24);

*(p+24)=temp;

}

8-11-1

#include

#include

int main()

{void sort(char s[][6]);

int i;

char str[10][6];

printf("input 10 strings:n");

for (i=0;i<10;i++)

scanf("%s",str[i]);

sort(str);

printf("Now,the sequence is:n");

for (i=0;i<10;i++)

printf("%sn",str[i]);

return 0;

}

void sort(char s[10][6])

{int i,j;

char *p,temp[10];

p=temp;

for (i=0;i<9;i++)

for (j=0;j<9-i;j++)

if (strcmp(s[j],s[j+1])>0)

{strcpy(p,s[j]);

strcpy(s[j],s[+j+1]);

strcpy(s[j+1],p);

}

}

8-12

#include

#include

int main()

{void sort(char *[]);

int i;

char *p[10],str[10][20];

for (i=0;i<10;i++)

p[i]=str[i];

printf("input 10 strings:n");

for (i=0;i<10;i++)

scanf("%s",p[i]);

sort(p);

printf("Now,the sequence is:n");

for (i=0;i<10;i++)

printf("%sn",p[i]);

return 0;

}

void sort(char *s[])

{int i,j;

char *temp;

for (i=0;i<9;i++)

for (j=0;j<9-i;j++)

if (strcmp(*(s+j),*(s+j+1))>0)

{temp=*(s+j);

*(s+j)=*(s+j+1);

*(s+j+1)=temp;

}

}

8-16

#include

int main()

{

char str[50],*pstr;

int i,j,k,m,e10,digit,ndigit,a[10],*pa;

printf("input a string:n");

gets(str);

pstr=&str[0]; /*字符指针pstr置于数组str 首地址*/

pa=&a[0]; /*指针pa置于a数组首地址*/

ndigit=0; /*ndigit代表有多少个整数*/

i=0; /*代表字符串中的第几个字符*/

j=0;

while(*(pstr+i)!='0')

{if((*(pstr+i)>='0') && (*(pstr+i)<='9'))

j++;

else

{if (j>0)

{digit=*(pstr+i-1)-48; /*将个数位赋予digit*/

k=1;

while (k

{e10=1;

for (m=1;m<=k;m++)

e10=e10*10; /*e10代表该位数所应乘的因子*/

digit=digit+(*(pstr+i-1-k)-48)*e10; /*将该位数的数值累加于digit*/

k++; /*位数K自增*/

}

*pa=digit; /*将数值赋予数组a*/

ndigit++;

pa++; /*指针pa指向a数组下一元素*/

j=0;

}

}

i++;

}

if (j>0) /*以数字结尾字符串的最后一个数据*/

{digit=*(pstr+i-1)-48; /*将个数位赋予digit*/

k=1;

while (k

{e10=1;

for (m=1;m<=k;m++)

e10=e10*10; /*e10代表位数所应乘的因子*/

digit=digit+(*(pstr+i-1-k)-48)*e10; /*将该位数的数值累加于digit*/

k++; /*位数K自增*/

}

*pa=digit; /*将数值赋予数组a*/

ndigit++;

j=0;

}

printf("There are %d numbers in this line, they are:n",ndigit);

j=0;

pa=&a[0];

for (j=0;j

printf("%d ",*(pa+j));

printf("n");

return 0;

}


本文标签: 数组 元素 输入 鞍点 数值