程序设计(C语言)10

合集下载

C语言程序设计_谭浩强_第二版_CH10

C语言程序设计_谭浩强_第二版_CH10

}
第十章 指针 10.3 数组的指针和指向数组的指针变量 10.3.2 通过指针引用数组元素 例10.5输出数组中的全部元素。 ②通过数组名计算数组中元素的地址,找出元素的值。
main() {
int a[10],i; for(i=0;i<10;i++){scanf(“%d”,&a[i]);} print(“\n”); for(i=0;i<10;i++){printf(“%d”,*(a+i));} print(“\n”);
}
运行结果为: 100,10 100,10
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.1 通过指针变量访问整型变量
pointer_1 &a
a 100 *pointer_1
pointer_2 &b
b 10 *pointer_2
第十章 指针 10.2 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 5 *pointer_1
pointer_2 &b
b 9 *pointer_2
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
b 5 *pointer_2
&b
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 9 *pointer_1

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语言程序设计》教材习题答案第10章

《C语言程序设计》教材习题答案第10章

一、选择题1. 设已定义“int a,* p”,下列赋值表达式中正确的是:C)p=&a2. 设已定义“int x,*p=&x;”,则下列表达式中错误的是:B)&*x3. 若已定义“int a=1 ,*b=&a;”,则“printf(“%d \n”,*b);”的输出结果为:A)a的值。

4. 设已定义“int x,*p,*pl=&x,*p2=&x;”,则下列表达式中错误的是:C)p=p1+p2.5. 设有函数定义“void p(int *x){printf(“%d\n”,*x);}”和变量定义“int a=3;”,则正确的函数调用是:C)p(&a)6. 函数“int fun(char * x){char * y=x; while(*y)y++;return(y-x); }”的功能是A)求字符串的长度。

7. 运行一下程序,输出结果为:B)5 6int fun (int a,int *b){a++;(*b)++;return a+*b;}void main(){int x=1,y=2;Printf(“%d”,fun(x,&y));Printf(“%d”,fun(x,&y));}8. 运行以下程序,输出结果为:C)58#include<stdio.h>Int * fun(int a ,int *b){a++;(*b)++;*b=a+*b;return b;}Void main(){Int x=1,y=2,*z;Z=fun(x,&y);Printf(“%d”,*z);Z=fun(x,&y);Printf(“%d”,*z);}9. 若已定义“int a[]={1,2 ,3,4},*p=a;”,则下面表达式中值不等于2的是C)*(++a)10. 若已定义“int a[]={1,2 ,3,4},*p=a+1;”,则p[2]的值为C)411. 设已定义“int x[4][10],*p=x[0];”,则下列表达式中的值为整形的是B)*(p+1)12. 设已定义“char s[]=”ABCD”;”,”printf(“%s”,s+1)”的值为C)BCD13. 设已定义“char str[]=”abcd”,*ptr=str;”,则*(prt+4)的值为B)014. 下面对字符串变量的初始化或赋值操作中,错误的是C)char a[10];a=”OK”;15. 设已定义“char *ps[2]={“abc”,”1234”};”,则以下叙述中错误的是A)ps为指针变量,它指向一个长度为2的字符串数组16. 设已定义“struct {int a,b;} s,*ps=&s;”,则错误的结构体成员引用是C)*ps.a17. 设已有以下定义,则表达式的值为2的是A)k=++p->datastruct st {int data;st *link;} a[3]={1,a+1,3,a+2,5,0},*p=a;二、编程题1. 输入3个字符串,输出其中最大的字符串(用字符指针)#include <stdio.h>#include <stdlib.h>#define str_count 3#define str_length 100int main(int argc, char *argv[]){char a[str_count][str_length],*p;printf("请输入3个字符串:");int i;for(i=0;i<str_count;i++){scanf("%s",a[i]);}p=a[0];for(i=1;i<str_count;i++){if(strcmp(p,a[i])<0){p=a[i];}}printf("最大的字符串为:%s",p);system("PAUSE");return 0;}2. 定义一个函数,函数的功能是求已知半径的圆的周长和面积。

c程序设计教程与实验课后答案

c程序设计教程与实验课后答案

