塔里木大学信息工程学院1塔里木大学计算机基础课程实验报告课程名称:C语言程序设计任课教师:杨全丽机房:逸夫楼209计算机编号:实验日期:20140328实验成绩:实验班级:通信17-1、2学生姓名:杜毅实验名称:实验二选择结构程序设计实验目的:1、掌握C语言中关系运算符和逻辑运算符的运算规则。2、掌握if-else语句的使用。3、掌握switch语句的使用。4、掌握break语句的使用。5、掌握选择结构的嵌套。实验步骤与内容:1、程序填空:输入正整数,判断是否既是5也是7的倍数,是,输出YES,否则,输出NO。#includestdio.hvoidmain(){inta;scanf(%d,&a);if(a%5==0&&a%7==0){printf(YES);}else{printf(No);}}2、程序填空:从键盘输入一行字符,可以是数字、字母、或是其他字符,对输入的字符进行判断,统计字符串中数字字符、字母字符、空格字符及其他字符的个数,当输入换行符时结束循环。#includestdio.hmain(){charc;intnum,letter,blank,others;letter=0,num=0,blank=0,others=0;while((c=getchar())!='\n')塔里木大学信息工程学院2{if(c='a'&&c='z'||c='A'&&c='Z')letter++;elseif(c='0'&&c='9')num++;elseif(c=='')blank++;elseothers++;}printf(num=%d,letter=%d,blank=%d,others=%d\n,num,letter,blank,others);}3、程序改错:从键盘上输入三个整数,并比较大小,按照从小到大的顺序输出。#includestdio.hvoidmain(){inta,b,c,t;scanf(%d%d%d,&a,&b,&c);if(ab){t=a;a=b;b=t;}if(ac){t=a;塔里木大学信息工程学院3a=c;c=t;}if(bc)t=b,b=c,c=t;printf(%d%d%d\n,a,b,c);}运行结果:程序出错分析:第一:scanf的括号里没有&。第二;if语句下没有{}。4、程序改错。#includestdio.h/********error**********/main(){intx,y,t;/********error**********/scanf(%d%d,&x,&y);if(x=y){t=x-y;printf(%d\n,t);}/********error**********/else塔里木大学信息工程学院4{t=x+y;printf(%d\n,t);/********error**********/}}运行结果:程序出错分析:第一:main后不能有;。第二:scanf中的“”里不能有\n。第三:then应改为else。第四:最后应加上}。5、分析程序的运行结果。#includestdio.h#includemath.hmain(){inta,gewei,shiwei,baiwei;scanf(%3d,&a);/*输入一个3位的整数*/gewei=a%10;shiwei=a/10%10;baiwei=a/100;if(pow(gewei,3)+pow(shiwei,3)+pow(baiwei,3)==a)printf(YES\n);elseprintf(NO\n);}塔里木大学信息工程学院5运行结果(输入153和246):程序分析:以输入153为例分析,当输入153后,分别把个位、十位、百位给了gewei、shiwei、baiwei。然后,如果各位自乘3次之和等于输入之数,则输出YES,否则,输出NO。塔里木大学信息工程学院66、分析程序的运行结果。#includestdio.hvoidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf(%d%d\n,a,b);}运行结果:程序分析:对于switch(x)对应两条语句case1:switch(y)、case2:a++;b++;break;儿在case1:switch(y)中又有两条语句case0:a++;break;case1:b++;break;一个是对x,一个是对y,只要条件满足就得执行对应语句。局体分析:x满足case1所以执行switch(y)对应的两条语句,y满足case0所以执行其后语a++;break;,a等于1,后遇到break即结束该条对应语句,即switch(y)对应的语句结束。又由于case1:switch(y){case0:a++;break;case1:b++;break;}其花括号没有塔里木大学信息工程学院7break语句,所以不管x是否满足case2都要执行其后语句a++;b++;break;所以a便成2,b便成了1。7、编写程序:铁路托运行李,假设每张车票可按每公斤0.5元托运50公斤以内的行李,如果超过50公斤时,超过的部分每公斤加价0.3元,试编写一道计算行李托运费的程序。设托运行李重为W公斤,托运费为X元,要求如下:①用if语句实现分支。自变量w与函数值x均采用实型。②自变量w值从键盘输入,且输入前要有提示信息。③数据的输出格式采用以下形式:w=输入值,x=计算值④分别以行李重30公斤,80公斤为自变量,运行该程序。记录运行结果。程序:#includestdio.hvoidmain(){floatx,y;scanf(%f,&x);if(x=0&&x=50){y=x*0.5;}elsey=x*0.5+(x-50)*0.3;printf(%f,y);}运行结果:塔里木大学信息工程学院88、编写程序:输入实数x,按下列公式求分段函数y的值。y=x2+0.8x+6(x<-20)x2-0.47x+3.9(-20≤x<10)x3+2.6x-7(x≥10)塔里木大学信息工程学院9程序:#includestdio.hvoidmain(){floatx,y;scanf(%f,&x);if(x-20){y=x*x+0.8*x+6;}elseif(x=-20&&x10){y=x*x-0.47*x+3.9;}elseif(x=10){y=x*x*x+2.6*x-7;}else{printf(²»ÔÚ¶¨ÒåÓòÄÚ¡£);}printf(%f,y);}运行结果: