| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1839 人关注过本帖, 1 人收藏
标题:记录下我最近学习写的程序,新手,,分享下。
只看楼主 加入收藏
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:0 
回复 10楼 TonyDeng
谢谢版主,受教了,我觉得我应该才在第二阶段,我会继续加油的。

[ 本帖最后由 ZJQLOVELYY 于 2012-1-25 23:22 编辑 ]
2012-01-25 23:19
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:0 
给学生出四则运算考试题,通过计算机随机产生10道四则运算题,两个操作数位1~10之间的随机数,运算类型为随机产生的加,减,乘,除中的任意一种,输入正确答案,则显示“Rigth!”,否则显示“Not correct!",10道做完,按每题10分统计,然后打印总分和做错题数。
程序代码:
#include<stdio.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>
int add(void);   //加法函数
int sub(void);     //减法   
int mul(void);     //乘法
int div(void);   //除法
int main()
{
    int (*pf[4])(void);   //定义一个长度为4的函数指针数组
    int count=0,grade=0,wrong_answer=0; 
    double result;   //定义学生输入的结果
    srand((unsigned)time(0));   //初始化随机种子
    pf[0]=add;
    pf[1]=sub;
    pf[2]=mul;
    pf[3]=div;
    do
    {
        if((pf[rand()%4])()==1)    //随机调用四则运算函数,学生答对函数返回1,否则0
            grade+=10;
        else
            wrong_answer++;   //统计做错题目的数量
        count++;
    }while(count<10);
    printf("grade=%d,the number of wrong answer is %d\n",grade,wrong_answer);
    return 0;
}
int add(void)
{
    double result;
    double x,y;
    srand((unsigned)time(0));  
    x=(rand()%100)*0.1f;   //产生一个0到10的实数
    y=(rand()%100)*0.1f;
    printf("%.1f+%.1f=",x,y);
    scanf("%lf",&result);
    if(fabs(x+y-result)<0.01)    //比较两个数是否相等
    {
        printf("Right!\n"); 
        return 1;
    }
    else
    {    printf("Not correct!\n");
        return 0;
       
    }
}
int sub(void)
{    double result,x,y;
    srand((unsigned)time(0));
    x=(rand()%100)*0.1f;
    y=(rand()%100)*0.1f;
    printf("%.1f-%.1f=",x,y);
    scanf("%lf",&result);
    if(fabs(x-y-result)<0.01)
    {
        printf("Right!\n");
        return 1;
    }
    else
    {
        printf("Not correct!\n");
        return 0;
       
    }
}
int mul(void)
{    double result,x,y;
    srand((unsigned)time(0));
    x=(rand()%100)*0.1f;
    y=(rand()%100)*0.1f;
    printf("%.1f*%.1f=",x,y);
    scanf("%lf",&result);
    if(fabs(x*y-result)<0.01)
    {   
        printf("Right!\n");
        return 1;       
    }
    else
    {   
        printf("Not correct!\n");
        return 0;       
    }
}
int div(void)
{    double result;
    double x,y;
    srand((unsigned)time(0));
    x=(rand()%100)*0.1f;
    y=(rand()%100)*0.1f;
    printf("%.1f/%.1f=",x,y);
    scanf("%lf",&result);
    if(fabs(x/y-result)<0.01)
    {
        printf("Right!\n");
        return 1;
    }
    else
    {
        printf("Not correct!\n");
        return 0;       
    }
}




