打印

[原创] C课程设计,高手帮我改改啊!!

C课程设计,高手帮我改改啊!!

设计一个菜单程序
菜单内容:程序运行后,给出6个菜单项的内容褐输入提示,具体如下:
1. FindNum
2. SixOrSeven
3. Detective
4. Bear
5. Diamond
6. Goodbye
Input 1-6:
设计要求:使用数字1~6来选择菜单项,其他输入则不起作用
实验2.2 增加菜单项的处理功能
以2.1设计的菜单为基础,增加各菜单项的处理功能,其实是5道编程题,目的是练习控制语句的使用。
1.FindNum
一只老鼠咬坏了帐本,公式中符号□代表是被老鼠咬掉的地方。想要恢复下面的等式,应在□中填上哪个相同的数字?
(提示:用穷举法求解)
3□×6237=□3×3564
2.SixOrSeven
要求先找出1~100之间所有能被6或7整除的整数;再找出其中只能被6或7整除,但不能同时被两者整除的数
3.Detective
一辆汽车撞人后逃跑。4个目击者提供如下线索:
甲:牌照三、四位相同;
乙:牌号为31xxxx;
丙:牌照五、六位相同;
丁:三~六位是一个整数的平方。
请根据这些线索求出牌照号码。

实验2.2 增加菜单项的处理功能
以2.1设计的菜单为基础,增加各菜单项的处理功能,其实是5道编程题,目的是练习控制语句的使用。
1.FindNum
一只老鼠咬坏了帐本,公式中符号□代表是被老鼠咬掉的地方。想要恢复下面的等式,应在□中填上哪个相同的数字?
(提示:用穷举法求解)
3□×6237=□3×3564
2.SixOrSeven
要求先找出1~100之间所有能被6或7整除的整数;再找出其中只能被6或7整除,但不能同时被两者整除的数
3.Detective
一辆汽车撞人后逃跑。4个目击者提供如下线索:
甲:牌照三、四位相同;
乙:牌号为31xxxx;
丙:牌照五、六位相同;
丁:三~六位是一个整数的平方。
请根据这些线索求出牌照号码。
实验2.2 增加菜单项的处理功能
以2.1设计的菜单为基础,增加各菜单项的处理功能,其实是5道编程题,目的是练习控制语句的使用。
4.Bear
有一只熊到玉米地里掰玉米,一边掰一边吃。第一天吃下了一半,又拿走一个回去喂小熊。第二天又去吃了剩下的一半,走时仍然带了一个回去喂小熊。以后每天都吃前一天剩下的一半,并拿走一个。到第十天时,地里只剩下一个玉米。
求地里原先一共有多少玉米?
5.Diamond
要求编制打印以下图案地程序,注意题目还要求在左边留出一定的空格。
   *
  ***
*****
*******
*****
  ***
   *
6.Goodbye!
除了输出一个简单的告别信息之外,还必须结束程序运行。




#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<math.h>
void FindNum();
void Findroot();
void Detective();
void Bear();
void Diamond();
void Goodbye();
int menu_select()
{
    int num;
printf("choose from the main\n");
printf("1. FindNum \n");
printf("2. Findroot \n");
printf("3. Detective \n");
printf("4. Bear \n");
printf("5. Diamond \n");
printf("6. Goodbye \n");
do
{
printf("please choose you num");
scanf("%d",&num);
switch(num)
{
case 1: FindNum();break;
case 2: Findroot();break;
case 3: Detective();break;
case 4: Bear();break;
case 5: Diamond();break;
case 6: Goodbye();break;
default:printf("input error! \n");
}
}while(num != 6);
}
void Findnum()
{
    int i;
    printf("Welcome to Findnum!\n");
    printf("3_*6237=_3*3564\n");
    for(i=1;i<10;i++)
        if((30+i)*6237==(10*i+3)*3564)
                    {
                printf("number=%d\n",i);
                    break;
                    }
}

void Findroot()
{
        float a,b,c;
        double delta,x1,x2;
        printf("Welcome to Findroot!\n");
        scanf("%f%f%f",&a,&b,&c);
        delta=(b*b)-(4*a*c);
        if(delta<0)
            printf("sorry,has no answer!\n");
        else if(delta==0)
        {
                        printf("has two equal answers!\n");
                    x1=-b/(2*a);
                        printf("X1=X2=%f\n",x1);
        }
        else
        {
            printf("has two different answers!\n");
                    x1=-b+sqrt(delta)/(2*a);
                        x2=-b-sqrt(delta)/(2*a);
                        printf("X1=%f\tX2=%f\n",x1,x2);
        }

        }

void Detective()
{
        int i,j,k,c;
        printf("Welcome to Detective!\n");
        for(i=0;i<=9;i++)
                for(j=0;j<=9;j++)
                        if(i!=j)
                        {
                                k=i*1000+i*100+j*10+j;
                                for(c=31;c<100;c++)
                                        if(c*c==k)
                                                printf("password is:%d\n",310000+k);
                        }
}
void Bear()
{
int day,x1,x2;
printf("Welcome to Bear\n");
day=10;
x2=1;
while(day>0)
{
        x1=(x2+1)*2;
        x2=x1;
        day--;
}
printf("total=%d\n",x1);
}
void Diamond()
{
int i,j,k;
printf("Welcome to Diamond\n");
for(i=1;i<=4;i++)
{
        for(j=1;j<=16-i;j++)
            printf(" ");
        for(k=1;k<=(2*i-1);k++)
                printf("*");
                printf("\n");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i+12;j++)
printf(" ");
for(k=1;k<=7-2*i;k++)
printf("*");
printf("\n");
}
}
void Goodbye()
{
printf("Goodbye!\n");
printf("welcome to use Chenxilin's system,thanks!\n");
}

