C语言程序设计基础实验报告册程序_第1页
C语言程序设计基础实验报告册程序_第2页
C语言程序设计基础实验报告册程序_第3页
C语言程序设计基础实验报告册程序_第4页
C语言程序设计基础实验报告册程序_第5页
已阅读5页,还剩152页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE1实验项目目录实验1 熟悉C语言编程环境实验2 用C语言编写简单程序 2.1 基本数据处理 2.2 计算分段函数 2.3 指定次数的循环 2.4 使用函数实验3 分支结构程序设计实验4循环结构程序设计 4.1 基本循环语句的使用 4.2 嵌套循环实验5 函数程序设计实验6控制结构综合程序设计实验7数组排序问题找出矩阵中最大值所在的位置进制转换实验8指针程序设计指针与数组指针与字符串实验9结构程序设计实验10程序结构与递归函数实验11指针数组、指针与函数******【正确程序】#include<stdio.h>intmain(void){printf("****\n");printf("***\n");printf("**\n");printf("*\n");return0;}浙江大学城市学院实验报告实验项目名称实验2用C语言编写简单程序实验成绩指导老师(签名)日期2.1基本数据处理一.实验目的和要求1.掌握算术表达式和赋值表达式的使用。2.掌握基本输出函数的使用。3.能够编程实现简单的数据处理。4.掌握简单C程序的查错方法。二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。调试示例,参考实验手册。编程题1(20012)求华氏温度150°F对应的摄氏温度。计算公式如下:,其中:c表示摄氏温度,f表示华氏温度。【源程序】#include<stdio.h>intmain(void){intfahr,celsius;fahr=150;celsius=5.0/9*fahr-5.0/9*32;printf(“fahr=%d,celsius=%d\n”,fahr,celsius);return0;}如果使用公式计算华氏温度150°F#include<stdio.h>intmain(void){intfahr,celsius;fahr=150;celsius=5.0*(fahr-32)/9;printf(“fahr=%d,celsius=%d\n”,fahr,celsius);return0;}编程2(20013)求摄氏温度26°C对应的华氏温度。计算公式如下:,其中:c表示摄氏温度,f【源程序】#include<stdio.h>intmain(void){intfahr,celsius;celsius=26;fahr=9.0/5*celsius+32;printf(“celsius=%d,fahr=%d\n”,celsius,fahr);return0;}编程题3(20014)已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。【源程序】#include<stdio.h>intmain(void){intm,e,c,aver;m=87;e=72;c=93;aver=(m+e+c)/3;printf(“aver=%d\n”,aver);return0;}编程题4(20015)当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。【源程序】#include<stdio.h>intmain(void){intn,digit1,digit2,digit3;n=152;;digit1=n%10;digit2=n/10%10digit3=n/100;printf(“digit1=%d,digit2=%d,digit3=%d\n”,digit1,digit2,digit3);return0;}改错题(20016)改正下列程序中的错误,计算某个数x的平方y,并以“y=x*x”和“x*x=y”的形式输出x和y的值。请不要删除源程序中的任何注释。(源程序error02_2.cpp)【正确程序】#include<stdio.h>intmain(void){intx,y;scanf(“%d”,&x);y=x*x;printf(“%d=%d+%d\n”,y,x,x);printf(“%d+%d=%d\n”,x,x,y);return0;}浙江大学城市学院实验报告实验项目名称实验2用C语言编写简单程序实验成绩指导老师(签名)日期2.2计算分段函数一.实验目的和要求1.使用if语句计算分段函数。2.正确书写关系表达式。3.掌握基本输入函数的使用,能正确调用C语言提供的数学库函数。4.掌握简单的单步调试方法。二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。调试示例,参考实验手册。编程题1(20022)输入华氏温度,输出对应的摄氏温度。计算公式:c=5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。输入输出示例:括号内为说明输入150(fahr=150)输出celsius=65【源程序】#include<stdio.h>intmain(void){intfahr,celsius;scanf(“%d”,&fahr);celsius=5.0*(fahr-32)/9;printf(“celsius=%d\n”,celsius);return0;} 如果华氏温度和摄氏温度都是双精度浮点型数据,如何修改程序?#include<stdio.h>intmain(void){doublefahr,celsius;scanf(“%lf”,&fahr);celsius=5*(fahr-32)/9;printf(“celsius=%f\n”,celsius);return0;}编程2(20023)输入存款金额money、存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。interest=money(1+rate)^year-money输入输出示例:括号内为说明输入100030.025 (money=1000,year=3,rate=0.025)输出interest=76.89【源程序】#include<stdio.h>#include<math.h>intmain(void){intyear;doublemoney,rate,interest;scanf(“%lf%d%lf”,&money,&year,&rate);interest=money*pow((1+rate),year)-money;printf(“interest=%.2f\n”,interest);return0;} 编程题3(20024)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt函数求平方根,调用pow函数求幂。当x>=0时,f(x)=x^0.5,当x小于0时,f(x)=(x+1)^2+2x+1/x。输入输出示例:括号内是说明输入3 (repeat=3)10-0.50输出f(10.00)=3.16f(-0.50)=-2.75f(0.00)=0.00【源程序】#include<stdio.h>#include<math.h>intmain(){intri,repeat;floatx,y;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%f",&x);if(x>=0)y=sqrt(x);elsey=pow((x+1),2)+2*x+1/x;printf("f(%f)=.%.2f\n",x,y}return0;}改错题计算分段函数的值(改错题error02_4)(20025)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。当x不等于10时,y=f(x)=x,当x等于10时,y=f(x)=1/x。输入输出示例:括号内是说明输入2 (repeat=2)10234输出f(10.0)=0.1f(234.0)=234.0【正确程序】#include<stdio.h>intmain(void){intri,repeat;doublex,y;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%lf",&x);if(x!=10)y=x;elsey=1/x;printf("f(%.1f)=.%.1f\n",x,y);}return0;}编程题4计算两个整数的和、差、积、商与余数(20026)输入2个整数num1和num2,计算并输出它们的和、差、积、商与余数。输出两个整数的余数可以用printf("%d%%%d=%d\n",num1,num2,num1%num2);输入输出示例:括号内是说明输入53(num1=5,num2=3)输出5+3=85-3=25*3=155/3=15%3=2【源程序】#include<stdio.h>intmain(void){intnum1i,num2;scanf("%d%d",&num1,&num2);printf("%d+%d=%d\n",num1,num2,num1+num2);printf("%d-%d=%d\n",num1,num2,num1-num2);printf("%d*%d=%d\n",num1,num2,num1*num2);printf("%d/%d=%d\n",num1,num2,num1/num2);printf("%d%%%d=%d\n",num1,num2,num1%num2);return0}如果num1和num2是双精度浮点型数据,如何修改程序?题目的要求都能达到吗?#include<stdio.h>intmain(void){doublenum1i,num2;scanf("%lf%lf",&num1,&num2);printf("%f+%f=%f\n",num1,num2,num1+num2);printf("%f-%f=%f\n",num1,num2,num1-num2);printf("%f*%f=%f\n",num1,num2,num1*num2);printf("%f/%f=%f\n",num1,num2,num1/num2);printf("%f%%%f=%d\n",num1,num2,(int)num1%(int)num2);return0}浙江大学城市学院实验报告实验项目名称实验2用C语言编写简单程序实验成绩指导老师(签名)日期2.3指定次数的循环一.实验目的和要求1.熟练掌握for语句的使用2.熟练掌握指定次数的循环程序设计3.掌握运行到光标的调试方法二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。调试示例,参考实验手册。编程题1求m+(m+1)+(m+2)++100。(20032)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个正整数m(0<=m<=100),计算表达式m+(m+1)+(m+2)++100的值。输入输出示例:括号内为说明输入3 (repeat=3)0 (计算0+1+2+...+100)10 (计算10+11+12+...+100)50 (计算50+51+52+...+100)输出sum=5050sum=5005sum=3825【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,m,sum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum=0;scanf("%d",&m);for(i=m;i<=100;i++)sum=sum+i;printf("sum=%d\n",sum);}return0;}输入2个正整数m和n(m≤n),求【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,m,n,sum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum=0;scanf("%d%d",&m,&n);for(i=m;i<=n;i++)sum=sum+i;printf("sum=%d\n",sum);}return0;}编程2求1/m+1/(m+1)+1/(m+2)++1/n。(20033)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入2个正整数m和n(m<=n),计算表达式1/m+1/(m+1)+1/(m+2)++1/n的值,输出时保留3位小数。输入输出示例:括号内为说明输入3(repeat=3)515(计算1/5+1/6+1/7+...+1/15)1020(计算1/10+1/11+1/12+...+1/20)13(计算1+1/2+1/3)输出sum=1.235sum=0.769sum=1.833【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,m,n;doublesum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum=0;scanf("%d%d",&m,&n);for(i=m;i<=n;i++)sum=sum+1.0/i;printf("sum=%.3f\n",sum);}return0;}输入2个正整数m和n(m≤n),求【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,m,n;doublesum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum=0;scanf("%d%d",&m,&n);for(i=m;i<=n;i++)sum=sum+i*i+1.0/i;printf("sum=%.3f\n",sum);}return0;}编程题3求1+1/3+1/5+的前n项和。(20034)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个正整数n,计算表达式1+1/3+1/5+的前n项之和,输出时保留6位小数。输入输出示例:括号内为说明输入2 (repeat=2)5 (计算1+1/3+1/5+1/7+1/9)23 (计算1+1/3+1/5+...+1/45)输出sum=1.787302sum=2.549541【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,n;doublesum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum=0;scanf("%d",&n);for(i=1;i<=n;i++)sum=sum+1.0/(2*i-1);printf("sum=%.6f\n",sum);}return0;}编程题4求1-1/4+1/7-1/10+……的前n项之和。(20035)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:读入一个正整数n,计算1-1/4+1/7-1/10+……的前n项之和,输出时保留3位小数。输入输出示例:括号内是说明输入2(repeat=2)310输出sum=0.893sum=0.819【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,n,flag;doublesum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum=0;flag=1;scanf("%d",&n);for(i=1;i<=n;i++){sum=sum+flag*1.0/(3*i-2);flag=-flag;}printf("sum=%.3}return0;}输入一个正整数n,计算的前n项之和。【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,n,flag;doublesum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum=0;flag=1;scanf("%d",&n);for(i=1;i<=n;i++){sum=sum+flag*1.0*i/(2*i-1);flag=-flag;}printf("sum=%.3f\n",sum);}return0;}改错题输出华氏-摄氏温度转换表(改错题error02_6)。(20036)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:读入2个整数lower和upper,输出一张华氏—摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2F。计算公式:c=5*(f-32)/9,其中:c表示摄氏温度,f表示华氏温度。输出请使用语句printf("%3.0f%6.1f\n",fahr,celsius);输入输出示例:括号内是说明输入2(repeat=2)3235(lower=32,upper=35)4030(lower=40,upper=30)输出fahrcelsius320.0341.1fahrcelsius【正确程序】#include<stdio.h>intmain(void){intri,repeat;intlower,upper;doublefahr,celsius;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d%d",&lower,&upper);printf("fahrcelsius\n");for(fahr=lower;fahr<=upper;fahr=fahr+2){celsius=5*(fahr-32)/9;printf("%3.0f%6.1f\n",fahr,celsius);}printf("fahrcelsius\n");}return0;}编程题5m(20037)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入2个正整数m和n,计算m!+n!。输入输出示例:括号内是说明输入:2(repeat=2)14(m=1,n=4)38(m=3,n=8)输出:1!+4!=253!+8!=40326【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,m,n;doublesum1,sum2;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sum1=sum2=1;scanf("%d%d",&m,&n);for(i=1;i<=m;i++)sum1=sum1*i;for(i=1;i<=n;i++)sum2=sum2*i;printf("%d!+%d!=%.0f\n",m,n,sum1+sum2);}return0;}编程题6求x的n次幂。(20038)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:读入1个实数x和正整数n(n<=50),计算并输出x的n次幂(保留2位小数),不允许调用pow函数求幂。输入输出示例:括号内是说明输入2(repeat=2)1.52(x=1.5,n=2)27(x=2,n=7)输出2.25128.00【源程序】#include<stdio.h>intmain(void){intri,repeat,n;doublex,sum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){sun=1;scanf("%lf%d",&x,&n);for(i=1;i<=n;i++)sum=sum*x;printf("%.2f\n",sum);}return0;}浙江大学城市学院实验报告实验项目名称实验2用C语言编写简单程序实验成绩指导老师(签名)日期2.4使用函数一.实验目的和要求1.熟练掌握库函数的调用2.了解函数的定义和调用二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。编程题1生成3的乘方表。(20041)输入一个正整数n,生成一张3的乘方表,输出3^0~3^n的值,可调用幂函数计算3的乘方。输出使用语句printf("pow(3,%d)=%.0f\n",i,mypow);输入输出示例:括号内是说明输入3 (n=3)输出pow(3,0)=1pow(3,1)=3pow(3,2)=9pow(3,3)=27【源程序】#include<stdio.h>#include<math.h>intmain(void){inti,n;doublemypow;scanf("%d",&n);for(i=0;i<=n;i++){mypow=pow(3,i);printf("pow(3,%d)=%.0f\n",i,mypow);}return0;}编程题2生成阶乘表(20042)输入一个正整数n,生成一张阶乘表,输出1!~n!的值,要求定义和调用函数fact(n)计算n!,函数类型为double。输出使用语句printf("%d!=%.0f\n",i,myfact);输入输出示例:括号内是说明输入3 (n=3)输出1!=12!=23!=6【源程序】#include<stdio.h>intmain(void){inti,n;doublemyfact;doublefact(intn);scanf("%d",&n);for(i=1;i<=n;i++){myfact=fact(i);printf("%d!=%.0f\n",i,myfact);}return0;}doublefact(intn){inti;doublef=1;for(i=1;i<=n;i++)f=f*i;returnf;}编程3使用函数求n!/(m!*(n-m)!)(20043)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入2个正整数m和n(m<=n),计算n!/(m!*(n-m)!)。要求定义并调用函数fact(n)计算n的阶乘,其中n的类型是int,函数类型是double。例:括号内是说明输入:2(repeat=2)27(m=2,n=7)512(m=5,n=12)输出:result=21result=792【源程序】#include<stdio.h>intmain(void){intri,repeat;inti,n;doublemyfact;doublefact(intn);scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d%d",&m,&n);printf("result=%.0f\n",fact(n)/(fact(m)*fact(n-m));)return0;}doublefact(intn){inti;doublef=1;for(i=1;i<=n;i++)f=f*i;returnf;}编程题4计算的值。(20044)计算100^0.5+101^0.5+……+1000^0.5的值(保留2位小数),可调用sqrt函数计算平方根。输入输出示例:括号内是说明输出sum=20435.99【源程序】#include<stdio.h>#include<math.h>intmain(void){inti;doublesum=0;;for(i=100;i<=1000;i++)sum=sum+sqrt(i);printf("sum=%.2f\n",return0;}浙江大学城市学院实验报告实验项目名称实验3分支结构程序设计实验成绩指导老师(签名)日期一.实验目的和要求1.熟练掌握关系表达式和逻辑表达式的使用2.熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计3.熟练掌握switch语句中break语句的作用4.掌握使用断点调试程序的方法二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。调试示例,参考实验手册。编程题1求分段函数的值。(30002)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个整数x,计算并输出下列分段函数sign(x)的值。 -1x<0y=sign(x)=0 x=0 1 x>0输入输出示例:括号内是说明输入3(repeat=3)10(x=10)0(x=0)-98(x=-98)输出sign(10)=1(x=10时y=1)sign(0)=0(x=0时y=0)sign(-98)=-1(x=-98时y=-1)【源程序】#include<stdio.h>intmain(void){intri,repeat;intx,y;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&x);if(x>0)y=1;elseif(x==0)y=0;elsey=-1;printf("sign(%.d)=%d\n",x,y);}return0;}编程题2分类统计字符(30003)输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。输入输出示例:括号内是说明输入Reold123?输出letter=5,blank=1,digit=3,other=1【源程序】#include<stdio.h>intmain(){intblank,digit,i,letter,other;charch;blank=digit=letter=other=0;for(i=1;i<=10;i++){ch=getchar();if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))letter++;elseif(ch>='0'&&ch<='9')/*如果ch是数字字符*/digit++;elseif(ch==''||ch=='\n')blank++;elseother++;}printf("letter=%d,blank=%d,digit=%d,other=%d\n",letter,blank,digit,other);return0;}编程题3显示五级记分制成绩所对应的百分制成绩区间(使用switch)(30004)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示"Invalidinput"。输出使用以下语句:printf("90-100\n");printf("80-89\n");printf("70-79\n");printf("60-69\n");printf("0-59\n");printf("Invalidinput\n");输入输出示例:括号内是说明输入6ABCDEj (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j)输出90-10080-8970-7960-690-59【源程序】#include<stdio.h>intmain(void){intri,repeat;charc;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){c=getchar();switch(c){case'A’:printf("90-100\n");break;case'B':printf("80-89\n");break;case'C':printf("70-79\n");break;case'D':printf("60-69\n");break;case'E':printf("0-59\n");default:printf("Invalidinput\n");}}return0;}编程题4显示水果的价格(使用switch)。(30005)查询水果的单价。有4种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤和10.20元/公斤。在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。当用户输入编号1~4,显示相应水果的单价(保留1位小数);输入0,退出查询;输入其他编号,显示价格为0。输入输出示例:括号内是说明输入3(oranges的编号)0(退出查询)输出[1]apples[2]pears[3]oranges[4]grapes[0]Exitprice=4.1[1]apples[2]pears[3]oranges[4]grapes[0]Exit【源程序】#include<stdio.h>intmain(void){intchoice,i;doubleprice;for(i=1;i<=5;i++){printf("[1]Selectapples\n");printf("[2]Selectpears\n");printf("[3]Selectoranges\n");printf("[4]Selectgrapes\n");printf("[0]exit\n");

