#include<stdio.h> #include<string.h> void getx(char *c1); void getr(char *c2); int x; int main(void) { char s[80]; printf("enter a string:"); gets(s); printf("enter an integer:"); scanf("%d",&x); printf("the new string is:"); getx(s);//由这个函数可以指出指针c1已经指向了s; printf("the invert string is:"); getr(s);//同理; return 0; } void getx(char *c1) { char z[80];//再次定义一个数组用来存放复制后的; int i,y; y=strlen(c1);//y是数组s的长度。 for(i=0;i<x;i++) { z[i]=*(c1+y-x+i);//因为是从第x个字符开始。数组的长度减去x再加上i的值就是ci向后那么多个数组。 } z[x]='\0'; printf("%s\n",z); } void getr(char *c2) { char m[80];//用来存放倒叙输出后的值 int i,a; a=strlen(c2);//a数组s的长度 for(i=0;i<x;i++) { m[i]=*(c2+a-1-i);//x-1-i是从倒数的开始 } m[x]='\0'; printf("%s\n",m); }
#include<stdio.h> #include<string.h> void encrypt(char *);//运用全局变量定义 int main(void) { char s[80]; printf("Input the string:"); gets(s);//运用gets这个函数输入字符串数组 encrypt(s); printf("密文:%s\n",s); return 0; } void encrypt(char *a) { for(;*a!='\0';a++) if(*a=='z') *a='a'; else *a=*a+1; }
#include<stdio.h> #include<string.h> void ccc(char *p); int main(void) { char s[80]; printf("enter s:"); gets(s);//输入数组 ccc(s);//利用自定义函数 puts(s);//输出数组 return 0; } void ccc(char *p) { char ch;//ch是指最后的位数 int x;//x是字符串数组的长度 x=strlen(p); ch=*(p+x-1);//最后一位 //运用switch语句进行判断最后一位是否正确 switch(ch){ case'y': *(p+x-1)='i'; *(p+x)='e'; *(p+x+1)='s'; *(p+x+2)='\0'; break; case's': *(p+x)='e'; *(p+x+1)='s'; *(p+x+2)='\0'; break; case'x': *(p+x)='e'; *(p+x+1)='s'; *(p+x+2)='\0'; break; case'o': *(p+x)='e'; *(p+x+1)='s'; *(p+x+2)='\0'; break; case'h': if((*(p+x-2)='s')||(*(p+x-2)='c')){ *(p+x)='e'; *(p+x+1)='s'; *(p+x+2)='\0'; break; } else{ *(p+x)='s'; *(p+x+1)='\0'; break; } default: *(p+x)='s'; *(p+x+1)='\0'; break; } }
//4、有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。要求: //n大于30; //输出每次退出人的编号 //输出最后留下人的编号 #include<stdio.h> int main(void) { int i,n,m;//n大于30 int k=0;//k是1,2,3循环时的指标。 printf("enter n:"); scanf("%d",&n); int a[80]; int *p; p=a;//指针指向数组a for(i=0;i<n;i++){ *(p+i)=i+1;//给数组赋值 } i=0; m=n; while (m>1){ if(*(p+i)!=0) k++;//不断向后编号; if(k==3) { printf("退出的是%d\n",i);//输出数组的下标 m--;//退出一个,m减少一个; k=0;//重新开始计算k *(p+i)=0; } i++; if(i==n){ i=0; } } for(i=0;i<n;i++){ if(*(p+i)!=0) printf("最后的是%d\n",i); } return 0; }
虽然要求30以上,不过太大了。。。我还是用8举个例子