c程序设计教程与实验课后答案【篇一:c程序设计教程与实验第10章习题参考答案】题1.二进制文本2.rewind()3.字节流式4.”abc.dat” “rb”5.06.将文件位置指针从文本末尾处向文件头的方向移动10个字节7.将文件file1.txt的内容输出到屏幕8.将f1的字符保存到f2中9.rfetc(fp)num++10.fopen(“file.dat”,”wb”)dt,1,9,fp三、程序分析题1. 242.复制f1到f23.1.14.1177995. 65a 66b 67c 68d 69e 70f 71g 72h 75k 76l 77m 78n 79o 80p 81q 82r 85u 86v 87w 88x 89y 90z四、编程题1.#includestdio.h#includestdlib.hint main(){char file[10],file1[10],ch;file *in,*out;scanf(%s,file);scanf(%s,file1);if((in=fopen(file,r))==null){printf(cant open file\n);exit(0);}if((out=fopen(file1,w))==null) 73i 74j 83s 84t {printf(cant open file1\n);exit(0);}while(!feof(in)){ch=fgetc(in);fputc(ch,out);putchar(ch);}fclose(in);fclose(out);return 0;}2.#include stdio.h#includestring.h#include errno.hint main(void){file *fp;char ch;if (null == (fp = fopen(g3, r))){printf(fopen g3 error: %s\n, strerror(errno)); return 0;}while ((ch = fgetc(fp))!=eof){printf(%c, ch); }fclose(fp);printf(\n);return 0;}3.#includestdio.hvoid main(){file *fp; /*定义一个文件指针*/int i;double a[10];if((fp=fopen(data.txt,wb+))==null){printf(file can not open,press any key to exit!\n); getch(); /*从键盘上任意输入一字符,结束程序*/exit(1);}for(i=0;i10;i++)scanf(%lf,a[i]);for(i=0;i10;i++)fwrite(a+i,sizeof(double),1,fp);printf(\n);rewind(fp);fread(a,sizeof(double),10,fp);for(i=0;i10;i++)printf(%f\n,a[i]);printf(\n);fclose(fp);}4.#includestdio.hvoid main(){file *fp;int a[80],i,j;int a,b,c;a=b=c=0;if(fp=fopen(g4.dat,r))==null)printf(读取失败\n);for(i=0;i80;i++){fscanf(fp,%d,a[i]);if(fp==eof)break;}for(j=0;j=i;j++){if(a[i]0) a++;if(a[i]0) b++;if(a[i]==0) c++;}printf(正=%d,负=%d,零=%d\n,a,b,c);5.#includestdio.hstruct student{char num[10];char name[8];int score[2];float ave;} stu[3];void main(){int i,j,sum;file *fp;for(i=0;i3;i++){printf(\ninput score of student %d:\n,i+1);printf(no.:);scanf(%s,stu[i].num);printf(name:);scanf(%s,stu[i].name);sum=0;for(j=0;j2;j++){printf(score %d:,j+1);scanf(%d,stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/2.0;}fp=fopen(stud,w);for(i=0;i3;i++)if(fwrite(stu[i],sizeof(struct student),1,fp)!=1) printf(file write error\n);fclose(fp);fp=fopen(stud,r);for(i=0;i3;i++){fread(stu[i],sizeof(struct student),1,fp);printf(\n%s,%s,%d,%d,%d,%6.2f\n,stu[i].num,stu[i].name,stu[i]. score[0], stu[i].score[1],stu[i].score[2],stu[i].ave);}}【篇二:c语言程序设计实训教程习题和实验解答】ss=txt>2.1 c语言概述【习题解答】1结构化程序有三大基本结构:顺序、分支和循环.2..算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。

C语言程序设计课后习题答案谭浩强

C语言程序设计课后习题答案谭浩强

