c语言错误c2065input,求帮助 C语言小程序有一点异常

当前位置:我的异常网» C++ Builder » 求帮助 C语言小程序有一点异常

求帮助 C语言小程序有一点异常

www.myexceptions.net  网友分享于:2015-03-25  浏览:0次

求帮助 C语言小程序有一点错误。

#include 

#include 

#include 

#define TRUE 1

#define FALSE 0

#define gen_random( min, max ) (( rand() % (int)((( max ) + 1 ) - ( min ))) + ( min ))

int number = 0, input_number=0, score=100, times=7;

int gen_number()

{

srand( time(NULL) );

number = gen_random( 100, 999 );

return number;

}

void main_menu()

{

printf( "******************************************************\n" );

printf( "选择提示输入\"H\", 选择猜数输入\"G\", 选择重新开始输入\"Q\";\n您现在得分: %d, 您还有 %d 次机会.\n",

score, times );

printf( "******************************************************\n" );

}

void help_menu()

{

printf( "******************************************************\n" );

printf( "1. 判断输入的数字比产生的数字大还是小\n" );

printf( "2. 判断是奇数还是偶数\n" );

printf( "3. 判断是不是素数, 输出一定范围内的素数,( 例如:200 500)\n" );

printf( "4. 判断能不能被3整除\n" );

printf( "5. 判断能不能被5整除\n" );

printf( "6. 个位数是什么。\n" );

printf( "7. 随机生成两个数,其中一位是十位数;\n" );

printf( "8. 三位数之和\n" );

printf( "******************************************************\n" );

}

int is_over()

{

if ( score <= 0 )

{

printf( "你输了\n" );

printf( "你的得分为: %d\n", score<0 ? 0 : score );

printf( "产生的数字: %d\n", number );

return TRUE;

}

if ( input_number == number || times <= 0 )

{

if ( times <= 0 ) score = 0;

printf( score==0 ? "你输了\n" : "恭喜你答对了\n" );

printf( "你的得分为: %d\n", score );

printf( "产生的数字: %d\n", number );

return TRUE;

}

return FALSE;

}

int isprime( int m )

{

int i;

if ( m<2 ) return FALSE;

if ( m == 3 || m==2 ) return TRUE;

if ( m%2 == 0 ) return FALSE;

for( i=3; i*i<=m; i+=2 )

if ( !(m%i))

return FALSE;

return TRUE;

}

void show_prime( int min, int max )

{

int i;

for( i=min; i<=max; i++ )

{

if ( isprime( i ) )

printf( "%d  ", i );

}

printf( "\n" );

}

void help_1()

{

if ( input_number == 0 )

{

printf( "你还没有输入猜测的数字\n" );

return;

}

printf( "你选择了提示信息1, 会扣当前分数的1/10!\n" );

score = score - (int)(score*0.1);

printf( "你上次输入的 %d %s产生的数字\n",

input_number,

input_number>number ? "大于" : "小于" );

}

void help_2()

