C语言程序设计习题与上机实验(全部答案).doc

上传人:文库蛋蛋多 文档编号:2385624 上传时间:2023-02-17 格式:DOC 页数:40 大小:142KB
返回 下载 相关 举报
C语言程序设计习题与上机实验(全部答案).doc_第1页
第1页 / 共40页
C语言程序设计习题与上机实验(全部答案).doc_第2页
第2页 / 共40页
C语言程序设计习题与上机实验(全部答案).doc_第3页
第3页 / 共40页
C语言程序设计习题与上机实验(全部答案).doc_第4页
第4页 / 共40页
C语言程序设计习题与上机实验(全部答案).doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《C语言程序设计习题与上机实验(全部答案).doc》由会员分享,可在线阅读,更多相关《C语言程序设计习题与上机实验(全部答案).doc(40页珍藏版)》请在三一办公上搜索。

1、C语言程序设计习题与上机实验(参考答案)2008年3月30日第一部分 同步习题集第1章 C语言概述一、判断题1、正确2、正确3、错误4、错误二、单项选择题 1、B2、B3、A4、A5、D6、C7、D8、C三、填空题1、 /* */2、函数首部、函数体第2章 算法一、 填空题1、算法2、算法、数据结构3、自然语言、N-S结构图、伪代码4、顺序结构、选择结构、循环结构 5、程序设计风格、程序结构、清晰的结构第3章 数据类型运算符与表达式一、单项选择题1、D2、D3、D4、D5、B6、AB7、D8、D9、C10、A11、D12、C13、B14、C15、C16、B17、C二、填空题1、2;-32768

2、72767;4;42、1.0/2*(a*x+(a+x)/(4.0*a)第4章 最简单的C程序设计一、单项选择题1、B2、B3、D4、C5、A6、D7、D二、填空题1、;2、3、%4、输入输出函数三、写结果题1、a2、6,53、-6 4、11空格105、ch:dec=97;oct=141,hex=61,ASCII=a6、修改题printf(“%d,%d,%d,%dn”,+i, j-, i+, -j); 结果为:7,4,5,4四、程序填空题1、%c2、%.2f3、(1) &x,&y (2) printf(“%d,%d”,x,y); 第5章 逻辑运算和判断选择结构一、单项选择题1、C2、A3、D4、

3、D5、B6、D7、B8、B9、C10、D11、C12、C二、写运行结果题1、1002、63、24、a=2,b=1三、程序填空题1、(1) xy (2) uz 2、(1)m= =c (2) m= =b 3、(1)ch=A &ch2 & x-1 & x=2四、编程题1、#include main( ) int a, b, t; printf(“Please input a,b:”); scanf(“%d,%d”, &a, &b); t = a; a = b; b = t; printf(“a=%d,b=%d”, a, b);2、编程实现以下功能:读入两个运算数(data1和data2)及一个运算符

4、(op),计算表达式data1 op data2的值,其中op可为+,-,*,/(用switch语句实现)。#include int data1,data2,y; char op;给data1, op ,data2赋值op= =?y=data1+data2输出结果y=data1-data2y=data1*data2y=data1/data2*/main( ) float data1, data2, result;char op;printf(“Please input express (data1 op data2) : ”);scanf(“%f%c%f”, &data1, &op, &dat

5、a2);switch (op) case +: result = data1 + data2; break; case -: result = data1 - data2; break; case *: result = data1 * data2; break; case /: result = data1 / data2; break; default: printf(“Input error!”); exit(0);Printf(“%g%c%g=%g”,data1, op, data2, result);3、试编程判断输入的正数是否既是5又是7的倍数。若是,则输出yes,否则输出no。#

6、include main( ) int x ; printf(“Please input x”);scanf(“%d”, &x);if(x =0)if(x %5= =0& x %7= =0) printf(yes); else printf(no); else printf(“Input data error!”);4、#include main( ) float x, y ; printf(“Please input x:”);scanf(“%f”, &x);if (x 1)y = x;else if (x 10) y = 2 * x - 11; else y = 3 * x -11;pri

7、ntf (“y=%g”, y);5、#include main( ) char grade ;float score;printf(“POlease input grade:”);scanf(“%c”, &grade);switch (grade)case A: case a: score = 95;break;case B: case b: score = 85;break;case C: case c: score = 75;break;case D: case d: score = 65;break;case E: case e: score = 50;break;default: pr