第1章程序设计和C语言1什么是计算机程序1什么是计算机语言1语言的发展及其特点3最简单的C语言程序5最简单的C语言程序举例6语言程序的结构10运行C程序的步骤与方法12程序设计的任务141-5 #include <>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂16什么是算法16简单的算法举例17算法的特性21怎样表示一个算法22用自然语言表示算法22用流程图表示算法22三种基本结构和改进的流程图26用N S流程图表示算法28用伪代码表示算法31用计算机语言表示算法32结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37顺序程序设计举例37数据的表现形式及其运算39常量和变量39数据类型42整型数据44字符型数据47浮点型数据49怎样确定常量的类型51运算符和表达式52语句57语句的作用和分类57最基本的语句——赋值语句59数据的输入输出65输入输出举例65有关数据输入输出的概念67用printf函数输出数据68用scanf函数输入数据75字符数据的输入输出78习题823-1 #include <>#include <>int main(){float p,r,n;r=;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <>#include <>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=;r3=;r2=;r1=;r0=;p1=p*((1+r5)*5); #include <> #include <>int main(){float d=300000,p=6000,r=,m;m=log10(p/(p-d*r))/log10(1+r);printf("m=%\n",m);return 0;}3-4#include <>int main(){int c1,c2;c1=197;c2=198;printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0;3-5#include <>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f %e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;}3-6#include <>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}#include <>int main (){float h,r,l,s,sq,vq,vz;float pi=;printf("请输入圆半径r,圆柱高h∶");scanf("%f,%f",&r,&h); #include <> int main(){ int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n" ,x,y);}else if(x<10) /* 1=<x<10 */{ y=2*x-1;printf("x=%d, y=2*x-1=%d\n",x,y);}else /* x>=10 */{ y=3*x-11;printf("x=%d, y=3*x-11=%d\n",x,y);}return 0;}#include <>int main(){int x,y;printf("enter x:");scanf("%d",&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf("x=%d,y=%d\n",x,y); return 0;}4-7-2#include <>int main(){int x,y;printf("please enter x:"); scanf("%d",&x);y=0;if(x>=0)if(x>0) y=1;else y=-1;printf("x=%d,y=%d\n",x,y); return 0;}4-8#include <>int main(){ float score;char grade;printf("请输入学生成绩:"); scanf("%f",&score);while (score>100||score<0) {printf("\n 输入有误,请重输"); scanf("%f",&score);}switch((int)(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0: grade='E';}printf("成绩是 %,相应的等级是%c\n ",score,grade); return 0;}4-9#include <>#include <>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place;位,万位和位数printf("请输入一个整数(0-99999):");scanf("%d",&num);if (num>9999)place=5;else if (num>999)place=4;else if (num>99) .=%d\n",sn);return 0;}5-6#include <>int main(){double s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%\n",s);return 0;}5-7#include <>int main(){int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k<=n1;k++) /*计算1到100的和*/{s1=s1+k;}for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/ {s3=s3+1/k;}printf("sum=%\n",s1+s2+s3);return 0;}5-8#include <>int main(){int i,j,k,n;printf("parcissus numbers are ");for (n=100;n<1000;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;}5-9-1#define M 1000 /*定义寻找范围*/ #include <>int main(){int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */{n=0; /* n用来累计a的因子的个数 */s=a; /* s用来存放尚未求出的因子之和,开始时等于a */ for (i=1;i<a;i++) /* 检查i是否a的因子 */if (a%i==0) /* 如果i是a的因子 */{n++; /* n加1,表示新找到一个因子 */s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n) /* 将找到的因子赋给k1...k9,或k10 */{case 1:k1=i; break; /* 找出的笫1个因子赋给k1 */case 2:k2=i; break; /* 找出的笫2个因子赋给k2 */case 3:k3=i; break; /* 找出的笫3个因子赋给k3 */case 4:k4=i; break; /* 找出的笫4个因子赋给k4 */case 5:k5=i; break; /* 找出的笫5个因子赋给k5 */case 6:k6=i; break; /* 找出的笫6个因子赋给k6 */case 7:k7=i; break; /* 找出的笫7个因子赋给k7 */case 8:k8=i; break; /* 找出的笫8个因子赋给k8 */case 9:k9=i; break; /*找出的笫9个因子赋给k9 */case 10:k10=i; break; /* 找出的笫10个因子赋给k10 */}}if (s==0){printf("%d ,Its factors are ",a);if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子 */if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子 */if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子 */if (n>4) printf(",%d",k5); /* 以下类似 */if (n>5) printf(",%d",k6);if (n>6) printf(",%d",k7);if (n>7) printf(",%d",k8);if (n>8) printf(",%d",k9);if (n>9) printf(",%d",k10);printf("\n");}}return 0;}5-9-2#include <>int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){printf("%d,its factors are ",m); for (i=1;i<m;i++)if (m%i==0) printf("%d ",i); printf("\n");}}return 0;}5-10#include <>int main(){int i,n=20;double a=2,b=1,s=0,t;for (i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%\n",s);return 0;}5-11#include <>int main(){double sn=100,hn=sn/2;int n;for (n=2;n<=10;n++){sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/}printf("第10次落地时共经过%f米\n",sn); printf("第10次反弹%f米\n",hn);return 0;}5-12#include <>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;}printf("total=%d\n",x1);return 0;}5-13#include <>#include <>int main(){float a,x0,x1;printf("enter a positive number:");scanf("%f",&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf("The square root of % is %\n",a,x1); return 0;}5-14#include <>#include <>int main(){double x1,x0,f,f1;x1=;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %\n",x1); return 0;}5-15#include <>#include <>int main(){float x0,x1,x2,fx0,fx1,fx2;do{printf("enter x1 & x2:"); scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((2*x2-4)*x2+3)-6; }while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6; if ((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs (fx0)>=1e-5); printf("x=%\n",x0);return 0;}5-16#include <>int main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++)printf(" ");for (k=0;k<=2*i;k++)printf("*");printf("\n");}for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}5-17#include <>int main(){char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i='x';i<='z';i++)for (j='x';j<='z';j++)if (i!=j)for (k='x';k<='z';k++)if (i!=k && j!=k)if (i!='x' && k!='x' && k!='z')printf("A--%c\nB--%c\nC--%c\n",i,j,k); return 0;}第6章利用数组处理批量数据142怎样定义和引用一维数组142怎样定义一维数组143怎样引用一维数组元素144一维数组的初始化145一维数组程序举例146怎样定义和引用二维数组148怎样定义二维数组149怎样引用二维数组的元素150二维数组的初始化151二维数组程序举例152字符数组154怎样定义字符数组154字符数组的初始化155怎样引用字符数组中的元素155字符串和字符串结束标志156字符数组的输入输出159使用字符串处理函数161字符数组应用举例165习题1686-1#include <>#include <>int main(){int i,j,n,a[101];for (i=1;i<=100;i++)a[i]=i;a[1]=0;for (i=2;i<sqrt(100);i++) for (j=i+1;j<=100;j++) {if(a[i]!=0 && a[j]!=0) if (a[j]%a[i]==0)a[j]=0;}printf("\n");for (i=2,n=0;i<=100;i++) { if(a[i]!=0){printf("%5d",a[i]);n++;}if(n==10){printf("\n");n=0;}}printf("\n");return 0;}6-2#include <>int main(){int i,j,min,temp,a[11];printf("enter data:\n");for (i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}printf("\n");printf("The orginal numbers:\n"); for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for (i=1;i<=9;i++){min=i;for (j=i+1;j<=10;j++)if (a[min]>a[j]) min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\nThe sorted numbers:\n");for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");return 0;}6-3#include <>int main(){int a[3][3],sum=0;int i,j;printf("enter data:\n");for (i=0;i<3;i++)for (j=0;j<3;j++)scanf("%3d",&a[i][j]);for (i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%6d\n",sum);return 0;}6-4#include <>int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j;for (i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert data:"); scanf("%d",&number);end=a[9];if (number>end)a[10]=number;else{for (i=0;i<10;i++){if (a[i]>number){temp1=a[i];a[i]=number;for (j=i+1;j<11;j++) {temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}printf("Now array a:\n"); for (i=0;i<11;i++)printf("\n");return 0;}6-5#include <>#define N 5int main(){ int a[N],i,temp;printf("enter array a:\n");for (i=0;i<N;i++)scanf("%d",&a[i]);printf("array a:\n");for (i=0;i<N;i++)printf("%4d",a[i]);for (i=0;i<N/2;i++) n",number);; printf("continu or not(Y/N)");scanf(" %c",&c);if (c=='N'||c=='n')flag=0;}return 0;}6-10#include <>int main(){int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for (i=0;i<3;i++){ printf("please input line %d:\n",i+1);gets(text[i]);for (j=0;j<80 && text[i][j]!='\0';j++){if (text[i][j]>='A'&& text[i][j]<='Z')upp++;else if (text[i][j]>='a' && text[i][j]<='z') low++; else if (text[i][j]>='0' && text[i][j]<='9') dig++; else if (text[i][j]==' ')spa++;elseoth++;}}printf("\nupper case: %d\n",upp);printf("lower case: %d\n",low);printf("digit : %d\n",dig);printf("space : %d\n",spa);printf("other : %d\n",oth);return 0;}#include <>int main(){ char a[5]={'*','*','*','*','*'}; int i,j,k;char space=' ';for (i=0;i<5;i++){ printf("\n");printf(" ");for (j=1;j<=i;j++)printf("%c",space);for (k=0;k<5;k++)printf("%c",a[k]);}printf("\n");return 0;}6-12a-c#include <>int main(){ int j,n;char ch[80],tran[80];printf("input cipher code:");gets(ch);printf("\ncipher code :%s",ch);while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z')) tran[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) tran[j]=219-ch[j];elsetran[j]=ch[j];j++;}n=j;printf("\noriginal text:");for (j=0;j<n;j++)putchar(tran[j]);printf("\n");return 0;}6-12b#include <>int main(){int j,n;char ch[80];printf("input cipher code:\n");gets(ch);printf("\ncipher code:%s\n",ch);while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z'))ch[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) ch[j]=219-ch[j];elsech[j]=ch[j];j++;}n=j;printf("original text:");for (j=0;j<n;j++)putchar(ch[j]);printf("\n");return 0;}6-13#include <>int main(){ char s1[80],s2[40];int i=0,j=0;printf("input string1:");scanf("%s",s1);printf("input string2:");scanf("%s",s2);while (s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("\nThe new string is:%s\n",s1); return 0;}6-14#include <>int main(){ int i,resu;char s1[100],s2[100];printf("input string1:");gets(s1);printf("\ninput string2:");gets(s2);i=0;while ((s1[i]==s2[i]) && (s1[i]!='\0'))i++; if (s1[i]=='\0' && s2[i]=='\0')resu=0;elseresu=s1[i]-s2[i];printf("\nresult:%d.\n",resu);return 0;}6-15#include <>#include <>int main(){ char s1[80],s2[80];int i;printf("input s2:");scanf("%s",s2);for (i=0;i<=strlen(s2);i++)s1[i]=s2[i];printf("s1:%s\n",s1);return 0;}第7章用函数实现模块化程序设计170为什么要用函数170怎样定义函数172为什么要定义函数172定义函数的方法173调用函数174函数调用的形式174函数调用时的数据传递175函数调用的过程177函数的返回值178对被调用函数的声明和函数原型179函数的嵌套调用182函数的递归调用184数组作为函数参数192数组元素作函数实参193数组名作函数参数194多维数组名作函数参数197局部变量和全局变量199局部变量199全局变量200变量的存储方式和生存期204动态存储方式与静态存储方式204局部变量的存储类别205全局变量的存储类别208存储类别小结212关于变量的声明和定义214内部函数和外部函数215内部函数215外部函数215习题2187-1-1#include <>int main(){int hcf(int,int);int lcd(int,int,int);int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("",h);l=lcd(u,v,h);printf("",l);return 0;}int hcf(int u,int v){int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0){u=v;v=r;}return(v);}int lcd(int u,int v,int h) {return(u*v/h);}7-1-2#include <>int Hcf,Lcd;int main(){void hcf(int,int); void lcd(int,int);int u,v;scanf("%d,%d",&u,&v); hcf(u,v);lcd(u,v);printf("",Hcf);printf("",Lcd); return 0;}void hcf(int u,int v) {int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0) {u=v;v=r;}Hcf=v;}void lcd(int u,int v) {Lcd=u*v/Hcf;}7-2#include <>#include <>float x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf("input a,b,c:");scanf("%f,%f,%f",&a,&b,&c);printf("equation: %*x*x+%*x+%=0\n",a,b,c); disc=b*b-4*a*c; printf("root:\n");if (disc>0){greater_than_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else if (disc==0){equal_to_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q);}return 0;}void greater_than_zero(float a,float b) {x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}void equal_to_zero(float a,float b){x1=x2=(-b)/(2*a);}void smaller_than_zero(float a,float b) {p=-b/(2*a);q=sqrt(-disc)/(2*a);}7-3#include <>int main(){int prime(int);int n;printf("input an integer:");scanf("%d",&n);if (prime(n))printf("%d is a prime.\n",n);elseprintf("%d is not a prime.\n",n); return 0;}int prime(int n){int flag=1,i;for (i=2;i<n/2 && flag==1;i++)if (n%i==0)flag=0;return(flag);}7-4#include <>#define N 3int array[N][N];int main(){ void convert(int array[][3]); int i,j;printf("input array:\n");for (i=0;i<N;i++)for (j=0;j<N;j++)scanf("%d",&array[i][j]);printf("\noriginal array :\n"); for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%5d",array[i][j]);printf("\n");}convert(array);printf("convert array:\n"); for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%5d",array[i][j]); printf("\n");}return 0;}void convert(int array[][3]) {int i,j,t;for (i=0;i<N;i++)for (j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i]; array[j][i]=t;}}#include <>#include <>int main(){void inverse(char str[]); char str[100];printf("input string:");scanf("%s",str);inverse(str);printf("inverse string:%s\n",str);return 0;}void inverse(char str[]){char t;int i,j;for (i=0,j=strlen(str);i<(strlen(str)/2);i++,j--){t=str[i];str[i]=str[j-1];str[j-1]=t;}}7-6#include <>int main(){void concatenate(char string1[],char string2[],char string[]); char s1[100],s2[100],s[100];printf("input string1:");scanf("%s",s1);printf("input string2:");scanf("%s",s2);concatenate(s1,s2,s);printf("\nThe new string is %s\n",s);return 0;}void concatenate(char string1[],char string2[],char string[]) {int i,j; for (i=0;string1[i]!='\0';i++)string[i]=string1[i];for(j=0;string2[j]!='\0';j++)string[i+j]=string2[j];string[i+j]='\0';}7-7#include <>int main(){void cpy(char [],char []);char str[80],c[80];printf("input string:");gets(str);cpy(str,c);printf("The vowel letters are:%s\n",c);return 0;}void cpy(char s[],char c[]){ int i,j;for (i=0,j=0;s[i]!='\0';i++)if (s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U') {c[j]=s[i];j++;}c[j]='\0';}7-8#include <>#include <>int main(){char str[80];void insert(char []);printf("input four digits:");scanf("%s",str);insert(str);return 0;本文档下载自360文档中心,更多营销,职业规划,工作简历,入党,工作报告,总结,学习资料,学习总结,PPT模板下载,范文等文档下载;转载请保留出处。

