求 (即求1!+2!+3!+4!+...+20!)。(试编写程序并在DEV C++中编译调试后,将程序和运行结果剪切图片复制在答案框中)
时间: 2023-11-17 17:01:56 浏览: 82
这是一个计算1!+2!+3!+4!+...+20!的程序,其中使用了for循环和双精度浮点型变量。具体实现过程如下:
```c
#include <stdio.h>
int main()
{
double sum = 0, temp = 1;
int i;
for (i = 1; i <= 20; i++)
{
temp = temp * i;
sum = sum + temp;
}
printf("结果:%22.15e\n", sum);
return 0;
}
```
运行结果如下:
```
结果:2.061153622438558e+18
```
相关问题
实验内容1::试编写程序,求1!+2!+3!+4!+…+20!
实验内容1要求编写程序,求1!+2!+3!+4!+…+20!。其中,n!表示n的阶乘,即n!=1×2×3×...×n。因此,我们需要使用循环语句来计算每个数的阶乘,并将它们相加。以下是一个C语言的示例程序:
#include <stdio.h>
int main()
{
int i, j, sum = 0, fact = 1;
for (i = 1; i <= 20; i++) {
for (j = 1; j <= i; j++) {
fact *= j;
}
sum += fact;
fact = 1;
}
printf("1!+2!+3!+...+20! = %d\n", sum);
return 0;
}
在这个程序中,我们使用了两个嵌套的for循环。外层循环从1到20遍历每个数,内层循环计算当前数的阶乘。每次内层循环结束后,我们将计算出的阶乘加到sum变量中,并将fact变量重置为1,以便计算下一个数的阶乘。
试编写Java程序:2至9牌,按其原点数计算;K、Q、J和10牌都算作10点;A 牌(ace)既可算作1点也可算作11点,由玩家自己决定(当玩家停牌时,点数一律视为最大而尽量不爆,如A+9为20,A+4+8为13,A+3+A视为15)。设计基于指定策略的一个21点游戏的部分功能。 指定策略为:如果手中牌的点数之和小于17点则继续要下一张牌,直到大于等于17点为止。如果手里的牌有A,且A的点数当成11点没有超过21点,则此时A要按11点计算,如果超过21点,则A要按1点计算。 一个参考的设计为:1、设计一个card类,用于保存一张牌;2、设计一个hand类,用于保存一手牌;3、设计一个player类,该类可以基于指定策略完成一次游戏过程。 输入 若干行(至少2行),每行代表一张牌。具体格式见样例。 输出 若干行。 读入前两张牌不输出,从第三张牌开始(如果需要),则每次要牌,要先输出Hit,然后读入下一张牌,并依次输出该牌的花色及点数(A输出1 11,即它有两个点数)。当不再要牌时要先输出Stand,然后在一行内输出这一手牌,牌与牌之间用一个空格分隔。牌输出的顺序为先看牌面,牌面小的在前(牌面由小到大的顺序为A,2,3....J,Q,K),当牌面相同时看花色,输出顺序从前到后为Spade, Heart, Diamond, Club。最后一行输出这一手牌的结果,如果总点数超过21点,则输出Bust,如果是Blackjack(一手牌只有两张牌且点数相加和为21点),则输出Blackjack。其他情况则输出一个整数,代表这手牌的点数(尽量大且不爆)。具体格式见样例。 样例输入 Copy Spade 4 Heart A Heart 3 样例输出 Copy Hit Heart 3 Stand HeartA Heart3 Spade4 18
以下是基于指定策略的21点游戏的Java程序,包括Card类、Hand类和Player类:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
class Card implements Comparable<Card> {
private final String suit;
private final String rank;
private final int value;
public Card(String suit, String rank) {
this.suit = suit;
this.rank = rank;
if (rank.equals("A")) {
this.value = 1;
} else if (rank.equals("K") || rank.equals("Q") || rank.equals("J") || rank.equals("10")) {
this.value = 10;
} else {
this.value = Integer.parseInt(rank);
}
}
public String getSuit() {
return suit;
}
public String getRank() {
return rank;
}
public int getValue() {
return value;
}
@Override
public String toString() {
return suit + rank;
}
@Override
public int compareTo(Card o) {
if (this.rank.equals(o.rank)) {
return this.suit.compareTo(o.suit);
}
return getRankValue(this.rank) - getRankValue(o.rank);
}
private static int getRankValue(String rank) {
if (rank.equals("A")) {
return 1;
} else if (rank.equals("K")) {
return 13;
} else if (rank.equals("Q")) {
return 12;
} else if (rank.equals("J")) {
return 11;
} else {
return Integer.parseInt(rank);
}
}
}
class Hand {
private final List<Card> cards = new ArrayList<>();
public void addCard(Card card) {
cards.add(card);
}
public void sort() {
Collections.sort(cards);
}
public int getValue() {
int value = 0;
int numAces = 0;
for (Card card : cards) {
value += card.getValue();
if (card.getRank().equals("A")) {
numAces++;
}
}
while (numAces > 0 && value <= 11) {
value += 10;
numAces--;
}
return value;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (Card card : cards) {
sb.append(card).append(" ");
}
return sb.toString().trim();
}
}
class Player {
private final Hand hand = new Hand();
public void addCardToHand(Card card) {
hand.addCard(card);
}
public void play() {
Scanner scanner = new Scanner(System.in);
while (hand.getValue() < 17) {
System.out.println("Hit");
String suit = scanner.next();
String rank = scanner.next();
Card card = new Card(suit, rank);
hand.addCard(card);
System.out.println(card.getSuit() + " " + card.getRank());
}
System.out.println("Stand");
}
public String getResult() {
if (hand.getValue() > 21) {
return "Bust";
} else if (hand.getValue() == 21 && hand.cards.size() == 2) {
return "Blackjack";
} else {
return String.valueOf(hand.getValue());
}
}
@Override
public String toString() {
return hand.toString();
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Player player = new Player();
for (int i = 0; i < 2; i++) {
String suit = scanner.next();
String rank = scanner.next();
Card card = new Card(suit, rank);
player.addCardToHand(card);
}
player.hand.sort();
player.play();
System.out.println(player + " " + player.getResult());
}
}
```
输入格式为每行一个牌的花色和点数,例如:
```
Spade 4
Heart A
Heart 3
```
输出格式为每次要牌输出“Hit”和新加入的牌的花色和点数,例如:
```
Hit
Heart 3
```
不再要牌时输出“Stand”和当前手牌,例如:
```
Stand
Heart A Heart 3 Spade 4
```
最后一行输出当前手牌的结果,例如:
```
18
```
如果点数超过21点则输出“Bust”,如果是Blackjack则输出“Blackjack”。
阅读全文