




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 C语言概述2.3 参照例题,编写一个C语言程序,输出以下信息:* Hello,World!*程序代码如下:#include /*编译预处理命令*/void main(void) /* 主函数*/printf(“*n”); /*输出一行*/printf(“ Hello World!n”); /*输出Hello World!*/printf(“*n”); /*输出一行*/2.4 编写一个C语言程序,输入a、b、c三个数,输出其中最大者。程序代码如下:#include void main ( ) /* 主函数*/ int max(int x,int y); /*函数声明*/int a,b,c,d; /*声明部分,定义变量*/scanf(%d,%d,%d,&a,&b,&c); /*输入变量a、b、c的值*/d=max(a,b); /*调用max函数,将得到的值赋给d*/d=max(d,c); /*调用max函数,将得到的值赋给d*/printf(max=%dn,d); /*输出d的值*/getch();int max(int x,int y) /*定义max函数,函数值为整型,形式参数x,y为整型*/ int z; /* max函数中的声明部分,定义本函数中用到的变量z为整型*/if(xy) z=x;else z=y;return (z); /*将z的值返回,通过add带回调用处*/第3章 数据类型、运算符与表达式3.7 编写程序,输入两个字符,利用条件运算符,输出其中较小字符的ASCII 码值。程序代码如下:void main()char c1,c2;int i;printf(input two letters:);scanf(%c,%c,&c1,&c2); /*注意:输入的两个字符之间要用逗号隔开*/i= c1c2?c1:c2;printf(minimum ASCII is %dn,i);第4章 程序控制结构4.1 用*号输出大写字母“C”的图案。程序代码如下:#include void main()printf( *n);printf( *n);printf( * n);printf( *n);4.2 从键盘输入一个大写字母,要求分别用大小写字母形式输出该字母及对应的ASCII码值。程序代码如下:#include void main() char c1,c2; printf(Input a uppercase letter: ); c1=getchar(); /*输入大写字母*/ c2=c1+32; /*将大写字母转换成对应的小写字母*/ printf(%c,%dn,c1,c1); /*输出大写字母及对应的ASCII码值*/ printf(%c,%dn,c2,c2); /*输出小写字母及对应的ASCII码值*/4.3 输入一个整数,判断它能否被3或7整除,若能整除,输出“YES”,否则输出“NO”。程序代码如下:#include void main()int n; scanf(%d,&n); if (n%3=0|n%7=0) /*判断能否被3或7整除*/ printf(YESn); else printf(NOn);4.4 输入x和a的值,按下列公式计算y的值。程序代码一:#include #include void main() float x,a,y; printf (nPlease input x,a: ); scanf(%f,%f,&x,&a); if (x-a&xa) /*或fabs(x)a */ y=sqrt(a*a-x*x); if (x=a | x= -a) /*或fabs(x)=a */ y=0; if (xa ) /*或fabs(x)a*/ y=x-1; printf(x=%g,a=%g,y=%gn,x,a,y);程序代码二:#include #include void main() float x,a,y; printf (nPlease input x,a: ); scanf(%f,%f,&x,&a); if (fabs(x)-a&xa */ y=sqrt(a*a-x*x); else if (fabs(x)=a ) /*或x=a | x= -a */ y=0; else y=x-1; printf(x=%g,a=%g,y=%gn,x,a,y);程序代码三:#include #include void main() float x,a,y; printf (nPlease input x,a: ); scanf(%f,%f,&x,&a); if (fabs(x)=a) if (fabs(x) a) y=sqrt(a*a-x*x); else y=0; else y=x-1; printf(x=%g,a=%g,y=%gn,x,a,y);4.5 输入四个不相等的数,找出其中的最小数。程序代码一:#include void main() int a,b,c,d,min; printf(nPlease input 4 numbers:); scanf(%d%d%d%d,&a,&b,&c,&d); min=a; /* 先假设a为最小数min */ if (bmin) min=b; /* 若b比min小,min改为b */ if (cmin) min=c; /* 若c比min小,min改为c */ if (dmin) min=d; /* 若d比min小,min改为d */ printf(The minimum number is:%dn,min); 程序代码二:#include void main() int a,b,c,d,t1,t2,min; printf(nPlease input 4 numbers:); scanf(%d%d%d%d,&a,&b,&c,&d); t1=(ab)? a:b; /* 比较a与b,较小者存入t1 */ t2=(cd)? c:d; /* 比较c与d,较小者存入t2 */ min=(t1t2)? t1:t2; /* 比较t1、t2,较小者即为4个数中的最小数 */ printf(The minimum number is:%dn,min);4.6 输入三个整数,分别放入x,y,z中,要求程序把数据重新按从小到大的顺序放入x,y,z中,然后输出x,y,z中的值。 程序代码如下:#include void main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if (xy) t=x;x=y;y=t; /*交换x,y的值*/if(xz) t=z;z=x;x=t; /*交换x,z的值*/if(yz) t=y;y=z;z=t; /*交换z,y的值*/printf(small to big: %d %d %dn,x,y,z);4.7 输入一个不多于4位的正整数,求它的位数,并按逆序输出各位数字。程序代码一:#include void main()int i, a,b,c,d; printf(nPlease input a number(0-9999):); scanf(%ld,&i); if( i9999) printf(Error input.); else if (i=9) n=1; /* 求i的位数 */ else if (i=99) n=2; else if (i=999) n=3; else n=4; printf(There are %d digits.n,n); a=i%10; /* 求i的个位数 */ b=i/10%10; /* 求i的十位数 */ c=i/100%10; /* 求i的百位数 */ d=i/1000%10; /* 求i的千位数 */ printf(Reverse digit: ); switch (n) case 1: printf(%dn, a); break;case 2: printf(%d,%dn, a,b); break; case 3: printf(%d,%d,%dn, a,b,c); break;case 4: printf(%d,%d,%d,%dn, a,b,c,d); 程序代码二:#include void main()int i, a,b,c,d;printf(nPlease input a number(0-9999): );scanf(%d,&i); a=i%10; /* 求i的个位数 */ b=i/10%10; /* 求i的十位数 */ c=i/100%10; /* 求i的百位数 */ d=i/1000%10; /* 求i的千位数 */ if (d!=0 ) /* 千位数非0时 */ printf(There are 4 digits.n); /* 4位数 */ printf(Reverse digit: %d,%d,%d,%dn, a,b,c,d); else if ( c!=0 ) /* 千位数为0但百位数非0时 */ printf(There are 3 digits.n); /* 3位数 */ printf(Reverse digit: %d,%d,%dn, a,b,c); else if ( b!=0 ) /* 千、百位数为0但十位数非0时 */ printf(There are 2 digits.n); /* 2位数 */ printf(Reverse digit: %d,%dn, a,b); else /* 千、百、十位数为0时 */ printf(There are 1 digits.n); /* 1位数 */ printf(Reverse digit: %dn, a);4.8 输入一个年份和一个月份,输出该年的这个月有多少天。用switch语句编程。程序代码如下: #include void main()unsigned y,m,d; printf(nInput year-month:); scanf(%u-%u,&y,&m); switch(m) case 1: case 3: case 5: case 7: case 8: case 10: case 12: d=31; break; case 2: /*2月份要考虑是否闰年*/d=(y%4=0&y%100!=0|y%400=0)?29:28; break; case 4: case 6: case 9: case 11: d=30; break; printf(There are %u days this month.n,d);4.9 编制程序,计算某个学生奖学金的等级,以三门课程成绩为评奖依据。奖学金评奖标准如下:符合下列条件之一者获一等奖:(1)平均分大于95分者;(2)有两门成绩是100分,且第三门课程成绩不低于80分者。符合下列条件之一者获二等奖:(1)平均分大于90分者;(2)有一门成绩是100分,且其他课程成绩不低于75分者。符合下列条件者获三等奖:各门功课成绩不低于70分。符合条件者就高不就低,只能获得高的那一项奖学金。要求显示获奖的等级。程序代码如下:#include void main()int s1,s2,s3; float aver; printf(nInput three scores: ); scanf(%d,%d,%d,&s1,&s2,&s3); aver=(s1+s2+s3)/3.0; if ( aver95 | s1=100&s2=100&s3=80 | s1=100&s3=100&s2=80 | s2=100&s3=100&s1=80 ) printf(Grade: 1n); else if ( aver90 | s1=100&s2=75&s3=75 | s2=100&s1=75&s3=75 | s3=100&s1=75&s2=75 ) printf(Grade:2n); else if ( s1=70&s2=70&s3=70 ) printf(Grade:3n);4.10 输入华氏温度F,利用公式C=5/9*(F-32)转换成摄氏温度C,根据转换结果C的不同值,按以下要求给出相应的提示。C40时,打印“Hot”30C40时,打印“Warm”20C30时,打印“Room Temperature”10C20时,打印“Cool”0C10时,打印“Cold”C0时,打印“Freezing”程序代码如下:#include void main() float f,c; printf(Input the fahrenheit temperature: ); scanf(%f,&f); c=5.0/9.0*(f-32); /*将华氏温度转换成摄氏温度*/ if (c40) printf(Hotn); else if (c30) printf(Warmn); else if (c20) printf(Room Temperaturen); else if(c10) printf(Cooln); else if(c0) printf(Coldn); else printf(Freezingn);4.11 某商场开展购物打折活动,若购物款x在下述范围内,所付款y按对应折扣支付: x (x1000)y=0.9x (1000x2000) 0.8x (2000x3000)0.7x (x3000)从键盘输入购物款x,求实际所付款y。程序代码一:#include void main() float x,y; printf(Input x: ); scanf(%f,&x); if (x0) printf(Input error.n); else if (x1000) y=x; else if (x2000) y=0.9*x; else if (x3000) y=0.8*x; else y=0.7*x; printf(x=%.2f,y=%.2fn,x,y); 程序代码二:#include void main() float x,y; int c; printf(Input x: ); scanf(%f,&x); if (x0) printf(Input error.n); else c=x/1000;switch (c) case 0: y=x; break; case 1: y=0.9*x; break; case 2: y=0.8*x; break; default: y=0.7*x; printf(x=%.2f,y=%.2fn,x,y); 4.12 企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数。程序代码一: #include void main() float x,y; printf(nInput the profit x= ); scanf(%f,&x); if (x=0) printf(No prize.n); else if ( x=10e4 ) y=x*0.1; else if ( x=20e4 ) y=10e4*0.1+(x-10e4)* 0.075; else if ( x=40e4 ) y=10e4*0.1+10e4*0.075+(x-20e4)* 0.05; else if ( x=60e4 ) y=10e4*0.1+10e4*0.075+20e4*0.05+(x-40e4)* 0.03; else if ( x=100e4 ) y=10e4*0.1+10e4*0.075+20e4*0.05+20e4*0.03+(x-60e4)* 0.015; else y=10e4*0.1+10e4*0.075+20e4*0.05+20e4*0.03+40e4*0.015+(x-100e4) 0.01; printf (Total prize y= %.2fn,y); 程序代码二:#include void main() float x,y; printf(nInput the profit x= ); scanf(%f,&x); if (x=0) printf(No prize.n); else y10=10e4*0.1; /*利润为10万的奖金*/ y20=y10+10e4*0.075; /*利润为20万的奖金*/ y40=y20+20e4*0.05; /*利润为40万的奖金*/ y60=y40+20e4*0.03; /*利润为60万的奖金*/ y100=y60+40e4*0.015 /*利润为100万的奖金*/if ( x=10e4 ) y=x*0.1; else if ( x=20e4 ) y= y10+(x-10e4)* 0.075; else if ( x=40e4 ) y=y20+(x-20e4)* 0.05; else if ( x=60e4 ) y=y40+(x-40e4)* 0.03; else if ( x=100e4 ) y=y60+(x-60e4)* 0.015; else y=y100+ (x-100e4) 0.01; printf (Total prize y= %.2fn,y); 4.13 输入一个用24小时制表示的时间(h:m),把它转换为用12小时制表示的时间并输出。如:输入9:05,输出9:05AM;输入12:10,输出12:10PM;输入14:30,输出2:30PM。程序代码如下:#include void main()int h,m; printf(24 hour time: ); scanf(%d:%d,&h,&m); if(h=24|m=60) printf(Input error.n); else if(h12) printf(12 hour time: %d:%02dAMn,h,m); else if(h13) printf(12 hour time: %d:%02dPMn,h,m); else printf(12 hour time: %d:%02dPMn,h-12,m); 4.14 输入一个学生的生日(年y1、月m1、日d1),再输入当前日期(年y2、月m2、日d2),求该生的实足年龄。 程序代码一:#include void main()int y1,m1,d1,y2,m2,d2,age; printf(Enter the birthday (yyyy-mm-dd): ); scanf(%d-%d-%d,&y1,&m1,&d1); printf(Enter the current date (yyyy-mm-dd): ); scanf(%d-%d-%d,&y2,&m2,&d2);if(m1m2) age=y2-y1-1; else if(m1d2) age=y2-y1-1; else age=y2-y1;printf(Age= %dn,age); 程序代码二:#include void main()int y1,m1,d1,y2,m2,d2,age;printf(Enter the birthday (yyyy-mm-dd): ); scanf(%d-%d-%d,&y1,&m1,&d1); printf(Enter the current date (yyyy-mm-dd): ); scanf(%d-%d-%d,&y2,&m2,&d2); if(m1m2| (m1=m2&d1d2) ) age=y2-y1-1; else age=y2-y1; printf(Age= %dn ,age); 程序代码三:#include void main()int y1,m1,d1,y2,m2,d2,age;printf(Enter the birthday (yyyy-mm-dd): ); scanf(%d-%d-%d,&y1,&m1,&d1); printf(Enter the current date (yyyy-mm-dd): ); scanf(%d-%d-%d,&y2,&m2,&d2); age=y2-y1-(m1m2| (m1=m2&d1d2) ); printf(Age= %dn ,age); 4.15 输出1-300之间能同时被3和5整除的所有数。程序代码一:#includevoid main() int i,k; for(i=1,k=0;i=300;i+,k+) if(i%3!=0 | i%5!=0) continue; /*当i不被3或5整除时,继续下一次循环*/ else if(k%5=0) printf(n);k=0; /*当k为5的倍数时换行,即每行输出5个数*/k+;printf(%6d,i); 程序代码二:上面的for循环可以改写为: for(i=1,k=0;i=300;i+,k+) if(i%3=0 & i%5=0) if(k%5=0) printf(n); k=0; k+;printf(%6d,i); 4.16 任意输入n个数,输出其中最大数和最小数,并输出它们在序列中的位置。程序代码如下:#includevoid main() int i,n,max_location=1,min_location=1; float x,max=0,min=0; printf(input n:);scanf(%d,&n); /*输入数的个数*/printf(input x:);scanf(%f,&x); /*输入第一个数*/ max=min=x; /*假设第一个数既是最大数,也是最小数*/ for(i=2;imax) max=x; max_location=i; /*如果xmax,则赋给max,并记下位置*/ if(xmin) min=x; min_location=i; /*如果xmin,则赋给mix,并记下位置*/ printf(nmax=%6.2f,max_location =%dn,max,max_location); printf(nmin=%6.2f,min_location =%dn,min,min_location);4.17 计算多项式12+22+32+1002的值。程序代码如下:#includevoid main() int i; long sum=0; for(i=1;i=100;i+) sum+=i*i; /*每项直接累加,相当于sum=1+2*2+3*3+*/ printf(sum=%ldn,sum); 4.18 计算多项式7+72+73+7n的值,n由键盘输入。程序代码一:#includevoid main() int i,n; long t=1,s=0; printf(please input n:); scanf(%d,&n); for(i=1;i=n;i+) t*=7; s+=t; /*每次循环t乘于7以后各单项累加*/ /* printf(7+7*7+7*7*7+.=%dn,s); 程序代码二:#includevoid main() int i,j,n; long t,s=0; printf(please input n:); scanf(%d,&n); for(i=1;i=n;i+) for(t=1,j=1;j=i;j+)t*=7; /*每个单项都用一个循环实现*/s+=t; /*各单项累加*/ printf(7+7*7+7*7*7+.=%dn,s); 4.19 输入x值,按照下列公式计算cos(x)的值,直到最后一项小于10-6为止。程序代码如下:#include#includevoid main() float sum , term=1,x ; int k=1 ,sign=1; printf(please input x:);scanf (%f,&x ) ; sum=1 ; /*第一项直接赋值*/ while( fabs(term)=1e-6) k=k+2; term*=x*x /k / (k-1) ; /*计算单项值*/ sign=-sign ; /*符号变量,用来实现正负号转换*/ sum+= sign* term ; /*累加*/ printf (sum =%6.2fn , sum ) ; 4.20 输入若干个数,如:2.3、-11.2、66.7、 、116.9,求它们的和,并统计个数(个数100)。程序代码如下:#include#includevoid main() int i;float x,sum=0;for(i=1;i=100;i+) scanf(%f,&x); if(fabs(x)0.000001)break; sum+=x;printf (sum=%f,count=%dn,sum,i-1); /*判别是否结束前,i总是先加1,项数为i-1*/4.21 编写输出如下字母塔的程序:AABAABCBAABCDCBAABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA程序代码如下:#include#includevoid main() int a,b; for (a=1;a=26;a+) /*循环26次,输出26行*/ for( b=1;b=26-a;b+) printf(); /*输出每行左边的空格*/ for(b=1;b=1;b-) printf(%c,b+64); /*输出每行右边(不包括中间)的字母*/ printf(n); /*每行输出以后换行*/ 4.22 “鸡兔同笼”是一个中国古算题,最早出现在孙子算经中。笼中有若干只鸡和兔子,它们共有88个头,244只脚,问鸡和兔各有多少只?程序代码如下:#includevoid main() int i,head=88,foot=244,rabbit,chick; for(i=0;i=head;i+) rabbit=i; chick=head-rabbit; /*满足共有88个头的条件*/ if(rabbit*4+chick*2=foot) /*满足共有244只脚的条件*/ printf(rabbit=%d,chick=%dn,rabbit,chick); 4.23 我国古代有一道有名的数学难题,称为“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买了百鸡,问鸡翁、鸡母、鸡雏各买了多少只? 程序代码一:#includevoid main() int i,j,k;for(i=1;i=20;i+)for(j=1;j=33;j+) k=100-i-j;if(k%3=0)&(i*5+j*3+k/3=100)&k) printf(%4d%4d%4dn,i,j,k); /*满足鸡雏k为整数且大于等于1只,同时正好买了100元钱 */程序代码二:#includevoid main() int i,j,k; printf(n); for(i=1;i=100;i+) for(j=1;j=100;j+) for(k=1;k=100;k+) if(i+j+k=100&15*i+9*j+k=300&k%3=0) printf(%4d%4d%4dn,i,j,k); 4.24 有一个棋盘,在第一个格子里放1粒米,在第2个格子中放第一个格子中两倍的米,以此类推。共有64个格子,编一个程序计算64个格子中的米数总和并输出。浮点型数据由于在TC+ 3.0环境中输出时,有效数据位数有限,存在舍入误差,输出时不是精确值,本题目的只是要求掌握解题方法。程序代码如下:#includevoid main() int i;double x=0.5,s=0.0; for(i=1;i65;i+) x=2*x; /*后一个格子的米的数量是前一个格子的两倍*/ s+=x; printf(s=%en,s); /*计算结果为浮点型数据,采用指数形式输出*/ 4.25求1-999之间的所有同构数。一个数出现在它的平方数的右端,这个数称为同构数。如: 5出现在25右侧 5是同构数 25出现在625右侧 25也是同构数程序代码一:#includevoid main() long k , m , n ; for(k=1;k=999;k+) m=k*k ; if(k10)n=m%10 ; /* k为一位数*/ else if(k100)n=m%100 ; /* k为两位数*/ else n=m%1000 ; /* k为三位数*/ if(k=n)printf(%5d,k); printf(“”n); 程序代码二:#includevoid main() long k , m , n ; for(k=1;k=999;k+) m=k*k ; if(k=m%10|k=m%100|k=m%1000 ) printf(%6d,k); printf(n); 4.26 在范围在4-1000之间编程验证歌德巴赫猜想:任意一个充分大的偶数n(n4),都能够分解为两个素数之和。程序代码如下:#includevoid main() int n,p,q,i,signp,signq; scanf(%d,&n); while(n%2!=0) /* 如果n为奇数,则重新输入*/ printf(”n is not even.”); scanf(%d,&n); p=1; do p=p+1; q=n-p; signp=1; for(i=2;i=p/2;i+) if(p%i=0)signp=0; signq=1; for(i=2;i=q/2;i+) if(q%i=0)signq=0; while(!signp|!signq); printf(%d=%d+%dn,n,p,q);4.27 整钱换零钱:要将100元钱换成1元、2元、五元的零钱,编程求出有几种换法?程序代码如下:#includevoid main() int i,j,k; k=0; for(i=0;i=20;i+) for(j=0;j=(100-i*5)/2;j+) if(k%10=0)printf(“n”); k+; printf(%d,%d,%d;n,i,j,100-5*i-2*j); printf(nk=%dn,k);4.28 密码问题:先输入数字k(0k10),再将输入的一行字符中的英文字母按照其后续的k个字母输出,字母超出最后一个“Z”或“z”时,循环转换,数字不转换。请编程实现。程序代码如下:#includevoid main() int k; char chr; printf(input k: );scanf(%d,&k);scanf(%c,&chr); /* 接收上面输入的回车符,否则第一个输入的字符为回车符*/chr=getchar(); /* 循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程计价工资合同范本
- 2025年甘肃省陇南市徽县招聘城镇公益性岗位人员30人备考练习试题及答案解析
- 2025年河北保定阜平职教中心公开招聘教师21名考试参考试题及答案解析
- 地毯供货协议合同范本
- 肯德基配送合同范本
- 2025年西安市鹿原中学教师招聘考试参考试题及答案解析
- 9.6货车租赁合同范本
- 鱼塘租赁合同范本
- 2025年河北秦皇岛山海关区选聘教师12名考试参考试题及答案解析
- 2025年度枣阳市合同制教师公开招聘265人备考练习试题及答案解析
- 新企业会计准则讲解
- 眼损伤法医学鉴定
- 空气栓塞演练脚本
- GB/T 37232-2018印刷文件鉴定技术规范
- GB/T 28461-2012碳纤维预浸料
- 学前教育史全套课件
- 高一新生入学调查表
- 部编人教版历史七年级上册全册教学课件
- 人教版部编四年级道德与法治上册全册课件
- 《高等数学》全册教案教学设计
- 血栓弹力图-PPT课件
评论
0/150
提交评论