C语言程序设计第10章xg

C语言程序设计第10章xg

{ in学t 号a;ge ;
是构姓名造;数据类若型被)处进理行对描象述是一的个。游戏玩
f性lo别at ;ห้องสมุดไป่ตู้core ; 家,则此结构体类型的名称
} ;年龄;
和内部格式可以这样描述:
成绩;
结构体 玩家 { 姓名;
分数; };
};
10.1 结构体类型的声明
声例s声tr如明u明c,一t结格s前t般构u式言d情体e如提n况类t下到下型的:,结时构使,体用需名结要为构注st体意ud编e以nt写下的程几结序构点体时:类,型结,构如体下类: 型的 ❖{sti以rnut 分cntu号m结结;构束体(名指的是上例中右大括号“}”后面的 分{c号h数ar)据n,a类m且型e[该10结分] ; 构号体必成不员可1少;。 ❖c结h数a构r据s体e类x类型; 型结的构声体明成当员作2一;个语句来处理。类型内部 使in用…t a若…ge干; 个独立的语句对每个成员进行声明。 }fl;oat score ; ❖} ;在接其下中来str的uc程t是序声设明计结中构,体就类可型以的使关用键此字结,构结体构类体型名( 对tag结-n构am体e)变由量程进序行员定自义己了命。名,如student。而“struct 结 构体名”才是所声明的结构体类型名。
第10章 结构体与共用体
学习内容指南
10.1 结构体类型的声明 10.2 结构体变量的定义、初始化和引用 10.3 结构体数组 10.4 指向结构体变量的指针 10.5 动态单链表
10.6 共用体
前言
例: 学生信息表
“结这构里体学要学号注生意”姓类,型名一可定描要性述弄别如清下:结年 构龄 体类成 型绩 与结构体变量的
10.1 结构体类型的声明

