c程序设计第十二章答案(武汉理工大学张晓勇版)
CC++程序设计课后答案(2021年整理精品文档)
CC++程序设计课后答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(CC++程序设计课后答案)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为CC++程序设计课后答案的全部内容。
第一章一、选择题1.C/C++规定,在一个源程序中,main()函数的位置( )。
CA。
必须在最开始 B。
必须在最后C.可以任意D.必须在系统调用的库函数的后面2。
以下()是C/C++合法的标识符。
AA.char2B.@xC.intD.7Bw3。
下面的程序,对于输入:2 9 15,输出的结果是( )。
B#include"iostream.h"void main(){int a;float b;cout<<”input a,b:”<<end l;cin>〉a>>b;cout<<”a+b="〈<a+b<<endl;}A。
2 B.11 C。
26 D。
244。
在Visual C++中,打开一个项目只需要打开对应的项目工作区文件即可,项目工作区文件的扩展名为()。
CA.objB.dspC.dsw D。
cpp5.下面关于C语言与C++关系的说法中,( )是正确的。
DA。
C语言是C++的子集 B.C++对C语言进行了改进C。
C++和C语言都是面向对象的 D.C++继承了C语言的众多优点6。
设置一个断点的方法是将光标移到需要设置断点的行上,然后按( )键。
AA.F9 B。
F10 C。
F11 D。
F127.下面关于编译预处理命令的说法中,正确的是( )。
CA。
一条文件包含命令能包含多个文件B.文件包含命令不可以嵌套使用C。
武汉理工大学c语言实验及答案
实验二 选择结构的程序设计1.编程计算下面的分段函数。
4x-8 -1≤x <0y= 3x 2+10x-1 0≤x <18x 3-3x 2+2x-1 1≤x <2 (1)事先编好程序和流程图。
要求用if 语句结构实现,注意数据类型和输入提示语句。
#include <stdio.h> main ( ) {float x,y;printf ("input x:\n"); scanf ("%f",&x); if (x>=-1&&x<2) {if (x>=-1&&x<0)y=4*x-8;else if (x>=0&&x<1)y=3*x*x+10*x-1;elsey=8*x*x*x-3*x*x+2*x-1;printf("y=%10.2f",y); } elseprintf ("DATA ERROR!"); }(2)将程序运行六遍,分别从键盘上输入-1,-0.5,0,0.5,1,1.5这六个数,记录下运行结果并核对结果的正确性。
(3)再将程序运行二遍,分别从键盘上输入-3.5和2二个数,记录下运行结果并核对结果的正确性。
键盘的输入 分析结果 运行结果 调试说明键盘输入-1 键盘输入-0.5 键盘输入0 键盘输入0.5 键盘输入1 键盘输入1.5键盘的输入观察到的运行结果程序的错误之处和调试④修改程序,使之能正确处理任何数据。
当输入数据大于等于2或小于-1时,通知用户“Data Error ”,程序结束。
4.水果店有苹果,一级5.50元/kg ,二级4.20元/kg ,三级3.00元 /kg ,四级2.50/kg ,输入苹果的等级、数量以及顾客的付款数,显示出苹果的等级、数量、应付款数以及找给顾客的钱数。
(1)事先编好程序,分别用if 语句和用switch 语句结构实现,要求程序能正确处理任何数据。
《C程序设计》课后习题全部答案
第一章习题1.5编写一个C程序,输入以下信息:***************************************Very good!***************************************程序:#include <stdio.h>void main()//信息输出{printf("***************************************\n");printf(" V ery good! \n");printf("***************************************\n");}结果:1.6编写一个c程序,输入a,b,c3个值,输出其中最大者。
程序:#include<stdio.h>void main() //主函数{int max(int x,int y, int z);int a,b,c,d;scanf("%d,%d,%d",&a,&b,&c);d = max(a,b,c);printf("max = %d\n",d);}int max(int x,int y,int z)//三个数取最大{int m;if(x > y && x > z) m = x;if(y > x && y > z) m = y;if(z > x && z > y) m = z;return(m);}结果:1.7运行本章3个例题例一结果:例二结果:例三结果:第二章习题2.8(1)输出1900-2000年中的闰年程序:#include<stdio.h>void main(){int i;// int a;printf("1900-2000的闰年有:\n");for(i = 1900;i <= 2000;i ++)//依次判断闰年{if( (((i % 4) == 0) && ((i % 100) != 0)) ||(((i % 100) == 0) && ((i % 400) == 0)) ) // a = i;printf("%d\n",i);}}结果:(2)求a+ bx + c = 0的根。
武汉理工大学《C语言程序设计》实验报告答案
注:在Visual C++ 6.0编译环境中亲自调试通过,但不保证在Turbo C 中通过。
实验二 选择结构的程序设计(题目当初没抄下来,这是根据程序整理的)1.编程实现分段函数⎪⎩⎪⎨⎧<≤-+-<≤-+<≤--=2112381011030184242x x x x x x x x x y#include<stdio.h> main() { float x,y; printf("Please input x:"); scanf("%f",&x); if (x<-1||x>=2) printf("Data Error\n"); else { if (x>=-1&&x<0) y=4*x-8; if (x>=0&&x<1) y=3*x*x+10*x-1; if (x>=1&&x<2) y=8*x*x*x*x-3*x*x+2*x-1; printf("\ny=%f\n",y); } } 2. 苹果有三个等级,一级5.50元/斤,二级3.00元/斤,三级2.50元/斤。
编写程序,输入苹果的等级,购买的数量和所付的钱数,输出等级,购买的数量、应付钱数和找零。
#include<stdio.h> main() { int level; double weight,pay,money,charge; printf("Please input the level:"); scanf("%d",&level); printf("Please input the weight you want:"); scanf("%lf",&weight); printf("Please input the money you pay:"); scanf("%lf",&pay); if (level<1||level>4||weight<0) printf("Data Error\n"); else{ if (level==1) money=weight*5.50; else if (level==2) money=weight*4.20; else if (level==3) money=weight*3.00; else if (level==4) money=weight*2.50; charge=pay-money; printf("\nLevel:%d\nweight:%g\n",level,weight); printf("money:%g\ncharge:%g\n\n",money,charge); } }实验三循环结构1.编程计算1!+2!+3!+4!+5!●分别用单层循环和双层循环实现●考虑∑∑==201101iiii!和!#include<stdio.h>main(){int i,x;double j,k,sum;printf("Please input a number:");scanf("%d",&x);//用单层循环for(sum=0,j=1,i=1;i<=x;i++){j*=i;sum+=j;}printf("The result is %lf\n",sum);//用双层循环for(sum=0,i=1;i<=x;i++){for(k=1,j=1;j<=i;j++) k*=j;sum+=k;}printf("The result is %lf\n",sum);}2.共20个评委给选手评分,去掉1个最高分,去掉1个最低分,其余18名评委的平均分即选手最终得分#include <stdio.h>main(){double score,min,max,avg=0;int i;//下面是为了输入第一个数printf("Please input 20 scores...\n");printf("Score 1: ");scanf("%lf",&score);min=score;max=score;avg+=score;// 下面为了输入剩余19个数for(i=2;i<=20;i++){do{printf("Score %d: ",i);scanf("%lf",&score);}while(score<0);if(score>max) max=score;avg+=score;}avg=avg-min-max;avg/=18;printf("\nThe average score is %lf:\n",avg);}实验四数组和指针的应用1.定义一个有10元素的一位数组count,从键盘上输入8个整数,将其按从大到小的顺序排列,并将排序后的数组输出(1)数组方法#include<stdio.h>main(){int count[10],t,i,j;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&count[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (count[i]<count[j]){t=count[i];count[i]=count[j];count[j]=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d ",count[i]);}(2)指针方法#include<stdio.h>main(){int count[10],t,i,j,*p=count;printf("Please input 8 numbers:\n");for(i=0;i<8;i++)scanf("%d",&p[i]);for(i=0;i<8;i++)for(j=i+1;j<8;j++)if (*(p+i)<*(p+j)){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;}printf("The sorted array is as follows:\n");for (i=0;i<8;i++)printf("%d ",count[i]);}2.输入2个字符串,将二者连接并输出,再将连接后的字符串反向排列并输出,并求连接后字符串的长度#include<stdio.h>#include<string.h>main(){int i,len;char a1[51],a2[26],t[51];printf("Please input 2 strings:\n");gets(a1);gets(a2);strcat(a1,a2);printf("The joint string is: %s",a1);len=strlen(a1);printf("\nThe length of the linked string is: %d\n",len);for(i=0;i<len;i++)t[i]=a1[len-i-1];t[len]=0;strcpy(a1,t);printf("The reversed string is: %s\n",a1);}实验五函数应用的程序设计1.要求是:编写一函数,统计字符串中字母、数字、空格和其他字符的个数在主函数中输入字符串并输出统计结果值传送:#include<stdio.h>void fun(char a,int *b){if(a>='A'&&a<='Z'||a>='a'&&a<='z')b[0]++;else if(a>='0'&&a<='9')b[1]++;else if(a==32)b[2]++;else b[3]++;}main(){char a[50];int b[4],i,j,k;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);k=0;while(a[k]!=0){fun(a[k],b);k++;}printf("The string have %d letters, %d numbers, %d spaces, %d other chars\n",b[0],b[1],b[2],b[3]);}}地址传递:#include<stdio.h>void fun(char *a,int *b){int i=0;while(a[i] != 0){if(a[i]>='A'&&a[i]<='Z'||a[i]>='a'&&a[i]<='z')b[0]++;else if((a[i]>='0')&&(a[i]<='9'))b[1]++;elseif(a[i]==32)b[2]++;else b[3]++;i++;}}main(){char a[50];int b[4],i,j;for(i=0;i<3;i++){for(j=0;j<4;j++)b[j]=0;printf("\nPlease input a string:\n");gets(a);fun(a,b);printf("\nThe string have %d letters, %d numbers, %d spaces, %d other chars",b[0],b[1],b[2],b[3]);}}。
武汉理工大学继续教育本科专业c语言程序设计.doc
武汉理工大学继续教育本科专业c语言程序设计。
单选题1。
(一)包含1个字符(二)包含2个字符(三)包含3个字符(四)是非法的,以表示难度:更容易得分:1.02。
(一)108(二)18(三)12(四)2困难:更容易得分:1.03。
(a)5 18 7 16 9 12(b)15 18 17 16 19 12(c)15 8 17 6 19 2(d)5 8 7 6 9 2a困难:更容易得分:1.04。
(一)-容易得分:1.02。
(一)108(二)18(三)12(四)2困难:更容易得分:1.03。
(a)5 18 7 16 9 12(b)15 18 17 16 19 12(c)15 8 17 6 19 2(d)5 8 7 6 9 2a困难:更容易得分:1.04。
更简单的分数:1.05。
(一)2(二)3(三)6(四)7难度:更容易得分:1.06。
S是结构类型名,p是结构类型名,p是指向结构类型的指针类型名,不,是结构类型的成员,难点:更容易得分:1.07。
困难:更容易得分:1.08。
困难:1.09。
困难:更容易得分:1.010。
(一)0(二)3(三)4(四)无限C难度:更容易得分:1.011。
困难:更容易得分:2.012。
困难:更容易得分:2.013。
二维数组的正确定义是()(a) (b) (c) (d) c困难:更容易得分:2.014。
困难:更容易得分:2.015。
难度:更容易得分:2.016。
以下陈述是正确的()(a)宏名称必须用大写英文字母表示(B)宏定义不仅是符号替换,而且是赋值(c)宏替换在程序编译时完成,不占用程序运行时间(d)当引用带参数的宏时,宏定义中的实际参数和形式参数类型应与难度(B)一致:更容易得分:2.017。
下列保留字在C中是()(a) fopen (b)包括(c) get (d) unsigned 困难:2.018。
在循环语句的循环体中,break语句的功能是()。
(a)在break 语句之后继续执行循环体的语句,(b)提前结束循环,然后执行循环后的语句,(c)结束当前循环,(d)暂停程序运行,以及(c)困难: 更容易得分:2.019。
明解C语言入门篇第十二章答案
明解C语⾔⼊门篇第⼗⼆章答案练习12-1/*⽤表⽰学⽣的结构体来显⽰⾼尾的信息*/#include <stdio.h>#define NAME_LEN 64 /* 姓名的字符数 *//*=== 表⽰学⽣的结构体 ===*/struct student {char name[NAME_LEN]; /* 姓名 */int height; /* ⾝⾼ */float weight; /* 体重 */long schols; /* 奖学⾦ */};int main(void){struct student takao = { "Takao", 173, 86.2 };printf("姓名 = %s,%p\n", , &);printf("⾝⾼ = %d,%p\n", takao.height,&takao.height);printf("体重 = %.1f,%p\n", takao.weight, &takao.weight);printf("奖学⾦ = %ld,%p\n", takao.schols, &takao.schols);return0;}练习12-2/*拥有超能⼒的洋⼦(在结构体中引⼊typedef名)*/#include <stdio.h>#define NAME_LEN 64 /* 姓名的字符数 *//*=== 表⽰学⽣的结构体 ===*/typedef struct student {char name[NAME_LEN]; /* 姓名 */int height; /* ⾝⾼ */float weight; /* 体重 */long schols; /* 奖学⾦ */} Student;/*--- 将std指向的学⽣的⾝⾼变为180cm,体重变为80kg ---*/void hiroko(Student* std){if (std->height < 180) std->height = 180;if (std->weight > 80) std->weight = 80;}int main(void){int height, weight, schols;printf("⾝⾼是:体重是:奖学⾦是:");scanf("%d%d%d", &height, &weight, &schols);Student sanaka = { "Sanaka", height, weight, schols };hiroko(&sanaka);printf("姓名 = %s\n", );printf("⾝⾼ = %d\n", sanaka.height);printf("体重 = %.1f\n", sanaka.weight);printf("奖学⾦ = %ld\n", sanaka.schols);return0;}练习12-3/*返回结构体的函数*/#include <stdio.h>/*=== xyz结构体 ===*/struct xyz {int x;long y;double z;};/*--- 返回具有{x,y,z}的值的结构体xyz ---*/ struct xyz scan_xyz(){int x;long y;double z;struct xyz temp;printf("x=,y=,z=");scanf("%d%ld%lf", &x, &y, &z);temp.x = x;temp.y = y;temp.z = z;return temp;}int main(void){struct xyz s = { 0, 0, 0 };s = scan_xyz();printf("xyz.x = %d\n", s.x);printf("xyz.y = %ld\n", s.y);printf("xyz.z = %f\n", s.z);return0;}练习12-4/*将5名学⽣的⾝⾼按升序排列*/#include <stdio.h>#include <string.h>#define NUMBER 5 /* 学⽣⼈数 */#define NAME_LEN 64 /* 姓名的字符数 */ /*=== 表⽰学⽣的结构体 ===*/typedef struct {char name[NAME_LEN]; /* 姓名 */int height; /* ⾝⾼ */double weight; /* 体重 */int schols; /* 奖学⾦ */} Student;/*--- 将x和y指向的学⽣进⾏交换 ---*/void swap_Student(Student* x, Student* y){Student temp = *x;*x = *y;*y = temp;}/*--- 将学⽣数组a的前n个元素按⾝⾼进⾏升序排列 ---*/void sort_by_height(Student a[], int n){int i, j;for (i = 0; i < n - 1; i++) {for (j = n - 1; j > i; j--)if (a[j - 1].height > a[j].height)swap_Student(&a[j - 1], &a[j]);}}int main(void){int i;Student std[] = { {0 }, { 0 }, { 0 }, { 0 }, { 0 },};for (i = 0; i < NUMBER; i++) {printf("姓名⾝⾼体重奖学⾦\n ");scanf("%s %i %lf %d", &std[i].name, &std[i].height,& std[i].weight, &std[i].schols); }for (i = 0; i < NUMBER; i++)printf("%-8s %6d %6.1f %7ld \n",std[i].name, std[i].height, std[i].weight, std[i].schols);sort_by_height(std, NUMBER); /* 按⾝⾼进⾏升序排列 */int choice;printf("是否按⾝⾼排列,是->1,否->0\n");scanf("%d", &choice);if (choice == 1) {puts("\n按⾝⾼排序。
C语言程序设计教程课后习题参考答案
《C语言程序设计教程》课后习题参考答案习题11.(1)编译、链接.exe(2)函数主函数(或main函数)(3)编辑编译链接2.(1)-(5):DDBBC(6)-(10):ABBBC3.(1)答:C语言简洁、紧凑,使用方便、灵活;C语言是高级语言,同时具备了低级语言的特征;C语言是结构化程序设计语言,具有结构化的程序控制语句;C语言有各种各样的数据类型;C语言可移植性好;生成目标代码质量高,程序执行效率高。
(2)编辑、编译、链接、执行(3)一个C程序由一或多个函数组成,一函数若干条语句构成,每条语句的末尾必须以分号结束。
(4)标识符,关键字,运算符,分隔符,常量,注释符等4. 从键盘输入一个双精度小数,打印出它的余弦值。
#include <stdio.h>#include <math.h>main( ){double x;scanf(“%lf”, &x);printf(“%lf\n”, cos(x) );}第2章1.(1)BDE、ACFG(2)D(3)C(4)C2.(1)错(2)错(3)错(4)对(5)错3.(1)a=3,b=-27(2)a=11,b=6,c=6(3)3(4)1010110(5)-998(6)1)202)83)704)05)06)04.(1)#include <stdio.h>main( ){double r, h ,v;r = 2.5;h = 3.5;v = 3.14*r*r*h;printf(“v=%lf\n”, v);}(2)#include <stdio.h>main( ){char ch;ch = getchar( );printf(“%c\n”, ch + 32);}(3)#include <stdio.h>main( ){printf(“ *\n”);printf(“ ***\n”);printf(“ *****\n”);printf(“*******\n”);}(4)#include <stdio.h>main( ){double x;scanf(“%lf”, &x);printf(“%d , %lf\n”, (int)x, x – (int)x );}(5)#include <stdio.h>main( ){double a=3, b=5;double result = (-2 * a + ( 4*a – b )/( 2*a + b ) )/( (a - 4*b)/(a + b) );printf(“%lf\n”, result);}习题31.(1)D(2)AD(3)C(4)B(5)A(6)-(10):BDACB2.(1)3.141593,3.1416,3.142(2)c=K(3)| 123.46|,|123 |(4)x= 1.23,y= 50.00(5)03.(1)scanf(%f”, c); 改为:scanf(“%f”, &c);f = (9/5)*c+32;改为:f = (9.0/5)*c + 32;printf(“摄氏温度%f度相当于华氏温度%f度”, &c, &f); 改为:printf(“摄氏温度%f度相当于华氏温度%f度”, c, f); (2)补充定义:int h;h = 500/60改为: h = 500 / 60;m = 500% 60 改为:m = 500%60;printf(“500分钟是%d小时%d分钟,”&h, &m); 改为:printf(“500分钟是%d小时%d分钟” , h, m);4.(1)#include<stdio.h>main( ){char x,y;scanf(“%c%c”, &x, &y);printf(“%d\n”, (x-‘0’) + (y-‘0’) );}(2)#include <stdio.h>main( ){char x, y;char tmp;printf(“Input two characters:”);scanf(“%c%c”, &x, &y);printf(“Before swap: x=%c, y=%c\n”, x, y);tmp = x;x = y;y = tmp;printf(“After swap: x=%c, y=%c\n”, x, y); }(3)#include <stdio.h>main( ){char ch;ch = getchar( );printf(“%c\n”, ch - 32);}第4章1.(1)-(5):CAACA2.(1)BBB(2)AAABBBCCC(3)end(4)d=20(5)s=2,t=3(6)firstthird(7)y=0y=5y=10y=53.(1)y<z x<z x<y(2)ch>=’A’ && ch<=’Z’ch>=’a’&&ch<=’z’ch = ch-32(3)x>2&&x<=10x>-1&&x<=2(4)t=x;x=y;y=t;4.(1)#include <stdio.h>main( ){int x, y , z, t;scanf(“%d%d%d”, &x, &y, &z);if ( x>y ){ t=x; x=y; y=t;}if( x > z ){t = x; x = z; z= t; }if( y > z ){t = y; y= z; z = t;}printf(“%d %d %d\n”, x, y ,z);}(2)#include <stdio.h>main( ){int score;scanf(“%d”, &score);if ( score < 0 || score > 100 )printf(“成绩不合理\n”);else if( score>=90 )printf(“优秀\n”);else if( score>=80 )printf(“良好\n”);else if( score >= 70 )printf(“中等\n”);else if( score >= 60 )printf(“及格\n”);elseprintf(“不及格\n”);}(3)#include <stdio.h>main( ){int n;int g,s,b,q;//各位上的数值scanf(“%d”, &n);g = n%10;//个位s = n/10%10;//十位b = n/100%10;//百位q = n/1000%10;//千位if( n < 10 ) //一位数{printf(“%d\n”, 1);//位数printf(“%d\n”, g); //各位上的数值}else if ( n < 100 ) //两位数{printf(“%d\n”, 2);//位数printf(“%d %d\n”, g,s);}else if ( n < 1000 ) //三位数{printf(“%d\n”, 3);//位数printf(“%d %d %d\n”, g, s, b);}else if ( n < 10000 ) //四位数{printf(“%d\n”, 4);//位数printf(“%d %d %d %d\n”, g, s, b, q);}}(4)#include <stdio.h>main( ){int n;scanf(“%d”, &n);if( n % 3==0 && n%5==0 && n%7==0 )printf(“能同时被3、5、7整除\n”);else if( n%3==0 && n%5==0)printf(“能被3和5整除\n”);else if( n%3==0 && n%7==0 )printf(“能被3和7整除\n”);else if( n%5==0 && n%7==0 )printf(“能被5和7整除\n”);else if( n%3==0 || n%5==0 || n%7==0 ){if( n%3==0 )printf(“能被3整除\n”);else if( n%5==0 )printf(“能被5整除\n”);elseprintf(“能被7整除\n”);}elseprintf(“不能被3、5、7中任一个数整除\n”);}(5)#include <stdio.h>main( ){int carType;//车型。
C#程序设计第12章
ThreadPool
ThreadPool为大多数任务提供最佳的基本 线程创建和管理机制。该类使用户能够请求某 一线程执行任务而不必亲自完成任何线程管理 工作。 ThreadPool类提供一个线程池,该线程池 可用于发送工作项、处理异步I/O、代表其他线 程等待以及处理计时器。许多应用程序创建的 线程都要在休眠状态中消耗大量时间,以等待 事件发生。
例:线程的Sleep 函数使用
static void Main(string[] args) { //线程启动后执行的方法,这里是用了静态方法 static void ThreadRun() //设置主线程名字 { = "主线程"; //当前线程是子线程,此时是设置子线程名字 Console.WriteLine("主线程启动!"); = "子线程"; //在主线程里创建子线程 Thread ts = new Thread(new ThreadStart(ThreadRun)); Console.WriteLine("子线程启动!"); //子线程开始计数 ts.Start(); //启动子线程 for (int i == 0; << 12; i++) //主线程开始数数 for (int i 0; i i 12; i++) {{ Console.WriteLine("{0}:{1}", Console.WriteLine("{0}:{1}", , i); , i); Thread.Sleep(10); //让当前线程休眠10毫秒 Thread.Sleep(10);//让当前线程休眠10毫秒 }} Console.WriteLine("子线程结束!"); Console.WriteLine("主线程结束!"); } Console.ReadLine(); }
C语言程序设计》课后习题详细答案
《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 【参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]1位二进制数据(0或1)2.25 【参考答案】[1]8 [2]127 [3]01111111 [4]-128 [ 5 ] 10000000 2.26 【参考答案】[1]32767 [2]-32768 [3]10000000000000002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。
武汉理工大学《C语言程序设计》期末考试试卷(A卷)
武汉理工大学《C语言程序设计》期末考试试卷(A卷)(2011级各专业)一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是。
A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是A、ABCB、abcC、a_bcD、ab。
c3、一个C语言程序是由。
A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性"等5个特性,对另外4个特性的描述中错误的是A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是。
A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(<CR〉表示回车),x的值是 .#include<stdio.h>main(){int x;float y;scanf(”=%f",&x,&y);}A、12345B、123C、45D、3458、若有以下定义int a,b;float x,则正确的赋值语句是 .A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是 .#include〈stdio.h>{ int i=10,j=10;printf("%d,%d\n",++i,j--);}A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是。
#include〈stdio。
h>main(){ char c1='A',c2='Y';printf("%d,%d\n”,c1,c2);A、A,YB、65,65C、65,90D、65,8911、下列运算符中优先级最高的是 .A、<B、十C、%D、!=12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是。
C语言程序设计课后习题答案
#include <stdio.h>
voidmain()
{
char c1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf(“密码是%c%c%c%c%c\n”,c1,c2,用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入?
(1)变量c1、c2应定义为字符型或整形?或二者皆可?
(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?
(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
charc1,c2;与intc1,c2;是否无条件地等价?
解:
#include<stdio.h>
解:
#include<stdio.h>
voidmain()
{
float score;
char grade;
printf(“请输入学生成绩:”);
scanf(“%f”,&score);
while(score>100||score<0)
{ printf(“\n输入有误,请重新输入:”);
scanf(“%f”,&score);
thousand=num/1000%10;
hundred=num/100%10;
ten=num%100/10;
indiv=num%10;
switch(place)
{ case 5: printf(“%d,%d,%d,%d,%d”,ten_thousand,thousand,hundred,ten,indiv);
C++语言程序设计课后答案12
第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4 什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。
C++Primer 第12章 类和数据抽象 课后习题答案
C++Primer 第12章类和数据抽象课后习题答案c++primer第12章-类和数据抽象-课后习题答案第1二章类和数据抽象12.1编写一个名为person的类,表示人的名字和地址,使用string来保存每个元素。
答:classperson{public:person(stringpname,stringpaddress){name=pname;address=paddress;}私人:stringname;stringaddress;};12.2为person提供一个接收两个string参数的构造函数。
见第一题。
12.3提供返回姓名和地址的操作。
这些函数应该是常量吗?解释你的选择。
在public中添加成员函数:stringget_uname()const{returnname;]stringget_address ()const{returnaddress;]这两个成员函数不应修改它们操作的对象的数据成员的值,但应声明为const type。
12.4指明person的哪个成员应声明为public,哪个成员应声明为private。
解释。
数据成员的名称和地址应该是私有的,以确保它们只能由类成员使用,不能被外部世界访问。
成员函数get_Name()和get_Address()应该声明为public,以便为外部世界提供接口访问类的数据成员。
构造函数也应该声明为public,以初始化类的对象。
12.5c++类支持哪些访问标号?在每个访问标号之后应定义哪种成员?如果有的话,在类的定义中,一个访问标号可以出现在何处以及可出现多少次?约束条件是什么?有公共、私人和保护。
public之后定义外部世界可以访问的接口,private之后定义只能由该类成员函数使用的成员;在protect之后定义的成员称为受保护成员,只能由此类及其子类访问。
访问标签可以出现在任何成员定义之前,并且次数没有限制。
约束条件是,每个访问标签指定后续的成员定义级别,该级别在出现下一个访问标签或看到类定义主体的右方括号之前保持有效。
【第四版课后习题答案】第12章 异常处理
第十二章异常处理12-1 什么叫做异常?什么叫做异常处理?解:当一个函数在执行的过程中出现了一些不平常的情况,或运行结果无法定义的情况,使得操作不得不被中断时,我们说出现了异常。
异常通常是用throw关键字产生的一个对象,用来表明出现了一些意外的情况。
我们在设计程序时,就要充分考虑到各种意外情况,并给与恰当的处理。
这就是我们所说的异常处理。
12-2 C++的异常处理机制有何优点?解:C++的异常处理机制使得异常的引发和处理不必在同一函数中,这样底层的函数可以着重解决具体问题,而不必过多地考虑对异常的处理。
上层调用者可以在适当的位置设计对不同类型异常的处理。
12-3 举例throw 、try、catch语句的用法?解:throw语句用来引发异常,用法为:throw 表达式;例如:throw 1.0E-10;catch语句用来处理某中类型的异常,它跟在一个try程序块后面处理这个try程序块产生的异常,如果一个函数要调用一个可能会引发异常的函数,并且想在异常真的出现后处理异常,就必须使用try语句来捕获异常。
例如:try{语句//可能会引发多种异常}catch(参数声明1){语句//异常处理程序}12-4设计一个异常Exception抽象类,在此基础上派生一个OutOfMemory类响应内存不足,一个RangeError 类响应输入的数不在指定范围内,实现并测试这几个类。
解:源程序:#include <iostream.h>class Exception{public:Exception(){}virtual ~Exception(){}};class OutOfMemory : public Exception{public:OutOfMemory(){}~OutOfMemory(){}virtual void PrintError();};void OutOfMemory::PrintError(){cout << "Out of Memory!!\n";}class RangeError : public Exception{public:RangeError(unsigned long number){BadNum = number;}~RangeError(){}virtual void PrintError();virtual unsigned long GetNumber() { return BadNum; }virtual void SetNumber(unsigned long number) {BadNum = number;} private:unsigned long BadNum;};void RangeError::PrintError(){cout << "Number out of range. You used " << GetNumber() << " !\n"; }void fn1();unsigned int * fn2();void fn3(unsigned int *);int main(){try{fn1();}catch (Exception& theException){theException.PrintError();}return 0;}unsigned int * fn2()unsigned int *n = new unsigned int;if (n == 0)throw OutOfMemory();return n;}void fn1(){unsigned int *p = fn2();fn3(p);cout << "The number is : " << *p << endl;delete p;}void fn3(unsigned int *p){long Number;cout << "Enter an integer(0~~1000): ";cin >> Number;if (Number > 1000 || Number < 0)throw RangeError(Number);*p = Number;}程序运行输出:Enter an integer(0~~1000): 56The number is : 56Enter an integer(0~~1000): 2000Number out of range. You used 2000 !12-5 练习使用try、catch语句,在程序中用new分配内存时,如果操作未成功,则用try语句触发一个字符型异常,用catch语句捕获此异常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十二章位运算12.1 函数getbits的程序为:#include<stdio.h>void main(){void getbits(int value,int n1,int n2);unsigned a,n1,n2;printf("please input the value: ");scanf("%o",&a);printf("%d\n",a);printf("please input n1 and n2:");scanf("%d,%d",&n1,&n2);getbits(a,n1,n2);}void getbits(int value,int n1,int n2){int a1,b1,c1,b,c;b=17-n1;c=17-n2;b1=value>>(c-1);c1=~(~0<<(b-c+1));a1=b1&c1;printf("%d\n",a1);}12.2 程序为:#include<stdio.h>void main(){unsigned getbits(unsigned);unsigned int a;printf("\ninput an octal number:");scanf("%o",&a);printf("result:%d\n",getbits(a));}unsigned getbits(unsigned value){int z;z=value&43690;return(z);}13,程序为:检验程序为:#include<stdio.h>void main(){int getbits(int);int a;printf("\ninput an octal number:");scanf("%o",&a);printf("result:%o\n",getbits(a));}int getbits(int value){int z;z=value>>1;return(z);}结果:逻辑右移。
算数右移程序:#include<stdio.h>void main(){int getbits(int,int);int a,n;printf("\ninput an octal number:");scanf("%o,%d",&a,&n);printf("result:%o\n",getbits(a,n));}int getbits(int value,int n){int z,a1,b;unsigned c=0;z=value>>n;printf("%o\n",z);b=~((~c)>>n);a1=(z|b);printf("%o\n",b);return(a1);}注:结果不与书中的一样主要是因为本计算机的位数较高(32位)。
12.4 程序为:#include<stdio.h>int main(){int a,n;void move(int value,int n);printf("\ninput an number and the number of moving bytes :");scanf("%o,%d",&a,&n);move(a,n);return 0;}void move(int value,int n){int a,b,c,d;a=value;if(n>0){b=a<<(16-n);c=a>>n;c=c|b;}else{n=-n;b=a>>(16-n);c=a<<n;c=c|b;}printf("%o,%o\n",a,c);}注:结果比书中的多了几位,主要是因为本计算机的位数与书中的计算机的位数不一样造成的。
12.5 程序为:#include <stdio.h>#include <string.h>void buma(char* str){int i,t;int len = strlen(str);if(str[0]=='0')return;for(i=1;i<len;i++)str[i] = '1' - str[i] + '0';t = 1;for(i=len-1;t&&i>=0;i--){str[i] += t;t = 0;if(str[i]>'1'){str[i] = '0';t = 1;}}return;}int main(){char str[1000];while(1){printf("请输入你一个数的原码:\n");scanf("%s",str);buma(str);printf("输出该数的补码为:\n");printf("%s\n\n",str);}return 0;}注:这其中牵涉了许多补码的知识。
例13.3 程序为:#include <stdio.h>#define SIZE 4struct student_type{char name[10];int num;int age;char addr[10];}stud[SIZE];/*void save(){FILE *fp;int i;if((fp=fopen("stu_list","wb"))==NULL){printf("cannot open file");return;}for(i=0;i<SIZE;i++)if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)printf("file write error\n");fclose(fp);}*/void main(){int i;FILE *fp;fp=fopen("stu_list","rb");for(i=0;i<SIZE;i++){fread(&stud[i],sizeof(struct student_type),1,fp);printf("%-10s %4d %4d %-10s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);}/*scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);save();*/fclose(fp);}注:在磁盘上的确存在“stu_list”文件,并且里面的内容也是正确的。
下面从一个文件向另一个文件写数据。
#include <stdio.h>#define SIZE 4struct student_type{char name[10];int num;int age;char addr[10];}stud[SIZE];void save(){FILE *fp;int i;if((fp=fopen("stu_dat","wb"))==NULL){printf("cannot open file");return;}for(i=0;i<SIZE;i++)if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) printf("file write error\n");fclose(fp);}void load(){FILE *fp;int i;if((fp=fopen("stu_list","rb"))==NULL){printf("cannot open file");return;}for(i=0;i<SIZE;i++)if(fread(&stud[i],sizeof(struct student_type),1,fp)!=1){if(feof(fp)) { fclose(fp);return;}printf("file write error\n");}fclose(fp);}void main(){load();save();}注:这三个程序之间的功能可以实现连接。