1、 第2章 C语言概述
2.3 参照例题,编写一个C语言程序,输出以下信息:
****************************
Hello,World!
****************************
程序代码如下:
#include
2、 /*输出Hello World!*/
printf(“****************************\n”); /*输出一行**/
}
2.4 编写一个C语言程序,输入a、b、c三个数,输出其中最大者。
程序代码如下:
#include
3、d,%d,%d",&a,&b,&c); /*输入变量a、b、c的值*/ d=max(a,b); /*调用max函数,将得到的值赋给d*/ d=max(d,c); /*调用max函数,将得到的值赋给d*/ printf("max=%d\n",d); /*输出d的值*/ getch(); } int max(int x,int y) /*定义max函数,函数值为整型,形式参数x,y为整型*/ { int z; /* max函数中的声明部分,定义本函数
4、中用到的变量z为整型*/
if(x>y)
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= c1 5、
printf("minimum ASCII is %d\n",i);
}
第4章 程序控制结构
4.1 用*号输出大写字母“C”的图案。
程序代码如下:
#include 6、r c1,c2;
printf("Input a uppercase letter: ");
c1=getchar(); /*输入大写字母*/
c2=c1+32; /*将大写字母转换成对应的小写字母*/
printf("%c,%d\n",c1,c1); /*输出大写字母及对应的ASCII码值*/
printf("%c,%d\n",c2,c2); /*输出小写字母及对应的ASCII码值*/
}
4.3 输入一个整数,判断它能否被3或7整除,若能整除,输出“YES”,否则输出“NO”。
程序代码如下:
#inclu 7、de 8、f("%f,%f",&x,&a);
if (x>-a&&xa ) /*或fabs(x)>a*/
y=x-1;
printf("x=%g,a=%g,y=%g\n",x,a,y);
}
程序代码二:
#include 9、
float x,a,y;
printf ("\nPlease input x,a: ");
scanf("%f,%f",&x,&a);
if (fabs(x)-a&&x
#incl 10、ude 11、nclude 12、
printf("The minimum number is:%d\n",min);
}
程序代码二:
#include 13、t2; /* 比较t1、t2,较小者即为4个数中的最小数 */
printf("The minimum number is:%d\n",min);
}
4.6 输入三个整数,分别放入x,y,z中,要求程序把数据重新按从小到大的顺序放入x,y,z中,然后输出x,y,z中的值。
程序代码如下:
#include 14、 /*交换x,z的值*/
if(y>z)
{ t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
}
4.7 输入一个不多于4位的正整数,求它的位数,并按逆序输出各位数字。
程序代码一:
#include 15、rror 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的千位数 * 16、/
printf("Reverse digit: ");
switch (n)
{ case 1: printf("%d\n", a); break;
case 2: printf("%d,%d\n", a,b); break;
case 3: printf("%d,%d,%d\n", a,b,c); break;
case 4: printf("%d,%d,%d,%d\n", a,b,c,d);
}
}
}
程序代码二:
#include 17、ntf("\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位数 * 18、/
printf("Reverse digit: %d,%d,%d,%d\n", a,b,c,d);
}
else if ( c!=0 ) /* 千位数为0但百位数非0时 */
{ printf("There are 3 digits.\n"); /* 3位数 */
printf("Reverse digit: %d,%d,%d\n", a,b,c);
}
else if ( b!=0 ) /* 千、百位数为0但十位数非0时 */
{ printf("There are 2 digi 19、ts.\n"); /* 2位数 */
printf("Reverse digit: %d,%d\n", a,b);
}
else /* 千、百、十位数为0时 */
{ printf("There are 1 digits.\n"); /* 1位数 */
printf("Reverse digit: %d\n", a);
}
}
4.8 输入一个年份和一个月份,输出该年的这个月有多少天。用switch语句编程。
程序代码如下:
#include 20、d 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= 21、30; break;
}
printf("There are %u days this month.\n",d);
}
4.9 编制程序,计算某个学生奖学金的等级,以三门课程成绩为评奖依据。奖学金评奖标准如下:
符合下列条件之一者获一等奖:
(1)平均分大于95分者;
(2)有两门成绩是100分,且第三门课程成绩不低于80分者。
符合下列条件之一者获二等奖:
(1)平均分大于90分者;
(2)有一门成绩是100分,且其他课程成绩不低于75分者。
符合下列条件者获三等奖:
各门功课成绩不低于70分。
符合条件者就高不就低,只能获得高的那一项奖学金。要求显示获奖 22、的等级。
程序代码如下:
#include 23、n");
else if ( aver>90 || s1==100&&s2>=75&s3>=75 || s2==100&&s1>=75&s3>=75
|| s3==100&&s1>=75&s2>=75 )
printf("Grade:2\n");
else if ( s1>=70&&s2>=70&s3>=70 )
printf("Grade:3\n");
}
4.10 输入华氏温度F,利用公式C=5/9*(F-32)转换成摄氏温度C,根据转换结果C的不同值,按以下要求给出相应的提示。
C>40时,打印“Hot”
30 24、rm”
20 25、e if (c>30)
printf("Warm\n");
else if (c>20)
printf("Room Temperature\n");
else if(c>10)
printf("Cool\n");
else if(c>0)
printf("Cold\n");
else
printf("Freezing\n");
}
4.11 某商场开展购物打折活动,若购物款x在下述范围内,所付款y按对应折扣支付:
x (x<1000)
y=
0.9x (1000≤x 26、<2000)
0.8x (2000≤x<3000)
0.7x (x≥3000)
从键盘输入购物款x,求实际所付款y。
程序代码一:
#include 27、se if (x<3000)
y=0.8*x;
else
y=0.7*x;
printf("x=%.2f,y=%.2f\n",x,y);
}
}
程序代码二:
#include 28、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=%.2f\n",x,y);
}
}
4.12 企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分, 29、可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润,求应发放奖金总数。
程序代码一:
#include 30、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
31、 y=10e4*0.1+10e4*0.075+20e4*0.05+20e4*0.03+40e4*0.015+(x-100e4) 0.01;
printf ("Total prize y= %.2f\n",y);
}
}
程序代码二:
#include 32、0=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 33、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= %.2f\n",y);
}
}
4.13 输入一个用24小时制表示的时间(h:m),把它转换为用12小时制表示的时间并输出。如:输入9:05,输出9:05A 34、M;输入12:10,输出12:10PM;输入14:30,输出2:30PM。
程序代码如下:
#include 35、ime: %d:%02dPM\n",h,m);
else
printf("12 hour time: %d:%02dPM\n",h-12,m);
}
4.14 输入一个学生的生日(年y1、月m1、日d1),再输入当前日期(年y2、月m2、日d2),求该生的实足年龄。
程序代码一:
#include 36、
printf("Enter the current date (yyyy-mm-dd): ");
scanf("%d-%d-%d",&y2,&m2,&d2);
if(m1>m2)
age=y2-y1-1;
else if(m1 37、h>
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(m1>m2|| (m1==m2&&d1>d2) )
age=y2-y1-1;
else
age=y2-y1;
printf("Ag 38、e= %d\n ",age);
}
程序代码三:
#include 39、 printf("Age= %d\n ",age);
}
4.15 输出1-300之间能同时被3和5整除的所有数。
程序代码一:
#include 40、
} /*当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 任意输 41、入n个数,输出其中最大数和最小数,并输出它们在序列中的位置。
程序代码如下:
#include 42、小数*/
for(i=2;i<=n;i++) /*从第二个数开始循环,所以i=2*/
{
scanf("%f",&x);
if(x>max)
{
max=x; max_location=i;
} /*如果x>max,则赋给max,并记下位置*/
if(x 43、
}
printf("\nmax=%6.2f,max_location =%d\n",max,max_location);
printf("\nmin=%6.2f,min_location =%d\n",min,min_location);
}
4.17 计算多项式12+22+32+…+1002的值。
程序代码如下:
#include 44、3*3+……*/
printf("sum=%ld\n",sum);
}
4.18 计算多项式7+72+73+······+7n的值,n由键盘输入。
程序代码一:
#include 45、"7+7*7+7*7*7+...=%d\n",s);
}
程序代码二:
#include 46、s);
}
4.19 输入x值,按照下列公式计算cos(x)的值,直到最后一项小于10-6为止。
程序代码如下:
#include 47、 term*=x*x /k / (k-1) ; /*计算单项值*/
sign=-sign ; /*符号变量,用来实现正负号转换*/
sum+= sign* term ; /*累加*/
}
printf ("sum =%6.2f\n" , sum ) ;
}
4.20 输入若干个数,如:2.3、-11.2、66.7、······ 、116.9,求它们的和,并统计个数(个数≤100)。
程序代码如下:
#include 48、
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=%d\n",sum,i-1); /*判别是否结束前,i总是先加1,项数为i-1*/
}
4.21 编写输出如下字母塔的程序:
A
ABA
ABCBA
ABCDCBA
………………
……………………
…………………………
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDC 49、BA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
程序代码如下:
#include 50、 for(b=1;b<=a;b++) printf("%c",b+64); /*输出每行左边(包括中间)的字母*/
for(b=a-1;b>=1;b--) printf("%c",b+64); /*输出每行右边(不包括中间)的字母*/
printf("\n"); /*每行输出以后换行*/
}
}
4.22 “鸡兔同笼”是一个中国古算题,最早出现在《孙子算经》中。笼中有若干只鸡和兔子,它们共有88个头,244只脚,问鸡和兔各有多少只?
程序代码如下:
#include