C语言程序设计第10章文件及其应用

C语言程序设计第10章文件及其应用

学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都定 义在文件stdio.h中,在源程序的开头要 包含头文件 stdio.h 。
学一学
2.打开文件 C语言中,使用fopen函数来打开文件。打开文件是使 一个文件指针变量指向被打开文件的结构变量,以便通 过该指针变量访问打开的文件。fopen函数的调用形式 如下: fopen(chFileName,mode); 以mode 方式打开文件chFileName。其中,参数 chFileName 是将要读写文件的文件名,mode为文件 的操作方式。若文件打开成功,返回一个文件指针,若 打开失败,则返回空值NULL,NULL在stdio.h中被定 义为0。文件操作方式mode是一个整数,其取值及含 义如表10-1所示。

流程图
开始 定义文件指针fp,定义整型数组 iArray[5],定义循环变量i 以写二进制文件方式打开文件 fp=fopen("test.dat","wb") N i=0
fp==NULL Y
i<5 Y 输入1个整数存入 数组元素iArray[i]
N
i++
把数组iArray中5 个整数写入文件
显示出错信息 关闭文件 exit(0)
试一试
问题10.1编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 【解题步骤】 1.定义文件指针fp; 2.定义字符数组chInfo用来存输入的字符串; 3.以写文本文件方式打开文件myInfo.txt; 4.如果打开文件失败,则输出错误信息并结束程序; 5.否则,打开文件成功,则从键盘输入数据; 5.将字符数组chInfo中的字符写入文件myInfo.txt; 6.关闭文件。

《C语言程序设计》第十章位运算(完)

《C语言程序设计》第十章位运算(完)
}
运行结果: a and b:0x81 a and b:0xbb a and b:0x3a
1 0 1 1 1 0 0 1 a:0xb9 a&b 1 0 0 0 0 0 1 1 b:0x83
1 0 0 0 0 0 0 1 结果:0x81
1 0 1 1 1 0 0 1 a:0xb9 a|b 1 0 0 0 0 0 1 1 b:0x83
unsigned char b=248 b>>2 1 1 1 1 1 0 0 0
补零
00111110
舍弃
不带符号的操作数右移位时,左端出现的空 位补零。
unsigned char b=248 b>>2 1 1 1 1 1 0 0 0
补零
00111110
舍弃
说明:
4) 每右移一位相当于操作数除2。 5) a>>2,b>>2形式的操作并不改变操作数a,b
b=a<<2 舍弃
0 0 0 1 1 0 1 1 a:0x1b
0 1 1 0 1 1 0 0 b:0x6c 补零
不带符号的操作数右移位时,左端出现的空 位补零。
带符号的操作数右移位时,左端出现的空位 按原最左端的位复制,无论什么操作数,移 出右端的位被舍弃。
例[10-4]:右移位操作。
void main(){ char a=-8; unsigned char b=248; printf("signed a right_shift 2 bit:%d\n", a>>2 ); printf("unsigned b right_shift 2 bit:%d\n", b>>2 ); }

C语言程序设计试题及答案(十)

C语言程序设计试题及答案(十)

C语言程序设计试题及答案(十)一、选择题:1.以下不是C语言的特点的是( )A.C语言简洁、紧凑B.能够编制出功能复杂的程序C.C语言可以直接对硬件进行操作D.C语言移植性好2.以下不正确的C语言标识符是( )。

A.ABC B.abc C.a_bc D.ab.c3.一个c程序的执行是从( ).A.main( )函数开始,直到main( )函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束D.main( )函数开始,直到最后一个函数结束4.以下不正确的语句(设有intp,q)是( )。

A.P*=3; B.p/=q; C.p十=3; D.p&&=q5.下列四组选项中,均不是C语言关键字的选项是( ).A.define B.getc C.include D.whileif char sanf gotype printf case pow6.下面四个选项中,均是合法整形常量的选项是( ).A.160B.-0xcdfC.-01D.-0x48 a-0xffff 01a 986,012 2e5011 0xe 0668 0x7.下面四个选项中,均是不合法浮点数的选项是( ).A.160.B.123C.-.18D.-e 30.12 2e4.2 123e4 0.234e3 .e5 0.01e38.若有代数式3ae/bc,则不正确的C语言表达式是( )A.a/b/c*e*3B.3* a*e/b/cC.3*a*e/b*cD.a*e/c/b*39.若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum的值为( ).A.7B.8C.9D.1010.若有定义:inta=7;floatx=205,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。

