程序设计C作业三有答案
C语言程序设计习题答案(第三版)

C语言程序设计(第三版)习题答案习题一一、名词解释(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)高级语言P2(5)汇编程序P3 (6)编译程序P4 (7)算法P5 (8)结构化程序设计方法P10二、简答题1. 设计程序时应遵循哪些基本原则?P4答:正确性、可靠性、简明性、有效性、可维护性、可移植性。
2. 算法具有哪些特点?答:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。
3. 算法的表示形式有哪几种?答:自然语言、伪代码、传统流程图、N-S流程图、计算机语言。
4. 结构化程序设计方法的三种基本结构是什么?答:顺序结构、选择结构和循环结构。
5. 传统流程图与N-S流程图最大的区别是什么?答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。
三、用传统流程图或N-S流程图表示求解以下问题的算法。
1. 从键盘输入10个整数,求出其中的最小数并输出。
2. 求1+2+3+…+100的值。
3. 求10~50的所有素数之和。
4. 求下列分段函数的值。
四、请参照本章例题,编写一个简单的C 程序,输出以下三行信息。
**************************Yangtze University**************************#include <stdio.h>void main(){printf("**************************\n");printf(" Yangtze University\n");printf("**************************\n");}4X-1 (X ≤1) 5(X-1)+6 (1<X<5) 6-3X (X ≥5)习题二一、选择题1~10: B C D C D D B C A A11~20: D A C D B D B A C D二、填空题1.字母 L 或字母 l2. %c(或字符) 、 %d(或整数)3.在程序运行过程中,其值可以在一定的范围内变化的量4.'\0'5.小数形式、指数形式6.关键字、预定义标识符、用户标识符7.字母、数字、下划线、数字8. 189. 2 、 1 、 3010.双精度实数或double11.赋值、逗号、 20 、 20 、 20 、 412. 4 、 4习题三一、选择题1~10: B C C B C C C D C C注:第4题答案D为: 10 22↙33↙二、填空题1. printf 、 scanf2. h3."%5d"4.'\0'5. e 、 E6. 67. s 、 c8. *9. - 、 +10. i三、编程题1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进行输出。
《C语言程序设计》试题3及答案