[ 本帖最后由 ZJQLOVELYY 于 2012-1-27 16:09 编辑 ]
2012-01-27 16:05
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:0 
四则运算题 答案用的是switch来产生随机四则运算
2012-01-27 16:07
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:0 
掷骰子游戏,投两枚骰子之后,计算点数之和,如果第一次投的点数和为7或11,则游戏者赢,如果第一次点数和为2,3,12,则输,如果第一投的点数为其余的,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数算是游戏者胜,如果掷7次仍未赚到该点数,则游戏者输;
程序代码:
[color=#0000FF]#include<stdio.h>
#include<stdlib.h>
#include<time.h>
enum GAME{LOST=-1,CONTINUE,WON}; 
int main()
{
    enum GAME gameStatus;  //定义枚举变量
    int mypoint,sum=0,i,count=0;
    srand(time(0));
    mypoint=rand()%6+1;   //掷出的点数
    sum+=mypoint;
    mypoint=rand()%6+1;
    sum+=mypoint;         //两次点数之和
    getchar();         //printf("%d\t",sum);  //需要时打印出中间结果
    if(sum==7||sum==11)
        gameStatus=WON;
    else if(sum==2||sum==3||sum==12)
        gameStatus=LOST;
    else
    {
        do
        {
            mypoint=rand()%6+1; 
            mypoint+=rand()%6+1;   //printf("%d\t",mypoint); //需要时打印出中间结果
            if(sum==mypoint)break;
            sum=mypoint;
            count++;
        }while(count<7);
        if(count<7)gameStatus=WON;  //小于七次代表循环是非正常退出,即sum等于mypoint
        else gameStatus=LOST;
    }
    if(gameStatus==WON)
        printf("WON\n");
    else printf("LOST\n");
    return 0;
}




[/color]
2012-01-27 16:54
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:0 
餐饮服务质量打分
程序代码:
[color=#0000FF]#include<stdio.h>
int main()
{
    int count[11]={0};   //count[0]不用,其余每个元素分别代表分数1-10,
    int grade[40],i,j; 
    for(i=0;i<40;i++)
    {
        printf("Enter #%d grade(1-10):",i+1);
        scanf("%d",&grade[i]);
        if(grade[i]>10||grade[i]<1)   //避免输入的数字超出范围
        {
            printf("Enter error!please input again:");
            scanf("%d",&grade[i]);
        }
    }
    for(i=0;i<40;i++)
        count[grade[i]]++;   //统计该分数的人数
    printf("Grade\tCount\tHistogram\n");
    for(i=1;i<=10;i++)
    {
        printf("%d\t%d\t",i,count[i]);
        for(j=0;j<count[i];j++)
            printf("*");
        printf("\n");
    }
    return 0;
}
    

[/color]
2012-01-27 17:46
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:0 
程序代码:
[color=#008000]//下面是我上周写的一个销售管理系统,感觉不太好,有点烂,求大虾指教。。


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define MAX 1000
#define PERSON 4+1
typedef struct Time{
    int year;
    int month;
    int day;
}DATA;
struct Product{
    int number;      //商品代号
    char name[20];   //商品名称   
    char Tran[MAX];    //交易类型  S为售出,J为进货
    int weight;      //商品重量
    int total;       //商品库存量
    int sales;           //一种商品的销售量
    int saler[PERSON];   //销售员售出一种产品总和
    DATA time[MAX];      //交易时间
    int single[MAX];    //单笔交易的数量
    int Trader[MAX];    //交易人员代号
}product[MAX];
struct Product temp[100];   //排序时的中间变量
int N=6;
int total_sale[PERSON][PERSON]={{0},{0,1,2,3,4}};  //每位销售员售出全部商品的总和
int pro_number,sal_number,sale;   //依次为产品代号,销售员代号,销售量
int COUNT=0;   //统计总共交易次数
FILE *fp;   
void Inputsales();   //输入信息
void Input_Purchase();
void calu_data();   //销售员销量统计
void output_data();   //输出统计报表
void search_data();   //查询信息
void sort_data(int n);    //产品排序
void menu();     //显示菜单
void Init();    //初始化结构体数组
void save_data();   //保存文件
void read_data();  //读取文件信息
void display();   //输出所有交易信息
void modify();    //修改信息
void search_stock();  //查询库存信息
void main()  //主函数
{
    Init();
      read_data();
    menu();
    save_data();
    printf("谢谢使用!\n");
    system("pause");
}
void Inputsales()   
{
    char ch;
    sale=0;
    system("CLS");   //清屏
    do
    {
        while(1)
        {
            printf("输入销售员代号(1-4):");
            scanf("%d",&sal_number);getchar();
       
            if(sal_number>0&&sal_number<5)
                break;
            printf("\a输入有误,请重新输入\n");
        }
        do
        {
            while(1)
            {
                printf("产品代号:");   
                scanf("%d",&pro_number);
           
                getchar();
                if(pro_number>0&&pro_number<N)
                    break;
                printf("\a输入有误,请重新输入\n");
            }
            product[pro_number].Tran[COUNT]='S';    //赋值为售出
            product[pro_number].Trader[COUNT]=sal_number;
            printf("销售数量:");
            while(scanf("%d",&sale)!=1||sale<0)
            {
                printf("\a输入有误,请重新输入\n");
                printf("销售数量:");
            }
            product[pro_number].single[COUNT]=sale;
            printf("销售年份:");           
            scanf("%d",&product[pro_number].time[COUNT].year);
            while(1)
            {
                printf("销售月份:");
                scanf("%d",&product[pro_number].time[COUNT].month);
                if((product[pro_number].time[COUNT].month>0)&&product[pro_number].time[COUNT].month<13)
                    break;
                printf("\a输入有误\n");
            }
            while(1)
            {
                printf("销售日:");
                scanf("%d",&product[pro_number].time[COUNT].day);
                if(product[pro_number].time[COUNT].day>0&&product[pro_number].time[COUNT].day<32)
                    break;
                printf("\a输入有误\n");
            }
            product[pro_number].total=product[pro_number].total-sale;   //库存量减去销售的数量
            COUNT++;    
            getchar();
            total_sale[0][sal_number]+=sale;   //计算销售员售出产品总和
            product[pro_number].saler[sal_number]=total_sale[0][sal_number];
            product[pro_number].sales+=total_sale[0][sal_number];    //计算售出单种产品数量
            printf("是否继续输入该销量员销量(Y/N):");
            scanf("%c",&ch);
            getchar();
        }while(ch!='n'&&ch!='N');
        system("CLS");
        printf("是否继续输入其他销售员销量(Y/N):");
        scanf("%c",&ch);
        getchar();
    }while(ch!='N'&&ch!='n');
}
void calu_data()  //在第一次输入时能排序,关闭后再读取不能排序
{
    int i,j,index,temp,k;
    for(i=1;i<PERSON;i++)
    {
        index=i;
        for(j=i+1;j<PERSON;j++)
        {
            if(total_sale[0][index]<total_sale[0][j])
                index=j;
            for(k=0;k<2;k++)
            {
                temp=total_sale[k][index];
                total_sale[k][index]=total_sale[k][i];
                total_sale[k][i]=temp;
            }
        }
    }
    printf("每位销售员售出量从高到低为:");
    for(i=1;i<PERSON;i++)
        printf("%4d",total_sale[1][i]);
    putchar('\n');
}
void output_data()
{
    int sum[5]={0},i,j;
    printf("\t销售统计报表\n");
    printf("\t\t\t产品代号\t\t\t销售之和\n");
    printf("销售员代号");
    for(i=1;i<N;i++)
        printf("\t%d",i);
    putchar('\n');
    for(i=1;i<PERSON;i++)
    {
        printf("%5d    ",i);
        for(j=1;j<N;j++)
        {
            printf("   %5d",product[j].saler[i]);
            sum[i]+=product[j].saler[i];
        }
        printf("\t%3d\n",sum[i]);
        sum[0]+=sum[i];
    }
    printf("每种产品之和 ");
    for(i=1;i<N;i++)
        printf("%4d    ",product[i].sales);
    printf("\t总和%4d\n",sum[0]);
}
void sort_data(int n)    
{    
    int i,j,index;    //由于结构体temp在函数内不能定义太大,故在前面定义全局变量,
    for(i=1;i<n;i++)
    {
        temp[i].sales=product[i].sales;
    }
    for(i=1;i<n;i++)
        temp[i].number=i;
    for(i=1;i<n;i++)              //使用选择法排序
    {
        index=i;
        for(j=i+1;j<N;j++)
            if(temp[index].sales<temp[j].sales)
                index=j;
        temp[0].sales=temp[index].sales;
        temp[index].sales=temp[i].sales;
        temp[i].sales=temp[0].sales;
        temp[0].number=temp[index].number;
        temp[index].number=temp[i].number;
        temp[i].number=temp[0].number;
    }   
    printf("产品从高到低为:\n");
    printf("产品代号:");
    for(i=1;i<n;i++)
        printf("%5d",temp[i].number);
    printf("\n产品销量:");
    for(i=1;i<n;i++)
        printf("%5d",temp[i].sales);
}  
void menu()      //显示菜单
{
    int choice;
    while(1)
    {
        printf("===========================================================\n");
        printf("\t\t1.输入销售信息\n");
        printf("\t\t2.统计销售信息\n");
        printf("\t\t3.产品销量排序\n");
        printf("\t\t4.输入进货信息\n");
        printf("\t\t5.按日期查询信息\n");
        printf("\t\t6.修改信息\n");
        printf("\t\t7.查询商品库存信息\n");
        printf("\t\t8.输出所有交易信息\n");
        printf("\t\t9.输出统计报表\n");
        printf("\t\t0.退出系统\n");
        printf("============================================================\n");
        printf("\n\t\t请选择:");
        while(scanf("%d",&choice)!=1||choice<0||choice>9)
        {
            getchar();
            printf("输入有误,请重新输入\n");
            printf("请选择(0-9):");
        }
        switch(choice)
        {
        case 1:Inputsales();break;
        case 2:calu_data();break;
        case 3:sort_data(N);break;
        case 9:output_data();break;
        case 5:search_data();break;
        case 4:Input_Purchase();break;
        case 8:display();break;
        case 6:modify();break;
        case 7:search_stock();break;
        }
        if(choice==0)
        {
            break;
        }
        system("pause");    //系统调用,暂停
        system("CLS");
    }
}
void Init()                    //对结构体变量初始化
{
    int i,j;
    for(i=1;i<N;i++)
    {
        memset(product[i].single,0,MAX);
        memset(product[i].Trader,0,MAX);
        product[i].sales=0;  
        product[i].number=i;
        product[i].total=0;
        for(j=0;j<MAX;j++)
        {
            product[i].time[j].year=2000;
            product[i].time[j].month=1;
            product[i].time[j].day=1;
        }


    }
}
void search_data()
{
    int y,m,d,i,j;
    scanf("请输入要查找的日期");
    printf("销售年份:");
    scanf("%d",&y);
    while(1)          //控制输入月份的有效性,下同
    {
        printf("销售月份:");
        scanf("%d",&m);
        if(m>0&&m<13)
            break;
        printf("\a输入有误\n");
    }
    while(1)
    {
        printf("销售日:");
        scanf("%d",&d);
        if(d>0&&d<32)
            break;
        printf("\a输入有误\n");
    }
    printf("\t交易日期--------交易类型--------交易数量--------交易人员\n");
    for(i=1;i<N;i++)
        for(j=0;j<COUNT;j++)
            if(y==product[i].time[j].year&&m==product[i].time[j].month&&d==product[i].time[j].day)
            {
                printf("\t%d-%d-%d",y,m,d);
                if(product[i].Tran[j]=='S')
                    printf("\t售出");
                else printf("\t进货");
                printf("\t\t%d\t\t%3d\n",product[i].single[j],product[i].Trader[j]);
            }
}
void Input_Purchase()
{
    int n,amount,Trader1;    //n为购买产品的代号,amount为购买的数量
    int y,m,d;   //购买的日期
    char c,ch1;    //ch1确定信息是为Y 否为N, c为是否继续输入
    while(1)
    {

   
        printf("输入操作人代号:");
        scanf("%d",&Trader1);
        getchar();
        printf("输入购入产品的代号:");
        scanf("%d",&n);
        printf("购入的数量:");
        scanf("%d",&amount);
        printf("购入的年月日(如2008-1-1):");
        scanf("%d%*c%d%%*c%d",&y,&m,&d);
        getchar();
        getchar();
        printf("是否录入(Y/N):");
        scanf("%c",&ch1);
        getchar();
        if(ch1=='y'||ch1=='Y')
        {
            product[pro_number].Tran[COUNT]='J';
            product[n].total+=amount;
            product[n].Trader[COUNT]=Trader1;
            product[n].time[COUNT].day=d;
            product[n].time[COUNT].month=m;
            product[n].time[COUNT].year=y;
            COUNT++;
        }
        getchar();
        printf("是否继续输入:(Y/N)");
        scanf("%c",&c);
        getchar();
        if(c=='N'||c=='n')
            break;
    }
}   
void save_data()
{
    int i;
    if((fp=fopen("sale_data","wb"))==NULL)
    {
        printf("打开文件失败\n");
        return;
    }
    for(i=0;i<N;i++)
    {
        if(fwrite(&product[i],sizeof(struct Product),1,fp)==1)
            continue;
        else break;
    }
    if(i>0)
    {
        printf("保存成功\n");
        return;
    }
    system("CLS");
    fclose(fp);

}
void read_data()
{
    int i=0;
    if((fp=fopen("sale_data","ab+"))==NULL)
    {
        printf("初始化文件!\n");
        return;
    }
    else
    {
        while(!feof(fp))
        {
            if(fread(&product[i],sizeof(struct Product),1,fp)==1)
                i++;
        }
    }
    fclose(fp);
}
void display()
{
    int i,j;
    printf("\t=========================所有交易=======================\n");
    printf("\t交易日期--------交易类型--------交易数量--------交易人员\n");
    for(i=1;i<N;i++)
        for(j=0;j<COUNT;j++)
        {
            if(product[i].single[j]!=0)
            {
                printf("\t%d-%d-%d",product[i].time[j].year,product[i].time[j].month,product[i].time[j].day);
                if(product[i].Tran[j]=='S')
                    printf("\t售出");
                else printf("\t进货");
                printf("\t\t%d\t\t%3d\n",product[i].single[j],product[i].Trader[j]);
            }
        }
}
void modify()      //修改信息
{
    int i,tp;    //tp为中间变量
    char ch,ch1;  //ch为确认信息
    while(1)
    {
        printf("输入要修改商品的代号:");
        scanf("%d",&i);
        if(i>N)
            printf("该商品不存在!\n");
        else
        {
            printf("产品总量为:%d\n",product[i].total);
            printf("输入要修改的数量:");
            scanf("%d",&tp);
            printf("是否修改(Y/N):\n");
            getchar();
            scanf("%c",&ch);
            getchar();
            if(ch=='Y'||ch=='y')
            {
                product[i].total=tp;
                printf("修改成功\n");
            }
        }
        printf("是否继续修改(Y/N):");
        scanf("%c",&ch1);
        getchar();
        if(ch=='N'||ch=='n')
            break;
    }

}
void search_stock()  
{
    int number;  //要查询产品的代号

    printf("输入要查询库存产品的代号:");
    scanf("%d",&number);
    getchar();
    if(number>N)
        printf("无此商品!");
    else
        printf("剩余库存:%d\n",product[number].total);
}




            

    


[/color]
2012-02-18 11:32
京都的雨
Rank: 1
来 自:萍乡
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-2-16
收藏
得分:0 
猜数游戏加点,(红色部分)更好些。
#include  <stdio.h>
 #include  <stdlib.h>
 #include  <time.h>         
void main()
 {
     int magic;                  
     int guess;
     srand(time(NULL));
     magic = rand() % 100 + 1;
     printf("Please guess a magic number:");
     scanf("%d", &guess);
 for(;guess!=magic;)
     {if (guess > magic)
     {
           printf("Wrong!Too high!\n");
     }
     else if (guess < magic)
     {
           printf("Wrong!Too low!\n");
     }
    printf("Please guess a magic number again:");
     scanf("%d", &guess);
     }
     
     
          printf("Right!\n");
          printf("The number is:%d\n", magic);
     
 }
2012-02-18 13:29
逸浪
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-2-18
收藏
得分:0 
路过。。。。。
2012-02-18 15:13
简约式迷恋
Rank: 2
等 级:论坛游民
帖 子:22
专家分:44
注 册:2012-1-19
收藏
得分:0 
LZ加油
2012-02-18 23:54
王东川
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-19
收藏
得分:0 
嗯,这也很好了,我也是新手。
2012-02-19 00:08
快速回复:记录下我最近学习写的程序,新手,,分享下。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.098460 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved