南京晓庄学院—C语言期末考试复习提纲.doc_第1页
南京晓庄学院—C语言期末考试复习提纲.doc_第2页
南京晓庄学院—C语言期末考试复习提纲.doc_第3页
南京晓庄学院—C语言期末考试复习提纲.doc_第4页
南京晓庄学院—C语言期末考试复习提纲.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题一1. 以下常量中正确的是。 A. abc B. x123 C. 3.145E-1.2 D. ”a”2. 设有“int a;”,以下不能正确表达数学关系10a15的表达式是。 A. 10a10&a15 D. !(a=15)3. 以下程序段的输出结果是。 int a=0,b=4,k=2; k=a+10|(+a0)&(!(b-=0); printf(”%d,%d,%d”,k,a,b); A. 1,1,3 B. 1,1,4 C. 1,0,3 D. 1,0,44若有“int a=5; a+=a-=-a*a;”,则a的值是。5. 以下所列语句中,合法的语句是。 A. a=1,b=2 B. +a; C. a=a+1=5; D. y=int(a);6. 以下所列字符常量中,不合法的是。 A. 0xff B. 65 C. $ D. x1a7. 设有定义“float y=3.45678; int x;”,则以下表达式中能实现将y中数值保留小数点后2位,第3位四舍五入的表达式是。 A. y=(y*100+0.5)/100.0 B. x=y*100+0.5,y=x/100.0 C. y=y*100+0.5/100.0 D. y=(y/100+0.5)*100.08. 以下程序段输出结果是。 int a=10,b=11,c=12,s; s=a+=10&b-+y;x=i+)i=x; B. for(;x+=i); C. while(x=8)x-; D. for(i=10,sum=0;sum=i;)sum=-i;5. 以下程序输出结果是。main() printf(”%d”,fun(5); fun(int n) if(n=1) return 1; return n-fun(n-1);6. 程序 main() int j,k,s,m;for(k=1;k10;k+) s=1; m=k+2; for(j=k;jm;j+,k+) s+=j;printf(”s=%d,k=%d”,s,k); 程序输出结果s= ,k=。7. 若有宏定义:#define N 2#define Y(n) (N+1)*n) 则执行语句“z=2*(N+Y(N+2);”后,z的值是。8. 以下程序输出结果是。#define T(x,y,z) x*y*z/4main() int a=1,b=3,c=5; printf(”%d”,T(b+a,a*+b,a+b+c);习题三1. 若有“int a4=1,2,3,4,5,6,7,8,9,10,*p=*(a+1);”,则值为9的表达式是。 A. p+=3,*p+ B. p+=4,*(p+) C. p+=4,*+p D. p+=4,+*p2. 设有以下函数定义,则返回的函数值是。 main() int x,*y; y=fun(&x); int *fun(int *a)int *t; *a=99; t=a; return t; A. 无确切的值 B. 形参a的地址 C. 主函数中变量x的地址 D. fun函数中变量t的地址3程序 main() int s,p9=1,2,3,4,5,6,7,8,9;printf(”n%d”,add(p,5); add(int *p,int n) if(n=1) return *p;else return *p+add(p+1,n-1); 程序输出结果是。4. 程序 int *swap(int *a, int *b) int *p;p=a; a=b; b=p;return a; main() int x=3,y=4,z=5;swap(swap(&x,&y),&z);printf(”%d,%d,%d”,x,y,z); 程序输出结果是。5. 程序 fun(int n,int *s) int f1,f2;if(n=1|n=2) *s=1;else fun(n-1,&f1); fun(n-2,&f2); *s=2*f1+f2+1; printf(”n%d,%d”,f1,f2);main() int x; fun(4,&x); printf(”nx=%d”,x);程序运行时输出的第一行是,第二行是,最后一行是。6. 如有以下定义int y44=1,2,3,4,5,6,7,8,9,10,*py1=y1,(*py2)4=y;则不能正确引用值为7的数组元素的表达式是。 A. *(y1+2) B. *(y+1)+2 C. py12 D. py2127. 程序 main() int i,p33=1,2,3,4,5,6,7,8,9,*p13,(*p2)3;for(i=0;i3;i+) p1i=pi;p2=p;for(i=1;i3;i+) printf(”n%d,%d”,*(*(p1+i)+1)+1,*(*+p2+1)+1); 程序运行时输出的第一行是,第二行是。8. 程序 main() int i,j,a33=1,1,*p1,*p2,*p3; p1=a0; p2=a0+1; p3=a0+2;for(i=2;i9;i+) func(p1+,p2+,p3+);for(i=0;i3;i+) for(j=0;j3;j+) printf(”%d,”,aij); printf(”n”); func(int *q1,int *q2,int *q3) *q3=*q1+*q2; 程序运行时输出的第一行是,第二行是,第三行是。9. 程序 main() int i,p9=1,2,3,4,5,6,7,8,9,*p13,*p2;for(i=0;i3;i+) p1i=&p6-3*i;p2=p1+2;for(i=1;i3;i+)printf(”%d,%dn”,*(+p1i+2)+1,*(*p2-+1)+2); 程序运行时输出的第一行是,第二行是。10.程序 fun(int *s,int n1,int n2) int t;while(n1n2) t=*(s+n1); *(s+n1)=*(s+n2); *(s+n2)=t; n1+; n2-; main() int a10=1,2,3,4,5,6,7,8,9,0,i,*p=a;fun(p,0,3); fun(p+3,1,6);for(i=0;ix) return 24*(y-x); else return 1;4. 程序 char *fun(char *s) int i,j;for(i=j=0;si!=0;i+) if(si!=c) sj+=si;sj=0; return s; main() printf(”%s”,fun(”chance”); 程序输出结果是。5. 以下说法中正确的是。 A. 一个结构中只能包含一种数据类型 B. 不同结构中的成员不能有相同的成员名 C. 两个结构变量不可以进行比较 D. 关键字typedef用于定义新的数据类型6. 下列程序段执行后变量j的值是。int j;char *s=”x045”;for(j=0;*s+;j+); A. 7 B. 3 C. 4 D. 57. 设有以下说明和语句,则值为210的表达式是。struct s int a; int *b; ;int x0=110,120,x1=210,220;struct s x=100,200,*p=x;x0.b=x0; x1.b=x1; A. *p-b B. (+p)-a C. *(p+)-b D. *(+p)-b8. 设有“char s=”Program”,*p=s;”,则以下叙述中正确的是。 A. 数组s的内容与指针变量p中的内容相同 B. 数组s的长度与strlen(p)的值相等 C. p5的值等于s5的值 D. sizeof(s)等于sizeof(*p)9. 若有定义语句“static char str420=”thank”, ”you”, ”very”, ”much!”;”, 则str数组中存储0的数组元素有个。10.以下程序输出结果是。main() enum colorRED=5,BLUE,WHITE=0,BLACK;char *colorname=”red”,”blue”,”white”,”black”;printf(”%s”,colornameBLACK);习题五1. 函数delstr功能是:在字符串str中删除所有出现的子串str1。 程序 char *delstr(char *str,char *str1) char *p,*p1,*q1;int i;if(*str=0|*str1=0) return str;p=str;while(*p!=0) p1=p,q1=str1; while(*p1=*q1 & *q1!=0) ; if(p!=p1 & *q1=0) for(i=0; *p1!=0; i+,p1+) =*p1; =0; p+; 2. 设结点的数据结构定义如下:typedef struct p int x,y; struct p *next;PNODE; 函数padd功能是:由pa、pb分别指向的两个已经存在的链表,生成一个pc指向的新链表并返回该新链表第一个结点的地址。两个已存在的链表均是按结点的y值升序排列的有序表,新生成链表的结点仍按y的值升序排列。新链表生成规则是:当在pa和pb链表中发现y值相同的结点时,则在pc链表中增加一个新结点,新结点的x取值为pa、pb指向的链表中对应的两个结点的x值之和,新结点的y取值为pa或pb链表中对应结点的y值。 程序 PNODE *padd(PNODE *pa,PNODE *pb) PNODE *pcr,*pt,*pc;pc=NULL;while() if(pa-y=pb-y) pt=()malloc(sizeof(PNODE); pt-x=pa-x+pb-x; pt-y=pa-y; pt-next=NULL; if(pc=NULL) pc=pcr=pt; else pcr-next=pt; ; pa=pa-next; pb=pb-next; else if() pb=pb-next; else pa=pa-next;return pc; 3. 以下程序打印所有符合下列条件的3位正整数:是某一个数的平方数,其中有两位数字相同。如100、121等。 main() int a,b,c,n,k; for(k=10;k+) n=; if(n999) ; a=n/100; b=; c=n%10; if(!(a-b)*(b-c)*(c-a) printf(”n%d,%d”,n,k); 4. 以下程序实现将a数组中后8个元素从大到小排序的功能。 void sort(int *x,int n); main() int a12=5,3,7,4,2,9,8,32,54,21,6,43,k; sort(,8); for(k=0;k12;k+) printf(”%d”,ak); void sort(int *x,int n) int j,t; if(n=1) return; for(j=1;jx) pre=p2; pmax=p1; p2=p1; p1=p1-next; if(pmax=head) head=pmax-next; else =pmax-next; =pmax; return head; 编程题1. 熟悉Visual C+编程环境,编写第一个C语言程序,输出以下信息: * * * * * * * * * * * * * * * Very good! * * * * * * * * * * * * * * *2. 三数中取大数3. 搬砖问题。36块砖,36人搬;男搬4,女搬3,两个小孩抬一砖。要求一次全搬完,问男、女、小孩各若干?4. 打印九九表。 123456789 - 12349 2468 36912 . . 9182736815. 验证素数。6. 打印Fibonacci数列。(1 1 2 3 5 8 13 )1. 有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前20项之和。2. 输出以下图案: * * * * * * * * * * * * * * * * * * * * * * * * *3. 有一个34的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。4. 求一个33的整型矩阵对角线元素之和。5. 已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中6. 输出以下的杨辉三角形(要求输出10行)。 1 11 121 1331 14641 15101051 .1. 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。2. 编一程序,将两个字符串连接起来,不要用strcat函数。3. 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,0也要复制过去。0后面的字符不复制。4. 用选择法对数组中10个整数按由小到大排序。所谓选择法就是先将10个数中最小的数与a0对换;再将a1到a9中最小的数与a1对换每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。5. 写一函数建立一个有3名学生数据的单向动态链表。6. 写一函数以删除动态链表中指定的结点。1、输入两个正整数m和n,求其最大公约数和最小公倍数#include int main() int p,r,n,m,temp; printf(请输入两个正整数n,m:); scanf(%d,%d,&n,&m); if (n temp=n; n=m; m=temp; p=n*m; while(m!=0) r=n%m; n=m; m=r; printf(它们的最大公约数为:%dn,n); printf(它们的最小公约数为:%dn,p/n); return 0; 2、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为153=13+53+33.#include int main() int i,j,k,n; printf(parcissus numbers are ); for (n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if (n=i*i*i + j*j*j + k*k*k) printf(%d ,n); printf(n); return 0; 3、求100200之间的全部素数#include #include int main() int n,k,I,m=0;for(n=101;n=200;n=n+2)k=sqrt(n);for(i=2;i=k+1) Printf(“%d”,n); m=m+1; If(m%10=0) printf(“n”); printf(“n”);return 0;4、10个整数用冒泡法由小到大排序#includeint main()int a10;int i,j,t;printf(“输入10个数字:n”);for(i=0;i10;i+)scanf(“%d”,&ai);printf(“n”);for(j=0;j9;j+)for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;printf(“排序后的数是:n”);for(i=0;i10;i+)printf (“%d”,ai);printf(“n”);return 0; 5、10个整数用选择法#include int main()int i,j,min,temp,a11; printf(enter data:n); for (i=1;i=10;i+) printf(a%d=,i); scanf(%d,&ai); printf(n); printf(The orginal numbers:n); for (i=1;i=10;i+) printf(%5d,ai); printf(n); for (i=1;i=9;i+) min=i; for (j=i+1;jaj) min=j; temp=ai; ai=amin; amin=temp; printf(nThe sorted numbers:n); for (i=1;i=10;i+) printf(%5d,ai); printf(n); return 0; 6、用打擂台法,有一个3*4的矩阵,求出其中最大的那个元素的值和它所在的行号和列号#include int main()int i,j,row=0,colum=0,max;int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;for(i=0;i=2;i+)for(j=0;jmax)max=aij;row=i;colum=j;printf(“max=%dn row=%dn colum=%dn”,max,row,colum);return 0;7、求一个3*3的整型矩阵对角线元素之和#include int main()int a33,sum=0;int i,j; printf(enter data:n); for (i=0;i3;i+) for (j=0;j3;j+) scanf(%3d,&aij); for (i=0;i3;i+)sum=sum+aii; printf(sum=%6dn,sum); return 0;8、找出一个二维数组中的鞍点,即该位置上的元素在该行上的最大、在该列上的最小。也可能没有鞍点#include #define N 4#define M 5 /* 数组为行列*/int main() int i,j,k,aNM,max,maxj,flag; printf(please input matrix:n); for (i=0;iN;i+) /* 输入数组*/ for (j=0;jM;j+) scanf(%d,&aij); for (i=0;iN;i+) max=ai0; /* 开始时假设ai0最大*/ maxj=0; /* 将列号赋给maxj保存*/ for (j=0;jmax) max=aij; /* 将本行的最大数存放在max中*/ maxj=j; /* 将最大数所在的列号存放在maxj中*/ flag=1; /* 先假设是鞍点,以flag为代表*/ for (k=0;kakmaxj) /* 将最大数和其同列元素相比*/ flag=0; /* 如果max不是同列最小,表示不是鞍点令flag1为*/ continue; if(flag) /* 如果flag1为表示是鞍点*/printf(a%d%d=%dn,i,maxj,max); /* 输出鞍点的值和所在行列号*/ break; if(!flag) /* 如果flag为表示鞍点不存在*/ printf(It is not exist!n); return 0; 9、有15个数,按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则输出“无此数“#include #define N 15int main() int x,left,right,mid; int aN=100,98,95,93,87,85,77,75,67,65,57,55,47,45,37; printf(input number to look for:); scanf(%d,&x); left=0; right=N-1; while (left=right) mid=(left+right)/2; if (x=amid) break; else if (xamid) left=mid+1; else right=mid-1; if(left=right) printf(%d在数组中的第%d个数.n,x,mid+1); else printf(数组中没找到%d.n,x); return 0; 10、编一程序,将两个字符串连接起来,不要用strcat函数#include int main() char s180,s240; int i=0,j=0; printf(input string1:); scanf(%s,s1); printf(input string2:); scanf(%s,s2); while (s1i!=0) i+; while(s2j!=0) s1i+=s2j+; s1i=0; printf(nThe new string is:%sn,s1); return 0; 11、编写一个程序,将两个字符串s1和s2比较,若s1s2,输出一个正整数;若s1=s2,输出0;若s1s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。例如,“A”与“C”相比,由于“A”“C”,应输出负数,同时由于”A“与”C“的ASCII码差值为2,因此输出”-2“。同理:“A”和“Aid”比较,根据第2个字符比较结果,”n“比”i“大5,因此输出5#include int main() int i,resu; char s1100,s2100; printf(input string1:); gets(s1); printf(ninput string2:); gets(s2); i=0; while (s1i=s2i) & (s1i!=0) i+; if (s1i=0 & s2i=0) resu=0; else resu=s1i-s2i; printf(nresult:%d.n,resu); return 0; 12、编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中,不用strcpy函数,复制是,0也要复制过去。0后面的字符不复制#include #include int main() char s180,s280; int i; printf(input s2:); scanf(%s,s2); for (i=0;i=strlen(s2);i+) s1i=s2i; printf(s1:%sn,s1); return 0; 13、写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。#include #include int main()void inverse(char str); char str100; printf(input string:); gets(str); inverse(str); printf(inverse string:%sn,str); return 0;void inverse(char str) char t; int i,n; n=strlen(str); for (i=0;i=a& stri=A & stri=0 & str i=9) digit+; else if (stri=32) space+; else others+;15、有一个字符串,包含n个字符,写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串#include #include int main()void copystr(char *,char *,int); int m; char str120,str220; printf(input string:); gets(str1); printf(which character that begin to copy?); scanf(%d,&m); if (strlen(str1)m) printf(input error!); else copystr(str1,str2,m); printf(result:%sn,str2); return 0;void copystr(char *p1,char *p2,int m) int n; n=0; while (nm-1) n+; p1+; while (*p1!=0) *p2=*p1; p1+; p2+; *p2=0;16、有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。#include struct Studentint num;char name20;float score;int main()struct Student stu5=10101,”zhang”,78,10103,”wang”,98.5,10106,”li”,86,10108,”ling”,73.5,10110,”sun”,100;struct Student tem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论