收藏 分销(赏)

全国计算机等级考试二级教程--C语言程序设计课后习题答案.doc

上传人:w****g 文档编号:10595329 上传时间:2025-06-04 格式:DOC 页数:37 大小:69.06KB 下载积分:12 金币
下载 相关 举报
全国计算机等级考试二级教程--C语言程序设计课后习题答案.doc_第1页
第1页 / 共37页
全国计算机等级考试二级教程--C语言程序设计课后习题答案.doc_第2页
第2页 / 共37页


点击查看更多>>
资源描述
《全国计算机等级考试二级教程--C语言程序设计》课后习题答案 第一章 1.1 EXE 1.2 C OBJ EXE 1.3 顺序 选择 循环 第二章 一. 选择题 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 11 12 2.15 4.2 4.2 2.16 { } 定义 执行语句 2.17 关键字 用户标识符 2.18 int float double 2.19 float a1=1; float a2=1; 2.20 存储单元 2.21 3.5 2.22 (a*b)/c a*b/c a/c*b 2.23 把常量10赋给变量s 2.24 位 1或0 2.25 8 127 0111111 -128 10000000 2.26 32767 -32768 1000000000000000 2.27 10 8 16 三. 上机改错题 2.28 #include "stdio.h"; 删除行尾的";" main(); / * main function * / 删除")"后的";",注释中的*要紧靠“/”,即应为“/*”和“*/” 函数开始处遗失了一个“{” float r,s ; /*/*r is radius*/,/* s is area of circuilar*/*/ 注释符号不可嵌套使用 r = 5.0 ; s = 3.14159 * r * r ; printf("%f\n",s) 行尾遗失了“;” 函数结束处遗失了一个“}” 2.29 #include "stdio.h" main /* main function */ main后遗失了“()” { float a,b,c,v; /*a,b,c are sides, v is volume of cube */ a=2.0; b=3.0; c=4.0 行尾遗失了“;” v=a*b*c; printf("%f\n", v) 行尾遗失了“;” } 第三章 一. 选择题 3.1 C 3.2 C 3.3 D 3.4 C 3.5 D 3.6 B 3.7 C 3.8 D 3.9 A 3.10 B 3.11 C 3.12 D 3.13 D 3.14 A 3.15 C 3.16 C 3.17 C 3.18 无答案 3.19 C 3.20 B 二. 填空题 3.21 (1)-2002500(2)i=-200,j=2500 (3)i=-200 j=2500 3.22 12 0 0 3.23 一条语句 ; 3.24 ; 3.25 100,25.81,1.89234 100 25.81 1.89234 100 25.81 1.89234 3.26 x=127,x= 127,x= 177,x= 7f,x= 127 3.27 x=127,x=127 ,x=$127 ,x=$000127,x=%06d 3.28 a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500 三. 编程题和改错题 3.29 修改后的程序如下: main() { double a,b,c,s,v; printf("input a,b,c:"); scanf("%lf%lf%lf",&a,&b,&c); s =a*b; v=a*b*c; printf("a=%f,b=%f,c=%f\n", a,b,c); printf("s=%f,v=%f\n",s,v); } 3.30 #include main() { int a=560,b=60; printf("560 minute is %d hour and %d minute.\n",a/b,a%b); } 3.31 #include main() { int a,b; a=1500;b=350; printf("a div b is : %d\n",a/b); printf("a mod b is : %d\n",a%b); } 3.32 #include main() { double a,b,c,ave; printf ("input 3 double number : \n"); scanf ("%lf%lf%lf",&a,&b,&c); printf ("%.1f\n",(a+b+c)/3); } 3.33 #include void main() { int a,b,c,t; printf("请依次输入整数a,b,c:"); scanf("%d%d%d",&a,&b,&c); printf("\n你输入的值是: a=%d,b=%d,c=%d\n",a,b,c); t=b;b=a;a=c;c=t; printf("交换之后的值是:a=%d,b=%d,c=%d\n",a,b,c); } 第四章 一. 选择题 4.1 A 4.2 A 4.3 A 4.4 D 4.5 C 4.6 A 4.7 B 4.8 C 4.9 D 4.10 C 二. 填空题 4.11 非0 0 4.12 < > >= <=同级 == !=同级 4.13 ! && || 4.15 ! 4.16 a == b || a < c x > 4 || x < -4 4.17 1 4.18 x <= 0 1 > 0 4.19 3 2 2 4.20 *# 三. 编程题 4.21 略 4.22 #include /* 检查日期的合法性 */ int checkdate(int year, int month, int day) { if(year < 1900 || year > 2005) { printf("输入的年份无效!\n"); return 0; } else if(month < 0 && month > 12) { printf("输入的月份无效!\n"); return 0; } else if(day <= 0 && day > 31) { printf("输入的日期无效!\n"); return 0; } else { switch(month) { case 4: case 6: case 9: case 11: if(day > 30) { printf("输入的日期无效!\n"); return 0; } break; case 2: if((year%4 == 0 && year%100 != 0) || year%400 == 0) { if(day > 29) { printf("输入的日期无效!\n"); return 0; } } else { if(day > 28) { printf("输入的出生日期无效!\n"); return 0; } } break; }/* end of switch(m0)*/ } return 1; } void main() { int y0, m0, d0; /* 生日 */ int y1, m1, d1; /* 当前日期 */ int years, months, days; /* 实足年龄*/ printf("请输入学生的生日:"); scanf("%d%d%d", &y0,&m0,&d0); if(checkdate(y0, m0, d0)) { printf("请输入当前日期:"); scanf("%d%d%d", &y1,&m1,&d1); /*当前日期合法性检查*/ if(!checkdate(y1, m1, d1)) { return; } else if(y0 > y1) { printf("出生年份比当前年份晚!\n"); return; } else if(y0 == y1) { if(m0 > m1) { printf("出生年月比当前年月晚!\n"); return; } else if(m0 == m1) { if(d0 > d1) { printf("出生年月日比当前年月日晚!\n"); return; } } } } /* 计算实足年龄 */ years = y1 - y0; months = m1 - m0; days = d1 - d0; /* 修正实足年龄天数*/ if(days < 0) { months--; switch(m1) { case 1: case 5: case 7: case 10: case 12: days += 30; break; case 2: case 4: case 6: case 8: case 9: case 11: days += 31; break; case 3: if((y1%4 == 0 && y1%100 != 0) || y1%400 == 0) { days += 29; } else { days += 28; } break; }/* end of switch(m1) */ }/* end of if(days < 0) */ /* 修正实足年龄月数*/ if(months < 0) { months += 12; years--; }/* end of if(months < 0) */ printf("出生日期: %d年%d月%d日\n", y0, m0, d0); printf("当前日期: %d年%d月%d日\n", y1, m1, d1); printf("实足年龄: %d年%d月%d日\n", years, months, days); return; } 4.23 #include void main() { int a; printf ("请输入一个整数 :"); scanf ("%d",&a); if (a%2==0) { printf ("%d 是偶数\n", a); } else { printf ("%d 是奇数\n", a); } } 4.24 #include void main() { int a,b,c,temp,max; printf ("请输入三个整数 :"); scanf ("%d %d %d",&a,&b,&c); temp=(a>b)? a:b; max=(temp>c)? temp:c; printf ("\n"); printf ("你输入的数中最大的是 %d.\n",max); } 4.25 (1)不嵌套的if语句 #include void main() { int x,y; printf("input x :"); scanf("%d",&x); if ( x>-5 && x<0 ) { printf("y is %d\n",y=x); } if ( x==0 ) { printf("y is %d\n",y=x-1); } if ( x>0 && x<10 ) { printf("y is %d\n",y=x+1); } if ( x>=10 || x<=-5) { printf("error\n"); } } (2)嵌套的if语句 #include void main() { int x,y; printf("input x :"); scanf("%d",&x); printf("\n"); if(x < 0) { if(x > -5) { printf("y is %d.\n",y=x); } else { printf("error!\n"); } } if(0 == x) { printf("y is %d.\n",y=x-1); } if(x > 0) { if(x < 10) { printf("y is %d.\n",y=x+1); } else { printf("error!\n"); } } } (3)if_else语句 #include void main() { int x,y; printf("input x :"); scanf("%d",&x); if( x>-5 && x<0 ) { printf("y is %d.\n",y=x); } else if( x==0 ) { printf("y is %d.\n",y=x-1); } else if( x>0 && x<10 ) { printf("y is %d.\n",y=x+1); } else { printf("error!\n"); } } (4)switch语句 #include void main() { int x,y; printf("input x : "); scanf("%d",&x); switch (x) { case -4: case -3: case -2: case -1: printf("y is %d.\n",y=x); break; case 0: printf("y is %d.\n",y=x-1); break; case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: printf("y is %d.\n",y=x+1); break; default: printf("error!\n"); } } 第五章 一. 选择题 5.1 D 5.2 C 5.3 B 5.4 C 5.5 C 5.6 B 5.7 D 5.8 A 5.9 D 5.10 D 二. 填空题 5.11 5 4 6 5.12 死循环 5.13 -1 5.14 11 5.15 d=1.0 k++ k<=n 5.16 x>=0 x 三. 编程题 5.17 #include void main() { int i; int sig = 1; int sum = 0; for(i=1; i<=101; i++,i++) { sum += sig*i; sig *= -1; } printf("sum=%d\n", sum); } 5.18 (1) #include void main() { int i; double m=1.0; double e = 1.0; for(i=1; i<50; i++) { m *= i; e += 1/m; } printf("e=%f\n",e); } (2) #include void main() { int i=1; double m=1.0; double e = 1.0; while(1/m >= 0.0004) { m *= i; e += 1/m; i++; } printf("e=%f\n",e); } 5.19 #include void main() { int year; int col = 0; for(year=1600; year<=2000; year++) { if((year%4 == 0 && year%100 != 0) || year%400 == 0) { printf("%d\t", year); col++; if(col%5 == 0) { printf("\n"); } } } printf("\n"); } 5.20 #include #define N 7 void main() { int i; int j; int m; int k = N/2; for(i=0; i { m = i-k; if(m < 0) { m *= -1; } for(j=0; j { printf(" "); } for(j=0; j<2*(k-m)+1; j++) { printf("*"); } printf("\n"); } } 第六章 一. 选择题 6.1 B 6.2 D 6.3 A 6.4 A 6.5 B 6.6 D 6.7 D 6.8 B 6.9 A 6.10 A 6.11 C 二. 填空题 6.12 -1 6.13 1 6.14 ctype.h 6.15 1 6.16 10A 20B 30C 40D 6.17 7.29 101.298AB 6.18 A7.29B101.298 6.19 A B C (每个字符后有三个空格) 三. 编程题 6.20 #include #define N 80 void main() { char str[N]; int iLoop = 0; gets(str); while(str[iLoop]) { printf("%c-%d\t", str[iLoop],str[iLoop]); iLoop++; if(iLoop%3 == 0) { printf("\n"); } } printf("\n"); } 6.21 #include #define N 80 void main() { char str[N]; int num = 0; int iLoop = 0; gets(str); while(str[iLoop]) { if(str[iLoop] >= '0' && str[iLoop] <= '9') { num = 10*num + (str[iLoop] - '0'); } iLoop++; } printf("%d\n",num); } 6.22 #include #include #define N 80 void main() { char str[N]; int num = -1; do { gets(str); num++; }while(strcmp(str, "EOF")); printf("您输入了%d行字符!\n",num); } 6.23 #include #define N 80 void main() { char str[N]; int iLoop = 0; int num = 0; gets(str); while(str[iLoop] && iLoop < N) { if(str[iLoop] >= 'a' && str[iLoop] <= 'z') { num++; } iLoop++; } printf("您输入了字符中有%d个小写字母!\n",num); } 6.24 #include void main() { int line; int iLoop1; int iLoop2; printf("请输入图案的行数(不大于26):"); scanf("%d", &line); for(iLoop1 = 0; iLoop1 < line; iLoop1++) { for(iLoop2 = 0; iLoop2 < line - iLoop1; iLoop2++) { printf(" "); } for(iLoop2 = 0; iLoop2 < 2*iLoop1+1; iLoop2++) { printf("%c",iLoop1 + 'A'); } printf("\n"); } } 第七章 一. 选择题 7.1 C 7.2 C 7.3 B 7.4 C 7.5 A 7.6 D 7.7 A 二. 填空题 7.8 12 7.9 9.000000 7.10 4 7.11 n=1 s 7.12 <=y z*x 7.13 1 s*i 0 f(k) 三. 程序调试和编程题 7.14 fun(int n) { int k,yes; for(k=2; k<=n/2; k++) { if(n%k == 0) { yes = 0; break;} else yes = 1; } return yes; } 7.15 int mymod(int a, int b) { return a%b; } 7.16 double fun(int n) { double sum = 0; int iLoop; int sig = -1; for(iLoop=1; iLoop<=n; iLoop++) { sig *= -1; sum += sig*1.0/iLoop; } return sum; } 7.17 double fun(int n) { double t = 1.0; int iLoop; long tmp; for(iLoop=2; iLoop<=n; iLoop++) { tmp = iLoop*iLoop; t -= 1.0/tmp; } return t; } 7.18 #include #include double fun(double x) { return x*x + 5*x + 4; } void main() { int x = 2; printf("y1=%f\n", fun(x)); printf("y2=%f\n", fun(x+15)); printf("y3=%f\n", fun(sin(x))); } 第八章 一. 选择题 8.1 A 8.2 B 8.3 B 8.4 C 8.5 B 8.6 B 8.7 C 8.8 D 8.9 B 8.10 C 8.11 C 8.12 C 二. 填空题 8.13 110 8.14 7 1 8.15 (1)char *p=&ch; (2) p=&ch; (3)scanf("%c",p); (4)*p='A'; (5)printf("%c",*p); 8.16 (1)s=p+3; (2)s=s-2 (3)50 (4)*(s+1) (5)2 (6)10 20 30 40 50 三. 编程题 8.17 void fun(double x, double y, double *sum, double *div) { *sum = x + y; *div = x - y; return; } 8.18 void fun(double x, double y, double z, double *max, double *min) { *max = x; *min = x; if(*max < y) { *max = y; } if(*max < z) { *max = z; } if(*min > y) { *min = y; } if(*min > z) { *min = z; } return; } 第九章 一. 选择题 9.1 D 9.2 A 9.3 A 9.4 C 9.5 C 9.6 A 9.7 B 9.8 D 9.9 C 9.10 C 9.11 C 9.12 D 9.13 D 9.14 A 9.15 A 9.16 A 9.17 C 9.18 C 二. 填空题 9.19 9 0 9.20 6 9.21 12 9.22 3 9.23 2721 9.24 -850,2,0 9.25 k=p k 9.26 (c=getchar()) c-'A' 三. 编程题 9.27 #include #define N 81 int main() { int counter[10] = {0}; int iLoop = 0; char str[N]; gets(str); while(str[iLoop]) { if(str[iLoop] >= '0' && str[iLoop] <= '9') { counter[str[iLoop] - '0']++; } iLoop++; } for(iLoop=0; iLoop < 10; iLoop++) { printf("%d - %d\n", iLoop, counter[iLoop]); } return 0; } 9.28 void fun(int array[], int arraysize, int start) { int iLoop; if(start < arraysize-1) { if(start <=0) { start = 1; } for(iLoop = start; iLoop < arraysize; iLoop++) { array[iLoop-1] = array[iLoop]; } } for(iLoop = 0; iLoop < arraysize; iLoop++) { printf("No.%d = %d\n", iLoop, array[iLoop]); } } 9.29 int fun(int arry1[], int arry2[], int arrysize) { int iLoop; int counter = 0; for(iLoop = 0; iLoop < arrysize; iLoop++) { if(arry1[iLoop] % 2) { arry2[counter++] = arry1[iLoop]; } } return counter; } 9.30 void fun(char array[], int arraysize) { int iLoop1; int iLoop2; char temp; /* 冒泡排序 */ for(iLoop1 = 0; iLoop1 < arraysize - 1; iLoop1++) { for(iLoop2 = 0; iLoop2 < arraysize - 1 - iLoop1; iLoop2++) { if(array[iLoop2] < array[iLoop2 + 1]) { temp = array[iLoop2]; array[iLoop2] = array[iLoop2 + 1]; array[iLoop2 + 1] = temp; } } } } 9.31 #include void fun(int array[], int arraysize, int inertNumber) { int iLoop; int iLoop2; if(array[0] < array[arraysize-1]) { for(iLoop = 0; iLoop< arraysize; iLoop++) { if(array[iLoop] > inertNumber) { for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) { array[iLoop2 + 1] = array[iLoop2]; } array[iLoop] = inertNumber; break; } } if(iLoop >= arraysize) { array[arraysize] = inertNumber; } } else { for(iLoop = 0; iLoop< arraysize; iLoop++) { if(array[iLoop] < inertNumber) { for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) { array[iLoop2 + 1] = array[iLoop2]; } array[iLoop] = inertNumber; break; } } if(iLoop >= arraysize) { array[arraysize] = inertNumber; } } } int main() { int iLoop; int a[20] = {7,6,5,3,2,1}; for(iLoop = 0; iLoop < 6; iLoop++) { printf("%d ", a[iLoop]); } printf("\n"); fun(a, 6, 0); for(iLoop = 0; iLoop < 7; iLoop++) { printf("%d ", a[iLoop]); } printf("\n"); fun(a, 7, 4); for(iLoop = 0; iLoop < 8; iLoop++) { printf("%d ", a[iLoop]); } printf("\n"); fun(a, 8, 8); for(iLoop = 0; iLoop < 9; iLoop++) { printf("%d ", a[iLoop]); } printf("\n"); return 0; } 9.32 int fun(int number, int array[]) { int iLoop = 0; int iLoop2; int binLen; int midNumber; int div; int remain; midNumber = number; do { div = midNumber/2; remain = midNumber%2; midNumber = div; array[iLoop++] = remain; }while(midNumber); binLen = iLoop; for(iLoop2 = 0, iLoop = binLen - 1; iLoop2 < iLoop; iLoop2++, iLoop--) { midNumber = array[iLoop2]; array[iLoop2] = array[iLoop]; array[iLoop] = midNumber; } return binLen; } 9.33 #include #include #define N 15 void fun(int array[], int arraysize) { int x; int iLoop; int iLoop2; for(iLoop = 0; iLoop < arraysize; iLoop++) { iLoop2 = 0; x = rand()%20; do { if(x == array[iLoop2] && iLoop > 0) { x = rand()%20; iLoop2 = 0; } iLoop2++; }while(iLoop2 < iLoop); array[iLoop] = x; } } int main() { int a[N]; int iLoop; fun(a, N); for(iLoop = 0; iLoop < N; iLoop++) { printf("%d\n", a[iLoop]); } return 0; } 第十章 一. 选择题 10.1 C 10.2 B 10.3 C 10.4 B 10.5 C 10.6 A 10.7 C 10.8 A 10.9 C 10.10 C 二. 填空题 10.11 GFEDCB 10.12 XYZ 10.13 SO 10.14 10 10.15 Itis 10.16 strlen(str)-1 j-- 10.17 3 10.18 goodgood! 三. 编程题 10.19 char* mygets(char *str) { int iLoop = 0; char ch; while((ch=getchar()) != '\n') { str[iLoop++] = ch; } str[iLoop] = '\0'; return str; } char * m
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服