logo

  • 首页
  • 博客简介
  • 说说页面
  • 关于
  • 文章存档
    • C#教程
    • C#实战
  • 隐私政策
  • 首页
  • 博客简介
  • 说说页面
  • 关于
  • 文章存档
  • 隐私政策
您正在使用IE浏览器,部分内容可能无法显示,建议您换用更新的浏览器,请单击下载Chrome浏览器
显示屏过小,本网站无法正常显示
你处于离线状态,正在显示缓存网页
首页/ 分类:信奥/ 【信奥】Java vs C++

【信奥】Java vs C++

2020年11月17日 14:37:55 吕舒君 0 百度已收录 2,186 次浏览

题面

题目描述

Java和C++两种语言的辩手都可以相互争论数小时去证明他们的编程语言是最好的。用Java的人将告诉人们,他们的程序更加清楚且不容易犯错,而用C++的人会嘲笑他们没有能举出有代表性的实例来证明他们的观点,或者告诉他们Java的程序运行速度慢而且源代码太长。

另一个问题是,用Java和C++的人永远无法在标识符的命名上取得共识。在Java中,由多个单词组成的标识符的命名规则如下:第一个单词是以小写字母开头,接下来的每一个单词以大写字母开头,分隔符是不允许使用的。其他所有的字母都是小写的。下面举出一些例子:javaIdentifier,longAndMnemonicIdentifier,name,nEERC。

而在C++中,人们只用小写字母来命名标识符。他们运用下划线“_”来分隔单词。下面举出一些例子:c_identifier,long_and_mnemonic_identifier,name(当只有1个单词时,用Java和C++的人是统一的),n_e_e_r_c。

你需要写一个程序来相互翻译Java和C++的程序。当然了,翻译后的标识符必须符合它的命名规则,否则人们不会认同你的翻译。

给你一个标识符,它可能会是Java或者C++标识符中的一种,而你需要将其翻译成另一种。如果这个标识符既不是Java标识符也不是C++标识符,你的程序需要报告错误。翻译必须符合规范,所以就需要改变字母大小写或者添加、删除下划线。

输入

输入文件1行,包含一个标识符。标识符由大小写字母和下划线组成,长度不会超过100。

输出

如果输入的是Java标识符,输出应该为C++标识符;反之亦然。如果输入既不是Java标识符,也不是C++标识符,则输出“Error!”。

思路

先用scanf读入整行字符串,逐位判断字符串是否为大写或下划线,一旦发现,按照题面要求修改即可。

注意单个字符情况需要特判,字符串使用gets读入会WA

最终代码

#include<bits/stdc++.h>
  using namespace std;
  char s[1000];
  bool f[3];
  int l,i,j,k;
  int main()
  {
  	cin>>s;
  	l = strlen(s);
  	for (i = 0; i < l; i++)
  	{
  		if (s[0] >= 65 && s[0] < 97)
  		{
  			f[1] = true; f[2] = true;
  			break;
  		}
  		if (s[0] == '_')
  		{
  			f[1] = true; f[2] = true;
  			break;
  		}
  		if (s[i] >= 65 && s[i] < 97 && s[i] != 95)
  		{
  			l++;
  			f[2] = true;
  			for (j = l; j > i; j--) s[j] = s[j - 1];
  			s[i + 1] = s[i] + 32;
  			s[i] = '_';
  			i++;
  		}
  		if (s[i] == '_')
  		{
  			f[1] = true;
  			if (s[i + 1] >= 97)
  			{
  				for (j = i; j < l - 1; j++) s[j] = s[j + 1];
  				s[i] = s[i] - 32;
  				l--;
  			}
  			else
  			{
  				f[2] = true;
  				break;
  			}
  		}
  	}
  	if (f[1] && f[2]) printf("Error!");
  	else for (i = 0; i < l; i++) printf("%c", s[i]);
  
  	return 0;
  }
作者头像
吕舒君
就是本站站长(^_−)☆
提示
你已经点赞过了
上一篇文章缩略图
【信奥】收集树叶
« 上一篇文章
下一篇文章缩略图
【前端教程】如何创建一个属于自己的在线思维导图网站
下一篇文章 »
原创声明
版权声明: 本文由作者吕舒君于2020年11月17日 14:37:55原创发表.
转载请务必取得作者同意, 并附带本页面地址: https://cszj.wang/1498.html
查看作者 吕舒君 的所有文章
发表评论
account_circle
email
email
评论区
共0条回复
暂无评论,说说你的看法吧!
侧边栏
文章目录
  • 题面
  • 题目描述
  • 输入
  • 输出
  • 思路
  • 最终代码
最近文章
文章缩略图
【Windows】Windows11初体验
升级&安装 不久前,微软刚刚发布了“十年来最重要的操
文章缩略图
【Windows】如何关闭Windows的自动更新
引子 Windows的自动更新的问题已经困扰了一些用户很久了
文章缩略图
【前端教程】如何创建一个属于自己的在线思维导图网站
什么是思维导图 思维导图,英文是The Mind Map,又
文章缩略图
【信奥】Java vs C++
题面 题目描述 Java和C++两种语言的辩手都可以相互争论
文章缩略图
【信奥】收集树叶
题面 描述 给出一棵二叉树,收集并移除所有叶子,重复执行,直
最近文章
您尚未登录
底部推荐
随机文章
文章缩略图
【Windows】Windows11初体验
升级&安装 不久前,微软刚刚发布了“十年来最重要的操
站点统计
文章总数:35篇
评论总数:127条
分类总数:9个
标签总数:81个
网站运行:1995天
最后更新:2022-4-4
友情链接
搜索站 文件管理 洛谷 WordPress大学

吕舒君的博客,一个传递知识的网站!

前往本站
吕舒君的博客
一个传递知识的网站

版权所有·吕舒君(2016-2022)

酷博客(V4.1.0). Theme By 吕舒君. 网站已使用SSL加密 本页面进行了 54 次请求在 0.271 秒内加载完成, 使用了 12.84MB 的内存。