❶ 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;
}