已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.3 x1=-1,177777,ffff,65535x2=-3,17775,fffd,65533y1=123.456703, 123.457,123.457,123.457 y2=123.449997,1.2350e+02,123.45x1(%4d)= -13.4(1) %c(2)%c(3)%f(4)%f(5)%lu(6)%hd(7)%d(8)%ld(9)%f(10)%Lf3.5(1) % 右边的值不能为0(2)正确(3)正确(4)类型不匹配x3=%Lf(5)类型不匹配 %Lf(6)类型不匹配 %u%lf(7)正确(8) 不能修改const对象(9) 类型不匹配 %u,%c(10)正确3.6-6.700000-6177601123-2 03.8#includevoid main() char c; c=getchar(); if(c=0&c=A&c=a&c=f) printf(%dn,c-a+10); else printf(“%dn”, c);程序还可以简化3.11#include void main(void) unsigned short x, m,n; scanf(%hu %hu %hu,&x,&m,&n); x = x ( m n + 1); x = x (16 - n); printf(%hun,x);/*4.1 编写一个程序,输入A、B、C三个学生的考试分数,输出分数居中的那个学生名(A、B或C)及考试分数。*/#includevoid main(void) float a, b, c; printf(input the scores of student A, B, C:n); scanf(%f %f %f, &a, &b, &c); if(a=b & a=c | a=c) printf(The middle is A = %f, a); else if(b=a & b=c | b=c) printf(The middle is B = %f, b); else printf(The middle is C = %f, c);/*4.3 编写一个程序,输入一个日期(年、月、日),计算并输出该日期是这一年的第几天。*/#includevoid main(void) int y, m, d, days = 0; int i; printf(input a date(year month day):n); scanf(%d %d %d, &y, &m, &d); for(i = 1; i 2 & (!(y % 4) & (y % 100) | !(y % 400) days+; printf(the day is the %dth of the year.n, days);/*4.4 */*用if语句实现*/#includevoid main(void) float x, tax; printf(input the wage:n); scanf(%f, &x); if(x 1000) tax = 0.0; else if(x 2000) tax = x * 0.05; else if(x 3000) tax = x * 0.1; else if(x 4000) tax = x * 0.15; else if(x 5000) tax = x * 0.2; else tax = x * 0.25; printf(the tax = %f.n, tax);/*用switch语句实现*/#includevoid main(void) float x, tax; printf(input the wage:n); scanf(%f, &x); switch(int)(x/1000) case 0: tax = 0.0; break; case 1: tax = x * 0.05; break; case 2: tax = x * 0.1; break; case 3: tax = x * 0.15; break; case 4: tax = x * 0.20; break; default: tax = x * 0.25; printf(the tax = %f.n, tax);/*4.7*/#includevoid main(void) char c; printf(input a string end with Enter:n); c = getchar(); while(c != n) putchar(c); if(c = 32) while(c = getchar() = 32) ; else c = getchar(); /*4.10*/#include#include#define EPS 1.0E-5void main(void) long i = 1; int flag = 4; double pi = 0.0, item; do item = (double)flag / (2*i-1); pi += item; i+; flag *= -1; while(fabs(item) EPS); printf(PI = %f, pi);/*4.11*/#includevoid main(void) int a, b, c, d, r, gcd, lcm; do printf(input two integers: a and b (a0 and b0)n); scanf(%d %d, &a, &b); while(!a|!b ); /*等价于while(a = 0 | b = 0)*/ if(a 0) c = -a; else c = a; if(b 0) d = -b; else d = b; while(r = c % d) c = d; d = r; gcd = d; lcm = a * b / gcd; printf(the greatest common divisor is %d, nthe lease common multiple is %d.n, gcd, lcm);/*4.13*/#include#includeint is_prime(int);void main(void) int i,n; printf( 4 = 2 + 2n); for(i=6;i=100;i+=2) for( n=3; n i/2) printf(error %dn,i); int is_prime(int i) int j; if(i = 1) return 0; if(i = 2) return 1; if(!(i % 2) return 0; for(j = 3;j = sqrt(i);j += 2) if(!(i % j) return 0; return 1; /*4.17*/#includevoid main(void) int c,i; for(i=1,c=32;c=126;+i,+c) printf(%3d%-5c,c,c); if(!(i%8) printf(n); 5.3函数原型的作用:函数原型告诉编译器函数返回值的数据类型,函数参数个数,每个参数的类型,参数的顺序和函数参数压栈方式。编译器使用函数原型校验函数的调用,从而避免因错误的函数调用所导致的致命运行错误或微妙而难以检测的逻辑错误。什么情况下必须做函数原型说明:如果函数定义出现在函数调用后,或者被调用函数在其他文件中定义,则必须在函数调用之前给出其函数原型。5.4(1) (5) 为标准C语言的函数原型5.5extern和static存储类型的区别:static型外部变量和extern型外部变量的唯一区别是作用域的限制。静态外部变量只能作用于定义它的文件,其他文件中的函数不能使用。extern型外部变量的作用域可以扩大到整个程序的所有文件。static和auto存储类型的区别:静态局部变量和自动变量有根本性的区别。由于静态局部变量在程序执行期间不会消失,因此,它的值有连续性。当退出块时,它的值能保存下来,以便再次进入块时使用,而自动变量的值在退出块时都丢失了。如果定义时静态局部变量有显示初始化,只在第一次进入时执行一次赋初值操作,而自动变量每次进入时都要执行赋初值操作。5.7第一次调用:6第二次调用:125.10#includelong factorial(int);void main(void) int i, n; double s; do printf(input n:(n0); scanf(%d, &n); while(n = 0); for(i = 1, s = 0.0; i = n; i+) s += 1.0 / factorial(i); printf(s = %fn, s);long factorial(int n) long result = 1; while(n) result *= n-; return result;5.11#include void hailstone(int);void main(void) int n; do printf(input n:(n0); scanf(%d, &n); while(n = 0); hailstone(n);void hailstone(int n) int i = 1; printf(Hailstone generated by %d:n,n); printf(%dt,n); while(n != 1) if(n % 2) /*n为奇数*/ n = 3 * n + 1; else n = n / 2; /*n为偶数*/ printf(%dt,n); if(+i % 6 = 0) printf(n); printf(nNumber of hailstone generated:%dn, i);5.13#include #include int digit(long, int);void main(void) long n; int k; printf(Input n,k:(k0); scanf(%ld %d, &n, &k); if(k = 0) printf(k must be greater than 0!n); return ; printf(digit(%ld,%d)=%dn, n, k, digit(n,k);int digit(long n, int k) int i = 0, m; if(n 0) n = -n; do m = n % 10; n /= 10; i+; while(n & i k); if(i = k) return m; else return -1;5.14/* primes.h */#define BEGIN 10#define END 20extern int isprime(int n);/* main.c */#include #include primes.hvoid main(void) int n, i=0; printf(GOLDBACHS CONJECTURE:n); printf(every even number n=4 is the sum of two primes.n); n = BEGIN % 2 = 0? BEGIN: BEGIN + 1; while(n = END) for(i = 2;i = n/2; i+) if(isprime(i) & isprime(n-i) printf(%d=%d+%dn, n, i, n - i); break; n += 2; /* isprime.c */#include int isprime(int n) int i, m = 1; for( i = 2;i = (int)sqrt(n+1); i+) if(!(m = n % i) break; return m;5.15#include int gcd1(int, int);int gcd2(int, int);void main(void) int a, b; do printf(Input two positive numbers:); scanf(%d %d,&a,&b); while(a = 0 | b = 0); printf(The greatest common divisor is %dn, gcd1(a,b);/*将gcd1(a,b)换为gcd2(a,b)来测试迭代算法*/*递归*/int gcd1(int m, int n) if(n = 0) return m; else return gcd1(n, m % n);/*迭代*/int gcd2(int m, int n) int r; while(n) r = m % n; m = n; n = r; return m;5.17#includevoid ni(void);void main(void) printf(input a row of characters:n); ni();void ni(void) char c; c=getchar(); if(c!=n) ni(); putchar(c); 6.2 b+a6.3 for(i=0;isize;i+) printf(“n”); for(i=0;in;i+) printf(“%5d”,ai);6.11 167.9#include#include#include#define g 9.8void main(void) int gdriver = DETECT, gmode, i, size; long ck, ck1, ck2; initgraph(&gdriver,&gmode,d:tc); /*初始化图形模式,第3个参数是图形驱动程序所在目录,视实际情况而定*/ setbkcolor(BLUE); /*设置屏幕背景色为蓝色*/ setcolor(RED); /*设置绘图前景色为红色*/ printf(Press Enter to star:n); /*提示,按回车键开始自由落体*/ setlinestyle(0,0,1); /*设置绘图所用线型和线宽:实线,一个像素宽*/ setfillstyle(1,4); /*设置填充方式和颜色:全部填充,红色*/ fillellipse(200,50,5,5); /*以200,50为圆心画半径为5的圆,同时以设定的填充方式和颜色填充该封闭区*/ getchar(); /*使程序停下来,等待用户键盘输入,按回车键继续执行*/ ck1 = clock(); /*计时,获取程序从开始运行到此条语句执行所用的时间,单位是毫秒*/ for(ck = 1; 55 + g * ck * ck / 2 / 10 = 450; ck+) /*当球的下端越过纵坐标450时,终止循环*/ while(ck2 = clock()=ck1); /*等待,确保从上次计时开始时间过去1毫秒*/ ck1 = ck2; /*更新计时器*/ setcolor(BLUE); /*设置绘图前景色为蓝色*/ setfillstyle(1,1); /*设置填充方式和颜色:全部填充,蓝色*/ fillellipse(200,50+g*(ck-1)*(ck-1)/2/10,5,5); /*用蓝色(背景色)在球的上一位置重画圆,并用蓝色(背景色)填充,相当于抹去了在上一位置所画的圆*/ setcolor(RED); /*设置绘图前景色为红色*/ setfillstyle(1,4); /*设置填充方式和颜色:全部填充,红色*/ fillellipse(200,50+g*ck*ck/2/10,5,5); /*用红色在球的初始位置下方g*ck*ck/2/10的位置重画圆,并用红色填充,*/ getchar(); closegraph();7.11#include#include#includevoid Randomize(void);int RandomInteger(int,int);void main(void) int i, j, k; Randomize(); for(i=0,j=0;j 3; i+) k = RandomInteger(1,2); if(k = 1) j+; printf(headsn); else j = 0; printf(tailsn); printf(It took %d flips to get heads 3 consecutive timesn, i);void Randomize(void) srand(time(NULL); int RandomInteger(int low,int high) int k; double d; d=(double)rand()/(double) RAND_MAX+1); k = (int)(d*(high-low+ 1); return(low+k);7.16/*caltools.h*/#ifndef _caltools_h#define _caltools_hchar *MonthName(int month);int MonthDays(int month,int year);int FirstDayOfMonth(int month,int year);int IsLeapYear(int year);#endif/*caltools.c*/#include caltools.hchar * MonthName(int month) switch(month) case 1: return(January); case 2: return(February); case 3: return(March); case 4: return(April); case 5: return(May); case 6: return(June); case 7: return(July); case 8: return(August); case 9: return(September); case 10: return(October); case 11: return(November); case 12: return(December); int MonthDays(int month,int year) switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: return(31); case 4: case 6: case 9: case 11: return(30); case 2: return (IsLeapYear(year)?29:28); int FirstDayOfMonth(int month,int year) int c, d, m, w, y; c = year / 100;/*年份的百位和千位*/ y = year % 100;/*年份的后两位*/ d = 1;/*该月的第一天*/ if (month 3)/*如果月份为1、2月,则当作上年的13、14月来处理*/ m = 12 + month; else m = month; w = (y + y/4 + c/4 - 2*c + 26*(m+1)/10 + d - 1) % 7 + 7) % 7;/*蔡勒(Zeller)公式*/ return w;int IsLeapYear(int year) return ( !(year%4)&(year%100) | !(year%400) );/*calendar.c*/#include #include caltools.hvoid main(void) int month, year; do printf(Input the month and year(month0 and month13):n); scanf(%d %d ,&month,&year); while(month 12); printf(The name of the month is %s.n, MonthName(month); printf(There are %d days in this month.n, MonthDays(month,year); printf(The first day of the month in this year is ); switch(FirstDayOfMonth(month,year) case 0: printf(SUNDAY.n);break; case 1: printf(MONDAY.n);break; case 2: printf(TUESDAY.n);break; case 3: printf(WEDNESDAY.n);break; case 4: printf(THURSDAY.n);break; case 5: printf(FRIDAY.n);break; case 6: printf(SATURDAY.n);break; printf(This year %s a leap year.n, IsLeapYear(year)?is:isnt);9.2 #include void ShowIntBit(int);char IntToChar(int);void main(void) int x; printf(Please input an interger:); scanf(%d, &x); ShowIntBit(x); getch();/* * 函数名: ShowIntBit * 功能 : 将整数从高字节到低字节,输出每四个bit中的数值 * 参数: 输入的整型数据 * 返回值: 无 */void ShowIntBit(int x) int i=0; char *p = (char*)&x; /*初始化p使指向变量x的第1个字节*/ p+; /*使p指向变量x的第2个字节*/ for(i=0;i 4 & 0x0F); /*输出高4位对应的16进制码值*/ printf(%c , IntToChar(*(p - i) & 0x0F); /*输出低4位对应的16进制码值*/ /* * 函数名: IntToChar * 功能 : 将 0 15 转化成对应的十六进制数字字符09, AF * 参数: 输入的整型数据 (015) * 返回值: 返回对应的16进制数数字字符 */char IntToChar(int i) i &= 0x0f; /*取低4位*/ if( i=0 & i=9) return i + 0; /*将19的数值转换为09的数字字符*/ else return i - 10 + A; /*将1015的数值转换为AF的数字字符*/9.5#include #define N 9void reverse(int *, int); /*对数组元素进行颠倒处理的函数原型声明*/void printArray(int *, int); /*输出数组元素值的函数原型声明*/void main() int i, arrayN; printf(Please input %d integers:n, N); for(i=0; i N; i+) scanf(%d, array+i); reverse(array, N); printArray(array, N);void reverse(int *a, int size) /*形参说明int *a等价于int a*/ int *p, *q, temp; for(p=a, q=a+size-1; p q; p+, q-) /*使p、q分别指向数组的第1个和最后一个元素*/ temp = *p; /*交换p、q所指向元素的值*/ *p = *q; /*循环体执行一次后,使p指向后一个元素,并使q指向前一个元素*/ *q = temp; /*当p和q的指向重合或交错后,结束循环,完成了元素位置颠倒*/ void printArray(int *a, int size) int i; for(i=0; isize; i+) printf(%6d, *(a + i); /* 表达式*(a + i)等价于ai */9.9#includevoid transpose(int (*)5, int (*)5, int); /*转置函数原型声明*/void main() int a55, b55, i, j; /*二维数组a、b分别存放原矩阵和转置后矩阵*/ printf(please input 5*5 matrix:n); for(i=0; i 5; i+) /*用二重循环来输入原矩阵数据值*/ for(j=0; j 5; j+) scanf(%d, *(a+i)+j); /* 表达式*(a+i)+j等价于&aij */ transpose(a, b, 5); printf(after transposed:n); for(i=0; i 5; i+) for(j=0; j 5; j+) printf(%6d, *(*(b+i)+j); /* 表达式*(*(b+i)+j)等价于bij */ printf(n); void transpose(int (*x)5, int (*y)5, int n) /*形参说明int (*x)5等价于int x5,y类同*/ int i, j; for(i=0; i n; i+) for(j=0; j 5; j+) *(*(y+i)+j) = *(*(x+j)+i); /*转置处理,将xji赋值给yij*/9.15#include#includevoid main(int argc, char *argv) int i, x, max, min; long sum = 0; float avg; if(argc 2) printf(No digital string involved in command line.n); return ; for(i=1; i max) /*用“打擂台”算法来求最大数和最小数*/ max = x; else min = x; avg = sum/(argc - 1.0); /*求平均值*/ printf(sum = %ldtaverage = %ftmax = %dtmin = %dn, sum, avg, max, min);9.10/*函数名:strcat功 能:将一个字符串b连接到另一个字符串a的串尾参 数:char *t:字符串a的首地址; char *s:字符串b的首地址返回值:无备 注:字符指针t所指向字符串的串尾必须有足够的可用空间以容纳字符指针s所指向的字符串*/void strcat(char *t, char *s) while(*t) t+; /*使t指向它所指字符串的串尾*/ while (*t+ = *s+); /*将s所指向的字符串复制到t所指向的串尾*/9.13bijk的指针表示:*(*(*(b + i) + j) + k)uijklmn的指针表示:*(*(*(*(*(*(u + i) + j) + k) + l) + m) + n)9.18(1) char *(*p3)(void); (2) double (*p9)(int);(3) char (*(*p)(void)3;(4) int (*(*p3)(void)4;9.20区别在于:用#define定义的STRING,STRING a, b; 等价于 char * a, b; ,该声明语句声明了两个变量a和b,类型分别为char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司耐火材料烧成工现场作业技术规程
- 2025年证券投资顾问之证券投资顾问业务真题练习试卷A卷附答案
- 2025年农产品电商市场竞争报告考核试卷及答案
- 中国寿命试验仪项目投资可行性研究报告
- 机动车内胎行业深度研究报告
- 氨基酸添加剂行业深度研究报告
- 石材切割行业深度研究报告
- 无味红霉素行业深度研究报告
- 电机铸铝转子压铸机行业深度研究报告
- 自动高速退火镀锡机行业深度研究报告
- GB/T 18037-2000带电作业工具基本技术要求与设计导则
- GB/T 10782-2006蜜饯通则
- 不对称高压脉冲轨道电路讲义课件
- 个人所得税APP培训课件
- 卡车基本构造专业知识课件
- 教学成果奖申报技巧课件
- 部编版道德与法治五年级上册【第四单元】全单元课件
- 外研版六年级英语一般现在时的用法
- 广西基本医疗保险门诊特殊慢性病申报表
- 基桩完整性试验检测记录表(低应变法)
- 2022-2023学年新疆维吾尔自治区乌鲁木齐市第七十中学物理九年级第一学期期中学业水平测试试题(含解析)
评论
0/150
提交评论