C语言程序设计的作业

C语言程序设计的作业,第1张

#include <stdio.h>

int main()

{

    int f

    float l,s

    while(1)

    {

        printf("\n输入限速值及所测车速:")

        scanf("%f%f",&l,&s)

        if(s-l<0)

            printf("未超速不处罚记%d分\n",f=0)

        else if((s-l)/l<0.2)

            printf("超速未到20%%记%d分\n",f=3)

        else if((s-l)/l>=0.2 && (s-l)/l<0.5)

            printf("超速20%%未到50%%记%d分\n",f=6)

        else if((s-l)/l>=0.5)

            printf("超速50%%及以上记%d分\n",f=12)

        printf("驾驶证剩余分数:%d\n",12-f)

    }

    return 0

}

#include <stdio.h>

int geti(char c)//获取字符对应下标

int main()

{

    int ia,ib

    char a,b

    printf("猜拳游戏:'V'表示剪刀,' S' 表示石头,'P'表示布\n")

    while(1)

    {

        printf("请输入玩家a的手势:")

        scanf("%c",&a)

        getchar()

        printf("请输入玩家b的手势:")

        scanf("%c",&b)

        getchar()

        ia=geti(a)

        ib=geti(b)

        if(ia==-1 || ib==-1)

        {

            printf("输入不符合规则,请重新输入!\n")

            continue

        }

        if(ia-ib==1 || ia-ib==-2)

            printf("玩家a胜\n")

        else if(ia-ib==-1 || ia-ib==2)

            printf("玩家b胜\n")

        else

            printf("平局\n")

    }

    return 0

}

int geti(char c)//获取字符对应下标

{

    char g[3]={'V','S','P'}//数组元素依次克前一个元素及被后一个元素克制

    int i=0

    for(i=0i<3i++)

        if(g[i]==c)

            return i

    return -1

}

#include <stdio.h>

int main(int argc, char *argv[])

{

char c1, c2

c1 = 97

c2 = 98

printf("c1=%c, c2=%c\n", c1, c2)

printf("c1=%d, c2=%d\n", c1, c2)

return 0

}

(1)

Output:

c1=a, c2=b

c1=97, c2=98

//c1和c2都经过整数提升,所以传递到printf时都为int类型,本质区别只有%d和%c

%c

// 需要一个int类型参数,输出对应的ASCLL编码(可能+本地多字节编码方案)

%d

// 需要一个int类型参数,输出对应十进制数的表示方法

(2)

// 首先分析char类型,有signed char 和 unsigned char 两种,具体取决于实现

// 而char类型参考C语言标准,最少为一个字节长度,而大多数实现,都是一个字节长度

// (参考: <limits.h>)

// 假设char为一个字节长度

// 如果char对应底层类型为 signed char (window, cocoa, unix都这样)

// 那么对有符号数赋值大于它的最大值(127)的结果是不确定的

// 对应C语言,未定义结果

// 那么,最可怕的就是可能程序崩溃

// 再假设在window平台下,197会对应字 11000101 强制不考虑符号赋值

// 那么 c1值为 -59

// 整数提升为int(x32) FFFF FFFF FFFF FFC5

//           int(x16) FFFF FFC5

// window下,默认内码为GBK编码,而对应GBK编码,上述无解

// 你有可能看到一个?,或者什么都没有,或者程序报错都可能

(烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫)

(3)

// 如果改为int,参考(1)的分析,结果相同

只是个例子,不可照抄。

实验内容与要求:

[实验内容]

1、 通过本试验初步培养计算机逻辑解题能力。熟练掌握赋值语句和if语句的应用;掌握switch多路分支语句和if嵌套语句的使用

2、 将前期所学习到的基本数据类型、运算符和表达式等程序设计基础知识运用于具体的程序设计。

3、 进一步熟练掌握输入输出函数scanf, printf和getchar的使用,熟悉math.h中常用数学函数的使用方法

4、 掌握循环语句的应用方法。

5、 了解随机数生成函数。

[实验要求]

在规定期限独立完成实验内容

1、 提交实验报告(电子版)

2、 提交相应源程序文件(文件名 EX6_x姓名.c, 如EX6_1彭健.c)

3、 要求从简单到复杂,后面的要求均在前面的基础上进行修改,前六题,每题均需要保留各自的程序,六题以后,每题均在前一题基础上修改,保留最后一个程序即可(如做到第九题,则保留EX6_9姓名.c,做到第11题,则保留ex6_11姓名.c)

二、实验原理和设计方案:

1、函数头的选则,while循环语句,switch(case)语句,条件表达式,if else条件语句,自增运算符,设置复杂变量,输出随机 *** 作数。

2、 变量要有分数变量和等级变量,要有选择算法题数的变量和计算正确与否的变量,要有随机输出的两个 *** 作数变量和自己按运算符号输入结果的变量,最后还有判断是否要进行的变量字符。中间结果有选择运算符的switch()和分数等级的switch()和错题对题的自增和选择运算符计算的自增。

3、 问题的分析方法:先考虑设置整形变量和字符变量,考虑到要不断循环计算,选择用while语句来循环。在循环体中,将前面的输出提示运算符,和自行选择运算符、答案及输出随机 *** 作数完成。再用switch语句对选择的运算符进行判断,并用变量进行自增运算,计算出错题于对题个数和选择了那种运算符号。在循环体最后用if else语句来判断是否继续执行还是跳出循环。最后根据自增计算的结果和公式进行分数计算,并用switch语句来是想等级的制定。

三、源代码

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

void main()

{

..........

}

四、试验结果和启发

因为输入y要继续循环,所以选择用while语句。在while语句中要结合前面的按提示计算,并嵌套switch语句并用条件表达式,来计算结果正确与否,计算的题型是什么。最后再用switch语句来完成分数等级的判断。

五、实验体会:

描述自己在编程或程序编译运行中遇到的难点和问题及解决的办法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12063993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存