{

printf( "你选择了提示信息2,会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

printf( "产生的数字是%s.\n", number%2==0 ? "偶数" : "奇数" );

}

void help_3()

{

printf( "你选择了提示信息3, 会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

if ( !isprime(number) ){

printf( "产生的数字不是素数\n" );

}else

{

printf( "产生的数字是素数\n" );

printf( "请输入要获知素数的范围( 例如: 200,500 ): " );

int min = 100, max = 999;

scanf( "%d,%d", &min, &max );

fflush( stdin );

show_prime( min, max );

}

}

void help_4()

{

printf( "你选择了提示信息4,会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

printf( "产生的数字%s被3整除\n", number%3==0 ? "能" : "不能" );

}

void help_5()

{

printf( "你选择了提示信息5,会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

printf( "产生的数字%s被5整除\n", number%5==0 ? "能" : "不能" );

}

void help_6()

{

printf( "你选择了提示信息6,当前分数减30\n" );

score -= 30;

printf( "产生的数字的个位数是 %d\n", number%10 );

}

void help_7()

{

printf( "你选择了提示信息7,当前分数减20\n" );

score -= 20;

srand( time(NULL) );

int n = gen_random( 1, 1000 );

int m = gen_random( 1000, 10000 );

int a = n%2 == 0 ? number%10 : (int)(number/100);

int s = (int)(number/10) % 10;

m%2 == 0 ? printf( "%d  %d\n", a, s ) : printf( "%d  %d\n", s, a );

}

void help_8()

{

printf( "你选择了提示信息7,当前分数减33\n" );

score -= 33;

int g = number % 10;

int s = (int)(number/10) % 10;

int b = (int)(number/100);

printf( "三个位数之和: %d\n", g+s+b );

}

void option_h()

{

void (*help_func[8])(void) = {help_1, help_2, help_3, help_4, help_5, help_6, help_7, help_8};

help_menu();

int ch = 0;

scanf( "%d", &ch );

fflush( stdin );

if( ch<=0 || ch>=9 )

{

printf( "输入错误,%d\n", ch );

return;

}

help_func[ch-1]();

}

void option_g()

{

printf( "请输入猜测的数字:" );

scanf( "%d", &input_number );

fflush( stdin );

times --;

}

void reset()

{

gen_number();

score = 100;

times = 7;

input_number = 0;

}

void option_q()

{

printf( "已退出,重新开始.\n" );

reset();

}

int main()

{

reset();

while( 1 )

{

char ch;

main_menu();

scanf( "%c", &ch );

fflush( stdin );

switch( ch )

{

case 'h': case 'H':

option_h();

break;

case 'g': case 'G':

option_g();

break;

case 'q': case 'Q':

option_q();

break;

default:

printf( "选项错误\n" );

}

if ( is_over() )

{

system( "pause" );

reset();

}

}

}

--------------------Configuration: test - Win32 Debug--------------------

Compiling...

test.c

C:\Users\Yu\Desktop\MyProjects\test\test.c(113) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(114) : error C2065: 'min' : undeclared identifier

C:\Users\Yu\Desktop\MyProjects\test\test.c(114) : error C2065: 'max' : undeclared identifier

C:\Users\Yu\Desktop\MyProjects\test\test.c(142) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(143) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(144) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(145) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(146) : error C2065: 'm' : undeclared identifier

C:\Users\Yu\Desktop\MyProjects\test\test.c(146) : error C2065: 'a' : undeclared identifier

C:\Users\Yu\Desktop\MyProjects\test\test.c(146) : error C2065: 's' : undeclared identifier

C:\Users\Yu\Desktop\MyProjects\test\test.c(152) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(153) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(154) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(155) : error C2065: 'g' : undeclared identifier

C:\Users\Yu\Desktop\MyProjects\test\test.c(155) : error C2065: 'b' : undeclared identifier

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(160) : warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void )'

C:\Users\Yu\Desktop\MyProjects\test\test.c(162) : error C2143: syntax error : missing ';' before 'type'

C:\Users\Yu\Desktop\MyProjects\test\test.c(163) : error C2065: 'ch' : undeclared identifier

执行 cl.exe 时出错.

test.exe - 1 error(s), 0 warning(s)

------解决思路----------------------

0错误,0警告!

#include 

#include 

#include 

#define TRUE 1

#define FALSE 0

#define gen_random( min, max ) (( rand() % (int)((( max ) + 1 ) - ( min ))) + ( min ))

int number = 0, input_number=0, score=100, times=7;

int gen_number()

{

srand( time(NULL) );

number = gen_random( 100, 999 );

return number;

}

void main_menu()

{

printf( "******************************************************\n" );

printf( "选择提示输入\"H\", 选择猜数输入\"G\", 选择重新开始输入\"Q\";\n您现在得分: %d, 您还有 %d 次机会.\n",

score, times );

printf( "******************************************************\n" );

}

void help_menu()

{

printf( "******************************************************\n" );

printf( "1. 判断输入的数字比产生的数字大还是小\n" );

printf( "2. 判断是奇数还是偶数\n" );

printf( "3. 判断是不是素数, 输出一定范围内的素数,( 例如:200 500)\n" );

printf( "4. 判断能不能被3整除\n" );

printf( "5. 判断能不能被5整除\n" );

printf( "6. 个位数是什么。\n" );

printf( "7. 随机生成两个数,其中一位是十位数;\n" );

printf( "8. 三位数之和\n" );

printf( "******************************************************\n" );

}

int is_over()

{

if ( score <= 0 )

{

printf( "你输了\n" );

printf( "你的得分为: %d\n", score<0 ? 0 : score );

printf( "产生的数字: %d\n", number );

return TRUE;

}

if ( input_number == number

------解决思路----------------------

times <= 0 )

{

if ( times <= 0 ) score = 0;

printf( score==0 ? "你输了\n" : "恭喜你答对了\n" );

printf( "你的得分为: %d\n", score );

printf( "产生的数字: %d\n", number );

return TRUE;

}

return FALSE;

}

int isprime( int m )

{

int i;

if ( m<2 ) return FALSE;

if ( m == 3

------解决思路----------------------

m==2 ) return TRUE;

if ( m%2 == 0 ) return FALSE;

for( i=3; i*i<=m; i+=2 )

if ( !(m%i))

return FALSE;

return TRUE;

}

void show_prime( int min, int max )

{

int i;

for( i=min; i<=max; i++ )

{

if ( isprime( i ) )

printf( "%d  ", i );

}

printf( "\n" );

}

void help_1()

{

if ( input_number == 0 )

{

printf( "你还没有输入猜测的数字\n" );

return;

}

printf( "你选择了提示信息1, 会扣当前分数的1/10!\n" );

score = score - (int)(score*0.1);

printf( "你上次输入的 %d %s产生的数字\n",

input_number,

input_number>number ? "大于" : "小于" );

}

void help_2()

{

printf( "你选择了提示信息2,会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

printf( "产生的数字是%s.\n", number%2==0 ? "偶数" : "奇数" );

}

void help_3()

{

printf( "你选择了提示信息3, 会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

if ( !isprime(number) ){

printf( "产生的数字不是素数\n" );

}else

{

printf( "产生的数字是素数\n" );

printf( "请输入要获知素数的范围( 例如: 200,500 ): " );

int min = 100, max = 999;

scanf( "%d,%d", &min, &max );

fflush( stdin );

show_prime( min, max );

}

}

void help_4()

{

printf( "你选择了提示信息4,会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

printf( "产生的数字%s被3整除\n", number%3==0 ? "能" : "不能" );

}

void help_5()

{

printf( "你选择了提示信息5,会扣当前分的1/10\n" );

score = score - (int)( score*0.1 );

printf( "产生的数字%s被5整除\n", number%5==0 ? "能" : "不能" );

}

void help_6()

{

printf( "你选择了提示信息6,当前分数减30\n" );

score -= 30;

printf( "产生的数字的个位数是 %d\n", number%10 );

}

void help_7()

{

printf( "你选择了提示信息7,当前分数减20\n" );

score -= 20;

srand( time(NULL) );

int n = gen_random( 1, 1000 );

int m = gen_random( 1000, 10000 );

int a = n%2 == 0 ? number%10 : (int)(number/100);

int s = (int)(number/10) % 10;

m%2 == 0 ? printf( "%d  %d\n", a, s ) : printf( "%d  %d\n", s, a );

}

void help_8()

{

printf( "你选择了提示信息7,当前分数减33\n" );

score -= 33;

int g = number % 10;

int s = (int)(number/10) % 10;

int b = (int)(number/100);

printf( "三个位数之和: %d\n", g+s+b );

}

void option_h()

{

void (*help_func[8])(void) = {help_1, help_2, help_3, help_4, help_5, help_6, help_7, help_8};

help_menu();

int ch = 0;

scanf( "%d", &ch );

fflush( stdin );

if( ch<=0

------解决思路----------------------

ch>=9 )

{

printf( "输入错误,%d\n", ch );

return;

}

help_func[ch-1]();

}

void option_g()

{

printf( "请输入猜测的数字:" );

scanf( "%d", &input_number );

fflush( stdin );

times --;

}

void reset()

{

gen_number();

score = 100;

times = 7;

input_number = 0;

}

void option_q()

{

printf( "已退出,重新开始.\n" );

reset();

}

int main()

{

reset();

while( 1 )

{

char ch;

main_menu();

scanf( "%c", &ch );

fflush( stdin );

switch( ch )

{

case 'h': case 'H':

option_h();

break;

case 'g': case 'G':

option_g();

break;

case 'q': case 'Q':

option_q();

break;

default:

printf( "选项错误\n" );

}

if ( is_over() )

{

system( "pause" );

reset();

}

}

}

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值