《C语言讲义》word版.doc

上传人:wux****ua 文档编号:9315671 上传时间:2020-04-04 格式:DOC 页数:284 大小:750.50KB
返回 下载 相关 举报
《C语言讲义》word版.doc_第1页
第1页 / 共284页
《C语言讲义》word版.doc_第2页
第2页 / 共284页
《C语言讲义》word版.doc_第3页
第3页 / 共284页
点击查看更多>>
资源描述
经典,学习C语言的天堂C语言算法:栈void fun (char *s, char *t) int i, d; /*SPACE*/ d = 【?】; /*SPACE*/ for (i = 0; id; 【?】) ti = si; for (i = 0; id; i+) /*SPACE*/ t【?】 = sd-1-i; /*SPACE*/ t【?】 =0;main() char s100, t100; clrscr(); printf(nPlease enter string S:); scanf(%s, s); fun(s, t); printf(nThe result is: %sn, t);答案: 1). strlen(s) 2). i+ 或 i=i+1 或 i+=1 或 +i 3). d+i 或 i+d 4). 2*d 或 d*2 或 i+d 或 d+i第124题 (9.0分) 题号:422/*-【程序填空】-功能:文件操作。-*/# include # include void main() /* 定义一个文件指针fp */ /*SPACE*/ 【?】 *fp; char ch, filename10; printf(Please input the name of file: ); scanf(%s, filename); /* 输入字符串并赋给变量filename */ /* 以读的使用方式打开文件filename */ /*SPACE*/ if(fp=fopen(filename, 【?】) = NULL) printf(Cannot open the file.n); exit(0); /* 正常跳出程序 */ /* 关闭文件 */ /*SPACE*/ 【?】;答案: 1). FILE 2). r 3). fclose(fp)第125题 (9.0分) 题号:15/*-【程序填空】-功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作 为终止标记。-*/main() int x,i=0,j=0; float s1=0,s2=0,av1,av2; scanf(%d,&x); /*SPACE*/ while(【?】) if(x%2=0) s1=s1+x;i+; /*SPACE*/ 【?】 s2=s2+x; j+; /*SPACE*/ 【?】; if(i!=0) av1=s1/i; else av1=0; if(j!=0) /*SPACE*/ 【?】 ; else av2=0; printf(oushujunzhi:%7.2f,jishujunzhi:%7.2fn,av1,av2);答案: 1). x != 0 或 x 2). else 或 else if(x%2=1) 或 else if(x%2!=0) 或 if(x%2) 3). scanf(%d,&x) 4). av2=s2/j第126题 (9.0分) 题号:398/*-【程序填空】-功能:打印出如下图案(菱形) * * * * * *-*/#include main() int i,j,k; /*SPACE*/ for(i=0;【?】;i+) for(j=0;j=4-i;j+) printf( ); /*SPACE*/ for(k=1;k=【?】;k+) printf(*); printf(n); /*SPACE*/ for(【?】;j3;j+) for(k=0;kj+3;k+) printf( ); for(k=0;k5-2*j;k+) printf(*); printf(n); 答案: 1). i=3 或 i=i 或 4i 2). 2*i+1 或 i*2+1 或 1+2*i 或 1+i*2 3). j=0第127题 (9.0分) 题号:447/*-【程序填空】-功能:已知一个数列,它的头两项分别是0和1,从第三项开始以 后的每项都是其前两项之和。编程打印此数,直到某项的 值超过200为止。-*/main() int i,f1=0,f2=1; /*SPACE*/ for(【?】;i+) printf(5%d,f1); /*SPACE*/ if(f1【?】) break; printf(5%d,f2); if(f2200) break; if(i%2=0) printf(n); f1+=f2; /*SPACE*/ f2+=【?】; printf(n);答案: 1). i=1 2). 200 3). f1第128题 (9.0分) 题号:461/*-【程序填空】-功能:从键盘输入一个字符串,将小写字母全部转换成大写字母, 然后输出到一个磁盘文件“test”中保存。输入的字符串 以!结束。-*/ #include stdio.hmain() FILE *fp; char str100,filename10; int i=0; if(fp=fopen(test,w)=NULL) printf(cannot open the filen); exit(0); printf(please input a string:n); gets(str); /*SPACE*/ while(【?】) if(stri=a&stri=z) /*SPACE*/ 【?】; fputc(stri,fp); i+; fclose(fp); /*SPACE*/ fp=fopen(test,【?】); fgets(str,strlen(str)+1,fp); printf(%sn,str); fclose(fp);答案: 1). stri != ! 2). stri=stri-32 或 stri= stri -32 3). r 或 wr 或 wr+第129题 (9.0分) 题号:625/*-【程序填空】-功能:有一整数数组x(正序排列),判断是否有数组元素xi=i 的情况发生。-*/int index_search(int x, int n) int first = 0; int last = n-1; int middle, index; index = -1; while (first = last) middle = (first + last) / 2; /*SPACE*/ if (【?】) index = middle; break; /*SPACE*/ else if (【?】) last = middle - 1; else first = middle + 1; return index;#include void main(void) int x = -1, 0, 1, 3, 5, 7, 9, 10; int n = sizeof(x)/sizeof(int); int answer, i; printf(nIndex Search Program); printf(n=); printf(nnGiven Array :); for (i = 0; i = 0) printf(nnYES, x%d = %d has been found., answer, answer); else printf(nnNO, there is no element with xi = i);答案: 1). xmiddle = middle 2). xmiddle middle 或 middlexmiddle 3). answer = index_search(x, n)第130题 (9.0分) 题号:412/*-【程序填空】-功能:写一个函数,求一个字符串的长度,在main函数中输入字 符串,并输出其长度。-*/#include main() int length(char *p); int len; char str20; printf(please input a string:n); scanf(%s,str); /*SPACE*/ len=length(【?】); printf(the string has %d characters.,len);/*SPACE*/【?】(p)char *p; int n; n=0; while(*p!=0) /*SPACE*/ 【?】; /*SPACE*/ 【?】; return n;答案: 1). str 2). length 或 int length 3). n+ 或 +n 或 n=n+1 或 n+=1 4). p+ 或 +p 或 p=p+1 或 p+=1 二、栈的操作(1)进栈(2)出栈(3)判断栈满(4)判断栈空【attention】凡是对数据的处理据有后进先出的特点,都可以用栈这种数据接哦股进行操作. 三、顺序栈(1)顺序栈:用顺序存储结构表示的栈.(2)顺序栈利用一组连续的存储单元(如数组)存放自栈底到栈顶的数据元素,通常用一维数组设计栈.【约定】top始终指向新数据元素将要存放的位置 1.当top=0时,表示栈空.当栈空时,若要退栈,称作下溢. 2.当top=stacksize时,表示栈满.当栈满时,若还有元素要进栈,栈将溢出,称作上溢. 3.常量stacksize表示栈的最大容量. 4.注意,无论上溢还是下溢,程序中都要显示信息,以便处理.【应用】数制转换、行编辑程序、树的遍历等【例程】利用栈的思想进行数制转换 #include #include #define STACK_SIZE 10 /*栈的最大容量*/ static int top=0; /*栈中新元素可以存放的位置*/ static int stackSTACK_SIZE=0; /*用一维数组模拟栈*/ /*压栈函数*/ int push(int argc) if(top=STACK_SIZE) printf(stack is fulln); return -1; else stacktop=argc; top+; return 0; /*弹栈函数*/ int pop(void) if(top=0) printf(stack is empty); return -1; else top-; return stacktop; /*栈为空函数*/ int empty() return (top=0?1:0); /*栈为满函数*/ int full() return (top=STACK_SIZE?1:0); int main(int argc,char *argv) int temp; int ret; int var; int format; printf(需要转换的数:);一、栈的定义(1)栈:限定只能在表的一端进行插入和删除的特殊的线性表(LIFO/FILO).(2)LIFO:last in first out,后进先出 FILO:first in last out,先进后出(3)栈有两端,分别是栈顶(top)和栈底(bottom). top:允许插入和删除的一端. bottom:不允许插入和删除的一端. 假定栈S=(A1,A2,.,An);则A1就是栈底元素,An就是栈顶元素.试卷编号:4514所属语言:Turbo C所属方案:cxtk2第1题程序填空(5.0分)(题号:31)/*-【程序填空】-题目:以下程序的功能:计算并输出500以内最大的10个能被 13或17整除的自然数之和。-*/#include #include /*SPACE*/int fun(【?】 ) int m=0, mc=0, j, n;/*SPACE*/ while (k = 2 & 【?】) /*SPACE*/ if (k%13 = 0 | 【?】) m = m+ k; mc+; k-; /*SPACE*/ 【?】;main ( ) clrscr( ); printf(%dn, fun (500);答案: 1). int k 2). mc mc 3). k%17 = 0 或 k%17 4). return m第2题程序填空(5.0分)(题号:5)/*-【程序填空】-题目:以下程序是用选择法对10个整数按升序排序,程序中有4个空, 填空使程序完整。-*/*SPACE*/【?】 main() int i,j,k,t,aN; for(i=0;i=N-1;i+) scanf(%d,&ai); for(i=0;iN-1;i+) /*SPACE*/ 【?】/*SPACE*/ for(j=i+1; 【?】;j+) if(ajak) k=j;/*SPACE*/ if(【?】)t=ai;ai=ak;ak=t; printf(output the sorted array:n); for(i=0;i=N-1;i+) printf(%5d,ai); printf(n); 答案: 1). #define N 10 2). k=i; 3). jj 4). k!=i第3题程序填空(5.0分)(题号:34)/*-【程序填空】-题目:以下程序的功能:计算并输出high以内最大的10个素数 之和,high由主函数传给fun函数,若high的值为100, 则函数的值为732。-*/#include #include #include int fun( int high ) int sum = 0, n=0, j, yes;/*SPACE*/ while (high = 2) & (【?】) yes = 1; for (j=2; j=high/2; j+ )/*SPACE*/ if (【?】)/*SPACE*/ yes=0; 【?】; if (yes) sum +=high; n+; high-; /*SPACE*/ 【?】;main ( ) clrscr( ); printf(%dn, fun (100);答案: 1). nn 2). high%j=0 3). break 4). return sum 或 return (sum)第4题程序填空(5.0分)(题号:13)/*-【程序填空】-题目:输出100到10000之间的各位数字之和能被15整除的所有数, 输出时每10个一行。-*/main() int m,n,k,i=0; for(m=100;m0) 或 while(0n) 或 while(n!=0) 或 while(0!=N) 4). printf(n)第5题程序填空(5.0分)(题号:11)/*-【程序填空】-题目:以下程序的功能是产生并输出如下形式的方阵。1 2 2 2 2 2 13 1 2 2 2 1 43 3 1 2 1 4 43 3 3 1 4 4 43 3 1 5 1 4 43 1 5 5 5 1 41 5 5 5 5 5 1-*/main() int a77; int i,j; for (i=0;i7;i+) for (j=0;j7;j+) /*SPACE*/ if (【?】) aij=1;/*SPACE*/ else if (ij&i+jj&i+j6) aij=3;/*SPACE*/ else if (【?】) aij=4; else aij=5; for (i=0;i7;i+) for (j=0;j7;j+) printf(%4d,aij);/*SPACE*/ 【?】; 答案: 1). i=j|i+j=6 2). aij=2 3). i6 或 ji&i+j6 或 ij&i+6i&i+6j 4). printf(n)第6题程序填空(5.0分)(题号:25)/*-【程序填空】-题目:以下程序的功能是删除一个字符串中的所有数 字字符。-*/#include stdio.hvoid delnum(char *s) int i,j;/*SPACE*/ for(i=0,j=0; 【?】0 ;i+)/*SPACE*/ if(si9)/*SPACE*/ 【?】;j+; sj=0;main () char *item; printf(n input a string:n); gets(item);/*SPACE*/【?】; printf(n%s,item);答案: 1). si!= 或 *(s+i)!= 2). | 3). sj=si 4). delnum(item)第7题程序填空(5.0分)(题号:6)/*-【程序填空】-题目:以下程序的功能是从键盘上输入一个字符串, 将该字符 串升序排列后输出到文件test.txt中,然后从该文件读 出字符串并显示出来。-*/#includemain() FILE *fp; char t,str100; int n,i,j; if(fp=fopen(test.txt,w)=NULL) printf(cant open this file.n);exit(0); printf(input a string:n); gets(str);/*SPACE*/【?】/*SPACE*/ for(i=0; 【?】 ;i+) for(j=0;jn-i-1;j+)/*SPACE*/if(【?】) t=strj;strj=strj+1;strj+1=t; /*SPACE*/【?】 fclose(fp); fp=fopen(test.txt,r); fgets(str,100,fp); printf(%sn,str); fclose(fp); 答案: 1). n=strlen(str); 2). ii 或 i-1+n 或 ii 或 -1+ni 3). strjstrj+1 或 strj+1strj 4). fputs(str,fp);第8题程序填空(5.0分)(题号:21)/*-【程序填空】-题目:以下程序的功能是打印以下图形。* * * * *-*/ main ( )/*SPACE*/【?】 char a59; int i,j; for (i=0;i5;i+)/*SPACE*/ for(j=i; 【?】;j+) aij=*; for(i=0;i5;i+) for(j=0;j9;j+)/*SPACE*/ printf(%c, 【?】 );/*SPACE*/ 【?】; 答案: 1). static 2). jj 3). aij 4). printf(n)第9题程序填空(5.0分)(题号:17)/*-【程序填空】-题目:以下程序的功能是将一个数组中的元素按逆序存放。-*/#define N 7main () static int aN=12,9,16,5,7,2,1,k,s; printf(n the origanal array:n); for (k=0;kN;k+) printf(%4d,ak);/*SPACE*/ for (k=0;kN/2; 【?】 ) s=ak;/*SPACE*/ 【?】 ;/*SPACE*/ 【?】 ; printf(n the changed array:n); for (k=0;kN;k+)/*SPACE*/ 【?】 (%4d,ak);答案: 1). k+ 或 k=k+1 2). ak=aN-k-1 或 ak=aN-1-k 3). aN-k-1=s 或 aN-1-k=s 4). printf第10题程序填空(5.0分)(题号:15)/*-【程序填空】-题目:以下程序的功能是产生10个30,90区间上的随机整数, 然后对其用选择法进行由小到大的排序。-*/#include stdlib.hmain() int i,j,t,k;/*SPACE*/ 【?】 ; for(i=0;i10;i+) ai=random(61)+30; for(i=0;i9;i+) /*SPACE*/ 【?】; for(j=i+1;jaj 或 ajak 4). i=0;ii;i+ 或 i=0;i=i;i+第11题程序填空(5.0分)(题号:22)/*-【程序填空】-题目:以下程序的功能是求一个二维数组中每行的最大值和每行 的和。-*/#include stdlib.hmain() int a55,b5,c5,i,j,k,s=0; for(i=0;i5;i+) for(j=0;j5;j+) aij=random(40)+20; for(i=0;i5;i+) /*SPACE*/ k=ai0; 【?】 ; for(j=0;j5;j+) /*SPACE*/ if(kaij) 【?】 ; s=s+aij; bi=k;/*SPACE*/ 【?】 ; for(i=0;i5;i+) for(j=0;j5;j+)/*SPACE*/ printf(%5d, 【?】 ); printf(%5d%5d,bi,ci); printf(n); 答案: 1). s=0 2). k=aij 3). ci=s 4). aij第12题程序填空(5.0分)(题号:32)/*-【程序填空】-题目:以下程序的功能如(图1)。-*/#include #include #include /*SPACE*/double f(【?】) /*SPACE*/ 【?】; /*SPACE*/ if (【?】) y=2.0*x*x+3.0*x+4.0; else y=-2.0*x*x+3.0*x-4.0;/*SPACE*/ 【?】;main ( ) clrscr( ); printf(%fn, f(-1.9)+f(5.0);答案: 1). float x 2). double y 3). x=x 4). return y;第13题程序填空(5.0分)(题号:8)/*-【程序填空】-题目:以下程序的功能如(图1)。-*/#include main() int f;/*SPACE*/【?】 float t,pi; t=1;pi=0;f=1;n=1;/*SPACE*/ while(【?】 ) pi=pi+t; n=n+2;/*SPACE*/ 【?】 t=f/n; /*SPACE*/【?】 printf(pi=%10.6fn,pi);答案: 1). float n; 2). fabs(t)1e-6 或 fabs(t)0.000001 或 1e-6fabs(t) 或 0.000001fabs(t) 3). f=-f; 4). pi=pi*4;第14题程序填空(5.0分)(题号:14)/*-【程序填空】-题目:以下程序的功能是分别求出一批非零整数中的偶数、奇数 的平均值,用零作为终止标记。-*/main() int x,i=0,j=0; float s1=0,s2=0,av1,av2; scanf(%d,&x);/*
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!