关于C语言编程问题!一定要高手!在我有得范围内要多少分可以由你说!

来源:百度知道 编辑:UC知道 时间:2024/07/04 06:24:07
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int shuru(int num)
{
int a;
srand(num*num+time(0));
a=(rand()+num)%10;//产生10以内的随机数
return a;
}

void main()
{
int i,num,a,b,c,fuhao,error;
error = 0;//错误数置零
num = 100;//使得下面的while循环成立即可
while(!(num>0&&num<10))//只接受10以内的题目数
{
printf("Please input the sum of exam :");
scanf("%d",&num);
}
for(i=0;i<num;i++)//每次出题开始
{
a = shuru(i);//第一个操作数
b = shuru(a);//第二个
fuhao = (shuru(a+b)+b)/a%2;//产生符号 +或者-
switch(fuhao)
{
case 0://+
if(a+b>10)//超过10重新来
{
i--;
break;
}
else
{
printf("%d : %d + %d = ",i+1,a,b);//出题
scanf("%d",&c);//取输入的结果
if(c != a+b)//答案错误
{
printf("Error!\n");
error++;
}
else//正确答案鼓励一下

看了下,提点建议
一、程序命名规范不好,注释风格不好,可读性差。
二、大致看了下,我觉得开头有个问题。
int shuru(int num)
{
int a;
srand(num*num+time(0));
a=(rand()+num)%10;//产生10以内的随机数
return a;
}
return a; 语句返回的是个局部变量,局部变量的作用域只在int shuru(int num) 函数的两个大括号{}之间,返回后局部变量a的内存已经释放了。我猜想!多输入几个题目肯定会出现莫名其妙的错误,不得不退出做题!建议你测试看看。就算是你几次测试不出问题,但是当你把这个程序作为一个测试软件开始使用之后可能会暴露出问题!

补充一点:
语法上没有问题的程序,在工程应用的时候不一定就是对的。为什么我们在做项目的时候总是要限制使用goto语句、continue语句等,就是因为容易出错(但是语法上并不错!)。有些程序语法没错,顺利通过编译器编译,但是运行之后就会出错,我相信很多人都有过这种经历。

ziguowen你不懂就别乱说人家代码错了~~~这样返回是没有问题的;你C语言白学了么?