清华大学出版社 C语言程序设计教程内容
如果对您有帮助,别忘了关注博主~
包含内容:选择结构,循环结构,数组,函数,结构体,共用体
目录
清华大学出版社 C语言程序设计教程内容
一、选择结构与循环结构
1.输入长方形的长、宽,求其面积。
2.从键盘输入一个字符,如果是小写字母将其转换成大写字母输出,其他字符原样输出。
3.从键盘上输入三个整数,输出平均值。
4.输入三个整数,输出其中的最大数。
5.有分段函数,请编程实现(假设x为整型数据)
6.编写程序,从键盘输入三个数,计算以这三个数为边长的三角形的面积。
7.输入一学生成绩,输出其所在等级。
8.输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。
9.某个电力公司对其用户的收费规定如下,编写程序,对于一个输入的用电数量,计算用户的缴费额。(if...else...if语句实现)
10.计算某年某月有几天(注意要区分闰年)
11.编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
12.数据处理。
13.求n的阶乘(n!)。
14.求5!
15.求1+1/2+1/3+1/4+……+1/n
16.求1-1/2+1/3-1/4+……1/n
17.求1-1/3+1/5-1/7+……1/n
18.求X^n。
19.输入一个正整数n,再输入n个数,输出最大值
20.从键盘上输入m,判断m是否为素数。
21.输出九九乘法表。
22.输出100~200之间所有素数。
23.若口袋里放12个球,3个红球,3个白球,6个黑球,从中任取8个,编写程序列出所有可能的取法。
24.已知鸡兔若干只,共有98个头,386只脚,请问鸡兔各多少只?
25.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
26.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
27.编写指定程序,输出下列图形
二、总结
一、选择结构与循环结构
1.输入长方形的长、宽,求其面积。
#include
int main()
{
int a,b,s;
scanf("%d",&a);
scanf("%d",&b);
s=a*b;
printf("S=%d",s);
return 0;
}
#includeint main() { int a,b,s; scanf("%d",&a); scanf("%d",&b); s=a*b; printf("S=%d",s); return 0; }
2.从键盘输入一个字符,如果是小写字母将其转换成大写字母输出,其他字符原样输出。
#include
main()
{
char ch;
ch=getchar();
if(ch>='a'&&ch<='z')
ch=ch-32;
putchar(ch);
return 0;
}
3.从键盘上输入三个整数,输出平均值。
#include
int main()
{
int a,b,c,sum=0;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
sum=a+b+c;
printf("%dn",sum/3);
return 0;
}
#includeint main() { int a,b,c,sum=0; scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); sum=a+b+c; printf("%dn",sum/3); return 0; }
4.输入三个整数,输出其中的最大数。
//实现方法一:if 实现
#include
int main()
{
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max
//实现方式二:if else if 实现
#include
main()
{
int x,y;
scanf("%d",&x);
if(x<1)y=x+1;
else if(x<2)y=x+2;
else if(x<3)y=x+3;
else y=y+4;
printf("x=%d,y=%dn",x,y);
return 0;
}
//实现方法三:if-else实现
#include
main()
{
int x,y;
scanf("%d",&x);
if(x<2)
{
if(x<1)y=x+1;
else y=x+2;
}
else
{
if(x<3)y=x+3;
else y=x+4;
}
printf("x=%d,y=%dn",x,y);
return 0;
}
5.有分段函数,请编程实现(假设x为整型数据)
//if-else实现
#include
main()
{
int x,y;
scanf("%d",&x);
if(x<2)
{
if(x<1)y=x+1;
else y=x+2;
}
else
{
if(x<3)y=x+3;
else y=x+4;
}
printf("x=%d,y=%dn",x,y);
return 0;
}
//if else if 实现
#include
main()
{
int x,y;
scanf("%d",&x);
if(x<1)y=x+1;
else if(x<2)y=x+2;
else if(x<3)y=x+3;
else y=y+4;
printf("x=%d,y=%dn",x,y);
return 0;
}
6.编写程序,从键盘输入三个数,计算以这三个数为边长的三角形的面积。
#include
#include
main()
{
float a,b,c,l,s;
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
}
printf("%.2f",s);
}
7.输入一学生成绩,输出其所在等级。
A:90~100、 B:80~89、C:70~79、
D:60~69、E:0~59
#include
main()
{
int sc;
scanf("%d",&sc);
if(sc>=0&&sc<=100)
{
switch(sc/10)
{
case 10:
case 9:
printf("An");break;
case 8:
printf("Bn");break;
case 7:
printf("Cn");break;
case 6:
printf("Dn");break;
default:
printf("En");break;
}
}
else printf("error!n");
return 0;
}
8.输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。
#include
#include
int main()
{
double salary,rate,tax;
scanf("%lf",&salary);
if(salary<=850)rate=0;
else if(salary<=1350)rate=0.05;
else if(salary<=2850)rate=0.10;
else if(salary<=5850)rate=0.15;
else rate=0.20;
tax = rate * (salary - 850);
printf("tax=%.2fn",tax);
return 0;
}
9.某个电力公司对其用户的收费规定如下,编写程序,对于一个输入的用电数量,计算用户的缴费额。(if...else...if语句实现)
#include
#include
int main()
{
int x;
float m;
scanf("%d",&x);
if(x>=0)
{
if(x<=200)m=x*0.5;
else if(x<=400)m=100+(x-200)*0.65;
else if(x<=600)m=230+(x-400)*0.8;
else m=390+(x-600)*1.0;
printf("m=%.2fn",m);
}
else printf("error!n");
return 0;
}
10.计算某年某月有几天(注意要区分闰年)
#include
#include
int main()
{
int yy,mm,dd;
scanf("%d%d",&yy,&mm);
if(mm>=1&&mm<=12)
{
switch(mm)
{
case 1:case 3:case 5:case 7:
case 8:case 10:case 12:
dd=31;break;
case 4:case 6:case 9:case 11:
dd=30;break;
case 2:
if((yy%4==0&&yy%100!=0)||(yy%400==0))
dd=29;
else dd=28;
break;
}
printf("dd=%dn",dd);
}
return 0;
}
11.编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
#include
#include
int main()
{
float a,b;
char op;
scanf("%f%c%f",&a,&op,&b);
switch(op)
{
case '+':printf("%f+%f=%.2fn",a,b,a+b);break;
case '-':printf("%f-%f=%.2fn",a,b,a-b);break;
case '*':printf("%f*%f=%.2fn",a,b,a*b);break;
case '/':printf("%f/%f=%.2fn",a,b,a/b);break;
}
return 0;
}
12.数据处理。
①输入两个正整数m和n,求其最大公约数。
②从键盘上输入一个正整数,将其逆序输出。
//求最大公约数
#include
#include
int main()
{
int m,n,r,t;
scanf("%d%d",&m,&n);
if(m
//逆序输出
#include
int main()
{
int a,b;
scanf("%d",&a);
while(a!=0)
{
b=a%10;
a=a/10;
printf("%d",b);
}
}
13.求n的阶乘(n!)。
#include
int main()
{
int a,b=1,c;
scanf("%d",&a);
c=a;
for(a=a;a>0;a--)
{
b=b*a;
}
printf("%d!=%dn",c,b);
}
14.求5!
#include
#include
int main()
{
int i,f=1;
for(i=1;i<=5;i++)
f=f*i;
printf("5!=%dn",f);
return 0;
}
15.求1+1/2+1/3+1/4+……+1/n
#include
#include
int main()
{
int i,n;
float s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+1.0/i;
printf("s=%.2fn",s);
return 0;
}
16.求1-1/2+1/3-1/4+……1/n
#include
#include
int main()
{
int i,n,flag=1;
float s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s+flag*1.0/i;
flag=-flag;
}
printf("s=%.2fn",s);
return 0;
}
17.求1-1/3+1/5-1/7+……1/n
//方法一:for循环
#include
#include
int main()
{
int i,n,flag=1,t=1;
float s=0;
scanf("%d",&n); //n=5
for(i=1;i<=n;i++)
{
s=s+flag*1.0/t;
t=t+2;
flag=-flag;
}
printf("s=%.2fn",s);
return 0;
}
//方法二:while循环
#include
#include
int main()
{
int flag=1,t=1;
float s=0;
while(fabs(flag*1.0/t)>=1e-5)
{
s=s+flag*1.0/t;
t=t+2;
flag=-flag;
}
printf("s=%.2fn",s);
return 0;
}
18.求X^n。
#include
#include
int main()
{
int i,n;
double x,y=1;
scanf("%lf%d",&x,&n);
for(i=1;i<=n;i++)
y=y*x;
printf("%fn",y);
return 0;
}
19.输入一个正整数n,再输入n个数,输出最大值
#include
#include
int main()
{
int i,n,max,x;
scanf("%d",&n);
scanf("%d",&x);
max=x;
for(i=1;i
20.从键盘上输入m,判断m是否为素数。
#include
#include
int main()
{
int i,m;
scanf("%d",&m);//m=6
for(i=2;i=m)printf("yesn");
else printf("non");
return 0;
}
21.输出九九乘法表。
样式一:
#include
#include
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
printf("%4d",i*j);
printf("n");
}
return 0;
}
样式二:
#include
#include
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%4d",i*j);
printf("n");
}
return 0;
}
样式三:
#include
#include
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=i;j<=9;j++)
printf("%d*%d=%4d ",i,j,i*j);
printf("n");
}
return 0;
}
22.输出100~200之间所有素数。
#include
#include
int main()
{
int i,m;
for(m=100;m<=200;m++)
{
for(i=2;i=m)printf("%5d",m);
}
return 0;
}
23.若口袋里放12个球,3个红球,3个白球,6个黑球,从中任取8个,编写程序列出所有可能的取法。
#include
#include
int main()
{
int r,w,b;
for(r=0;r<=3;r++)
{
for(w=0;w<=3;w++)
{
for(b=0;b<=6;b++)
if(r+w+b==8)printf("r=%d,w=%d,b=%dn",r,w,b);
}
}
return 0;
}
24.已知鸡兔若干只,共有98个头,386只脚,请问鸡兔各多少只?
//二重循环解决
#include
#include
int main()
{
int x,y;
for(x=1;x<98;x++)
for(y=1;y<98;y++)
if(x+y==98&&2*x+4*y==386)printf("x=%d,y=%dn",x,y);
return 0;
}
//一重循环解决
#include
#include
int main()
{
int x,y;
for(x=1;x<98;x++)
{
y=98-x;
if(2*x+4*y==386)printf("x=%d,y=%dn",x,y);
}
return 0;
}
25.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
#include
int main()
{
int x,y,z;
for(x=0;x<=100;x++)
for(y=0;y<=100;y++)
{
z=100-x-y;
if(5*x+3*y+z*1/3==100)printf("x=%d,y=%d,z=%dn",x,y,z);
}
return 0;
}
26.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
#include
int main()
{
int x,y,z;
for(x=0;x<=100;x++)
for(y=0;y<=100;y++)
{
z=100-x-y;
if(5*x+3*y+z*1/3.0==100)printf("x=%d,y=%d,z=%dn",x,y,z);
}
return 0;
}
27.编写指定程序,输出下列图形
#include
int main()
{
int i,j;
char ch;
for(i=0;i<14;i++)
{
for(j=0;j
二、总结
如果对您有帮助,别忘了关注博主~
//实现方式二:if else if 实现 #includemain() { int x,y; scanf("%d",&x); if(x<1)y=x+1; else if(x<2)y=x+2; else if(x<3)y=x+3; else y=y+4; printf("x=%d,y=%dn",x,y); return 0; }
//实现方法三:if-else实现 #includemain() { int x,y; scanf("%d",&x); if(x<2) { if(x<1)y=x+1; else y=x+2; } else { if(x<3)y=x+3; else y=x+4; } printf("x=%d,y=%dn",x,y); return 0; }
5.有分段函数,请编程实现(假设x为整型数据)
//if-else实现 #includemain() { int x,y; scanf("%d",&x); if(x<2) { if(x<1)y=x+1; else y=x+2; } else { if(x<3)y=x+3; else y=x+4; } printf("x=%d,y=%dn",x,y); return 0; }
//if else if 实现 #includemain() { int x,y; scanf("%d",&x); if(x<1)y=x+1; else if(x<2)y=x+2; else if(x<3)y=x+3; else y=y+4; printf("x=%d,y=%dn",x,y); return 0; }
6.编写程序,从键盘输入三个数,计算以这三个数为边长的三角形的面积。
#include
#include
main()
{
float a,b,c,l,s;
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
}
printf("%.2f",s);
}
7.输入一学生成绩,输出其所在等级。
A:90~100、 B:80~89、C:70~79、
D:60~69、E:0~59
#includemain() { int sc; scanf("%d",&sc); if(sc>=0&&sc<=100) { switch(sc/10) { case 10: case 9: printf("An");break; case 8: printf("Bn");break; case 7: printf("Cn");break; case 6: printf("Dn");break; default: printf("En");break; } } else printf("error!n"); return 0; }
8.输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。
#include#include int main() { double salary,rate,tax; scanf("%lf",&salary); if(salary<=850)rate=0; else if(salary<=1350)rate=0.05; else if(salary<=2850)rate=0.10; else if(salary<=5850)rate=0.15; else rate=0.20; tax = rate * (salary - 850); printf("tax=%.2fn",tax); return 0; }
9.某个电力公司对其用户的收费规定如下,编写程序,对于一个输入的用电数量,计算用户的缴费额。(if...else...if语句实现)
#include#include int main() { int x; float m; scanf("%d",&x); if(x>=0) { if(x<=200)m=x*0.5; else if(x<=400)m=100+(x-200)*0.65; else if(x<=600)m=230+(x-400)*0.8; else m=390+(x-600)*1.0; printf("m=%.2fn",m); } else printf("error!n"); return 0; }
10.计算某年某月有几天(注意要区分闰年)
#include
#include
int main()
{
int yy,mm,dd;
scanf("%d%d",&yy,&mm);
if(mm>=1&&mm<=12)
{
switch(mm)
{
case 1:case 3:case 5:case 7:
case 8:case 10:case 12:
dd=31;break;
case 4:case 6:case 9:case 11:
dd=30;break;
case 2:
if((yy%4==0&&yy%100!=0)||(yy%400==0))
dd=29;
else dd=28;
break;
}
printf("dd=%dn",dd);
}
return 0;
}
11.编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。
#include#include int main() { float a,b; char op; scanf("%f%c%f",&a,&op,&b); switch(op) { case '+':printf("%f+%f=%.2fn",a,b,a+b);break; case '-':printf("%f-%f=%.2fn",a,b,a-b);break; case '*':printf("%f*%f=%.2fn",a,b,a*b);break; case '/':printf("%f/%f=%.2fn",a,b,a/b);break; } return 0; }
12.数据处理。
①输入两个正整数m和n,求其最大公约数。
②从键盘上输入一个正整数,将其逆序输出。
//求最大公约数 #include#include int main() { int m,n,r,t; scanf("%d%d",&m,&n); if(m //逆序输出 #includeint main() { int a,b; scanf("%d",&a); while(a!=0) { b=a%10; a=a/10; printf("%d",b); } }
13.求n的阶乘(n!)。
#includeint main() { int a,b=1,c; scanf("%d",&a); c=a; for(a=a;a>0;a--) { b=b*a; } printf("%d!=%dn",c,b); }
14.求5!
#include#include int main() { int i,f=1; for(i=1;i<=5;i++) f=f*i; printf("5!=%dn",f); return 0; }
15.求1+1/2+1/3+1/4+……+1/n
#include#include int main() { int i,n; float s=0; scanf("%d",&n); for(i=1;i<=n;i++) s=s+1.0/i; printf("s=%.2fn",s); return 0; }
16.求1-1/2+1/3-1/4+……1/n
#include#include int main() { int i,n,flag=1; float s=0; scanf("%d",&n); for(i=1;i<=n;i++) { s=s+flag*1.0/i; flag=-flag; } printf("s=%.2fn",s); return 0; }
17.求1-1/3+1/5-1/7+……1/n
//方法一:for循环 #include#include int main() { int i,n,flag=1,t=1; float s=0; scanf("%d",&n); //n=5 for(i=1;i<=n;i++) { s=s+flag*1.0/t; t=t+2; flag=-flag; } printf("s=%.2fn",s); return 0; } //方法二:while循环 #include#include int main() { int flag=1,t=1; float s=0; while(fabs(flag*1.0/t)>=1e-5) { s=s+flag*1.0/t; t=t+2; flag=-flag; } printf("s=%.2fn",s); return 0; }
18.求X^n。
#include#include int main() { int i,n; double x,y=1; scanf("%lf%d",&x,&n); for(i=1;i<=n;i++) y=y*x; printf("%fn",y); return 0; }
19.输入一个正整数n,再输入n个数,输出最大值
#include#include int main() { int i,n,max,x; scanf("%d",&n); scanf("%d",&x); max=x; for(i=1;i
20.从键盘上输入m,判断m是否为素数。
#include#include int main() { int i,m; scanf("%d",&m);//m=6 for(i=2;i =m)printf("yesn"); else printf("non"); return 0; }
21.输出九九乘法表。
样式一:
#include#include main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) printf("%4d",i*j); printf("n"); } return 0; } 样式二:
#include#include main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%4d",i*j); printf("n"); } return 0; } 样式三:
#include#include main() { int i,j; for(i=1;i<=9;i++) { for(j=i;j<=9;j++) printf("%d*%d=%4d ",i,j,i*j); printf("n"); } return 0; }
22.输出100~200之间所有素数。
#include#include int main() { int i,m; for(m=100;m<=200;m++) { for(i=2;i =m)printf("%5d",m); } return 0; }
23.若口袋里放12个球,3个红球,3个白球,6个黑球,从中任取8个,编写程序列出所有可能的取法。
#include#include int main() { int r,w,b; for(r=0;r<=3;r++) { for(w=0;w<=3;w++) { for(b=0;b<=6;b++) if(r+w+b==8)printf("r=%d,w=%d,b=%dn",r,w,b); } } return 0; }
24.已知鸡兔若干只,共有98个头,386只脚,请问鸡兔各多少只?
//二重循环解决 #include#include int main() { int x,y; for(x=1;x<98;x++) for(y=1;y<98;y++) if(x+y==98&&2*x+4*y==386)printf("x=%d,y=%dn",x,y); return 0; } //一重循环解决 #include#include int main() { int x,y; for(x=1;x<98;x++) { y=98-x; if(2*x+4*y==386)printf("x=%d,y=%dn",x,y); } return 0; }
25.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
#includeint main() { int x,y,z; for(x=0;x<=100;x++) for(y=0;y<=100;y++) { z=100-x-y; if(5*x+3*y+z*1/3==100)printf("x=%d,y=%d,z=%dn",x,y,z); } return 0; }
26.我国古代数学家张丘建在《算经》一书中提出的数学问题: 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
#includeint main() { int x,y,z; for(x=0;x<=100;x++) for(y=0;y<=100;y++) { z=100-x-y; if(5*x+3*y+z*1/3.0==100)printf("x=%d,y=%d,z=%dn",x,y,z); } return 0; }
27.编写指定程序,输出下列图形
#includeint main() { int i,j; char ch; for(i=0;i<14;i++) { for(j=0;j
二、总结
如果对您有帮助,别忘了关注博主~



