第十次上机

来源:互联网 发布:现代软件学院毕业证 编辑:程序博客网 时间:2024/05/20 22:02

任务1:
输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,再对y串的内容前后倒置后存入数组z中并输出。
要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。


程序:

#include<stdio.h>#include <string.h>#define n 100void getr(char *y);void getx(char *x){int m,i,j=0,k=0;char temp[n];printf("Enter a string: ");scanf("%d",&m);while(*(x+j)!='\0')    {j++;}for(i=j-m;i<j;i++){temp[k]=*(x+i);  k++;}   temp[k]='\0'; getr(temp);  printf("The new string is: ");  puts(temp);}  void getr(char *y){int i=0,j,k;    char temp[n];    while(*(y+i)!='\0')    {i++;}    for(j=0;j<i;j++)    {temp[i-j-1]=*(y+j);}    for(k=0;k<i;k++)    {*(y+k)=temp[k];}    }  void main(){char str[n];printf("Enter a string: ");gets(str);getx(str); }


运行:

----------------------分割线----------------------
任务2:
定义一维整形数组,对数组分别进行“由大到小”和"由小到大"排序并输出。
要求:用函数和指针实现排序

程序:

#include<stdio.h>#include <string.h>#define m 100void px(int *x,int n){int i,j;int temp=NULL;for(j=0;j<n;j++)  {      for(i=0;i<n-1;i++)      {if(*(x+i)>*(x+i+1))      {temp=*(x+i);      *(x+i)=*(x+i+1);      *(x+i+1)=temp;}      } }}  void ddx(int *y,int n){int i,j;int temp=NULL;for(j=0;j<n;j++)  {      for(i=0;i<n-1;i++)      {if(*(y+i)<*(y+i+1))      {temp=*(y+i);      *(y+i)=*(y+i+1);      *(y+i+1)=temp;}      } }}  void main(){int str[m];int i=0,n=0;printf("请输入一组数:");while(1)  {scanf("%d",&str[i]);  i++; n++;char c;if((c=getchar())=='\n')break;}  px(str,n);printf("从小到大:\n ");for(i=0;i<n;i++)  {printf("%d ",*(str+i));}   printf("\n");ddx(str,n);printf("从大到小:\n");for(i=0;i<n;i++)  {printf("%d ",*(str+i));}  printf("\n");}


运行:

----------------------分割线----------------------
任务3:
输入字符串s,将字符放入d数组中,最后输出d中的字符串。
要求:
用函数和指针实现

程序:

#include<stdio.h>#include <string.h>#define m 100void sc(char *x);void main(){char s[m];int i=0,n=0;printf("请输入一串字符:");gets(s);sc(s);}void sc(char *a){int i=0;char b[m];while(*a!='\0'){if(*a>=65&&*a<=90||*a>=97&&*a<=122){b[i]=*a;  i++;}  a++;}  b[i]='\0';  puts(b);  }  


运行:

原创粉丝点击