首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么输出打印5先于正面或反面?

为什么输出打印5先于正面或反面?
EN

Stack Overflow用户
提问于 2022-03-30 04:34:14
回答 3查看 49关注 0票数 0
代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int flip(void); //function prototype

int main(void)// main function{//srand(time(NULL));//random generator

for(int i=1; i<=100; ++i)// for loop flip coin 100 times
{
    
    printf("%2d", flip());
    if(i % 10==0)
    puts("");
    
}// end of for loop 

}// end of main

// Coin flip function
int flip (void){
   int toss = 0;
   toss = rand()%2;
   // generates 1 or 2 at random
   if(toss==1)
       printf("heads");
   else
       printf("tails");
  }//end of flip function

输出:

代码语言:javascript
复制
heads 5heads 5tails 5tails 5heads 5tails 5tails 5tails 5tails 5tails 5
heads 5heads 5heads 5heads 5heads 5heads 5heads 5tails 5heads 5tails 5
heads 5tails 5tails 5heads 5tails 5tails 5heads 5tails 5tails 5heads 5
heads 5tails 5heads 5tails 5heads 5tails 5heads 5heads 5heads 5tails 5
heads 5heads 5tails 5heads 5heads 5tails 5heads 5heads 5heads 5tails 5
heads 5tails 5tails 5heads 5heads 5heads 5heads 5heads 5heads 5tails 5
tails 5heads 5tails 5tails 5tails 5tails 5tails 5tails 5tails 5tails 5
tails 5heads 5tails 5heads 5tails 5tails 5tails 5heads 5heads 5tails 5
heads 5heads 5tails 5tails 5tails 5tails 5tails 5tails 5heads 5tails 5
tails 5heads 5tails 5heads 5heads 5tails 5tails 5tails 5heads 5heads 5
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-30 04:47:56

您调用翻转并打印其结果。翻转功能是打印‘正面’或‘尾巴’,printf是打印5

代码语言:javascript
复制
printf("%2d", flip());

请注意,

代码语言:javascript
复制
int flip (void){
   int toss = 0;
   toss = rand()%2;
   // generates 1 or 2 at random
   if(toss==1)
      printf("heads");
  else
    printf("tails");
}//

说那个翻转返回一个整数。(不确定会是什么)但是您没有返回任何内容,但是编译器将返回任何函数的最后一个返回值,即printf返回它打印的字符数(注意,这不是应该发生的情况,编译器应该警告您您犯了错误)。

由于还不清楚翻转应该返回什么值,我建议将其改为42 --这是一个很好的数字。

代码语言:javascript
复制
int flip (void){
   int toss = 0;
   toss = rand()%2;
   // generates 1 or 2 at random
   if(toss==1)
       printf("heads");
   else
       printf("tails");
   return 42;
  }//

你现在的输出是'heds 42尾42.‘

可能你只是不想打印结果所以替换

代码语言:javascript
复制
 printf("%2d", flip());

使用

代码语言:javascript
复制
 flip();
票数 1
EN

Stack Overflow用户

发布于 2022-03-30 04:52:35

在int触发器(void)函数中,您没有返回任何整数,因此将考虑从最后一个函数返回的整数。如果您打印一个5个字符串,它将返回一个5。如果你要打印的是2个字符,你会得到一个2。

例如:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int check (void );
int main(void) { // main function{//srand(time(NULL));//random generator

for(int i=1; i<=100; ++i)// for loop flip coin 100 times
{
    
    printf("%2d", check());
    if(i % 10==0)
    puts("");
    
}// end of for loop 

}// end of main


int check (void ) { 
    printf("hi");
}

会打印出这样的东西

代码语言:javascript
复制
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2
hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2hi 2

您可以像这样修改代码

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int flip(void); //function prototype
int main(void) { // main function{//srand(time(NULL));//random generator

for(int i=1; i<=100; ++i)// for loop flip coin 100 times
{
    
    flip();
    if(i % 10==0)
    puts("");
    
}// end of for loop 

}// end of main

// Coin flip function
int flip (void){
    int toss = 0;
    toss = rand()%2; // generates 1 or 2 at random
    if(toss==1)
        printf("heads\n");
    else
        printf("tails\n");
    return 0;
}//end of flip function
票数 1
EN

Stack Overflow用户

发布于 2022-03-30 04:40:51

倒装返回打印的字符数(5),因为正面和尾部长度相同。然后在主循环中打印翻转的结果。所以它首先打印正面/反面,然后再打印5。实际上,你应该从翻转中返回一些有意义的值。否则,触发器将返回其返回寄存器中的任何碰巧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71671543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档