第二章数据类型课后习题1.下列哪些是合法的变量名?如果合法,你认为它是一个好的助记符(能提醒你它的用途)吗?(a)stock_code合法、好的助记符(b)money$非法,$为非法字符(c)Jan_Sales合法、好的助记符(d)X-RAY非法,–为非法字符(e)int非法,int为关键字(f)xyz合法、不是好的助记符(g)1a非法,变量名必须以字母或下划线打头(h)invoice_total合法、好的助记符(i)john's_exam_mark非法,’为非法字符(j)default非法,default为关键字2.请确定下列常量的数据类型:(a)'x'char(b)-39int(c)39.99double(d)-39.0double3.下列哪些是合法的变量定义?(a)integeraccount_code;非法,无integer类型(b)floatbalance;合法(c)decimaltotal;非法,无decimal类型(d)intage;合法(e)doubleint;非法,int为关键字,不能作为变量名(f)charc;合法4.写出下列各小题中的变量定义:(a)整型变量number_of_transactions和age_in_yearsintnumber_of_transactions,age_in_years;(b)单精度浮点型变量total_pay,tax_payment,distance和averagefloattotal_pay,tax_payment,distance,average;(c)字符型变量account_typecharaccount_type;(d)双精度浮点型变量gross_paydoublegross_pay;5.为下列各小题写出最合适的变量定义:(a)班级中的学生人数intnumber_of_students;(b)平均价格floataverage_price;(c)自1900年1月1日以来的天数intdays_since_1900;(d)利率百分比floatinterest_rate;(e)本页中最常出现的字符charmost_common_char;(f)中国的人口总数(在2010年11月大约为1,339,724,852)intpopulation_of_china;6.假定有如下定义:inti;charc;下面哪些是合法的C语句?c='A';合法i=1;非法,字符串不能赋值给整型i=1;合法c=A;非法,”A”为字符串,存储为’A’和’\0’两个字符c='1';合法7.写一个C程序,给第4题中的变量各赋一个值,然后以每行一个变量的形式显示这些变量的值。#includestdio.hintmain(void){intnumber_of_transactions,age_in_years;floattotal_pay,tax_payment,distance,average;characcount_type;doublegross_pay;number_of_transactions=211;age_in_years=66;total_pay=3128.0f;tax_payment=214.5f;distance=2431.5f;average=83.5f;account_type='c';gross_pay=9313.5;printf(%d\n%d\n%.1f\n%.1f\n%.1f\n%.1f\n%c\n%.1f,number_of_transactions,age_in_years,total_pay,tax_payment,distance,average,account_type,gross_pay);return0;}8.写一个C程序显示如下信息:****************HelloWorld****************#includestdio.hintmain(void){printf(***************\n);printf(*HelloWorld*\n);printf(***************\n);return0;}9.写一个C程序在不同的行分别显示你的姓名和家庭住址。#includestdio.hintmain(void){printf(张三\n);printf(黑龙江省哈尔滨市南岗区\n);return0;}10.ASCII码用于表示计算机内存中的字母、数字和其它符号。使用附录C中的ASCII码表查找下面每个字符的ASCII编码:'A''B''Y''Z''a''b''y''z''0''1'','''(空格)字符十进制ASCII码十六进制ASCII码A6541B6642Y8959Z905aa9761b9862y12179z1227a0483014931,442c空格322011.在程序P2C中,将第14行的%d改为%c,第16行的%c改为%d。编译并运行修改后的程序。你能解释运行结果吗?(提示:请参看附录C的ASCII码表)第三章简单算术运算符与表达式课后习题1.将下列数学方程转化为合法的C语句:(a)2121xxyym(b)cmxy(c)edcba(d)9)32(5FC(e)221atuts(a)m=(y1–y2)/(x1–x2);(b)y=m*x+c;(c)a=b/c–d/e;(d)C=5*(F–32)/9.0;(e)s=u*t+a*t*t/2.0;2.有如下变量定义:inta=1,b=10,c=5;intd;下面每条语句执行后d的值为?(a)d=b/c+1;d=3(b)d=b%3;d=1(c)d=b-3*c/5;d=7(d)d=b*10+c-a*5;d=100(e)d=(a+b-1)/c;d=2(f)d=((-a%c)+b)*c;d=45(g)d=--a;d=03.变量定义如第2题,请改正下列C语句中的错误:(a)d=2(b+c);d=2*(b+c)(b)d=5b+9c;d=5*b+9*c;(c)d=b-3X19;d=b–3*19;(d)d=b.c+10;d=b*c+10;(e)d=(a+b)/c;无错误4.为下列任务写出合适的C语句:(a)将num1加1,并将结果放回到num1中num1=num1+1;或num1++;(b)将num1加2,并将结果放回到num2中num2=num1+2;(c)将num2加2,并将结果放回到num2中num2=num2+2;或num2+=2;(d)将num1减1,并将结果放回到num1中num1=num1–1;或num1--;(e)将num2减2,并将结果放回到num2中num2=num2–2;或num2-=2;5.有如下定义:inta=12,b=0,c=3;intd;下列每条语句执行后a、b、c和d的值各是什么?(a)a++;a=13b=0c=3d=内存单元的随机值(b)b--;a=12b=-1c=3d=内存单元的随机值(c)d=++c;a=12b=0c=4d=4(d)d=c--;a=12b=0c=2d=3(e)d=a++-2;a=13b=0c=3d=10(f)d=a+++b++-c--;a=13b=1c=2d=96.有如下定义:inta=1,b=2,c=3;下列每条语句执行后a、b、c的值各是什么?(a)a+=b;a=3b=2c=3(b)a/=3;a=0b=2c=3(c)a*=c;a=3b=2c=3(d)a%=2;a=1b=2c=3(e)a+=b+1;a=4b=2c=3(f)a+=++b;a=4b=3c=37.有如下定义:charch_val;intint_val;shortshort_val;floatfloat_val;doubledouble_val;unsignedintunsigned_int_val;下面哪些可能因为赋值类型自动转换而损失数据?(a)short_val=int_val;可能损失精度(b)int_val=ch_val;不能损失精度(c)double_val=float_val;不能损失精度(d)int_val=float_val;可能损失精度(e)int_val=unsigned_int_val;可能损失精度8.和第7题的变量定义一样,下列各表达式的数据类型各是什么?(a)int_val*float_val;double(b)float_val+int_val/100;double(c)ch_val+short_val+int_val;int(d)(double)int_val+double_val+float_val;double(e)(int)float_val*float_val/int_val;double(f)int_val+3.0;double9.有如下变量定义:inta=5,b=4;floatc=3.0,d;下列每小题中的d的值为?(a)d=a/b;d=1.0(b)d=(float)a/b;d=1.25(c)d=c/b;d=0.75(d)d=(int)c/b;d=0.0(e)d=a/2;d=2.0(f)d=a/2.0;d=2.5(g)d=(float)a/2;d=2.5(h)d=(int)c%2;d=1.010.写一个程序计算长为11.5厘米,宽为2.5厘米,高为10厘米的盒子的体积和表面积。#includestdio.hintmain(void){doublelength,width,height;doublearea,volume;length=11.5;width=2.5;height=10.0;area=2*(length*width+length*height+width*height);volume=length*width*height;printf(area=%.2f,volume=%.2f,area,volume);return0;}11.写一个程序完成如下功能:(a)计算并显示1到5的和。#includestdio.hintmain(void){printf(1+2+3+4+5=%d,1+2+3+4+5);return0;}(b)计算并显示单精度浮点数1,1.1,1.2,…,2.0的平均值。#includestdio.hintmain(void){printf(average=%.2f,(1.0+1.1+1.2+1.3+1.4+1.5+1.6+1.7+1.8+1.9+2.0)/11);return0;}第四章键盘输入与屏幕输出课后习题1.找出下面程序的错误。#includestdio.hintmain(){intnum;printf(PleasetypeanumberfollowedbyEnter);scanf(%f,num);改为:scanf(%d,&num);printf(Thenumberyoutypedwas:%d,num);return0;}2.为下面的每小题写一个简单的scanf语句以接收对应的键盘输入:(a)intfirst;scanf(%d,&first);(b)intsecond,third,fourth;scanf(%d%d%d,&second,&third,&fourth);(c)floatprincipal,rate,time;scanf(%f%f%f,&principal,&rate,&time);(d)charkeyval1,keyval2;scanf(%c%c,&keyval1,&keyval2);(e)charc;inti;floatf;doubled;scanf(%c%d%f%lf,&c,&i,&f,&d);3.写一个程序,输入四个整数数字,然后以输入时相反的顺序输出它们。#includestdio.hintmain(void){intnum1,num2,num3,num4;printf(Pleaseinputfournumbers:);scanf(%d,&num1);scanf(%d,&num2);scanf(%d,&num3