8、intf(“Input error!”); exit(0);printf (“score=%f”, score);第6章 循环结构一、判断题1、错误2、正确3、正确4、错误5、正确二、单项选择题1、A2、C3、A4、D5、B6、B7、A8、D9、A10、D11、C12、B13、C14、AC三、写结果题1、8,202、25811143、84、85、a=16 y=606、74*#7、68、a=419、10、2,3 四、程序填空题1、c!=#c=0 & c=92、t=t*it=-t/i3、i1010*i+54、ixx%i=05、inword=0inword=1五、编程题1、#include main

9、( )float max, min, score, average; int i; printf(“Please input score:”); scanf(“%f”, &score);max = min = average = score;for ( i=1; i = 34; i+) printf(“Please input score:”); scanf(“%f”, &score);if (score max ) max =score;average + = score;average /= 35.0;printf(“max=%g,min=%g,average=%g”, max,. min

10、, average);2、#include main( ) int a, b, r, temp;printf(“Please input a,b”);scanf(“%d,%d”, &a, &b);while ( a=0 | b=0)printf(“Try again: ”);scanf(“%d,%d”, &a, &b);if (a b) r = a; a = b; b = r;temp = a * b;while (b != 0)r = a % b; a = b ; b = r;printf(“最大公约数=%d, 最小公倍数=%d”, a , temp / a);第7章 数组一、单项选择题1、

11、C2、D3、C4、C5、C6、C7、D8、D9、C10、B11、C12、B13、C14、D15、AFGHKL二、写结果题1、32、he3、AHaMA4、How does she5、三、程序填空题1、a9=x i92、k=i k != i3、 x !=0 t+04、strlen(t) tk = = c5、bj!=0 ai=0四、编程题1、#include #define N 10main( ) int aN, temp, i;for (i = 0 ; i N; i+) printf(“Please input NO %d:”, i+1);scanf(“%d”, &ai);for (i = 0 ;

12、 i = N/2 -1; i+) temp = ai;ai=aN-i-1;aN-i-1=temp; for (i = 0 ; i N; i+) printf(“%3d”, ai);2、输出杨辉三角形前十行。#include #define N 10main( )int aNN;int i, j;for (i = 0 ; i N; i+)aii = 1;ai0 = 1;for (i = 1 ; i N; i+) for (j = 1 ; j = i; j+)aij=ai-1j-1+ai-1j;for (i = 0 ; i N; i+) for (j = 0 ; j = i; j+) printf

13、(“%5d”, aij); printf(”n”); 第8章 函数一、单项选择题1、D中加一句z=x+y;2、选D(题不严密)3、D4、A5、B6、D7、B8、A9、B10、D11、A12、A13、B14、CD15、Ai=5i=2i=2i=4i=2二、写结果题1、82、43、4、5三、程序填空题1、float fun(float a, float b); 或float fun(float , float ); x+y, x-yz+y, z-y2、i = 10 arrayi-1 return avgr 3、j=num-1 arrayih s, l+1, h-1四、编程题1、int prime(i

14、nt x) int i; int flag=1; for(i=2;ix;i+) if (x%i =0) flag=0; break; return(flag);main() int x, y; printf(“Please input x:”); scanf(“%d”, &x); y=prime(x); if (y=1) printf(%d is prime!, x); else printf(%d is not prime!, x);2、#include long fun(char str);main() char datastring10; long data;printf(“Please

15、 input data string:”);scanf(“%s”, datastring); data=fun(datastring); printf(output numbern); printf(%ld, data); long fun(char str) int i; long data; data=0; for(i=0;stri!=0;i+) data=data*10+(stri-0); return data;第9章 编译预处理一、单项选择题1、C2、B3、D4、D5、B6、B7、D8、D二、判断题1、错误2、正确3、正确4、正确5、错误6、正确三、编程题1、求面积#include

16、#include #define S(a,b,c) ( (a)+(b)+(c) ) /2.0 )#define AREA(a,b,c) sqrt(S(a,b,c)*( S(a,b,c)-a) *( S(a,b,c)-b) *( S(a,b,c)-c)main( )double a, b, c, area;printf(“Please input a,b,c:”);scanf(“%lf, %lf, %lf”, &a, &b, &c);area=AREA(a,b,c);printf(“area=%lg”,area);第10章 指针一、单项选择题1、B2、B3、D(?)4、D5、B6、C7、D8、B

17、9、CD10、D 11、B12、C13、D14、D15、C16、B17、A18、D3 55 3二、写结果题1、192、603、4、495、GOOGLE6、-27、Excute right!8、xyzabc9、4321三、程序填空题1、*max=i a,7, &max, &min 2、*p!=0 *p-0 j- 03、s+n-1或 p1+n-1 p2-4、s1+*s2s1=p或puts(p)或return5、*qstrk或*(str+k)四、编程题1、#include void swap(int *p1,int *p2) int t; t= *p1;*p1=*p2;*p2=t;main()int