A.2.500000B.2.750000C.3.500000D.0.00000011.sizeof(float)是( )。

精品课件-程序设计基础(C语言)(杨俊清)-第10章

精品课件-程序设计基础(C语言)(杨俊清)-第10章

第10章 文 件
typedef struct {
shortlevel; 的程度*/
unsigned flags; charfd; unsigned charhold; 读取字符*/ shortb size; unsigned char*buffer; 置*/ unsignedar *curp; unsigned istemp; short token;
if ((fp=fopen("file1","r"))==NULL) {
printf("cannot open this file\n"); exit(0); }
第10章 文 件
即先检查打开的操作有否出错,如果有错就在终端上输出 “cannot open this file”。exit函数的作用是关闭所有文 件,终止正在调用的过程。待用户检查出错误,修改后再运行。
第10章 文 件
第10章 文 件
10.1 文件概述 10.2 文件的读写 10.3 文件定位 习题
第10章 文 件
10.1 文 件 概 述 文件(file)是程序设计中一个重要的概念。所谓“文 件”,一般指存储在外部介质上数据的集合。一批数据是以文 件的形式存放在外部介质(如磁盘)上的。操作系统是以文件为 单位对数据进行管理的,也就是说,如果想找存在外部介质上 的数据,必须先按文件名找到所指定的文件,然后再从该文件 中读取数据。要向外部介质上存储数据,也必须先建立一个文 件(以文件名标识),才能向它输出数据。
第10章 文 件
说明: (1) 用“r”方式打开的文件只能用于向计算机输入而不 能用作向该文件输出数据,而且该文件应该已经存在。不能用 “r”方式打开一个并不存在的文件(即输入文件),否则出错。 (2) 用“w”方式打开的文件只能用于向该文件写数据 (即输出文件),而不能用来向计算机输入。如果原来不存在该 文件,则在打开时新建立一个以指定的名字命名的文件。如果 原来已存在一个以该文件名命名的文件,则在打开时将该文件 删去,然后重新建立一个新文件。 (3) 如果希望向文件末尾添加新的数据(不希望删除原有 数据),则应该用“a”方式打开。但此时该文件必须已存在, 否则将得到出错信息。打开时,位置指针移到文件末尾。

《C语言程序设计教程》(第三版)李凤霞 主编——第十章习题答案

《C语言程序设计教程》(第三版)李凤霞 主编——第十章习题答案

习题十一、单选题1~5 DDDCC6~10 AABDB11~14 CADC二、填空题1、34 122、ARRAY a,b,c;3、1 34、a c5、(*b).day=? b->day=?5、分析下列程序执行结果。

#include “stdio.h”main(){static struct s1{char c[4],*s;s1={“abc”,”def”};static struct s2{char *cp;struct s1 ss1;}s2={“ghi”,{“jkl”,”mno”}};printf(“%c%c\n”,s1.c[0],*s1.s); /*output ab */printf(“%s%s\n”,s1.c,s1.s); /*output abcdef */printf(“%s%s\n”,s2.cp,s2.ss1.s); /*output ghimno */printf(“%s%s\n”,++s2.cp,++s2.ss1.s); /* output hino */}6、以下程序的功能是:读入一行字符(如:a,...,y,z),按输入时的逆序建立一个链式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。

#define getnode(type)_________malloc(sizeof(type)) ( (struct node *))main(){struct node{char info;struct node *link;}*top,*p;char c;top=NULL;while((c=getchar())______________) (!='\n'){p=getnode(struct node);p->info=c;p->link=top;top=p;}while(top){_________________; (p=top)top=top->link;putchar(p->info);free(p);}}7、下面的函数将指针p2所指向的线性链表链接到p1所指向的的链表的末端。

高树芳C语言程序设计--第十章

高树芳C语言程序设计--第十章

[解决方案]定义结构体类型变量存储学生信息,
使用scanf从键盘输入数据,使用fprintf函数按格 式输出数据到文件(生成data3.txt文件)。
程序代码
10
10.2
文件的读写
相关知识:
1.文件的读写 2.格式化读写函数
11
10.2
文件的读写
[课堂训练10-1] 1.使用Windows的记事本建立一个文件,其 中写入15个任意整数,数据之间用逗号分隔。 编程输出该文件所有的奇数。 2.编程以只读方式打开案例10-3中的 data3.txt文件,在屏幕上输出所有学生的数 据。
第10章
文件
知识目标: 1. 理解文件和文件指针的概念 2.掌握文件的打开和关闭方法 3.掌握文件的读写操作 4.掌握文件的定位与随机读写操作
1
第10章 文件 能力目标: 1. 会打开和关闭文件 2.会对文件进行读写和定位等操作
本章内容: 文件的定义,文件型指针,文件的打开与关闭,文件 的读写,文件的定位与随机读写。
2
第10章 10.1 10.2 10.3 10.4
文件
文件的打开与关闭 文件的读写 文件的定位和随机读写 知识拓展
3
10.1 文件的打开与关闭
案例10-1
输出文件中的整数及其和
4
10.1 文件的打开与关闭
案例10-1 [案例任务]
输出文件中的整数及其和
使用Windows的记事本在磁盘上与C程序文件在同一目 录下建立一个文件名为“data1.txt”的文本文件(如 图10-1所示),以空格、制表符或回车为分隔符输入 任意个整数,设计C程序,以只读方式打开此文件,若 该文件不存在,则输出“不能打开文件!”,若打开 成功,则输出所有整数,以及整数的个数和它们之和。

《程序设计基础(C语言)》实验指导书

《程序设计基础(C语言)》实验指导书

《程序设计基础(C语言)》目录第1 章概述 (1)1.1 课程简介 (1)1.2 实验环境选择 (1)第 2 章实验要求 (1)2.1 实验过程要求 (1)2.2 考核及评分标准 (1)第 3 章实验内容 (2)3.1 实验1 熟悉C语言运行环境 (2)3.2 实验2 数据类型 (3)3.3 实验3 运算符和表达式 (4)3.4 实验4 顺序结构及输入和输出 (6)3.5 实验5 选择结构 (7)3.6 实验6 循环结构 (9)3.7 实验7 数组(1) (11)3.8 实验8 数组(2) (12)3.9 实验9 字符串及其操作 (13)3.10 实验10 函数 (14)3.11 实验11 结构体 (15)3.12 实验12 指针 (16)第 1 章概述1.1 课程简介《程序设计基础(C语言)》是软件工程各专业或其它相近专业学生的公共职业基础课,是软件类各专业的入门课程,直接影响学生后继职业技术课程的学习及可持续发展能力的培养。

通过本书,学习基本的程序设计概念和程序设计方法,学会使用C语言解决实际问题,进行初级的程序设计。

1.2 实验环境选择VC++6.0第 2 章实验要求2.1 实验过程要求本课程中,实验者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。

在指定的实验时间内,必须到机房内实验,其余时间可自行设计和分析。

本课程所涉及的程序代码,都要求有较高的可读性和效率,多文件表示。

2.2 考核及评分标准若实验者在指定上机时间三次不到课,取消考核资格。

请假,必须提前出具正式假条,不接受事后假条。

如果发现抄袭、篡改、伪造实验数据,或实验报告和设计报告雷同,涉及的所有学生的该课程成绩计为0 分。

本课程采用结构化评分,主要由指导教师灵活处理,可以是考勤等。

第 3 章实验内容3.1 实验1 熟悉C语言运行环境一、实验目的1.了解什么是C语言2.熟悉C语言程序开发环境二、实验内容和步骤1.大学生涯的第一个程序1)运行Microsoft Visual Studio 2008或者VC6.02)创建项目,选择win32控制台应用程序或者空项目,项目名为MyFirstApp3)新建项目,选择C++源文件,文件名为HelloWorld4)在程序编辑窗口,输入如下代码#include <stdio.h>/* 主程序*/void main(){printf("hello world\n");}5)执行程序,Ctrl+F56)观察输出结果,并记录2.修改程序1)增加语句,观察输出结果是否不同printf("hello world\n");printf("world is me\n");2)删除输出字符串中的“\n”,观察输出结果是否不同printf("hello world\n");3)进行换行输出,观察输出结果是否不同printf("hello, ");printf("world");printf("\n");4)将上个程序块中的printf("\n");去掉,观察输出结果是否不同3.用自己的语言,描述下对C语言程序的第一印象4.简单描述下,第二步骤中,输出结果相同与不同的原因;以及“\n”的用途3.2 实验2 数据类型一、实验目的1.掌握变量的命名规则和定义2.掌握C语言程序中的各种数据类型并使用它们二、实验内容和步骤1.定义3个变量numInt、numFloat、charInfo,他们的类型分别为整型,单精度类型,字符型;并分别初始化为2,2.0和‘A’,最后输出这三个变量的值。