printf("Enterchoice:");scanf("%d",&choice);

if(choice==0)break;switch(choice){case1:price=3.0;break;case2:price=2.5;break;case3:price=4.1;break;case4:price=10.2;break;default:price=0.0;break;}printf("price=%.1f\n",price);}printf("Thanks\n");}编程题5显示两级成绩。(30006)输入5个学生的数学成绩,判断他们的成绩是否及格。如果成绩低于60,输出"Fail",否则,输出"Pass"。输入输出示例:括号内是说明输入6159924060输出PassFailPassFailPass【源程序】#include<stdio.h>intmain(){floatx;inti:for(i=1;i<=5;i++){scanf(“%f”,&x);if(x>=60)printf(“Pass\n”);elseprintf(“Fait\n”);}return0;}【实验结果与分析】编程题6求三角形的面积和周长。(30007)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入三角形的3条边a,b,c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出"Thesesidesdonotcorrespondtoavalidtriangle"。在一个三角形中,任意两边之和大于第三边。三角形面积计算公式:area=(s(s-a)(s-b)(s-c))^0.5,其中s=(a+b+c)/2输出使用以下语句:printf("area=%.2f,perimeter=%.2f\n",area,perimeter);printf("Thesesidesdonotcorrespondtoavalidtriangle\n");输入输出示例:括号内是说明输入2(repeat=2)553 (a=5,b=5,c=3)141 (a=1,b=4,c=1)输出area=7.15,perimeter=13.00Thesesidesdonotcorrespondtoavalidtriangle【源程序】#include<stdio.h>#include<math.h>intmain(void){intri,repeat;floata,b,c,area,perimeter,s;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf(“%f%f%f”,&a,&b,&c);if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&c+a>b){perimeter=a+b+c;s=perimeter/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f,perimeter=%.2f\n",area,perimeter);}elseprintf("Thesesidesdonotcorrespondtoavalidtriangle\n");}return0;}编程题7计算个人所得税。(30008)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。计算公式:tax=rate*(salary-850)当salary≤850时,rate=0当850<salary≤1350时,rate=5%当1350<salary≤2850时,rate=10%当2850<salary≤5850时,rate=15%当5850<salary时,rate=20%输入输出示例:括号内是说明输入5(repeat=5)1010.87(salary=1010.87)32098.76(salary=32098.76)800(salary=800)4010(salary=4010)2850(salary=2850)输出tax=8.04tax=6249.75tax=0.00tax=474.00tax=200.00【源程序】#include<stdio.h>intmain(void){intri,repeat;doublesalary,tax,rate;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf(“%lf”,&salary);if(salary<=850)rate=0;elseif(salary<=1350)rate=0.05;elseif(salary<=2850)rate=0.1;elseif(salary<=5850)rate=0.15;elserate=0.2;tax=rate*(salary-850);printf(“tax=%.2f\n”,tax);}return0;}编程题8统计学生成绩。(30009)输入一个正整数n,再输入n个学生的百分制成绩,统计各等级成绩的个数。成绩等级分为五级,分别为A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59)。输入输出示例:括号内是说明输入5 (n=5)7754927360输出NumberofA(90-100):1NumberofB(80-89):0NumberofC(70-79):2NumberofD(60-69):1NumberofE(0-59):1【源程序】#include<stdio.h>intmain(void){inti,ri,x,n,na,nb,nc,nd,ne;na=nb=nc=nd=ne=0;scanf(”%d”,&n);for(i=1;i<=n;i++){scanf(”%d”,&x);if(x>=90)na++;elseif(x>=80)nb++;elseif(x>=70)nc++;elseif(x>=60)nd++;elsenc++;}printf(“NumberofA(90-100):%d\n”,na);printf(“NumberofB(80-89):%d\n”,nb);printf(“NumberofC(70-79):%d\n”,nc);printf(“NumberofD(60-69):%d\n”,nd);printf(“NumberofE(0-59):%d\n”,ne);}改错题对两个整数进行乘、除和求余运算(改错题error03_2)。(30010)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个形式如"操作数运算符操作数"的表达式,对2个整数进行乘、除和求余运算。输出使用以下语句:printf("%d*%d=%d\n",x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%dMod%d=%d\n",x,y,x%y);printf("Invalidoperator\n");输入输出示例:括号内是说明输入4 (repeat=4)21*821/821%821!8输出21*8=16821/8=221Mod8=5Invalidoperator【正确程序】#include<stdio.h>intmain(void){intri,repeat;intx,y;charch;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf(“%d%c%d”,&x,&ch,&y);switch(ch){case‘*’:printf("%d*%d=%d\n",x,y,x*y);break;case‘/’:printf("%d/%d=%d\n",x,y,x/y);break;case‘%’:printf("%dMod%d=%d\n",x,y,x%y);break;default:printf("Invalidoperator\n");break;}}return0;}浙江大学城市学院实验报告实验项目名称实验4循环结构程序设计实验成绩指导老师(签名)日期4.1基本循环语句的使用一.实验目的和要求1.熟练使用for、while和do~while语句实现循环程序设计2.理解循环条件和循环体,以及for、while和do-while语句的相同及不同之处3.熟练掌握break和continue语句的使用4.掌握使用下拉菜单Debug调试程序的方法二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。调试示例,参考实验手册。编程题1求1-1/4+1/7-1/10+1/13-1/16+……。(40012)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:读入1个正实数eps,计算并输出下式的值,精确到最后一项的绝对值小于eps(保留6位小数)。请使用while语句实现循环。输入输出示例:括号内是说明输入2(repeat=2)1E-4(eps=1E-4)0.1(eps=0.1)输出sum=0.835699sum=0.869780【源程序】#include<stdio.h>#include<math.h>intmain(){intri,repeat;inttemp,flag;doubleeps,item,sum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%le",&eps);sum=0;temp=1;flag=1;item=1;while(fabs(item)>=eps){sum=sum+item;temp=temp+3;flag=-flag;item=1.0/temp*flag;}printf("%.6f\n",sum);}return0;}编程2求奇数和。(40013)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:读入一批正整数(以零或负数为结束标志),求其中的奇数和。请使用while语句实现循环。输入输出示例:括号内是说明输入2 (repeat=2)13907087437056101-1输出Thesumoftheoddnumbersis11.Thesumoftheoddnumbersis116.【源程序】#include<stdio.h>intmain(){intri,repeat;intx,sum;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&x);sum=0;while(x>0){if(x%2)sum=sum+x;scanf("%d",&x);}printf("%d\n",sum);}return0;}编程题3求整数的位数。(40014)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个整数in,求它的位数。例如123的位数是3。请使用do-while语句实现循环。输入输出示例:括号内是说明输入4(repeat=4)12345(in=12345)-100(in=-100)-1(in=-1)1290(in=1290)输出count=5 (12345的位数是5)count=3 (-100的位数是3)count=1 (-1的位数是1)count=4 (99的位数是2)【源程序】#include<stdio.h>intmain(){intri,repeat;intnumber,sum;intin;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&in);number=0;if(in<0)in=-in;do{ number++;in=in/10; }while(in);printf("number=%d\n",number);}return0;}

