#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语句来完成分数等级的判断。
五、实验体会:
描述自己在编程或程序编译运行中遇到的难点和问题及解决的办法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)