(C语言)请问出了啥问题导致最后运行出来没有下半部分的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(C语言)请问出了啥问题导致最后运行出来没有下半部分的内容?相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<math.h>
#include<string.h>
#define N 3
#define M 3
int num=0;
void cover();
int password();
void question();
int main()
int pw,n,answer;
int score=0;

cover();
printf("\n按任意键继续!");
char c=getchar();
system("cls");
if(password())

void question();
printf("\n谢谢使用,再见!");

else
printf("\n谢谢使用,再见!\n\n");
system("pause");

void cover()
int m;
for(m=0;m<=20;++m)
printf("*");


printf("\n\n\n");
printf("欢迎测试!");
printf("\n\n\n");

for (m=0;m<=20;++m)
printf("*");
printf("\n\n");


int password()
int pw;
int count=3;
while(count)
printf("\n请输入用户名和密码(123):\n");
char pw[8];
char user[8];
scanf("%s%s",user,pw);
if(strcmp(user,"123")==0 && strcmp(pw,"123")==0)

printf("\n测试开始!\n");
return 1;
break;
else
count--;
if(count==0)

printf("\n您输入的密码错误3次!,退出程序:\n");
return 0;

else
printf("\n您输入的密码错误,请重新输入:\n");


void question()
int x,y,answer;
char fuhao;
int t;
int score=0;
int i;
for(i=0;i<M;i++)
printf("Please select +,-\n");
scanf(" %c",&fuhao);
srand((unsigned)time(0));
x=rand()%100;
y=rand()%100;
if(fuhao=='+')
printf("%d+%d=",x,y);
scanf("%d",&answer);
if(answer==(x+y)) score+=10;


else
if(fuhao=='-')
if(x<y)t=x;x=y;y=t;
printf("%d-%d=",x,y);
scanf("%d",&answer);
if(answer==(x-y))
score+=10;


printf("Your score:%d\n",score);




主函数里面的question是声明不是调用

把void去掉就好了

追问

但是去掉的话编译不出,会显示[Error] ld returned 1 exit status

追答

那是哪里出编译错误了,最可能的就是你这个函数没有声明,再最上面声明一下就好了

你可以把完整的错误信息发上来,在ld之前应该还有其他错误

找到原因了,你的question函数写到password里面了

#include
#include
#include
#include
#include
#define N 3
#define M 3
int num=0;
void cover();
int password();
void question();
int main()
int pw,n,answer;
int score=0;

cover();
printf("\\n按任意键继续!");
char c=getchar();
system("cls");
if(password())

question();
printf("\\n谢谢使用,再见!");

else
printf("\\n谢谢使用,再见!\\n\\n");
system("pause");

void cover()
int m;
for(m=0;m<=20;++m)
printf("*");


printf("\\n\\n\\n");
printf("欢迎测试!");
printf("\\n\\n\\n");

for (m=0;m<=20;++m)
printf("*");
printf("\\n\\n");


int password()
int pw;
int count=3;
while(count)
printf("\\n请输入用户名和密码(123):\\n");
char pw[8];
char user[8];
scanf("%s%s",user,pw);
if(strcmp(user,"123")==0 && strcmp(pw,"123")==0)

printf("\\n测试开始!\\n");
return 1;
break;
else
count--;
if(count==0)

printf("\\n您输入的密码错误3次!,退出程序:\\n");
return 0;

else
printf("\\n您输入的密码错误,请重新输入:\\n");







void question()
int x,y,answer;
char fuhao;
int t;
int score=0;
int i;
for(i=0;i<M;i++)
printf("Please select +,-\\n");
scanf(" %c",&fuhao);
srand((unsigned)time(0));
x=rand()%100;
y=rand()%100;
if(fuhao==\'+\')
printf("%d+%d=",x,y);
scanf("%d",&answer);
if(answer==(x+y)) score+=10;


else
if(fuhao==\'-\')
if(x<y)t=x;x=y;y=t;
printf("%d-%d=",x,y);
scanf("%d",&answer);
if(answer==(x-y))
score+=10;


printf("Your score:%d\\n",score);

参考技术A 没有执行完的主要可能性就是有两个:
1,有阻塞的系统调用
这个的scanf 就是一个阻塞调用,需要等待输入;
可以试试不断在控制台输入需要的内容。

2,有死循环产生
while(count)
如果count处理不当就有可能产生死循环

C ++返回向量,无法弄清楚出了啥问题

【中文标题】C ++返回向量,无法弄清楚出了啥问题【英文标题】:C++ return vector, can't figure out what's wrongC ++返回向量,无法弄清楚出了什么问题 【发布时间】:2010-08-11 08:17:25 【问题描述】:

以下程序不断崩溃,我不知道出了什么问题。似乎 v 在 main 函数中以某种方式不可用..

#include <iostream>
#include <vector>

using namespace std;

vector<string> *asdf()

    vector<string> *v = new vector<string>();
    v->push_back("blah");
    v->push_back("asdf");
    return v;


int main()

    vector<string> *v = NULL;
    v = asdf();

    for (int i=0; i<(v->size()); v++) 
        cout << (*v)[i] << endl;
    

    delete v;

    return 0;

【问题讨论】:

我猜是最愚蠢的错误,谢谢帮助! 你应该去掉这段代码中的动态分配,没有理由。 这只是一个愚蠢的例子。 【参考方案1】:

你想要:

 for (int i=0; i<(v->size()); i++) 

您的代码是递增指针,而不是索引。这是尽可能避免动态分配事物的一个很好的理由。

【讨论】:

使用迭代器是更可取的 IHMO @Little Depends - 对于向量 operator[] 通常更短、更清晰,甚至可能更快一点。 它也可能更慢。例如,如果运行时像 MSVC 在某些版本中默认执行的那样执行边界检查。【参考方案2】:

你应该把 v++ 改成 i++

【讨论】:

【参考方案3】:

v++是原因

【讨论】:

以上是关于(C语言)请问出了啥问题导致最后运行出来没有下半部分的内容?的主要内容,如果未能解决你的问题,请参考以下文章

c语言字符串替换函数 我写的编译没有问题 运行起来可是啥都没有显示 请问哪位大神能看出来哪里有错啊!

Xampp 没有运行我的 php 文件,知道可能出了啥问题

关于C语言参数化宏的问题?

C#多线程 - 出了啥问题,如何使用 AutoResetEvent

C ++返回向量,无法弄清楚出了啥问题

DataGrid显示不出来