1、char型占%d个字节;,sizeof(char); /1int型占%d个字节;,sizeof(int); /2long int型占%d个字节;,sizeof(long);/3 printf(float型占%d个字节;,sizeof(float); /4double型占%d个字节;,sizeof(double); /5 -n); printf(变量a的值的类型占%d个字节;n , sizeof(a); /6表达式(float)a的值的类型占%d个字节;, sizeof(float)a);/7表达式2.0*a的值的类型占%d个字节;, sizeof(2.0*a);/8表达式a+ a -2.0的值
2、的类型占%d个字节;, sizeof(a+ -2.0);/9字符串Hello! 占%d个字节;, sizeof(Hello!); /102、程序改错并调试:下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:C=,输出取2位小数。程序中有5处错误,请修改并调试程序,使其实现所要求的功能。(编译连接无误后单步执行) float c,f;请输入一个华氏温度:scanf(%f,f); /3c=(5/9)*(f-32);摄氏温度为:%5.2fnc); /53、编程:由键盘输入一个圆柱体的底面半径r和高度h的值,编程计算并输出该圆柱体的体积。(注意:体积=底面积*高,要求将圆周率定义为符号常
3、量PI)由键盘输入两个整型变量a和b的值。编程计算并输出a与b的和、差、积、商、a除以b的余数、ab的值。输入输出参考示例如下:(提示:用到C语言的运算符+、-、*、/、%、函数pow()(参见附录C P385)请输入a,b的值:a=3,b=2a+b=5a-b=1a*b=6a/b=1a%b=1ab=9求一元二次方程ax2+bx+c=0的实根x1,x2,。a,b,c的值由键盘输入,设b2-4ac0。输入输出示例如下:请输入三个系数a,b,c的值: (提示:用到C语言的库函数sqrt()(参见附录C P385)a=1,b=3,c=2x1=-1.00x2=-2.00编写一个程序,从键盘输入一个大写字
4、母,输出该字母及其对应的ASCII码值,同时输出其小写字母及其对应的ASCII码的值。(选做)编写程序,从键盘输入两个数字字符并分别存放在字符型变量a和b中,要求通过程序将与这两个字符对应的数字相加后输出,例如,输入字符型数字7和5,输出的则是整型数12。通过“数字字符-0得到对应数字”)。(选做)编写程序,要求从键盘输入一个3位整数,然后将它们逆序输出。(比如:输入123,输出321。提示:关键是想办法分别提取百位、十位和个位上的数字!)三、实验小结在上机过程中主要遇到哪些问题?分别是如何解决的?实验3、选择结构程序设计1、熟悉关系表达式、逻辑表达式的书写和求值;2、掌握if语句的三种基本形
5、式、switch语句的结构及其应用;3、能综合运用if语句与switch语句实现多分支选择;4、熟悉并掌握程序的“单步执行”、“断点设置及跟踪”等调试方法。上机的结果及出错原因说明: 分析的结果:1、逻辑表达式验算:设已有定义int a=3,b=4,c=5;先自行计算下面各逻辑表达式的值,然后编写程序上机验证你分析的结果是否正确。a+bc&b=c !(ab)&!c|1 !(x=a)&(y=b)&!(a+b)+c-1&b+c/2 (a=b+c,bc-1)&(b+=c)|(b*2=a+c) (c-a)/2+bc!=b-a;2、程序填空:以下程序的功能为:从键盘输入依次输入操作数、运算符、操作数,如
6、果运算符是+、-、*、/之一,则进行相应的四则运算,否则输出运算符有误。在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能。 int a,b,c;【1】 【2】 【3】 char op;Please input a expression: scanf(%d%c%d, 【1】 ); switch(op) case +: c=a+b; printf(%d+%d=%dn,a,b,c); break; case c=a-b;%d-%d=%dn* c=a*b;%d*%d=%dn/ if( 【2】 ) printf(Divisor is zeron else%d/%d=%fn,a,b,( 【
7、3】 )a/b); /*强制类型转换*/ default:输入的运算符有误!3、程序改错调试(请纠正程序中存在错误,使程序实现其功能)下列程序的功能为:输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母,例如:输入d,则输出cde;输入a,则输出zab;输入P,则输出OPQ;输入Z,则输出YZA。 char ch,c1,c2;Enter a character: ch=getchar(); if(ch=)|(chz) ch-=32; c1=ch-1; c2=ch+1; if(ch=A) c1=ch+25; else if(ch=Z) c2=ch-25; putchar(c1); p
8、utchar(ch); putchar(c2); putchar(n下列程序的功能为:输入1-4月份号,输出该月份对应的英语表示法。例如,输入“3”,则输出“March”。#include stdio.h char m; printf(“input the month number:n”); scanf (“%c”,&m); switch (m) case 1:printf (Jan case 2:Feb case 3:Mar case 4:Apr4、编程:根据上网时间t计算并输出上网费用cost,计算公式:同时为了鼓励多上网,每月收费最多不超过300元。判断用户从键盘输入的任意一个字符是数字
9、字符、字母字符还是其他字符,要求有必要的输入提示和输出信息;如果输入的是英文字母,再利用switch语句判断该字母是否是元音字母,并以“yes”或“no”字样输出判断结果。编程实现:任意输入一个百分制成绩,输出成绩等级A、B、C、D。当输入的分数小于0分或大于100分时,显示出错信息;在85100分时为A,7084分为B,5569分为C,55分以下为D。(要求:综合应用if和switch结构实现,参考教材P102例题4.6)(选做)编程实现:对任意输入的一个日期(年year、月month、日day),计算并输出该年该月该日是这一年的第几天。本题要综合应用到if、switch结构)对选择结构掌握
10、的情况如何?主要存在什么问题?实验4、循环结构程序设计1、熟悉for、while、dowhile三种循环语句的结构和执行流程,体会三种循环语句的异同,能够根据实际问题选用适合的循环语句。2、掌握用循环的方法实现常见实际问题。3、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。1、程序调试改错:(请纠正程序中存在的错误,使程序实现其功能)下面程序的功能是:输入10名学生某门课程的成绩,计算平均分,并求出其中的最高分和最低分。出错行号及正确代码:#includemain() /1 int i; float score,max,min,sum,ave;Please enter
11、score of student: scanf(,&score); max=min=sum=0; for(i=1;iscore) /10 max=score; /11 else if(minscore) /12 min=score; /13 ave=sum/10; /14Average=%6.2fnMax=%6.2fnMin=%6.2fn,ave,max,min); /15下面程序的功能为:逆序输出26个大写英文字母。 char x; x=; while(x=) /4 printf(%3d,x); x+; 2、程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能)用辗转相
12、除法求两个正整数的最大公约数。“辗转相除法” 求两个正整数的最大公约数的算法提示如下: 将两数中大的那个数放在m中,小的放在n中。 求出m被n除后的余数r。 若余数为0则执行步骤;否则执行步骤。 把除数作为新的被除数;把余数作为新的除数。 求出新的余数r。 重复步骤到。 输出n,n即为最大公约数。 #include main () int r, m, n, 【1】 ; scanf (%d%dm,&n); if (m int i=1,flag=0; /2 /i代表题号,flag作为标志变量进行分类 float a,b,result; /3 /a、b分别为参加运算的两个数,result为运算结果
13、char sym; /4 / sym为运算符请输入操作数1 运算符 操作数2: while(sym!#) /6 flag=0; /7第(%d)题:,i);%f%c%fa,&sym,&b); switch(sym) /10 case result=a+b;break; case result=a-b; /12result=a*b; if (b=0) /15 flag=1; /16 else /17 result=a/b; /18 continue; /19flag=3; /20 flag=2; /21 if (flag=0) /22 printf(%0.1f%c%0.1f=%0.2fnn,a,s
14、ym,b,result); /23 i+; /24 if (flag=1) printf(除数为零!请重新输入!nn /25 if(flag=2) printf(运算符错误! /26 if(flag=3) printf(结束! /27对任意输入的一个整数,输出它的位数以及各位数字之和,例如,若输入123,则输出“123的位数为3,各位数字之和为6”。 int a,n,len=0,sum=0,num; /*n代表整数a的每一位数字,len代表a的位数*/请输入一个整数a=%da); 【1】 ; while(a0) n= 【2】 ; /*求整数的个位、百位、.位的数字*/ sum+=n; 【3】
15、; len+;整数%d共有%d位,num,len);其各位数字之和为%dnn,sum);以下程序的功能是:给出年、月、日,计算出该日是该年的第几天。请填空完善程序。 int year,month,day,days,i,d;请输入年,月,日:%d,%d,%dyear,&month,&day); days=0; for(i=1;month;i+) switch( 【4】 ) case 1:case 3:case 5:case 7:case 8:case 10:case 12:d=31; 【5】 ; case 4:case 6:case 9:case 11:d=30; 【6】 ; case 2: i
16、f(year%4=0&year%100!=0|year%400=0) d=29; else d=28; days+=d;%d年%d月%d日是该年的第%d天。,year,month,day, 【7】 );编程输出如下图所示的下三角形乘法九九表。中国古代数学家张丘建提出的“百鸡问题”:一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。现在有100个钱,要买100只鸡,是否可以?若可以,给出一个解,要求三种鸡都有。请写出求解该问题的程序。编程输出如下图形(要求以第30列为对称轴)。统计100之内素数的个数(2是最小的素数),并将这些素数按每行10个输出。4、选做题程序改错调试:找出1000以内
17、的所有完数(一个数等于它的所有因子之和,这个数就称为“完数”,例如28的因子1+2+4+7+14=28,则28即为一个“完数”)。程序中有2行存在错误,请调试修改,以实现程序所要求的功能。main() /2 int a,k,s=0; for(k=2;k1000;k+) /4 s=s;for(a=1;a=k/2;a+) /6 if(k/a=0) /7s+=a; if(s=k) /9 printf(%d is OK!,k); 编程验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和。如,6 = 3 + 3,8 = 3 + 5,10 = 3 + 7,10 = 5 + 5,.20 = 3 + 17,20 = 13 + 7等。编程将6100之间的偶数都表示为2个素数之和。谈谈本次实验完成的情况。到目前为止你掌握的情况如何,主要问题是什么?实验6、数组 1、掌握一维数组的定义、初始化及其使用方法;2、熟悉二维数组的定义、初始化及其使用方法;3、熟练掌握利用数组实现常用算法;程序的功能是:输入10个数,求出这些数中的最大值、最小值以及平均值,并按照每行5个数的格式输出。#d
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1