C语言程序设计(第3版)何钦铭 颜 晖 第10章 函数与程序结构

C语言程序设计(第3版)何钦铭 颜 晖 第10章  函数与程序结构

第10章函数与程序结构【练习10-1】使用递归函数计算1到n之和:若要用递归函数计算sum=1+2+3+…+n(n为正整数),请写出该递归函数的递归式子及递归出口。

试编写相应程序。

解答:递归式子: sum(i) = sum(i-1) + i;递归出口: sum(i) = 0;【练习10-2】请完成下列宏定义:① MIN(a,b) 求 a,b 的最小值② ISLOWER(c) 判断 c 是否为小写字母③ ISLEAP(y) 判断 y 是否为闰年④ CIRFER(r) 计算半径为 r 的圆周长解答:① MIN(a, b):求a,b的最小值。

#define MIN(a,b) (a<b)? a: b② ISLOWER(c):判断c是否为小写字母。

#define ISLOWER(c) (c>='a'&&c<='z')③ ISLEAP(y):判断y是否为闰年。

#define ISLEAP(y) (y%4==0&&y%100!=0)||y%400==0)④ CIRFER(r):计算半径为r的圆周长。

#define PI 3.14159#define CIRFER(r) 2*PI*(r)【练习10-3】分别用函数和带参宏实现从 3 个数中找出最大数,请比较两者在形式上和使用上的区别。

解答:(1)函数实现int max(int x,int y,int z){int t;if(x>=y)if(x>=z) t=x;else t=z;elseif(y>=z) t=y;else t=z;return t;}(2)宏实现#define MAX( x, y, z ) x>=y? (x>=z? x:z) : (y>=z? y:z)两者在定义形式上完全不同。

使用上函数是在执行时,从主调函数转到函数 max(),然后再返回到主调函数,函数体始终存在;而宏是在编译预处理时,用条件表达式去替换MAX(int x, int y, int z ),等程序执行时,执行的是条件表达式,而不再存在 MAX(int x, int y,int z )的式子。

C语言程序设计(第3版)第10章补充习题及答案

C语言程序设计(第3版)第10章补充习题及答案

第10章补充习题及答案习题10.1 选择题(1)当已存在一个abc.txt文件时,执行函数fopen("abc.txt","r+")的功能是。

A.打开abc.txt文件,清除原有的内容B.打开abc.txt文件,只能写入新的内容C.打开abc.txt文件,只能读取原有内容D.打开abc.txt文件,可以读取和写入新的内容(2)若用fopen()函数打开一个已存在的文本文件,保留该文件原有内容,且可以读,可以写。

