题目:有n个整数,使其前面各数次序向后移m个位置,末了m个数变成最前面的m个数
1,程序解析:
2,程序源代码:
main()
{
int number[20],n,m,i;
printf(“the total numbers is:”);
scanf(“%d”,&n);
printf(“back m:”);
scanf(“%d”,&m);
for(i=0;i<n-1;i++)
scanf(“%d,”,&number[i]);
scanf(“%d”,&number[n-1]);
move(number,n,m);
for(i=0;i<n-1;i++)
printf(“%d,”,number[i]);
printf(“%d”,number[n-1]);
}
move(array,n,m)
int n,m,array[20];
{
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);
}
【程序69】
题目:有n个人围成一圈,次序排号.从第一个人最早报数(从1到3报数),凡报到3的人退出
圈子,问末了留下的是 原来第几号的那位.
1,程序解析:
2,程序源代码:
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf(“please input the total of numbers:”);
scanf(“%d”,&n);
p=num;
for(i=0;i<n;i++)
(p+i)=i+1;
i=0;
k=0;
m=0;
while(m<n-1)
{
if((p+i)!=0) k++;
if(k3)
{ *(p+i)=0;
k=0;
m++;
}
i++;
if(in) i=0;
}
while(*p==0) p++;
printf(“%d is left\n”,*p);
}
【程序70】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,同时输出其长度.
1,程序解析:
2,程序源代码:
main()
{
int len;
char *str[20];
printf(“please input a string:\n”);
scanf(“%s”,str);
len=length(str);
printf(“the string has %d characters.”,len);
}
length§
char *p;
{
int n;
n=0;
while(*p!=‘\0’)
{
n++;
p++;
}
return n;
}
【程序71】
题目:编写input()和output()函数输入,输出5个学生的信息记录.
1,程序解析:
2,程序源代码:
#define N 5
struct student
{ char num[6];
char name[8];
int score[4];
} stu[N];
input(stu)
struct student stu[];
{ int i,j;
for(i=0;i<N;i++)
{ printf(“\n please input %d of %d\n”,i+1,N);
printf(“num:”);
scanf(“%s”,stu[i].num);
printf(“name:”);
scanf(“%s”,stu[i].name);
for(j=0;j<3;j++)
{ printf(“score %d.”,j+1);
scanf(“%d”,&stu[i].score[j]);
}
printf(“\n”);
}
}
print(stu)
struct student stu[];
{ int i,j;
printf(“\nNo.Name Sco1 Sco2 Sco3\n”);
for(i=0;i<N;i++)
{ printf(“%-6s%-10s”,stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf(“%-8d”,stu[i].score[j]);
printf(“\n”);
}
}
main()
{
input();
print();
}