《程序设计基础》上机实验报告
学号:201420224912
姓名:许培鑫
班级:计算机149
日期:2015-5-20
指导教师:成筠
成绩:__________
(1)从键盘上输入3个整数,按大小顺序输出(用指针编程实现)。
1、实验内容:
#include<stdio.h>
void paixu(int *i,int *j,int *k)
{
int temp,temp1,temp2;
if(*i<*j)
{
temp=*i;
*i=*j;
*j=temp;
}
if(*i<*k)
{
temp1=*i;
*i=*k;
*k=temp1;
}
if(*j<*k)
{
temp2=*j;
*j=*k;
*k=temp2;
}
}
void main()
{
int i,j,k;
printf("请输入三个要排序的数\n");
scanf("%d%d%d",&i,&j,&k);
paixu(&i,&j,&k);
printf("从大到小为%d %d %d\n",i,j,k);
}
1、运行结果:
(2)(2)写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
2、实验内容:
#include<stdio.h>
int count(char str[])
{
int count=0,i;
for(i=0;i<255&&str[i]!='\0';i++)
count=count+1;
return count;
}
int main()
{
char str[255];
int len;
printf("请输入字符串\n");
scanf("%s",str);
len=count(str);
printf("你输入的字符串长度为%d个字符\n",len);
return 0;
}
2、运行结果:
(3)(3)有一个字符串,包含n个字符,写一个函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符串。
3、实验内容:
#include<stdio.h>
#include<string.h>
void copystr(char *d,char *s,int n)
{
strcpy(d,s+n-1);
}
int main()
{
int j,m;
char str1[255],str2[255];
scanf("%s",str1);
j=strlen(str1);
scanf("%d",&m);
if(m>j||m<0)
{
printf("error\n");
return 0;
}
else
copystr(str2,str1,m);
printf("%s\n",str2);
return 0;
}
3、实验结果:
(4)(4)将n个数按输入时顺序的逆序排列,用函数实现。
4、实验内容
#include<stdio.h>
void daoxu(int a[],int n)
{
int i,j=0;
for(i=0;i<n/2;i++)
{
j=*(a+i);
*(a+i)=*(a+n-1-i);
*(a+n-1-i)=j;
}
}
int main()
{
int n,i;
int *a[255];
scanf("%d",&n);
if(n<=0)
printf("error\n");
else
{
printf("input \n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
daoxu(a,n);
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
}
return 0;
}
4、运行结果
(5)有n个人围成一圈,顺序排号,从第一个开始报数(从1到3),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
5、实验内容
#include<stdio.h>
void main()
{
int i,k,l,m,n; /*n为用户定义的人数,为判断是否出局的条件出局,k为报数器(k=3出局)*/
int *p;
int num[50];
printf("请给出人数n:\n");
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)/*m是指出局的人数,因为有n个人,最后剩下一个人,所以最多出局(n-1)个人,构成循环*/
{
if(*(p+i)!=0) /*判断)是否出局*/
k++; /*没有出局,就报数,计数器加1*/
if(k==3) /*报3的出局*/
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n)
i=0;
}
while(*p==0)
p++;
printf("最后留下来的一个人是%d号\n",*p);
}
这个注释多,抄于网上.
5、运行结果
(6)(6)编译程序,键盘输入月份号,输出该月的英文月名,要求用指针数组处理。
6、实验内容
#include<stdio.h>
char *Month(int k)
{
char*month[]={"illegal month" ,"January","February","March","April","May","June","July","August","September","October","November","December"};
if(k<1||k>12)
return month[0];
else
return month[k];
}
int main()
{
int n;
printf("input month");
scanf("%d",&n);
if(n>0)
printf("%s\n",Month(n));
return 0;
}
6、运行结果