编程题4求最小值。(40015)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个正整数n,再输入n个整数,输出最小值。输入输出示例:括号内是说明输入3(repeat=3)4-2-12310004-9-11-83531输出min=-123min=-9min=1【源程序】#include<stdio.h>intmain(){intri,repeat;inti,min,n,x;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&n);/**/scanf("%d",&x);min=x;for(i=1;i<n;i++){scanf("%d",&x);if(x<min)min=x;}printf("%d\n",min);}return0;}编程题5求整数的位数以及各位数字之和。(40016)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个整数in,求它的位数以及各位数字之和。例如123的各位数字之和是6,位数是3。输入输出示例:括号内是说明输入4(repeat=4)0(in=0)23456(in=23456)-100(in=-100)-1(in=-1)输出count=1,sum=0 (0的位数是1,各位数字之和是0)count=5,sum=20 (23456的位数是5,各位数字之和是20)count=3,sum=1 (-100的位数是3,各位数字之和是1)count=1,sum=1 (-1的位数是1,各位数字之和是1)【源程序】#include<stdio.h>intmain(){intri,repeat;intcount,sum;longin;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%ld",&in);/**/count=sum=0;if(in<0)in=-in;if(in==0){count=1;sum=0;}while(in!=0){sum=sum+in%10;count++;in=in/10;}printf("count=%d,sum=%d\n",count,sum);}return0;}编程题6求2/1+3/2+5/3+8/5+...。(40017)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个正整数n,输出2/1+3/2+5/3+8/5+……前n项之和,保留2位小数。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)输入输出示例:括号内是说明输入3(repeat=3)1(n=1)5(n=5)20(n=20)输出sum=2.00 (第1项是2.00)sum=8.39 (前5项的和是8.39)sum=32.66 (前20项的和是32.66)【源程序】#include<stdio.h>intmain(){intri,repeat;inti,n;floata,b,s,t;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&n);/**/a=1;b=2;s=0;for(i=0;i<n;i++){s=s+b/a;t=b;b=a+b;a=t;}printf("%.2f\n",s);}return0;}编程题7求a+aa+aaa+aa…a。(40018)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。例如,输入2和3,输出246(2+22+222)。输入输出示例:括号内是说明输入3(repeat=3)23(a=2,n=3)54(a=5,n=4)11(a=1,n=1)输出sum=246(2+22+222)sum=6170(5+55+555+5555)sum=1(1)【源程序】#include<stdio.h>intmain(){intri,repeat;inti,n;longinta,sn,tn;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%ld%d",&a,&n);/**/sn=0;tn=1;for(i=0;i<n;i++){ sn=sn+tn;tn=tn*10+1;}sn=sn*a;printf("%ld\n",sn);}return0;}编程题8高空坠球。(40019)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:皮球从height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?(输出保留1位小数)输入输出示例:括号内是说明输入3 (repeat=3)102 (height=10m,n=2)41 (height=2m,n=1)1008 (height=100m,n=8)输出distance=20.0,height=2.5 (第2次落地时,空中经过距离为20米,第2次反弹高度为2.5米)distance=4.0,height=2.0 (第1次落地时,空中经过距离为4米,第1次反弹高度为2米)distance=298.4,height=0.4 (第8次落地时,空中经过距离为298.4米,第8次反弹高度为0.4米)【源程序】#include<stdio.h>intmain(){intri,repeat;floatd,h;inti,n;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%f%d",&h,&n); d=h;h=h/2;for(i=2;i<=n;i++){d=d+2*h;h=h/2;}printf("distance=%.1f,height=%.1f\n",d,h);}return0;}浙江大学城市学院实验报告实验项目名称实验4循环结构程序设计实验成绩指导老师(签名)日期4.2嵌套循环一.实验目的和要求1.熟练掌握嵌套循环程序设计。2.掌握C程序的调试方法。二.实验内容、原理及实验结果与分析说明:实验指导教师可根据教学内容指定题目。编程题1使用嵌套循环求e=1+1/1!+1/2!++1/n!。(40021)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入1个正整数n,计算下式的前n项之和(保留4位小数)。要求使用嵌套循环。e=1+1/1!+1/2!++1/n!输入输出示例:括号内为说明输入:2(repeat=2)2(n=2)10(n=10)输出:e=2.5000e=2.7183使用一重循环,不使用自定义函数【源程序】#include"stdio.h"intmain(){intri,repeat;inti,n;floats,t;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&n);/**/s=1;t=1;for(i=1;i<=n;i++){t=t*i;s=s+1.0/t;}printf("%0.4f\n",s);}}定义和调用函数fact(n)计算n的阶乘【源程序】#include<stdio.h>intmain(){intri,repeat;inti,n;doubles;doublefact(intn);scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&n);/**/s=1;for(i=1;i<=n;i++)s=s+1.0/fact(i);printf("%0.4f\n",s);}}/**/doublefact(intn){inti;doubles=1;for(i=1;i<=n;i++)s=s*i;returns;}【实验结果与分析】使用嵌套循环【源程序】#include<stdio.h>intmain(){intri,repeat;inti,j,n;floats,t;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&n);/**/s=1;for(i=1;i<=n;i++){t=1;for(j=1;j<=i;j++)t=t*j;s=s+1.0/t;}printf("%0.4f\n",s);}}本题可以采用3种方法编程,即一重循环、嵌套循环和使用函数,你认为这些方法的优点和缺点是什么?你擅长用哪种方法编程?2编程题2输出区间内的素数。(40022)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入2个正整数m和n(1<=m,n<=500),输出m和n之间的所有素数,每行输出6个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。输出语句:printf("%d",i);输入输出示例:括号内为说明输入:2 (repeat=2)135 (m=1,n=35)210 (m=2,n=10)输出:primes: (1到35之间的素数)235711131719232931primes: (2到10之间的素数)2357【源程序】#include<stdio.h>#include<math.h>intmain(){intri,repeat;intcount,digit,i,k,m,n;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d%d",&m,&n); if(m==1)m=m+1;/**/count=0;for(digit=m;digit<=n;digit++){k=sqrt(digit);for(i=2;i<=k;i++)if(digit%i==0)break;if(i>k){printf("%6d",digit);count++;if(count%6==0)printf("\n");}}}编程3换硬币。(40023)输入一个正整数repeat(0<repeat<10),做repeat次下列运算:将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币。输入金额,问有几种换法?针对每一种换法,输出各种面额硬币的数量和硬币的总数量,要求每种硬币至少有一枚。先输出硬币总数量少的换法。输出使用语句:printf("fen5:%d,fen2:%d,fen1:%d,total:%d\n",fen5,fen2,fen1,fen5+fen2+fen1);输入输出示例:括号内为说明输入:2 (repeat=2)10 (money=10分)13 (money=13分)输出:fen5:1,fen2:2,fen1:1,total:4 fen5:1,fen2:1,fen1:3,total:5count=2 (10分有2种换法)fen5:2,fen2:1,fen1:1,total:4fen5:1,fen2:3,fen1:2,total:6fen5:1,fen2:2,fen1:4,total:7fen5:1,fen2:1,fen1:6,total:8count=4 (13分有4种换法)【源程序】#include<stdio.h>voidmain(){intri,repeat;intfen1,fen2,fen5,count,money;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri++){scanf("%d",&money);count=0;for(fen1=1;fen1<=money;fen1++) for(fen2=1;fen2<=money/2;fen2++)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论