三一.单项选择题?1.设int x=1,y=1;表达式(!x++ || y--)的值是_________??? A.0???? B. 1?????? C. 2???? D.-12.main( )? {? int n;???? ( n=6*4,n+6),n*2;???? printf(“n=%d\n”,n);? }?? 此程序的输出结果是______________.?? A.30??? B.? 24???? C.? 60????? D.? 483.若有如下定义,则__________是对数组元素的正确的引用。
?? int? a[10] , *p ;?? p=a ;?? p=a ;?? p=a ;?? p=a ;?? A.? *&a[10]???? B.? a[11]????? C.? *(p+10)????? D. *p4.设整型变量n的值为2,执行语句“n+=n-=n*n;”后,n的值是__________ ?? A.? 0???? B.? 4??? C.? - 4???? D.? 2???? 5.以下不能正确定义二维数组的语句是___________??? A . int a[2][2]={{1},{2}};???? B. int a[][2]={1,2,3,4};?? ?C. int a[2][2]={{1},2,3};????? D. int a[2][]={{1,2},{3,4}}; 6.程序段??? ??????的功能是将变量 u 、s中的最大值赋给变量t 。
??????? A.? if(u>s) t=u;t=s;?????? B. ?t=u;?? if(t ) ?t=s;???? ?C.? if(u>s) t=s;else t=u;? ??D . ?t=s; if(u ) ?t=u;7.下列程序段的输出结果是???? ??????。
void main(){?? int k;for (k=1;k<5;k++〉{ ?if(k%2!=0)??printf("#");else ??printf(“*”) ;? } }A. #*#*????? B . *#*#??? C.? ##?????? D. 以上都不对8.设变量定义为 int a[3]={1,4,7},*p=&a[2], 则*p的值是? (35)??? 。
C语言程序设计实验三答案

实验三 选择结构程序设计一、实验目的与要求1. 理解C 语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。
2. 掌握利用if 结构实现选择结构的方法。
3. 掌握利用switch 结构实现多分支选择结构。
4. 结合程序掌握一些简单的算法,学习调试程序5. 实验4学时二、实验内容1.程序改错题改正下面程序中的错误。
输入实数x ,计算并输出下列分段函数f(x)的值(保留1位小数)。
)100(1=x x==)(x f y)100(≠x x输入输出示例1(改正后程序的运行结果)Enter x :100f )=输入输出示例2(改正后程序的运行结果)Enter x :23f )=源程序(有错误的程序)#include<>#include<>void main(void){double x;printf("Enter x: \n");scanf("=%f", x);if (x = 100) {y = 1/sqrt(x)}else (x != 100) {y = x;}printf("f(%.2f) = %.1f\n",x,y);}答:#include<>#include<>void main(void){double x,y;printf("Enter x:\n");scanf("%lf",&x);if (x=100)y = 1/sqrt(x);elsey= x;printf("f(%.2lf)=%.1lf\n",x,y);}2.一般编程题编程题1输入任意三个整数a,b,c ,求3个数中的最大值和最小值。
答:#include <>void main(){int a,b,c;printf("请输入三个整数:");scanf("%d %d %d",&a,&b,&c);if (a>=b)t=a,a=b,b=t;if (a>=c)t=a,a=c,c=t;if (b>=c)t=b,b=c,c=t;printf("最小值为:%d\n",a);printf("最大值为:%d\n",c);}编程题2输入x ,计算并输出下面分段函数f(x)的值(保留2位小数)。
北航14秋《C++程序设计》在线作业三答案

C++程序设计北航《C++程序设计》在线作业三一,单选题1. 假定k是一个double类型的变量,则关于变量p的正确定义语句为____A. double p=&k;B. int *p=&k;C. double &p=*k;D. char *p="Thank you!";?正确答案:D2. 下列叙述中正确的是:A. C++语言程序必须要有return语句B. C++语言程序中,要调用的函数必须在main()函数中定义C. C++语言程序中,只有int类型的函数可以未经声明而出现在调用之后D. C++语言程序中,main()函数必须放在程序开始的部分?正确答案:C3. 以下函数的返回结果是____.int function(char *x) { char *p=x; while(*p++); return(p-x-1); }A. 求字符串的长度B. 将字符串x连接到字符串p后面C. 将字符串x复制到字符串p中D. 将字符串x反向存放?正确答案:A4. 假定变量b和pb定义为"int b[10], *pb=b;",要将24赋值给b[1]元素中,不正确的语句是.____A. *(pb+1)=24;B. *(b+1)=24;C. *++b=24;D. *++pb=24;?正确答案:C5. 在下列运算符中,优先级最低的是A. ||B. !=C. <D. +?正确答案:A6. 以下标识符中不全是C++保留字的是____A. case for intB. default then whileC. bool class longD. goto return char?正确答案:B7. ()不是构造函数的特征A. 构造函数的函数名与类名相同B. 构造函数可以重载C. 构造函数可以设置缺省参数D. 构造函数必须指定类型说明.?正确答案:D8. 如果有char* ssl=“0123456789”,则,sizeof(ssl)的值是()A. 4B. 10C. 11D. 40?正确答案:A9. 虚函数使用关键字______。
《C语言程序设计教程》(第三版)课后习题参考答案