则文件打开模式是。

A."ab+" B."w+" C."a+" D."a"(3)以下不能将文件指针重新移到文件开头位置的函数是。

A.rewind(fp); B.fseek(fp,0,SEEK_SET);C.fseek(fp,-(long)ftell(fp),SEEK_CUR); D.fseek(fp,0,SEEK_END);(4)若用fopen()函数打开一个新二进制文件,该文件可以读也可以写,则文件的打开模式为 B 。

A."ab+" B."wb+" C."rb+" D."a+"(5)fread(buffer,64,2,fp)的功能是。

A.从fp所指的文件中读取64并存入buffer中B.从fp所指的文件中读取64和2并存入buffer中C.从fp所指的文件中读取64个字节的数据并存入buffer中D.从fp所指的文件中读取2个64字节的数据并存入buffer中(6)以下程序的功能是。

提示:PRN是打印设备。

#include <stdio.h>void main(){ FILE * fp;char chStr[]="HELLO";fp=fopen("PRN","w");fputs(chStr,fp);fclose(fp);}A.在屏幕显示HELLO B.把HELLO存入PRN文件中C.在打印机上打印出HELLO D.以上都不对10.2 填空题(1)使用fopen("abc","r+")打开文件时,若"abc"文件不存在,则返回。

C语言程序设计第10章 编译预处理简明教程PPT课件

C语言程序设计第10章 编译预处理简明教程PPT课件

(2)定义一个宏名字之后,可以在其他宏定义中使用它。 如: #define ONE 1 #define TWO ONE+1 #define THREE ONE+TWO
计算机科学与技术学院—— C语言程序设计
10.2 #define
例10-1 宏定义及其使用 #define MESSAGE “You are right!\n”
计算机科学与技术学院—— C语言程序设计
第十章 编译预处理 内容提要
C预处理程序 #define
#include
条件编译指令
#undef
计算机科学与技术学院—— C语言程序设计
10.3 #include
10.3 #include
程序中的#include指令要求编译程序读入另一个源文件。被读入 文件的名字必须由双引号(”)或一对尖括号(<>)包围。如: #include”stdio.h” 或 #include<stdio.h> 都令编译程序读入并编译用于I/O函数处理的包含文件stdio.h。
计算机科学与技术学院—— C语言程序设计
10.3 #include
说明: (1)包含文件中还可以包含其它文件,称为嵌套包含(nested includes)。允许的最大嵌套深度随编译程序而变。 (2)用尖括号包围头文件时,搜索头文件时按编译程序的预先定 义进行,一般只搜索某些专门放置包含头文件的特殊目录。当头 文件用双引号包围时,搜索按编译程序实现时的规定进行,一般 指搜索当前目录,如未发现头文件,则再按尖括号包围时的办法 重新搜索。
10.2 #define
(4)#define指令还有一个重要功能:宏名字可以有变元。每当遇 到宏名字时,与之有关的变元都由程序中的实际变元替换。如上 例中的#define ABS(a) (a)<0?-(a):(a)。但要注意,#define ABS(a) (a)<0?-(a):(a)中变元a两边的括号是不能少的,否则, 会产生非预期结果。如: #define ABS(a) a<0?-a:a printf(”abs of (10-20):%d\n”,ABS(10-20)); ABS(10-20)替换为:10-20<0?-10-20:10-20,则输出结果为-30。

(完整版)《C语言程序设计》课后习题答案(第四版)谭浩强

(完整版)《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言11.1什么是计算机程序11。

2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4。

2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf (”**************************\n\n"); printf(" Very Good!\n\n”);p rintf (”**************************\n”); return 0;}1-6#include <stdio。

h〉int main(){int a,b,c,max;printf("please input a,b,c:\n”);scanf(”%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max〈c)max=c;printf(”The largest number is %d\n",max);return 0;}第2章算法—-程序的灵魂162。

1什么是算法162。

2简单的算法举例172.4.2用流程图表示算法222。

4。

3三种基本结构和改进的流程图262。

4.4用N S流程图表示算法282。

4。

5用伪代码表示算法312。

4.6用计算机语言表示算法322。

5结构化程序设计方法34习题36第章最简单的C程序设计-—顺序程序设计37 3。

1顺序程序设计举例373。

2数据的表现形式及其运算393。

2.1常量和变量393。

2。

2数据类型423.2。

3整型数据443。

2。

4字符型数据473。

2.5浮点型数据493。

2。

6怎样确定常量的类型513。

2.7运算符和表达式523.3C语句573.3。

1C语句的作用和分类573。

C语言程序设计ppt-第10篇-02

C语言程序设计ppt-第10篇-02

2019/11/19
华中科技大学计算机学院
6
void main(void) {
union chl u; printf("size of u is %d\n",sizeof(u)); u.l=0x31323334L; show(&u); show_memoy(&u); u.h=0x3638; show(&u); show_memoy(&u); }
由于语法上合法,编译器对这种情况不会报错,但运算的结 果却不正确。
假如在union chl中增加一个成员(其它都不变),如: float f;则在show函数中,如果执行语句为: printf("float format: %f\n",pu->f); 则得到是不正确的结果0.00,而其他语句中操作却是相容的。
如上面例子中的v={'9'}。也可以: union chl v={ˊ9ˊ},w={ˊaˊ};
2019/11/19
华中科技大学计算机学院
5
例10.12 通过例子对联合的特性 进行进一步分析。
#include "stdio.h" union chl{
char c; short h; long l; }; void show(union chl *pu); void show_memoy(union chl *pu);
字段结构在操作系统,编译程序,嵌入式系统的C语言编程方 面使用较多。
例如,stdio.h中关于文件状态成员flags的取值就规定了1为 读状态,2为写状态,4为缓冲数据状态等等。这些数据都是 一些值很小的整数,没有必要用int或char变量来存储每一个 值。
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档