2020秋季C语言练习题(10)

A. 按要求输出
运行时间限制: 1000 运行内存限制: 65536
作者: scsyuanbaoku 是否specialjudge: False
题目描述
首先请实现如下两个函数(要自己写代码完成,不允许直接调用库函数):
int myStrLen(char *s);
该函数功能为求字符串s的长度。
void myStrConcat(char *string1, char *string2);
该函数的功能为将字符串string2拼接至字符串string1后边。注意:该函数的两个参数,在调用时有可能会指向同一个字符串,函数需要在这种情况下能正确完成指定的功能。

主函数要求使用以上两个函数实现如下功能:
输入:
第一行为三个整数n(0<n<10),a,b, 第二行为n个整数,后边为n行字符串,每个字符串长度不超过20。
输出:
要求首先将第b行字符串拼接至第a行的字符串后再输出。
第一行为n个用单个空格分隔的整数(最后一个数后无空格),为按各字符串的输入次序输出的各字符串的长度。
后边n行为将输入的字符串按输入的第2行给出的顺序依次输出。
输入保证合法且字符串中不包含空格。

输入样例
2 0 1
1 0
Hello
World
输出样例
10 5
World
HelloWorld

#include<stdio.h>
int myStrLen(char *s);

void myStrConcat(char *string1, char *string2);

int main()
{
	int 	n=0,a=0,b=0;
	char 	str[10][42]={};	//注意字符串相加后的长度 
	int 	x[10]={};
	scanf("%d%d%d", &n, &a, &b);
	
	for(int i=0; i<n; i++){
		
		scanf("%d",&x[i]);	//&不能省略 
		
	}
	for(int i=0; i<n; i++){
		
		scanf("%s",str[i]);
		
	}
	
	myStrConcat(str[a],str[b]);
	
	for( int i=0;i<n;i++){
		
		printf("%d ",myStrLen(str[i]));
		
	}
	printf("\n");
	for(int i=0;i<n;i++){
		
		printf("%s\n",str[x[i]]);
		
	}
	return 0;
}
void myStrConcat(char *string1, char *string2)
{
	int l1=0;
	int l2=0;
	int i=0;
	
	l1=myStrLen(string1);
	l2=myStrLen(string2);
	
	for(i=0;i<l2;i++){
		
		string1[i+l1]=string2[i];
		
	}
}
int myStrLen(char *s)
{
	int l=0;
	
	for(l=0;s[l]!='\0';l++);
	
	return l;
}

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main()
{
	char s1[100]={};//必须定义大小 
	char s2[100]={};
	char k;
	int  l1=0;
	int  l2=0;
	int  i=0;
	
	gets(s1);
	 
	gets(s2);

	scanf("%c",&k);
	
	l1=strlen(s1);
	
	l2=strlen(s2);
	
	for(i=0; i<l1; i++){
		
		if(k==s1[i])
		
		break;
		
	}
	for(int j=l1; i<j; j--){
		
		s1[j+l2-1]=s1[j-1];
		
	}
	for(int j=0; j<l2; j++){
		
		s1[i]=s2[j];
		
		i++;
		
	}
	puts(s1);
	
	return 0;
}

在这里插入图片描述

#include<stdio.h>
#include<string.h>

int main() 
{
	char str[6]={};
	int	 n=0;
	int  sum=0;
	int  sum1=1;
	
	scanf("%s",&str);
	
	n=strlen(str);
	
	if(n==1){
		
		sum=str[0]-'A';
	}
	else{
			for(int i=0; i<n-1; i++){
				
				for(int j=0; j<n-1-i; j++){
					
					sum1*=26;
				}
				sum=sum+sum1*(str[i]-'A');
				
				sum1=1;
			}
			sum=sum+str[n-1]-'A';
	}
		
	printf("%d",sum);
	
	return 0;
} 

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main() 
{
	char str[50]={};
	char str1[51]={};
	char x;
	int	 n=0;
	
	scanf("%s", &str );
	
	n=strlen(str);
	
	for(int i=0; i<n/2; i++){
		x=str[i];
		
		str[i]=str[n-1-i];
		
		str[n-1-i]=x;
	}
	
	for(int i=0; i<n-1; i++){
		str1[0]=str[n-1];
		
		str1[1+i]=str[i];
	}
	
	printf("%s",str1);
	
	return 0;
} 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值