实验目的
一、 更进一步熟悉和掌握运算符的使用方法和格式化输出的方法。
二、 熟悉和掌握C语言中的随机数函数:rand() 和随机数种子点函数:srand();
实验要求
实验完成后,将每个程序及程序的运行结果依次拷贝到一个word文档中,统一形成一个.doc文档后提交至Blackboard,文档名可用你的姓名+你的学号。
实验内容
程序一
(第一个程序)编写一个C程序完成以下功能:输入任意一个4位十进制,计算并输出其每位数字相加的结果。(假如输入的是4567,则每位数字相加的结果为4+5+6+7=22)。
程序的具体要求如下:
1) 能从键盘读入一个整形数;
2) 计算输入整形数的千位、百位、十位和个位上的数字相加的结果;
3) 在屏幕上显示相加的结果。
程序一代码
#include <stdio.h>
int main() {
int sum;
scanf("%d", &sum);
int ge = sum % 10;
int shi = (sum / 10) % 10;
int bai = (sum / 100) % 10;
int qian = sum / 1000;
printf("%d", ge + shi + bai + qian);
return 0;
}
程序一结果
程序二
完成下面程序“…”中的内容(填写格式控制符,且一个…只允许填写一个格式控制符)
#include <stdio.h>
void main ( )
{
int a=12,b=132,c=-7891;
float d=25.678,e=-345.45,f=8.9678;
char ch0='A',ch1='B',ch2='C';
printf("012345678901234567890123\n");
printf("...;...;...;\n",a,b,c);
printf("...;...;...;\n",d,e,f);
printf("...;...;...;\n",ch0,ch1,ch2);
printf("...;...;...;\n",a,b,c);
printf("...;...;...;\n",d,e,f);
printf("...;...;...;\n",ch0,ch1,ch2);
printf("...;...;...;\n",a,b,c);
printf("...;...;...;\n",ch0,ch1,ch2);
};
填写好的程序要能输出以下内容
程序二代码
#include <stdio.h>
void main()
{
int a = 12, b = 132, c = -7891;
float d = 25.678, e = -345.45, f = 8.9678;
char ch0 = 'A', ch1 = 'B', ch2 = 'C';
printf("012345678901234567890123\n");
printf("%7d;%8d;%6d;\n", a, b, c);
printf("%7.1f;%8.3f;%6.2f;\n", d, e, f);
printf("%7c;%8c;%6c;\n", ch0, ch1, ch2);
printf("%-7d;%-8d;%-6d;\n", a, b, c);
printf("%-7.1f;%-8.3f;%-6.2f;\n", d, e, f);
printf("%-7c;%-8c;%-6c;\n", ch0, ch1, ch2);
printf("%+07d;%+08d;%+06d;\n", a, b, c);
printf("%07c;%08c;%06c;\n", ch0, ch1, ch2);
};
程序二结果
程序三
编写一个模拟两个人投掷骰子,比大小的程序。
具体要求如下:
1)生成1-6之间的一个随机数。为了使随机数更随机,可以使用随机数初始化函数srand(),注意:一个程序中srand()函数只能使用一次。
模拟掷骰子的程序段参考如下:
srand( (unsigned)time( NULL ) );
printf(“\n请掷骰子(按Enter键)”);
getchar();
num1 = rand( ) % 6 + 1;
printf(“\n您掷的骰子点数是 %d \n”,num1);
为了使上面一段程序能够正常编译连接,在程序开始应该包含下面的头文件:
#include “stdlib.h”
#include “time.h”
2)在程序运行时提示您按ENTER 键(模拟掷骰子)。
在你按ENTER 键后,生成第一个随机数,并进行显示;
之后提示你第二次掷骰子(按ENTER 键),在你按ENTER 键后,生成第二个随机数,并进行显示。
可以利用 getchar() 函数等待按下 ENTER。注意在需要时使用函数 fflush(stdin) 清除键盘缓冲区
3)使用if else 转移控制语句判断两次生成的随机数的大小,分别根据不同情况输出下面的语句之一:
“\nPlayer1 的点数大,Player1 胜出!\n”
“\nPlayer2 的点数大,Player2 胜出!\n”
“\nPlayer1 和 Player2 点数一样大,平局!\n”
4)下面是编译通过后的几个可能的运行结果。
程序三代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand((unsigned)time(NULL));
printf("请Player1掷骰子(按Enter键)\n");
getchar();
int num1 = rand() % 6 + 1;
printf("Player1投出的骰子是%d点\n", num1);
printf("\n");
fflush(stdin);
printf("请Player2掷骰子(按Enter键)\n");
getchar();
int num2 = rand() % 6 + 1;![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6cd3dd2ab29f480888d19c4b5b0e09fc.png#pic_center)
printf("Player2投出的骰子是%d点\n\n", num2);
if (num1 > num2) {
printf("Player1点大,胜出!");
}
else if (num2 > num1) {
printf("Player2点大,胜出!");
}
else if (num1 == num2) {
printf("Player1和Player2点数一样大,平局!");
}
return 0;
}
程序三结果