锐格实验——字符串

 

目录

基础模型

5766  字符插入并排序

5767  字符替换

5786  字符删除

5794  字符串拷贝

5796  字符串的连接

5795  字符串比大小

7124  字符串出现次数

7089   字符串中字母及个数

 

 

5810  数据压缩储存

5582  整数逆序数

5812  句子单词逆序输出

7165  句子中最长单词

5807  大写变小写​

5813  碱基序列配对

8511  凯撒加密

5635  回文数字

5578  判断一个是另一个的倍数

5715  折半查找

5789  把前m个数放后面

5790  交换数组中的最大最小值

5791  冒泡排序

5432  求最小公倍数 

5387  求最大公约数

5355  剪刀石头布

7175  (万能)十进制变十八进制


  • 以下顺序较乱,建议通过目录查找

5807   大写变小写

ps.比较简单的一道,字符串循环。

#include 
#include 
#define LEN 10
int main()
{char array[LEN];int i;gets(array);i=0;while(array[i]!='\0'){//startif(array[i]>='A'&&array[i]<='Z'){array[i]=array[i]+32;i++;}elsei++;//end}printf("%s",array);return 0;
}

 


5813   碱基序列配对

#include 
#include 
#define LEN 100
int main(void)
{char one[LEN],the_other[LEN];  //one用于存储原串;the_other用于存储匹配串int i,j;gets(one);i=0, j=0;while(one[i]!='\0'){//startif(one[i]=='A')the_other[j]='T';if(one[i]=='T')the_other[j]='A';if(one[i]=='C')the_other[j]='G';if(one[i]=='G')the_other[j]='C';i++;j++;//end}the_other[j] = '\0';puts(the_other);return 0;
}

 


5810  数据压缩储存

 ps.这道比较难处理(若有更好方法欢迎指导)

#include 
#include 
#define LEN 100
int main()
{int compress(char array[], int count[]);char array[LEN];int count[LEN];int i;int tail; //count数组的有效最末下标while(scanf("%s",array)!=-1){tail = compress(array, count);   //引用函数for(i=0;i

 


8511 凯撒加密

#include 
#include 
#include 
#define LEN 81
int main()
{void Caesar_transform(char message[], int shift);char message[LEN];int shift;printf("Enter message to be encrypted: ");gets(message);printf("Enter shift amount (1-25): ");scanf("%d",&shift);printf("Encrypted message: ");Caesar_transform(message, shift);printf("%s\n",message);return 0;
}
void Caesar_transform(char message[], int shift)
{
//start
int i;for(i=0;message[i]!='\0';i++){if(message[i]>='a'&&message[i]<='z')message[i]=(message[i]+shift-'a')%26+'a';    //对于'a'先减后加if(message[i]>='A'&&message[i]<='Z')message[i]=(message[i]+shift-'A')%26+'A';}
//end
}

 


5812   单词逆序输出 

ps.比较难也比较复杂! 复制了一下老师的版本,用到“计数器”

#include 
int main()
{char a[100], ch;int i = 0, word = 0, f = 1;printf("Enter a sentence: ");i = 0;while (1)//逐个输入{a[i] = getchar();//把输入的第一个字符放到a[i]里if (a[i] == '?' || a[i] == '!' || a[i] == '.')//句末符号,退出判断并记录{ch = a[i];break;}if (a[i] != ' ' && f == 1)//统计单词数(f=1为“计数器可用”,在开始写入单词后立马f=0,表示目前在写的单词已经计数了,计数器不可用){word++;f = 0;}if (a[i] == ' ' && f == 0)//一个单词输入完成(让f=1,表示计数器可用,可以开始下一个单词输入)f = 1;i++;}ch = a[i];a[i] = '\0';printf("Reversal of sentence: ");/*以下为输出部分*/f = 0;//因为最后一个字符非字母,所以f=0不能输出while (i != -1){if (a[i] == ' ' || a[i] == '\0'){a[i] = '\0';//这里从后往前把单词单独切开if (f == 1)//f=1才能输出{f = 0;if (word > 1)printf("%s ", a + i + 1);elseprintf("%s", a + i + 1);word--;}}else//只要碰到字母,就f=1,表示可以输出{if (f == 0)f = 1;}if (i == 0 && a[i] != '\0')printf("%s", a);i--;}printf("%c\n", ch);//system("pause");return 0;
}

 


5635 回文数字

int main()
{int x[10],n,i,k;while(scanf("%d",&n)!=-1){    k=0;while(n>0){x[k]=n%10;k++;n=n/10;}for(i=0;i<=(k-1)/2;i++)if(x[i]!=x[k-1-i])break;if(i>(k-1)/2)printf("1\n");elseprintf("0\n");}return 0;
}

 


5578  判断一个是另一个的倍数

int main()
{int x,y,flag;while(scanf("%d%d",&x,&y)!=-1){flag=func(x,y);printf("%d\n",flag);}return 0;
}
int func(int x,int y)
{if(x>y&&x%y==0)return 1;elsereturn 0;
}

 


5582  整数逆序数

int main()
{int x,k;while(scanf("%d",&x)!=-1){k=func(x);printf("%d",k);}return 0;
}int func(int x)
{int sum,k;sum=0;while(x>0){k=x;k=k%10;sum=sum*10+k;x=x/10;}return sum;
}

 


5715  折半查找

int main()
{int x,y,k,i,a[200];int low,high,mid;while(scanf("%d %d",&x,&y)!=-1){for(i=0;imid){low=mid+1;k++;}if(a[i]high)printf("%d\n",0);elseprintf("%d\n",k);}return 0;
}

 


5766  字符插入并排序

int main()
{char str[100],ch;while(scanf("%s %c",str,&ch)!=-1){str_len(str,ch);printf("%s\n",str);}return 0;
}void str_len(char a[],char ch){int i,j,m;char t;i=0;while(a[i]!='\0')i++;a[i]=ch;for(j=0;ja[m+1]){    t=a[m];a[m]=a[m+1];a[m+1]=t;}}

 


5767  字符替换

void change(char a[],char x,char y)
{int i=0;while(a[i]!='\0'){if(a[i]==x)a[i]=y;i++;}
}int main()
{char a[100],x,y;int i;while(scanf("%s %c %c",a,&x,&y)!=-1){change(a,x,y);printf("%s\n",a);}return 0;
}

 


5786  字符删除

int main()
{char str[100],ch;int x;while(scanf("%s %c %d",str,&ch,&x)!=-1){str_del(str,ch,x);printf("%s\n",str);}return 0;
}
void str_del(char str[],char ch,int x)
{int i,j;i=0;j=0;while(str[i]!='\0'){if(str[i]!=ch){str[j]=str[i];j++;}i++;}str[j]='\0';for(j=0;str[j]!='\0';j++){if(str[j]>='a'&&str[j]<='z')str[j]=(str[j]-'a'+x)%26+'a';}}

 


5789  把前m个数放后面

void func_xx(int a[],int n)
{
//start
int i,j,temp;
for(i=0;i

 


5790  交换数组中的最大最小值

int main()
{int i,m,a[10];//start    //endwhile(scanf("%d",&a[0])!=-1){for(i=1;i<10;i++)scanf("%d",&a[i]);func_xx(a,10);for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}
return 0;
}void func_xx(int b[],int n)
{//startint i,temp,max_pos,min_pos;
max_pos=min_pos=0;
for(i=1;ib[max_pos])
max_pos=i;
if(b[i]

 


5791  冒泡排序

#include 
#include 
int main()
{double data[10];int tmp,i,j,k;while(scanf("%lf",&data[0])!=-1){for(i=1;i<10;i++)scanf("%lf",&data[i]);func_sort(data,10);for(i=0;i<10;i++)printf("%.1lf ",data[i]);printf("\n");}return 0;
}
void func_sort(double a[],int n)
{//startint i,j;double t;for(i=0;i<10-1;i++)for(j=0;j<10-i-1;j++)if(a[j]

 


5794  字符串拷贝

int main()
{char str[100],dst[100];while(scanf("%s",str)!=-1){str_copy(str,dst);printf("After Copy:%s\n",dst);}return 0;
}void str_copy(char s[],char d[])
{int i;i=0;while(s[i]!='\0'){d[i]=s[i];i++;} d[i]='\0';}

 


5795  字符串比大小

int main()
{char str[100],dst[100];int k;while(scanf("%s %s",str,dst)!=-1){k=str_cmp(str,dst);printf("%d\n",k);}return 0;
}
int str_cmp(char a[],char b[])
{int m,n,i;m=0;while(a[m]!='\0')m++;n=0;while(a[n]!='\0')n++;i=0;   if(m<=n){while(a[i]!='\0'){if(a[i]==b[i])i++;elseif(a[i]>b[i])return 1;elsereturn -1;}return 0;}if(m>n){while(b[i]!='\0'){if(a[i]==b[i])i++;elseif(a[i]>b[i])return 1;elsereturn -1;}return 0;}
}

 


5796  字符串的连接

int main()
{char s[100],t[100],q[100];while(scanf("%s %s",s,t)!=-1){str_cat(s,t,q);printf("%s\n",q);}return 0;
}void str_cat(char s[],char t[],char q[])
{int i,j;for(i=0;s[i]!='\0';i++)q[i]=s[i];for(j=0;t[j]!='\0';j++)q[i+j]=t[j];q[i+j]='\0';
}

 


7165  句子中最长单词

emm

5432  求最小公倍数 

int main()
{int least_common_multiple(int x, int y);int x, y, z;scanf("%d%d%d",&x,&y,&z);printf("%d\n",least_common_multiple(least_common_multiple(x,y),z));return 0;
}
int least_common_multiple(int x, int y)
{int i,t,k;if(x0;i++){if(i%x==0&&i%y==0)break;}return i;
}

 


5387  求最大公约数

int main(){int x,y,t,i;scanf("%d %d",&x,&y);if(x>y){t=y;y=x;x=t;}for(i=x;i>0;i--){if(x%i==0&&y%i==0)break;}printf("%d\n",i);return 0;
}

5355  剪刀石头布

#include 
#include 
int main()
{int computer;int me;scanf("%d",&me);//startcomputer=rand()%3+1;if(computer-me==0)printf("Draw.");if(computer-me==1||me-computer==2)printf("You win.");if(me-computer==1||computer-me==2)printf("You lose.");//endreturn 0;
}

 


7175  (万能)十进制变十八进制

int main()
{int x,j,k,m;char a[100],c[100];char *b="0123456789ABCDEFGH";scanf("%d",&x);j=0;while(x!=0){k=x%18;a[j]=b[k];x=x/18;j++;}a[j]='\0';m=j-1;j=0;while(a[j]!='\0'){c[m]=a[j];m--;j++;}c[j]='\0';printf("%s",c);return 0;
}

7124  字符串出现次数

输入:ababaabcc

输出:3


int len(char b[])
{int i=0;while(b[i]!='\0')i++;return i;
}
int main()
{int flag,sum=0,l,i,j,k;char a[100],b[100];scanf("%s %s",a,b);l=len(b);for(i=0;a[i]!='\0';i++){flag=0;k=i;if(a[i]==b[0]){for(j=1;j

7089   字符串中字母及个数

int main()
{char str[100];int alp[26] = {0};scanf("%s", str);for (int i = 0; i < strlen(str); i++){if (str[i] >= 'a' && str[i] <= 'z')alp[str[i] - 'a']++;}for (int i = 0; i < 26; i++)if (alp[i] != 0)printf("%c  %d\n", i + 'a', alp[i]);return 0;
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章