|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
想创建一个字符串数组,然后由用户来输入内容。
是我创建的方法错了吗还是哪个参数错了?
- #if(1)
- #include <stdio.h>
- double moni()
- {
- int i;
- int shijian;
- char shijianming[][99] = {'\0'};
- double gailv[99] = { 0 };
- double gailvsum = 0;
- printf("有几个事件?\n");
- shijian = scanf_s("%d", &shijian);
- for (;;)
- {
- for (i = 0;i <= shijian;i++)
- {
- printf("输入第%d个事件是什么\n",i+1);
- shijianming[i][99] = scanf_s("%s", &shijianming[i]);//这里显示缓存区溢出
- printf("输入第%d个事件的概率\n",i+1);
- gailv[i] = scanf_s("%lf", &gailv[i]);
- gailvsum = gailvsum + gailv[i];
- }
- if (gailvsum != 1)
- {
- printf("输入的概率总和不为1,请重新输入\n");
- system("cls");
- }
- else
- {
- break;
- }
- }
- }
- void main()
- {
- int switch1 = 0;
- printf("输入1进行模拟实验,输入2进入概率计算。\n");
- switch1 = scanf_s("%d", &switch1);
- if (switch1 == 1)
- {
- moni();
- }
- }
- #endif
复制代码
您的代码中有几个问题需要进行修正:
1. 在定义 shijianming 数组时,应该指定第二维的大小。例如,可以使用 char shijianming[99][100] 来定义一个有99行、每行最多99个字符(加上字符串结尾符'\0')的二维字符数组。
2. 在输入事件个数时,无需将 shijian 传递给 scanf_s 函数,直接使用 scanf_s("%d", &shijian) 即可。
3. 在输入事件名称和概率时,无需对 shijianming[i] 和 gailv[i] 进行 scanf_s,直接使用 scanf_s("%s", shijianming[i], 99) 和 scanf_s("%lf", &gailv[i]) 即可。
4. 在循环时,应该使用小于号 < 而不是小于等于号 <=,因为数组下标从0开始。
5. 在输入事件概率时,应该使用数组下标,即 gailv[i] = scanf_s("%lf", &gailv[i]) 应该改为 scanf_s("%lf", &gailv[i])。
6. 在 main 函数中,无需将 switch1 再次传递给 scanf_s 函数,直接使用 scanf_s("%d", &switch1) 即可。
以下是已经修正的代码:
- #include <stdio.h>
- double moni() {
- int i;
- int shijian;
- char shijianming[99][100] = {'\0'};
- double gailv[99] = { 0 };
- double gailvsum = 0;
- printf("有几个事件?\n");
- scanf_s("%d", &shijian);
- for (;;) {
- for (i = 0; i < shijian; i++) {
- printf("输入第%d个事件是什么\n", i + 1);
- scanf_s("%s", shijianming[i], 99);
- printf("输入第%d个事件的概率\n", i + 1);
- scanf_s("%lf", &gailv[i]);
- gailvsum = gailvsum + gailv[i];
- }
- if (gailvsum != 1) {
- printf("输入的概率总和不为1,请重新输入\n");
- system("cls");
- }
- else {
- break;
- }
- }
- }
- int main() {
- int switch1 = 0;
- printf("输入1进行模拟实验,输入2进入概率计算。\n");
- scanf_s("%d", &switch1);
- if (switch1 == 1) {
- moni();
- }
- return 0;
- }
复制代码
希望以上修改能够帮助您解决问题,如还有疑问,请随时追问。
|
|