当前位置:首页 » 编程语言 » c语言罗马柱问题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言罗马柱问题

发布时间: 2022-07-17 05:29:20

c语言 输入罗马数字转换成十进制的数字

#include <stdio.h>
static int map[26] = {0};
#define BUF_SIZE 81
#define N 24
int getNumber(char *s)
{
char *p = s;
int number = 0;
int value;
char c;
while(*p && (*p != '\n')){
value = map[*p];
c = *(p+1);
if((c == '\0') || (c == '\n') || (map[c] <= value)){
number += value;
}else{
number -= value;
}
p++;
}
return number;
}
int main()
{
int n;
int i;
char buf[BUF_SIZE];
int out[N];
map['I'] = 1;
map['V'] = 5;
map['X'] = 10;
map['L'] = 50;
map['C'] = 100;
map['D'] = 500;
map['M'] = 1000;
scanf("%d\n", &n);
if(n > N) return 1;
for(i = 0; i < n; i++){
fgets(buf, BUF_SIZE, stdin);
out[i] = getNumber(buf);
}
for(i = 0; i < n; i++){
printf("%d\n", out[i]);
}
return 0;
}

❷ c语言题目。。。急!!!

1.#include<stdio.h>
int main()
{
static char *a[][10]={"","I","II","III","IV","V","VI","VII","VIII","IX"
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XCC",
"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"
}; /*建立对照表*/
int n,t,i,m;
printf("Please enter number:");
scanf("%d",&n); /*输入整数*/
printf("%d=",n);
for(m=0,i=1000;m<3;m++,i/=10)
{
t=(n%i)/(i/10); /*从高位向低位依次取各位的数字*/
printf("%s",a[2-m][t]); /*通过对照表翻译输出*/
}
printf("\n");
}

*运行结果
1. Please enter number:863
863=DCCCLXIII
2. Please enter number: 256
256=CCLVI
3. Please enter number:355
355=CCCLV
4. Please enter number:522
522=DXXII
5. Please enter number:15
15=XV

*思考题
输入正整数N,产生对应的英文数字符串并输出,例如:
1 ONE 2 TWO 3 THREE
10 TEN 11 ELEVEN
135 ONE HUNDRED THIRTY FIVE

❸ C语言,怎么把十进制数转化成罗马数字啊

#include<stdio.h>

intmain()
{
staticchar*a[][10]={"","I","II","III","IV","V","VI","VII","VIII","IX",
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC",
"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"
};/*建立对照表*/
intn,t,i,m;
printf("Pleaseenternumber:");
scanf("%d",&n);/*输入整数*/
printf("%d=",n);
for(m=0,i=1000;m<3;m++,i/=10)
{
t=(n%i)/(i/10);/*从高位向低位依次取各位的数字*/
printf("%s",a[2-m][t]);/*通过对照表翻译输出*/
}
printf(" ");

}

❹ C语言将罗马数字转换成阿拉伯数字

主要是因为a里面残留了上次输入的数据,你在while语句的最后加一句话:memset(a, 0, 100);就OK了

❺ C语言 十进制数转换为罗马数字的引深

这不就是判断吗,跟输入字符转换成字符串一样的

❻ C语言,数字转罗马。。

初始化错了,如下试试:
static char *a[3][10]={
{" ","I","II","III","IV","V","VI","VII","VIII","IX" },
{" ","X","XX","XXX","XL","L","LX","LXX","LXXX","XCC"},
{" ","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"}
};

❼ 如何使用C语言实现罗马数字转换成整数,以及整数转换成罗马数字

#include<stdio.h>
#include<string.h>
voidmain(){charstr[20];
chard[10][20]={"I","II","III","IV","V","VI","VII","VIII","IX","X"};
inti,k;
scanf("%s",str);
for(i=0,k=0;i<10;i++)if(strcmp(str,d[i])==0){k=i+1;break;}
if(k>0)printf("%s==>%d ",str,k);
scanf("%d",&k);printf("%d==>%s ",k,d[k-1]);
}

❽ c语言里的罗马数字怎么弄

不明白你要做什么!如果是要说输入阿拉伯数字输出罗马数字的话可以用以下方法
#include
using
namespace
std;
void
fout(int
i)
{
switch(i)
{
case
1:
{
printf("I");
break;
}
case
2:
{
printf("II");
break;
}
case
3:
{
printf("III");
}
case
4:
{
printf("IV");
break;
}
case
5:
{
printf("V");
break;
}
case
6:
{
printf("VI");
break;
}
case
7:
{
printf("VII");
break;
}
case
8:
{
printf("VIII");
break;
}
case
9:
{
printf("IX");
break;
}
case
10:
{
printf("X");
break;
}
}
}
void
main()
{
int
i;
cin>>i;
fout(i);
}
配了一个main()函数试下;
这个fout函数只能转换10以下的数。如果有需要的话也可以写出可任意转换的函数不过有点烦不写了

❾ C语言高手进 概率问题

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 精确地分钟的时间类
// 采用24小时制
struct Time
{
int hour;
int min;
};
//长途车早6:00开始发车
const Time BusStartTime = {6,0};
//长途车晚6:00结束发车
const Time BusEndTime = {18,0};
// 发车间隔为1小时
const Time BusIntervalTime = {1,0};
// 长途车正常到站时间 40分钟
const Time BusNormalArriveTime = {0,40};
// 长途车晚点到站的最小最大时间范围
// 最少延迟 0 分钟
const Time BusDelayArriveMinTime = {0,0};
// 最大延迟 40 分钟
const Time BusDelayArriveMaxTime = {0,40};