18、 a, b;printf(“Please input a,b:”);scanf(“%d,%d”, &a, &b);swap(&a,&b);printf(“a=%d,b=%d”,a,b);2、#include int strlength(char *p) char *s=p;while(*p) p+;return p-s;main()char str81;printf(“Please input string:”);gets(str);printf(“length=%d”,strlength(str);第11章 结构体和共用体一、单项选择题1、A2、A3、D4、D5、A6、D7、D8、D9、C1

19、0、B11、B12、C13、A(不严密)二、写结果题1、Zhao2、7,33、9三、程序填空题1、p-link p!=NULL或p四、编程题1、#include #define N 5struct student long num; char name20; float score3;void input(struct student w, int n);void output(struct student w, int n);main() struct student stN; int n; printf(Please input the number of worker(10):); sc

20、anf(%d, &n); input(st, n); output(st, n);void input(struct student w, int n)int i, j;float temp; for(i=0;in;i+) printf(Please input NO %dn, i+1); printf(Num:); scanf(%ld,&wi.num); getchar(); printf(name:); gets(wi.name); for (j=0; j 3; j+) printf(“Score%d=”, j); scanf(%f,& temp );wi.scorej = temp; v

21、oid output(struct student w, int n) int i, j; for(i=0;in;i+) printf(nOutput NO %dn,i+1); printf(Num:); printf(%ld,wi.num); printf(nname:); puts(wi.name); printf(score:); for (j=0; j 3; j+) printf(%g , wi.scorej); 第12章 位运算一、单项选择题1、C2、B3、D4、B5、0x13(无答案)6、A7、A8、Bx=11y=17z=11二、写结果题1、108,-22、03、a=894、第13

22、章 文件一、单项选择题1、A2、D3、B4、B5、A6、A7、C8、C9、A10、D二、程序填空题1、fgetc(fp) count+2、fname3、EOF ch, stdout4、f2=fopen(argv2 fgetc(f1),f25、 ”stu_list”, ”wb” &studi,sizeof(struct student_type),1三、编程题1、#include main()FILE *fp;char str255;int i ;if (fp=fopen(“d:test.txt”,”r”)=NULL)printf(“Open error!”);exit(0);for (i=1;

23、i=7;i+)fgets(str,255,fp);printf(“%sn”, str);fclose(fp);2、#include main(int argc , char *argv)FILE *fp1,*fp2;if(argc!=3) printf(you forgot to enter a filenamen); exit(0);if (fp1=fopen(argv1,”r”)=NULL)printf(“Open argument1 file error!”);exit(0);if (fp2=fopen(argv2,”a”)=NULL)printf(“Open argument2 fil

24、e error!”);exit(0);while (!feof(fp1)fputc(fgetc(fp1),fp2);fclose(fp1);fclose(fp2);3、将指定的文本文件中的小写字母改为大写字母。#include main()FILE *fp;char filename81;char ch;long pos;printf(Please input filename:);gets(filename);if (fp=fopen(filename,r+)=NULL)printf(Open error!);exit(0);pos=0;while (!feof(fp)fseek(fp,po

25、s,0);ch=fgetc(fp);if (ch=a & ch=z)ch = ch -32;fseek(fp,pos,0);fputc(ch,fp);pos+;fclose(fp); 4、将100200之间的素数保存到A盘根目录的“test.txt”文本文件中。(每行存5个数,每个数占10列)include main()FILE *fp;char str255;int i, j, count; ;if (fp=fopen(a:test.txt,w)=NULL)printf(Open error!);exit(0);count = 0;for ( i = 100;i=200; i+)for(j

26、= 2; j = i-1; j+)if (i % j = 0)break;if (j = i ) count+;fprintf(fp,%10d, i);if (count % 5 =0 )fprintf(fp,%c, n);fclose(fp);5、将平均成绩不及格的学生数据保存到A盘的根目录的文件“stud.dat”中。#include #define N 50struct student long num; char name20; float score3; float average;void input(struct student w, int n);void save(struc

27、t student w, int n);main() struct student stN; int n; printf(Please input the number of worker(10):); scanf(%d, &n); input(st, n); save(st, n);void input(struct student w, int n) int i, j; float temp; for(i=0;in;i+) printf(Please input NO %dn, i+1); printf(Num:); scanf(%ld,&wi.num); getchar(); print