C语言程序设计课后习题参考答案习题一一、单项选择题1、C2、B3、B4、C5、D6、A7、C8、A二、填空题1、判断条件2、面向过程编程3、结构化4、程序5、面向对象方法6、基本功能操作、控制结构7、有穷性8、直到型循环结构9、算法10、可读性11、模块化12、对问题的分解和模块的划分习题二一、单项选择题1、B2、D3、C4、B5、A6、A7、B8、C二、填空题1、主2、C编译系统3、结构化4、程序5、面向对象方法6、.OBJ7、库函数8、直到型循环结构习题三一、单项选择题1、D2、B3、A4、C5、A6、D7、B8、D9、B 10、C 11、A 12、D 13、C 14、B 15、C 16、A17、B 18、C 19、C 20、D 21、A 22、D 23、D 24、D、A25、D 26、A二、填空题1、补码2、10^-138~10^138、15~163、实4、单目运算符、自右向左5、函数调用6、65,89习题四一、单项选择题1、D2、C3、D4、A5、D6、B7、A8、C9、B 10、B二、填空题1、两, ;2、5.1690003、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车4、a=98,b=765.000000,c=4321.0000005、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车6、0,0,37、38、scanf(“%lf %lf %lf”,&a,&b,&c);9、13 13.000000 13.00000010、c=b-a;a=b+c;习题五一、单项选择题1、B2、D3、C4、B5、B6、D7、A8、B9、D二、填空题1、1 、02、k!=03、if(x>4||x<-4)printf(“%d”,x);else printf(“error!”);4、if(((x>=1&&x<=10)||(x>=200&&x<=210))&&(x%2!=0))Printf(“%d”,x);5、16、17、10!Right!8、a=09、2,110、0<a<b习题六一、单项选择题1、B2、C3、C4、B5、C6、B7、C8、A二、填空题1、无穷次2、83、204、115、3.66、*#*#*#$7、8 5 28、d=1.0 、k++、k<=n9、!(x<0)、x<amin习题七一、单项选择题1、B2、D3、C4、C5、A6、A7、D8、A二、填空题1、1 2 4 8 16 32 64 128 256 5122、a[age]++、i=18;i<263、break、i==84、a[i]>b[i]、i<3、j<55、b[j]=0、b[j]=a[j][k]习题八一、单项选择题1、B2、C3、C4、A5、A6、A7、C8、D9、D 10、B 11、A 12、C 13、A 14、C 15、B二、填空题1、return 1、return n+sum(n-1)2、return 1、n*facto(n-1)习题九一、单项选择题1、D2、C3、D4、A5、C6、C7、C8、C9、B 10、C 11、A 12、C 13、B 14、A 15、D 16、B17、C 18、A 19、B 20、C二、填空题1、int 、return z2、*p++3、’\0’、++4、p、max<*q、min>*q习题十一、单项选择题1、D2、D3、A4、5、B6、A7、C8、B9、D 10、11、C 12、D 13、D 14、C二、填空题1、34 122、ARRAY a[10],b[10],c[10];3、2 34、ab、cd5、(*b).day、b->day6、adabc defghi mnohi no7、(struct node *)、!=’\n’、p=top;8、p1=p1->next9、(struct list *)、(struct list *)、return (n)习题十一一、单项选择题1、A2、A3、B4、A5、B6、D7、B8、A9、A 10、B 11、B 12、B 13、C 14、C 15、D 16、A17、D二、填空题1、ASCII(文本)、二进制2、pf=fopen(“A:\\zk04\\data\\txfile.dat”,”w”);3、fputc()、fputs()、fscanf()、fread()4、(后两个空)文件结束符、非0值。
c程序设计第3-4章练习题有答案

