(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);
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语言字符串替换函数 我写的编译没有问题 运行起来可是啥都没有显示 请问哪位大神能看出来哪里有错啊!