A : 简单罗马数字
题目描述
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。现在我们只考虑 I, V, X。
我们知道,I 的数值为 1,V 的数值为 5,X 的数值为 10。
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
现在给定一个罗马数字,将其转换成整数。
输入格式
共 2 行。第一行为一个正整数n (0<n<10),代表字符串的长度。第二行为长度为n的字符串,只含 I,V,X 并保证符合罗马数字规范。
输出格式
罗马数字转换成的整数。
完整答案代码
#include<stdio.h>
int main()
{
int n,X,I,V;
scanf("%d\n",&n);
char a[n];
int i;
int sum=0;
for(i=0;i<n;i++){
scanf("%c",&a[i]);
}
for(i=0;i<n;i++){
if(a[i]=='X'){
sum+=10;
}else if(a[i]=='V'){
sum+=5;
}else if(a[i]=='I'){
sum+=1;
}
if(a[i]=='I'&&a[i+1]=='X'){
sum-=2;
}else if(a[i]=='I'&&a[i+1]=='V'){
sum-=2;
}
}
printf("%d\n",sum);
return 0;
}
B : 完全平方数
题目描述
给定 n 个数,判断这 n 个数中完全平方数的数量,完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1
、4
、9
和 16
都是完全平方数,而 3
和 11
不是。
输入格式
共 2 行数。
第一行为数组长度n,0<n≤1000。
第二行为 n 个数。数据大于 0,小于 1000
输出格式
一个数,为 n 个数中完全平方数的个数。
完整答案代码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,j,sum;
sum=0;
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
for(j=1;j<=a[i];j++){
if(a[i]==j*j){
sum+=1;
break;
}
}
}
printf("%d",sum);
return 0;
}
C : 颜色分类
题目描述
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
输入格式
共 2 行数。
第一行为数组长度n,0<n≤1000。
第二行为 n 个数,表示颜色。取值范围为[0,2]
输出格式
排好序的数组。
完整答案代码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
int i,t,j;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[i]>=a[j]){
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
D : 简单括号匹配
题目描述
有一串由 (
和 )
组成的字符串,请你检测这串字符串是否符合语法。
符合语法即:
- 对于每个
(
,都有)
与之对应,例如(()())
,16,23,45 位置的括号相互对应。 )
不能出现在与之对应的(
之前,如)(
。
输入格式
共 2 行,第一行为 1 个正整数n (0<n<1000) ,代表字符串长度。第二行为长度为n的字符串,只含 (
和 )
。
数出格式
共 1 行,为字符串 Yes
或 No
,代表字符串是否合法。
完整答案代码
#include<stdio.h>
int main()
{
int n;
scanf("%d\n",&n);
char a[n];
int i,j;
int t=0;
for(i=0;i<n;i++){
scanf("%c",&a[i]);
}
if(n%2==0){
for(i=0;i<n;i++){
if(a[i]=='('){
t+=1;
}else{
t-=1;
}
if(t==-1){
printf("No\n");
break;
}
}
}
if(t!=-1){
if(t==0){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}