第3-4章练习题一、选择题1. 以下错误的字符串赋值或赋初值方式是:(A)char str1[]=”string”, str2[]=”12345678”;st r cpy(str2,str1);(B)char str[7]={’s’,’t’,’r’,’i’,’n’,’g’};(C)char str[10] ;str =”string”;(D)char *str; str=”string”;2. 数组定义中不正确的是:(A)int a[2][3]; (B)int b[][3]={0,1,2,3};(C)int c[100][100]={0}; (D)int d[3][]={{1,2},{1,2,3},{1,2,3,4}};3. 以下对一维数组a正确初始化的是:(A)int a[10]=(0,0,0,0,); (B)int a[10]={};(C)int a[10]={0}; (D)int a[10]=(10*2);4.以下选项中,不能正确赋值的是:(A)char s1[10];s1="Ctest"; (B)char s2[]={'C', 't', 'e', 's', 't'};(C)char s3[20]="Ctest"; (D)char *s4="Ctest\n"5.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是:(A)i=*p; (B)*p=*&j; (C)i=&j; (D)i=**p;6. 下面各语句行中,不能正确进行字符串操作的语句行是:(A) char st[10]={"abcde"}; (B) char s[5]={'a','b','c','d','e'};(C) char *s; s="abcde"; (D) char *s; scanf("%s",s);7.设有如下的程序段,执行上面的程序段后,*(ptr+5)的值为:char str[ ]="Hello"; char *ptr; ptr=str;(A) 'o' (B) '\0' (C)不确定的值(D) 'o'的地址8. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));(A)5 (B)14 (C)8 (D)输出项不合法,无正常输出9.以下程序段给数组所有的元素输入数据,请选择正确答案填入。
C语言程序设计模拟试题3(附答案)

《C语言程序设计》模拟试卷三一、填空题。
(每空2分,共16分)1.在内存中,短整型变量占字节,单精度实型变量占字节,字符型变量占字节。
2.一个C语言文件就是由若干个组成。
3.设有以下变量定义,并已赋确定得值char w; int x; float y; double z;则表达式:w*x+z-y所求得得数据类型为。
4.若x为int类型,请以最简单得形式写出与逻辑表达式!x等价得C语言关系表达式。
5.若有如下图所示五个连续得int类型得存储单元并赋值如下图,a[0]得地址小于a[4]得地址。
p与s就是基类型为int得指针变量。
请对以下问题进行填空。
a[0] a[1] a[2] a[3] a[4]p,给s赋值,使s指向最后一个存储单元a[4]得语句就是。
(2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p得值就是。
二、单项选择题。
(每题2分,共40分)1.设有 int x=11; 则表达式 (x++ * 1/3) 得值就是()。
A) 3 B) 4 C) 11 D) 122.下列程序得输出结果就是()。
A) 3 B) 3、2 C) 0 D) 3、07main(){double d=3、2; int x,y;x=1、2; y=(x+3、8)/5、0;printf(“%d \n”, d*y);}3.下列程序执行后得输出结果就是(小数点后只写一位)()。
A) 6 6 6、0 6、0 B) 6 6 6、7 6、7C) 6 6 6、0 6、7 D) 6 6 6、7 6、0main(){ double d; float f; long l; int i;i=f=l=d=20/3;printf("%d %ld %f %f \n", i,l,f,d);scanf("%d",&d);}4.下列变量定义中合法得就是()。
A) short _a=1-、le-1; B) double b=1+5e2、5;C) long do=0xfdaL; D) float 2_and=1-e-3;5.设 int x=1, y=1; 表达式(!x||y--)得值就是()。
电大《C语言知识学习程序设计》第1,2,3,4次作业任务及答案解析