28、f(name:); gets(wi.name); wi.average = 0; for (j=0; j 3; j+) printf(Score%d=, j); scanf(%f,& temp ); wi.scorej = temp; wi.average= wi.average+ wi.scorej; wi.average = wi.average / 3.0; void save(struct student w, int n) FILE *fp; int i; if (fp=fopen(a:stud.dat,wb)=NULL) printf(Open error!); exit(0);

29、for(i=0;in;i+) if (wi.average 60) fwrite(&wi,sizeof(struct student),1,fp); fclose(fp);第二部分 综合练习与提高第3章 数据类型、运算符与表达式一、单项选择题1-5 CABCD6-10 BDBBC11 B二、填空题1、(3*a*e)/(b*c)2、3.5 3、x*x*x*x*x*x-2*x*x*x*x*x+3*x*x*x*x+4*x*x*x-5*x*x+6*x+7第4章 最简单的C程序设计一、单项选择题1-4 BCDB二、填空题1、a=3 b=78.5 71.82A a2、a=12345,b=-198.34,c

30、=6.5 (表示空格) 3、a=2, b=-1 4、3 3第5章 逻辑运算和判断选择结构一、单项选择题1-5 DACBA 6-10 DBBBA11-14 DBCA二、读程序写结果1、02、1 03、24、a=-15、*&三、程序填空题1、x z xy 2、cd b2&x-1&x-a & xa 5、a= =0 disc06、(y%4= =0)&(y%100!=0) f=07、x0 x/10 x40四、编程题1、 # includevoid main() int n=0; float score=0, max, min, sum=0, average=0; printf(input NO.%d s

31、core: , +n); scanf(%f,&score); max=min=score; while( nmax) max=score; if(scoremin) min=score; sum+=score; printf(input NO.%d score: , n+); scanf(%f, &score); average=sum/3; printf(max=%.1f, min=%.1f, average=%.1fn, max, min, average);2、教材P98 例5.23、4 教材P111112 习题5.6 5.7第6章 循环控制一、判断题1-5 二、单项选择题1-5 DCC

32、DD 6-10 AABBA11-13 CCB三、读程序写结果1、y=-12、m=13、364、a=-55、1.6000006、87、*#*#*#$8、89、8,-210、411、1四、程序填空题1、a!=0或a 2、i=1, m=0 a%i= =03、100-5*i-j*2 l%5= =04、i%3= =2& i%5= =3& i%7= =2 j=j+15、n/10-i*10 n= =i*i*i+j*j*j+k*k*k 6、m%n n w五、编程题1、 # includevoid main( ) int i, a=0, b=0, c=0, d=0, e=0; char grade;for(i=

33、1; i=30; i+) printf(“Input NO.%d grade: ”, i);scanf(%c ,&grade); switch(grade) case A: a+;break; case B: b+;break; case C: c+;break; case D: d+;break;case E: e+; printf(A=%c B=%c C=%c D=%c E=%c n, a, b, c, d, e);2、 #include#includevoid main() int m,k,i,n=0; for(m=1;m=100;m+) k=sqrt(m); for(i=2;i=k+1

34、) printf(%6d,m); /*每个数占6个字符的宽度*/n=n+1; if(n%5= =0) printf(n); /*每5个数就换一行*/ printf(n);第7章 数组一、单项选择题1-5 BDBDB 6-10 DCADB11-15 CDDD二、读程序写结果1、aabcd2、fi3、count0=6, count1=114、GDABC5、LBLMNP6、7078 9198三、程序填空题1、 m9 i = 0 2、&numijnumij!= numji3、完整程序如下#include void main() int a32=2,10,9,4,5,119,b22=-1,-2,-3,-

35、4; int i,j,k,s,c32; for(i=0;i3;i+) for(j=0;j2;j+) s=0; for(k=0;k2;k+) s+=aik*bkj; cij=s; for(i=0;i3;i+) for(j=0;j2;j+) printf(%6d,cij); printf(n); 4、完整程序如下main() int a10=191,3,6,4,11,7,25,13,89,10;int i,j,k;for(i=0;i=0&kaj) aj+1=aj;j-;aj+1=k;for(i=0;i10;i+) printf(%d ,ai);5、50 c= = tk四、编程题1、#includevoid main() char s180,s240; int i=0,j=0,n=-1,result; char c; printf(input s1:); gets(s1); printf(以下为求s1的长度n); while(s1i!=0) i+; printf(s1长度为:%dnn,i); printf(以下为将s1赋值给s2n); i=0; while(s1i!=0) s2i=s1i;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号