// 旅客到站等车的时间区间
// 旅客到站等车的最早时间
const Time PassengerWaitEarliestTime = {10,0};
// 旅客到站等车的最晚时间
const Time PassengerWaitLastestTime = {10,30};

// 模拟旅客等车次数
const int SimulateTimes = 5;

/*
比较两个时间 t1 和 t2 的早晚
t1 比 t2 早,返回负数
t1 比 t2 晚,返回正数
t1 和 t2 同时,返回0
*/
int compareTime(struct Time t1,struct Time t2)
{
return (t1.hour * 60 + t1.min) - (t2.hour * 60 + t2.min);
}

/*
在 t1 的基础上加上 t2
结果不会超出24小时制
*/
Time addTime(struct Time t1,struct Time t2)
{
Time result ;
result.min = (t1.min + t2.min)%60;
result.hour = ((t1.hour + t2.hour) + (t1.min + t2.min)/60)%24;

return result;
}

/*
在 t1 的基础上加上 t2
结果转换成分钟 (小时为0)
*/
Time addTime2(struct Time t1,struct Time t2)
{
Time result ;
result.hour = 0;
result.min = (t1.hour*60 + t1.min) + (t2.hour*60 + t2.min);
return result;
}

/*
在 t1 的基础上减去 t2
结果转换成分钟(小时为0)
*/
Time subTime2 (struct Time t1,struct Time t2)
{
Time result ;
result.hour = 0;
result.min = (t1.hour*60 + t1.min) - (t2.hour*60 + t2.min);
return result;
}
/*
产生介于 tMin 和 tMsx 之间的一个随机时间
*/
Time randTime(struct Time tMin,struct Time tMax)
{
Time result ;

int tMinAsMinute = tMin.hour*60 + tMin.min;
int tMaxAsMinute = tMax.hour*60 + tMax.min;
int randTAsMinute = rand()%(tMaxAsMinute - tMinAsMinute ) + tMinAsMinute;

result.hour = randTAsMinute/60;
result.min = randTAsMinute%60;
return result;
}

/*
时间 t 和 n 取平均
*/
int averageTime(struct Time t,int n)
{
return (t.hour*60 +t.min) / n;
}

/*
输出时间 t
*/
void printTime(struct Time t)
{
printf(" [%2d : %2d] ",t.hour,t.min);
}

int main(int argc, char *argv[])
{
Time busStartTime;

Time busNormalArriveTime;
Time randDelayTime;
Time busRealArriveTime;

Time passengerWaitStartTime;
Time passengerMinWaitTime;
Time passengerGetOnBus ;
Time passengerTotalWaitTime = {0,0};

int t ;
// 模拟次数
for(t = 0 ; t < SimulateTimes ; t ++)
{
srand(time(NULL)+t);
// 输出当前模拟第几天
printf("SimulateDay = %6d\n",t + 1);
// 乘客当天到站等车的开始时间
passengerWaitStartTime = randTime(PassengerWaitEarliestTime,PassengerWaitLastestTime);
// 输出乘客当天到站等车的开始时间
printf("passengerWaitStartTime = ");
printTime(passengerWaitStartTime);
printf("\n");

// 乘客当天能等车花费的时间,初始化为一个最大值(24小时)
passengerMinWaitTime.hour = 24;
passengerMinWaitTime.min = 59;

// 模拟一天的发车过程
for( busStartTime = BusStartTime ;
compareTime(busStartTime,BusEndTime)<=0 ;
busStartTime = addTime(busStartTime,BusIntervalTime)
)
{
// 当前 busStartTime 出发的公交车,正常到站时间
busNormalArriveTime = addTime(busStartTime,BusNormalArriveTime);
// 当前 busStartTime 出发的公交车,随机的延迟时间
randDelayTime = randTime(BusDelayArriveMinTime,BusDelayArriveMaxTime);
// 当前 busStartTime 出发的公交车,真实的到站时间
busRealArriveTime = addTime(busNormalArriveTime,randDelayTime);

// 输出公交车信息
printf("busStartTime = "); printTime(busStartTime);
printf(";busNormalArriveTime = "); printTime(busNormalArriveTime);
printf(";randDelayTime = ");printTime(randDelayTime);
printf(";busRealArriveTime = ");printTime(busRealArriveTime);
printf("\n");

/*
当前 busStartTime 出发的公交车,真实的到站时间和
乘客的真实等车时间相交
并且小于当前等到车的时间点
*/

// 比较乘客能否等到这辆车,以及是否最早的班车
if(
compareTime(busRealArriveTime,passengerWaitStartTime) >= 0 &&
compareTime(subTime2(busRealArriveTime,passengerWaitStartTime),passengerMinWaitTime) <= 0
)
{
passengerMinWaitTime = subTime2(busRealArriveTime,passengerWaitStartTime);
passengerGetOnBus = busRealArriveTime;
}
}

// 输出乘车上车信息
printf("passenger get on bus at :");printTime(passengerGetOnBus);
printf("passenger wait :");printTime(passengerMinWaitTime);
printf("\n\n");
passengerTotalWaitTime = addTime2(passengerTotalWaitTime,passengerMinWaitTime);
}
// 求平均值
printf("avarage min = %d\n",averageTime(passengerTotalWaitTime,SimulateTimes));

return 0;
}