第一次作业一、写出下列每个程序运行后的输出结果1. #include<stdio.h>void main(){int x=5;switch(2*x-3){case 4:printf("%d ",x);case 7:printf("%d ",2*x+1);case 10:printf("%d ",3*x-1);break;default:printf("%s ","default\n");}printf("%s\n","switch end.");}2. #include<stdio.h>void main(){int i,s=0;for(i=1;i<=6;i++)s+=i*i;printf("s=%d\n",s);}3. #include<stdio.h>void main(){int i,s1=0,s2=0;for(i=0;i<10;i++)if(i%2)s1+=i;else s2+=i;printf("%d %d\n",s1,s2);}4. #include<stdio.h>void main(){int n=10,y=1;while(n--){y++;y++;}printf("y=%d\n",y);}5. #include<stdio.h>void main(){int f,f1,f2,i;f1=f2=1;printf("%d %d ",f1,f2);for(i=3;i<=10;i++){f=f1+f2;printf("%d ",f);if(i%5==0)printf("\n");f1=f2;f2=f;}printf("\n");}6. #include<stdio.h>#include<math.h>void main(){int i,n;for(n=2;n<=20;n++){int temp=(int)sqrt(n);//sqrt(n)求出n的平方根并取整for(i=2;i<=temp;i++)if(n%i==0)break;if(i>temp)printf("%d ",n);}printf("\n");}7. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,c2,c3,c5;c2=c3=c5=0;for(i=1;i<=M;i++){if(i%2==0)c2++;if(i%3==0)c3++;if(i%5==0)c5++;}printf("%d %d %d\n",c2,c3,c5);}8. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,s;for(i=1,s=0;i<15;i++){if(i%2==0 || i%3==0)continue;printf("%d ",i);s+=i;}printf("%d\n",s);}参考答案:1、答案:11 14 switch end.2、答案:s=91.3、答案:25 20.4、答案:y=21.5、答案:1 1 2 3 58 13 21 34 556、答案:2 3 5 7 11 13 17 197、答案:10 6 48、答案:1 5 7 11 13 37第二次作业一、根据下列每个题目要求编写程序1.编写一个函数,函数头格式为“void fun4(char *a , int b[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3次作业答案(红字为答案)
1. 下列叙述中错误的是()
A. 对于double 类型数组,不可直接用数组名对数组进行整体输入或输出
B. 数组名代表数组所占存储区的首地址,其值不可变
C. 在程序执行过程中,当数组元素下标超出定义的下标范围时,系统将给出“下标”越界的错误提示
D. 可以通过赋初值的方式确定数组元素个数
提示:请从数组下标的合法取值范围来考虑。
2. 已有定义char a[] = “xyz”,b[]={‘x’, ‘y’, ‘z’} ,以下叙述正确的是()
A. 数组a 和b 的长度相同
B. 数组a 的长度小于数组b 的长度
C. 数组a 的长度大于数组b 的长度
D. 上述说法均不正确
提示:此题考察字符数组长度和字符串长度之间的关系。
3. 以下能正确定义一维数组的选项是()
A. int num[];
B. #define N 100 int num[N]
C. int num[0..100];
D. int N = 100; int num[N];
提示:此题考察一维数组的维数界定问题。
4. 下列程序的输出结果是()
#include <stdio.h>
void main()
{
char a[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘\0’}; int i, j;
i = sizeof(a); j = strlen(a);
printf(“%d, %d\n”, i, j);
}
A. 9,9
B. 8, 9
C. 1, 8
D. 9,8
提示:此题考察字符数组长度和字符串长度之间的关系。
5. 以下不能正确定义二维数组的选项是()
A. int a[2][] = {{1, 2}, {3, 4}};
B. int a[][2] = {1, 2, 3, 4};
C. int a[2][2] = {{1}, {2}};
D. int a[2][2] = {{1}, 2, 3};
提示:此题考察二维数组初始化的规定。
6、C 语言规定,若未对函数返回类型加以说明,则函数的隐含类型为()
A. void
B. double
C. int
D. char
分析:教材中有答案,但我们不推荐大家在编程时省略函数返回类型。
7、若已定义的函数有返回值,则以下关于该函数调用的叙述错误的是()
A. 函数调用可以作为独立语句存在
B. 函数调用可以作为一个函数的实参
C. 函数调用可以出现在表达式中
D. 函数调用可以作为左值而被赋值
分析:基本概念题,可查书或上机验证。
8、下列说法中错误的是()
A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形参是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数的复合语句中定义的变量只在本函数范围内有效
分析:基本概念题。
考察变量的作用域和生命期。
9、下列说法中正确的是()
A. 定义函数时,形参的类型说明可以放在函数体内
B. return 后面的值不能为表达式
C. 如果函数值类型与return 后的返回值类型不一致,则以函数值类型为准
D. 如果形参与实参的类型不一致,则以实参类型为准
分析:基本概念题,可查书或上机验证。
10、阅读下列程序段,其执行结果为()
#include <stdio.h>
void fun(int a)
{
int x = 5;
x += a++;
printf(“%d,”, x);
}
void main()
{
int a = 3, x = 1;
fun(a);
x += a++;
printf(“%d\n”, x);
}
A. 8,2
B. 8,3
C. 8,4
D. 8,5 分析:考察大家对传值调用和传址调用的理解。
11、阅读下列程序段,其执行结果为()
#include <stdio.h>
void main()
{
int a = 4, b = 6, c = 7;
double d;
double fun(int, int, int);
printf(“d = %lf\n”, fun(a, b, c));
}
double fun(int a, int b, int c)
{
return a % b * c;
}
A. 27
B. 27.000000
C. 28
D. 28.000000
分析:可上机验证,留意一下函数声明的方式,以及输出语句中对函数返回值的处理。
12、下列说法中不正确的是()
A. C 语言规定,不能在一个函数的内部再定义函数
B. 在没有声明函数返回值类型的情况下,默认函数返回值类型为int 型
C. 函数的类型可以是整型、实型、字符型,但不能是指针类型
D. 函数可以没有形参,但函数名后的括号不能省略
分析:基本概念题。
13、一个变量的指针就是()
A. 变量的名称
B. 变量的地址
C. 变量的类型
D. 变量的值
分析:基本概念题。
14. 两个指针变量不能()
A. 相加
B. 相减
C. 比较
D. 指向同一地址
分析:基本概念题。
查书或上机验证。
15. 在C 语言中,对变量的访问方式是()
A. 能直接访问,也能间接访问
B. 能直接访问,不能间接访问
C. 不能直接访问,能间接访问
D. 直接、间接均不能
分析:基本概念题。
16. C 语句: int (* pa)[5]; 中,pa 表示的是一个()
A. 指针数组的名称
B. 指向整型变量的指针
C. 指向包含5 个整型元素的一维数组的指针
D. 指向函数的指针
分析:基本概念题。
17. C 语句int * func(); 中,func 表示的是()
A. 返回值为指针的函数名称
B. 指向整型变量的指针
C. 指向数组的指针
D. 指向函数的指针
分析:基本概念题。
18. 给定下列程序,假定从键盘输入数据1、2,则执行结果为()#include <stdio.h>
void swap(int * p1, int p2)
{
* p1 = * p1 + p2;
p2 = p2 + * p1;
}
void main()
{
int a, b, * p1;
scanf("%d, %d", &a, &b);
p1 = &a;
swap(p1, b);
printf("a = %d, b = %d\n", a, b);
}
A. 3,5
B. a = 3, b = 5
C. 3, 2
D. a = 3,b = 2
分析:考察传值与传址的区别。
19. 给定下列程序,则运行结果为()
#include <stdio.h>
void fun(int x, int y, int * z)
{
* z = x – y;
}
void main()
{
int a, b, c;
fun(11, 5, &a);
fun(8, a, &b);
fun(a, b, &c);
printf(“%d, %d, %d\n”, a, b, c);
}
A. 2,4,6
B. 2, 6, 4
C. 6, 2, 4
D. 6,4,2
分析:传址与传值。
20. 给定下列程序,则其运行结果为()
#include <stdio.h>
void main()
{
static int array[][4] = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19 ,21, 23}};
int (* p)[4], i, j, sum[3];
p = array;
for(i = 0; i < 3; i++)
{
sum[i] = 0;
for(j = 0; j < 4; j++)
sum[i] += *(*(p + i) + j);
printf(“%d, ”, sum[i]);
}
}
A. 16, 48, 80
B. 164880
C. 144
D. 80
分析:考察用指针变量遍历二维数组的方法。
重点在理解,否则考试时不可能有机会上机验证。