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