大一 C语言 实验课 2

《程序设计基础》上机实验报告

学号: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个人围成一圈,顺序排号,从第一个开始报数(从13),凡报到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、运行结果


 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值