TOP

没有主函数main                                                        
SixorSeven函数没写,Findroot函数是计算一元二次方程的根
printf("choose from the main\n");改为
printf("choose from the menu:\n");

回复 2# 的帖子

谢谢啊,我改好了!!

TOP

回复 2# 的帖子

void Findroot()
{
        float a,b,c;
        double delta,x1,x2;
        printf("Welcome to Findroot!\n");
        scanf("%f,%f,%f",&a,&b,&c);
        delta=(b*b)-(4*a*c);
        if(delta<0)
            printf("sorry,has no answer!\n");
        else if(delta==0)
        {
                        printf("has two equal answers!\n");
                    x1=-b/(2*a);
                        printf("X1=X2=%f\n",x1);
        }
        else
        {
            printf("has two different answers!\n");
                    x1=-b+sqrt(delta)/(2*a);
                        x2=-b-sqrt(delta)/(2*a);
                        printf("X1=%f\tX2=%f\n",x1,x2);
        }


        }
再帮我改改,谢了!
void Findroot()
{
        float a,b,c;
        double delta,x1,x2,Re;
         printf("Welcome to Findroot!\n");
        scanf("%f,%f,%f",&a,&b,&c);
        delta=(b*b)-(4*a*c);
        if(delta<0)
          {    delta=(-1)*delta;
                Re=(-1)*b/(2*a);
                x1=sqrt(delta)/(2*a);
                x2=(-1)*sqrt(delta)/(2*a);
               printf("X1=%f+%fi\tX2=%f+%fi",Re,x1,Re,x2);
          }
       else
            if(delta==0)
        {
                        printf("has two equal answers!\n");
                    x1=(-1)*b/(2*a);
                        printf("X1=X2=%f\n",x1);
        }
        else
        {
            printf("has two different answers!\n");
                    x1=((-1)*b+sqrt(delta))/(2*a);
                    x2=((-1)*b-sqrt(delta))/(2*a);
                        printf("X1=%f\tX2=%f\n",x1,x2);
        }
}
当delta小于0时有复根

[ 本帖最后由 wander 于 2008-6-13 12:28 编辑 ]

TOP

回复 5# 的帖子

谢谢,还有几题,帮帮我,谢了哥们!
(1)题目:使用数组和指针统计成绩
(2)设计要求:
假设给定班级各科考试平均成绩的原始资料如下:
数学:75
物理:80
外语:83
政治:85
体育:86
人数;30
要求统计出全班学期总平均成绩以及得分最低的科目和该科目的成绩。要求的输出结构如下:
原始信息如下:
数学:75
物理:80
外语:83
政治:85
体育:86
人数;30
平均成绩:0
最低分数科目的成绩:0
最低分数的科目:
全班各科平均成绩如下:
数学:75
物理:80
外语:83
政治:85
体育:86
统计结果如下:
人数:30人
平均成绩:81
最低分数科目的成绩:75
最低分数的科目:数学


把我写的改改
#include<stdio.h>
#include<string.h>
void main()
{
int i,sum=0,min=0;
float average;
int a[8]={75,80,83,85,86,30};
char *meanlow[4]={"NUM","AVERMARK ","LOWRESULT" ,"LOWSUB"};
char name[6][5]={"MATH","PHY","ENG","POL","PE"};
printf("The original data is:\n");
for(i=0;i<5;i++)
printf("%s=%d\n",name,a);
for(i=0;i<5;i++)
{
min=a[0];
if(a<min)
min=a;
sum+=a;
}
average=sum/5;
printf("The lowest result is %d\n",min);
printf("The average is %f\n",average);
printf("The lowest subject is %s\n",name);

}

回复 6# 的帖子

#include<stdio.h>
#include<string.h>
void main()
{
        int i,sum=0,min=0;
        int average;
        int a[8]={75,80,83,85,86,30};
        char *meanlow[4]={"NUM","AVERMARK ","LOWRESULT" ,"LOWSUB"};
        char name[6][5]={"MATH","PHY","ENG","POL","PE"};
        printf("The original data is:\n");
        for(i=0;i<5;i++)
                printf("%s=%d\n",name,a);
        for(i=0;i<5;i++)
        {
                min=a[0];
                if(a<min)
                        min=a;
                sum+=a;
        }
        average=sum/5;
        printf("The lowest result is %d\n",min);
        printf("The average is %d\n",average);
        printf("The lowest subject is %s\n",name);
       
}

TOP

#include<stdio.h>
#include<string.h>
void main()
{
int i,min=0,flag=0;
float sum=0,average=0;

int a[5]={75,80,83,85,86};
char name[5][6]={"MATH","PHY","ENG","POL","PE"};
printf("The original data is:\n");
for(i=0;i<5;i++)
printf("%s:%d\n",name,a);
for(i=0;i<5;i++)
{
    min=a[0];
   if(a<min)
   {
    min=a;
    flag=i;
   }
    sum+=a;
}
  average=sum/5;
  printf("The lowest result is :%d\n",min);
  printf("The average is: %d\n",average);
  printf("The lowest subject is :%s\n",name[flag]);
  getchar();
}
楼主应该看看数组那章!
char *meanlow[4]={"NUM","AVERMARK ","LOWRESULT" ,"LOWSUB"};
这句我没看出来有什么用,所以就删了。

Processed in 0.068199 second(s), 5 queries, Gzip enabled