实验 10 指针2
2013-11-14 09:29
399 查看
1、输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。
运行示例
Enter a string: abcABCD
Enter an integer: 4
The new string is: ABCD
The invert string is: DCBA
2、为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:小写字母z变换成为a,其它字符变换成为该字符ASCII码顺序后1位的字符,比如o变换为p。
要求输入一个字符串(少于80个字符),输出相应的密文;要求定义和调用函数encrypt(s),该函数将字符串s变换为密文。
3、请编一个程序,可以将英语规则名词由单数变成复数。已知规则如下:
(a)以辅音字母y结尾,则将y改成i,再加es;
(b)以s、x、ch、sh结尾,则加es;
(c)以元音字母o结尾,则加es;
(d)其他情况直接加s。
要求用键盘输入英语规则名词,屏幕输出该名词的复数形式。
4、有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。
要求:
n大于30;
输出每次退出人的编号
输出最后留下人的编号
要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。
运行示例
Enter a string: abcABCD
Enter an integer: 4
The new string is: ABCD
The invert string is: DCBA
#include<stdio.h> #define N 99 void getx(char *c1); void getr(char *c2); void main() { char a ; puts("请输入一组字符:"); gets (a); getx(a); } void getx(char *c1) { int n,k=0; int j=0; char temp ; puts("请输入选取个数:"); scanf ("%d",&n); while(*(c1+j)!='\0') {j++;} for(int i=j-n;i<j;i++) {temp[k]=*(c1+i);k++;} temp[k]='\0'; getr(temp); puts("新的排序数为:"); puts(temp); } void getr (char *c2) { int i=0; char temp ; while(*(c2+i)!='\0') {i++;} for (int j=0;j<i;j++) {temp[i-j-1]=*(c2+j);} for(int k=0;k<i;k++) {*(c2+k)=temp[k];} }
2、为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:小写字母z变换成为a,其它字符变换成为该字符ASCII码顺序后1位的字符,比如o变换为p。
要求输入一个字符串(少于80个字符),输出相应的密文;要求定义和调用函数encrypt(s),该函数将字符串s变换为密文。
#include<stdio.h> #include<string.h> void fushu(char *p); //定义求复数的指针函数 int main(void) { char str[80]; printf("请输入一个英语单词:"); scanf_s("%s",str); //输入英语单词 fushu(str); puts(str); //从键盘输入 return 0; } void fushu(char *p) //调用指针函数 { int i,j=0; //循环至最后一位字母 for(i=0;*(p+i)!='\0';i++){ j++; } if(*(p+j-1)=='y'){ //若以y结尾,加es *(p+j)='e'; *(p+j+1)='s'; *(p+j+2)='\0'; } //若以s,x,ch,sh结尾,加es else if((*(p+j-1)=='s')||(*(p+j-1)=='x')||((*(p+j-2)=='c')&&(*(p+j-1)=='h'))||((*(p+j-2)=='s')&&(*(p+j-1)=='h'))){ *(p+j)='e'; *(p+j+1)='s'; *(p+j+2)='\0'; } else if(*(p+j-1)=='o'){ //若以o结尾,加es *(p+j)='e'; *(p+j+1)='s'; *(p+j+2)='\0'; } else{ //否则,直接加s *(p+j)='s'; *(p+j+1)='\0'; } }
3、请编一个程序,可以将英语规则名词由单数变成复数。已知规则如下:
(a)以辅音字母y结尾,则将y改成i,再加es;
(b)以s、x、ch、sh结尾,则加es;
(c)以元音字母o结尾,则加es;
(d)其他情况直接加s。
要求用键盘输入英语规则名词,屏幕输出该名词的复数形式。
void fushu(char *p); /*定义求复数的指针函数*/ int main(void) { char str[80]; printf("请输入一个英语单词:"); scanf("%s",str); /*输入英语单词*/ fushu(str); puts(str); /*从键盘输入*/ return 0; } void fushu(char *p) /*调用指针函数*/ { int i,j=0; /*循环至最后一位字母*/ for(i=0;*(p+i)!='\0';i++){ j++; } if(*(p+j-1)=='y'){ /*若以y结尾,加es*/ *(p+j)='e'; *(p+j+1)='s'; *(p+j+2)='\0'; } /*若以s,x,ch,sh结尾,加es*/ else if((*(p+j-1)=='s')||(*(p+j-1)=='x')||((*(p+j-2)=='c')&&(*(p+j-1)=='h'))||((*(p+j-2)=='s')&&(*(p+j-1)=='h'))){ *(p+j)='e'; *(p+j+1)='s'; *(p+j+2)='\0'; } else if(*(p+j-1)=='o'){ /*若以o结尾,加es*/ *(p+j)='e'; *(p+j+1)='s'; *(p+j+2)='\0'; } else{ /*否则,加s*/ *(p+j)='s'; *(p+j+1)='\0'; } }
4、有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。
要求:
n大于30;
输出每次退出人的编号
输出最后留下人的编号
#include<stdio.h> int main(void) { int i,j,n,count,a[100]; /*定义整型变量,count=退出人数,j=报数值*/ printf("输入n:"); /*输入n个人数*/ scanf("%d",&n); /*从键盘输入一个整数*/ for(i=0;i<=n;i++) a[i]=i; count=0; i=1; j=0; while(count<n){ if(i>n)i=1; /*循环完成一遍后,重新从第一个开始*/ if(a[i]!=0) j++; if(j==3) { printf("%3d\t",i); a[i]=0; j=0; count++; } i++; } printf("\n"); return 0; }
相关文章推荐
- 实验 10 指针2
- 实验 10 指针2
- 实验10 指针2
- 实验 10 指针2 (2)为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:小写字母z变换成为a,其它字符变换成为该字符ASCII码顺序后1位的字符,比如o变换为p。
- 实验10:指针2
- 20131111实验 10 指针2
- 实验10 指针2
- 【实验10】指针2
- 实验10 指针2 加密处理
- 实验10 指针2。
- 实验10 指针2
- 实验 10 指针
- 实验 10 指针2
- 实验10指针2(1)输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
- 实验10-指针2
- 实验 10 指针2
- 实验10—指针2
- 实验10 指针2
- 实验10 指针2
- 实验10 指针2