1、实验五:逻辑结构程序设计1、实验目的(1)熟练掌握switch语句;(2)结合程序掌握一些简单的算法;(3)学会调试程序。2、实验内容(1)用switch语句编程实现:给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90分以上为A,8089为B,7079为C,6069为D,60分以下为E。当输入0100范围之外的数据时,要能报错。答:#includemain() float score; char grade; printf(请输入学生成绩:); scanf(%f,&score); while (score100 , score0) printf(n输入有误,请重输 ); scan
2、f(%f,&score); switch(int)(score/10) case 10: case 9:grade=A;break; case 8:grade=B;break; case 7:grade=C;break; case 6:grade=D;break; case 5: case 4: case 3: case 2: case 1: case 0:grade=E; printf(成绩是%5.1f,相应的等级是%c.n,score,grade); (2)给出一个不多于5位的正整数,要求: 求出它有几位数;分别打印出每一位数字;按逆序打印出各位数字;答:#include#includev
3、oid main() long int num; int indiv,ten,hundred,thousand,ten_thousand,place; printf(请输入一个整数: ); scanf(%ld,&num); if(num9999) place=5; else if(num999) place=4; else if(num99) place=3; else if(num9) place=2; else place=1; printf(位数=%dn,place); printf(每位数字为:); ten_thousand=num/10000; thousand=(int)(num-
4、ten_thousand*10000)/1000; hundred=(int)(num-ten_thousand*10000-thousand*1000)/100; ten=(int)(num-ten_thousand*10000- thousand*1000-hundred*100)/10; indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10); switch(place) case 5:printf(%d,%d,%d,%d,%dn,ten_thousand,thousand,hundred,ten,indi
5、v); printf(反序数字为:); printf(%d,%d,%d,%d,%dn,indiv,ten,hundred,thousand,ten_thousand); break; case 4:printf(%d,%d,%d,%dn,thousand,hundred,ten,indiv) ; printf(反序数字为:); printf(%d,%d,%d,%dn,thousand,hundred,ten,indiv); break; case 3:printf(%d,%d,%dn,hundred,ten,indiv); printf(反序数字为:); printf(%d,%d,%dn,in
6、div,ten,hundred); break; case 2:printf(%d,%dn,ten,indiv); printf(反序数字为:); printf(%d,%dn,indiv,ten); break; case 1:printf(%d,indiv); break; getch(); (3)编写程序,从键盘接收一个简单的表示四则运算的表达式,计算结果并输出。例如,输入“20+32”,输出“20+32=52”。分别使用switch和else if语句。答:#include main() double value1, value2; char operator; printf(Type
7、in an expression: ); /* 提示输入一个表达式 */ scanf(%lf%c%lf, &value1, &operator, &value2); switch(operator) case +: printf(%.2fn, value1+value2); break; case -: printf(%.2fn, value1-value2); break; case *: printf(%.2fn, value1*value2); break; case /: printf(%.2fn, value1/value2); break; default: printf(Unkn
8、own operatorn); break; getch();(4)输入15个字符,统计其中英文字母、空格、回车、数字和其他字符的个数。答:#include void main() int blank, digit, i,word,other; /* 定义4个变量分别存放统计结果 */ char ch; blank = digit = word = other = 0; /* 置存放统计结果的3个变量的初值为零 */ printf(Enter 15 characters: ); /* 输入提示 */ for(i = 1; i = 15; i+) /* 循环执行了15次 */ ch = getc
9、har(); /* 输入一个字符 */ /* 在switch语句中灵活应用break */ switch (ch) caseA:caseB:caseC:caseD:caseE: break; case : /* 语句段为空,请注意空格的表示 */ case n: blank +; /* 2个常量表达式 和 n 共用该语句段 */ break; /* 跳出switch语句 */ case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 : case 8 : case 9 : digit +; /* 10个常量表达式
10、 0 9 共用该语句段*/ break; /* 跳出switch语句 */ default: other +; /* 累加其他字符 */ break; /* 跳出switch语句 */ printf(blank=%d, digit=%d, other=%dn, blank, digit, other); getch();(5)输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的个数。答:#include main() int count, i, n; /* count 记录不及格成绩的个数 */ double grade, total; /* grade 存放输入的成绩, t
11、otal保存成绩之和 */ printf(Enter n: ); /* 提示输入成绩个数n */ scanf(%d, &n); total = 0; count = 0; for(i = 1; i = n; i+) printf(Enter grade #%d: , i); /* 提示输入第i个成绩 */ scanf (%lf, &grade); /* 输入第i个成绩 */ total = total + grade; /* 累加成绩 */ if(grade 60) /* 统计不及格成绩的个数 */ count+; printf(Grade average = %.2fn, total/n);
12、 printf(Number of failures = %dn, count);getch(); (6)输入一个职工的月薪salary,输出应交的个人所得税tax(保留两位小数)。计算方法:tax=rate(salary-850)/100当salary850时,rate=0;当850 salary1350时,rate=5;当1350 salary2850时,rate=10;当2850 salary5850时,rate=15;当5850 salary时,rate=20;答:#include void main() float salary,rate,tax; printf(please inp
13、ut salary=); scanf(%f,&salary); if(salary850) if(salary1350) if(salary2850) if(salary=5850) rate=15; tax=rate*(salary-850)/100; printf(the tax is %.2fn,tax); else rate=20; tax=rate*(salary-850)/100; printf(the tax is %.2fn,tax); getch(); 3、实验报告要求(1) 各题程序、运行结果及分析; (2)实验总结。实验六:循环结构程序设计(一)1、实验目的(1)熟练掌握
14、循环程序设计思想;(2)掌握调试程序的一些技巧。2、实验内容(1)编程计算 S=1*2+2*3+39*40答:#includevoid main() int i,s,n; printf(input n=); scanf(%d,&n); for(i=1,s=0;i=n;) s=s+i*(i+1); i+; printf(s=%d,s); getch();(2)编程计算 S=1!+2!+n!答:#includevoid main() float s=0,t=1; int n,p; printf(Enter p:); scanf(%d,&p); for(n=1;n=p; n+) t=t*n; s=s
15、+t; printf(1!+2!+n!=%en,s); getch();(3)编写程序,计算如果每年按照年利率I(例如2%),投资S(例如5000), 在第Y(例如10)年得到的总钱数M。公式:M=S*(1+I)Y答:方法-: #include#includevoid main() int y,s=5000,n; float i=0.02,M; printf(please input n=); scanf(%d,&n); for(y=1;y=n;y+) M=s*pow(1+i),y); printf(M=%f,M); getch(); 方法二:#include#includevoid main
16、() int y,s=5000,n; float i=0.02,M; printf(please input y=); scanf(%d,&y); if(y=10) M=s*pow(1+i),y); printf(M=%.2f,M); getch();(4)编程输出九九乘法表(三角形式)。答:方法一:#include main() int i ,j; printf(jiu jiu cheng fa biaon); printf(*n); for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%4d,i*j); printf(n); getch();方法二:#includ
17、e void main() int i,j; printf(jiu jiu cheng fa biaon); printf(*n); for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%3d*%d=%d,i,j,i*j); printf(n); printf(*n) ; getch();(5)利用双重循环输出以下图案:*(5)输出100200之间的所有素数,每行输出8个。答:#include #include /* 调用求平方根函数,需要包含数学库 */int main(void) int count, i, m, n; count = 0; /* count记录素数的个数,用于控制输出格式 */ for(m = 100; m=100&m=200; m+) n = sqrt(m); for(i = 2; i n) printf(%6d, m); count+; if(count % 8 = 0) printf(n); printf(n); getch(); return 0;3、实验报告要求(1) 各题程序、运行结果及分析; (2)实验总结。