C语言例题
第一章 程序设计例1.1: 要求在屏幕上输出信息例1.2: 求两个整数之和例1.3: 比较两个数的大小,输出最大值第二章 算法——程序的灵魂例2.1 计算5!例2.2 求多项式(1-1/2+1/3-1/4+…+1/99-1/100)的值第三章 最简单的C程序设计——顺序程序设计例3.1:将华氏温度转换为摄氏温度和绝对温度例3.2:计算存款利息例3.3:给定一个大写字母,要求用小写字母输出例3.4:给出三角形的三边长,求三角形面积例3.5:求ax2+bx+c=0方程的根,设b2-4ac>0例3.6:用%f输出实数,只能得到6位小数例3.7:float型数据的有效位数例3.8:先后输出BOY三个字符例3.9:从键盘输入BOY三个字符,然后把他们输出至屏幕例3.10:从键盘输入一个大写字母,在显示器上显示对应的小写字母第四章 选择结构程序设计例4.1:输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是上述情况,输出“other”例4.7:运输公司对用户计算运输费用。路程越远,运费越低。标准如下:例4.8:求ax^2++bx+c=0方程的解例4.9:用switch语句处理菜单命令第五章 循环结构程序设计例5.1:求2+4+6+8+…+98+100例5.2:用do…while语句求1+2+3+…+100例5.3:while和do…while循环的比较例5.4:在全系1000名学生中矩形慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数以及平均每人捐款的数目例5.5:要求输出100~200的不能被3整除的数例5.6:输出以下4*5矩阵例5.7:用公式求π的近似值直到发现某一项的绝对值小于10的-6次方为止例5.8:求Fibonacci(斐波那契)数列的前40个数例5.9:输入一个大于3的整数n,判定它是否为素数例5.10:求100~200的全部素数例5.11:译密码第六章 利用数组处理批量数据例6.1:对10个数组元素依次赋值为1,2,3,4,5,6,7,8,9,10,要求按顺序输出例6.2:用数组来处理求Fibonacci数列问题例6.3:有10个地区的面积,要求对他们按由小到大的顺序排列(冒泡排序)例6.4:将一个二维数组行和列互换,存到另一个二维数组中(矩阵重置)例6.5:有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号例6.6:输出一个已知的字符串例6.7:输出一个菱形图例6.8:输入一行字符,统计其中有多少个单词,单词之间用空格分割开例6.9:有3个字符串,要求找出其中“最大”者第七章 用函数实现模块化程序设计例7.1:输出以下结果,用函数调用实现例7.2:输入两个函数。要求输出其中值较大者。要求用函数找到大数例7.3:将7.2中的max函数定义的变量z改为float型例7.4:输入两个实数,用一个函数求出他们之和
第一章 程序设计
例1.1: 要求在屏幕上输出信息
#include //这是编译预处理指
int main() //定义函数
{ //函数开始的标志
printf("Hellow World.\n"); //输出所指定的一行信息
return 0; //函数执行完毕时返回函数值
} //函数结束的标志
运行结果:

例1.2: 求两个整数之和
#include
int main()
{
int a
,b
,sum
;
a
=1;
b
=2;
sum
=a
+b
;
printf("sum is %d\n",sum
);
return 0;
}
运行结果:

例1.3: 比较两个数的大小,输出最大值
`#include
int main()
{
int max
,a
,b
;
printf("请输入两个数:");
scanf("%d%d",&a
,&b
);
max
=a
>b
?a
:b
;
printf("最大值为:%d\n",max
);
return 0;
}
运行结果:

第二章 算法——程序的灵魂
例2.1 计算5!
#include
int main()
{
int i
,t
;
t
=1;
i
=2;
while(i
int sign
=1;
double deno
=2.0,sum
=1.0,term
;
while(deno
float f
,c
;
f
=64.0;
c
=(5.0/9)*(f
-32);
printf("f=%f\nc=%f\n",f
,c
);
return 0;
}
运行结果:

例3.2:计算存款利息
#include
int main()
{
float p0
=1000,r1
=0.0036,r2
=0.0225,r3
=0.0198,p1
,p2
,p3
;
p1
=p0
*(1+r1
);
p2
=p0
*(1+r2
);
p3
=p0
*(1+r3
/2)*(1+r3
/2);
printf("p1=%f\np2=%f\np3=%f\n",p1
,p2
,p3
);
return 0;
}
运行结果:

例3.3:给定一个大写字母,要求用小写字母输出
#include
int main()
{
char c1
,c2
;
c1
='A';
c2
=c1
+32;
printf("%c\n",c2
);
printf("%d\n",c2
);
return 0;
}
运行结果:

例3.4:给出三角形的三边长,求三角形面积
#include
#include
int main()
{
double a
,b
,c
,s
,area
;
a
=3.67;
b
=5.43;
c
=5.21;
s
=(a
+b
+c
)/2;
area
=sqrt(s
*(s
-a
)*(s
-b
)*(s
-c
));
printf("a=%f\tb=%f\t%f\n",a
,b
,c
);
printf("area=%f\n",area
);
return 0;
}
运行结果:

例3.5:求ax2+bx+c=0方程的根,设b2-4ac>0
#include
#include
int main()
{
double a
,b
,c
,disc
,x1
,x2
,p
,q
;
scanf("%lf%lf%lf",&a
,&b
,&c
);
disc
=b
*b
-4*a
*c
;
p
=-b
/(2.0*a
);
q
=sqrt(disc
)/(2.0*a
);
x1
=p
+q
;x2
=p
-q
;
printf("x1=%7.2f\nx2=%7.2f\n",x1
,x2
);
return 0;
}
运行结果:

例3.6:用%f输出实数,只能得到6位小数
#include
int main()
{
double a
=1.0;
printf("%f\n",a
/3);
return 0;
}
运行结果:

例3.7:float型数据的有效位数
#include
int main()
{
float a
;
a
=10000/3.0;
printf("%f\n",a
);
return 0;
}
运行结果:

例3.8:先后输出BOY三个字符
#include
int main()
{
char a
='B',b
='O',c
='Y';
putchar(a
);
putchar(b
);
putchar(c
);
putchar('\n');
return 0;
}
运行结果:

例3.9:从键盘输入BOY三个字符,然后把他们输出至屏幕
#include
int main()
{
char a
,b
,c
;
a
=getchar();
b
=getchar();
c
=getchar();
putchar(a
);
putchar(b
);
putchar(c
);
putchar('\n');
return 0;
}
运行结果:

例3.10:从键盘输入一个大写字母,在显示器上显示对应的小写字母
#include
int main()
{
char c1
,c2
;
c1
=getchar();
c2
=c1
+32;
putchar(c2
);
putchar('\n');
return 0;
}
运行结果;

第四章 选择结构程序设计
例4.1:输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是上述情况,输出“other”
#include
int main()
{
char word
;
scanf("%c",&word
);
if(word
>=65&&word
printf("大写为:%c\n",word
-32);
}
else if(word
==32) //判断如果所输入的字符所对应的ASCII值等于32,输出space
{
printf("space\n");
}
else //判断如果所输入的字符所对应的ASCII值不满足上述条件,输出other
{
printf("other\n");
}
return 0;
}
运行结果:



例4.7:运输公司对用户计算运输费用。路程越远,运费越低。标准如下:
s
case 0:d=0;break;
case 1:d=2;break;
case 2:
case 3:d=5;break;
case 4:
case 5:
case 6:
case 7:d=8;break;
case 8:
case 9:
case 10:
case 11:d=10;break;
case 12:d=15;break;
}
f=p*w*s*(1-d/100);
printf("freight=%10.2f\n",f);
return 0;
}
运行结果:

例4.8:求ax^2++bx+c=0方程的解
#include
#include
int main()
{
double a
,b
,c
,disc
,x1
,x2
,realpart
,imagpart
;
scanf("%lf,%lf,%lf",&a
,&b
,&c
);
printf("The e");
if(fabs(a
)
x1
=(-b
+sqrt(disc
))/(2*a
);
x2
=(-b
-sqrt(disc
))/(2*a
);
printf("has distinct real roots:%8.4fand%8.4f\n",x1
,x2
);
}
else
{
realpart
=-b
/(2*a
); //realpart是复根的实部
imagpart
=sqrt(-disc
)/(2*a
); //imagpart是复根的虚部
printf("has complex roots:\n");
printf("%8.4f+%8.4fi\n",realpart
,imagpart
); //输出一个复数
printf("%8.4f-%8.4fi\n",realpart
,imagpart
); //输出另一个复数
}
}
return 0;
}
运行结果:



例4.9:用switch语句处理菜单命令
#include
int main()
{
void action1(int,int),action2(int,int);
char ch
;
int a
=15,b
=23;
ch
=getchar();
switch(ch
)
{
case 'a':
case'A':action1(a
,b
);break;
case'b':
case'B':action2(a
,b
);break;
default:putchar('\a');
}
return 0;
}
void action1(int x
,int y
)
{
printf("x+y=%d\n",x
+y
);
}
void action2(int x
,int y
)
{
printf("x*y=%d\n",x
*y
);
}
运行结果:


第五章 循环结构程序设计
例5.1:求2+4+6+8+…+98+100
#include
int main()
{
int i
,s
=0;
for(i
=2;i
int i
=1,sum
=0;
while(i
int i
,sum
=0;
printf("plesae enter i,i=?");
scanf("%d",&i
);
while(i
float amount
,aver
,total
;
int i
;
for(i
=1,total
=0;i
int n
;
for(n
=100;n
int i
,j
,n
=0;
for(i
=1;i
int sign
=1;
double pi
=0.0,n
=1.0,term
=1.0;
while(fabs(term
)>=1e-6)
{
pi
=pi
+term
;
n
=n
+2;
sign
=-sign
;
term
=sign
/n
;
}
pi
=pi
*4;
printf("pi=%10.8f\n",pi
);
return 0;
}
运行结果:

例5.8:求Fibonacci(斐波那契)数列的前40个数
#include
int main()
{
int f1
=1,f2
=1;
int i
;
for(i
=1;i
int i
,n
;
printf("please enter a integer number,n=?");
scanf("%d",&n
);
for(i
=2;i
k
=sqrt(n
);
for(i
=2;i
=k
+1)
{printf("%d ",n
);
m
=m
+1;
}
if(m
%10==0) printf("\n");
}
printf("\n");
return 0;
}
运行结果;

例5.11:译密码
#include
int main()
{
char c;
c=getchar();
while(c!='\n')
{
if((c>='a'&&c='A'&&c='W'&&c='w'&&c
a
[i
]=i
;
}
for(i
=1;i
int a
[20]={1,1}; //定义一个数组a并为前两项赋值为1,1
int i
;
for(i
=2;i
if(i
%5==0) printf("\n");
printf("%12d",a
[i
]);
}
printf("\n");
return 0;
}
运行结果;

例6.3:有10个地区的面积,要求对他们按由小到大的顺序排列(冒泡排序)
#include
int main()
{
int a
[10]; //定义一个数组a用来储存数组
int i
,j
,t
; //定义三个变量,i,j用来循环,t用来交换
printf("input 10 numbers :");
for(i
=0;i
for(i
=0;i
t
=a
[i
];
a
[i
]=a
[i
+1];
a
[i
+1]=t
;
} //此循环为了把最大的数值移动到最后一位并减少一次循环,下次循环最大的那个数不在参与
}
}
printf("the sorted numbers :");
for(i
=0;i
int a
[2][3]={{1,2,3},{4,5,6}};
int b
[3][2],i
,j
;
printf("array a:\n");
for(i
=0;i
printf("%5d",a
[i
][j
]);
b
[j
][i
]=a
[i
][j
];
}
printf("\n");
}
printf("array b:\n");
for(i
=0;i
printf("%5d",b
[i
][j
]);
}
printf("\n");
}
return 0;
}
运行结果;

例6.5:有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号
#include
int main()
{
int i
, j
;
int max
, row
, colum
;
int a
[3][4] = { { 1, 2, 3, 4 }, { 9, 8, 7, 6 }, { -10, 10, -5, 2 } };
max
= a
[0][0];
for (i
= 0; i
char c
[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};
int i
;
for(i
=0;i
{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
int i
,j
;
for(i
=0;i
char string
[81];
int i
,count
=0,word
=0;
char c
;
gets(string
);//输入一个字符串给字符数组string
for (i
= 0;(c
=string
[i
])!='\0'; i
++)
{
if (c
== ' ')//如果是空格字符,使word置0
{
word
= 0;
}
else if (word
== 0)//如果不是空格字符,且word原来的值为0,使word置1
{
word
= 1;
count
++;
}
}
printf("There are %d words in this line.\n",count
);
return 0;
}
运行结果:

例6.9:有3个字符串,要求找出其中“最大”者
#include
#include
int main()
{
char str
[3][20];
char string
[20];
int i
;
for(i
=0;i
0)
strcpy(string
,str
[0]);
else
strcpy(string
,str
[1]);
if(strcmp(str
[2],string
)>0)
strcpy(string
,str
[2]);
printf("\nthe largest string is:\n%s\n",string
);
return 0;
}
运行结果:
第七章 用函数实现模块化程序设计
例7.1:输出以下结果,用函数调用实现

#include
int main()
{
void print_star(); //声明 print_star 函数
void print_message(); //声明 print_message 函数
void print_star(); //声明 print_star 函数
print_star(); //调用 print_star 函数
print_message(); //调用 print_message 函数
print_star(); //调用 print_star 函数
return 0;
}
void print_star() //定义 print_star 函数
{
printf("******************\n"); //输出一行 * 号
}
void print_message() //定义 print_message 函数
{
printf(" How do you do!\n"); //输出一行文字信息
}
运行结果:
例7.2:输入两个函数。要求输出其中值较大者。要求用函数找到大数
int max(int x
,int y
)
{
int z
;
z
=x
>y
?x
:y
;
return(z
);
}
#include
int main()
{
int max(int x
,int y
);
int a
,b
,c
;
printf("please enter two interger numbers:");
scanf("%d,%d",&a
,&b
);
c
=max(a
,b
);
printf("max is %d\n",c
);
return 0;
}
运行结果:

例7.3:将7.2中的max函数定义的变量z改为float型
int main()
{
int max(float x,float y);
float a,b;
int c;
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("max is %d\n",c);
return 0;
}
int max(float x,float y)
{
float z;
z=x>y?x:y;
return(z);
}
运行结果:

例7.4:输入两个实数,用一个函数求出他们之和
#include
int main()
{
float add(float x
,float y
);
float a
,b
,c
;
printf("Please enter a and b:");
scanf("%f,%f",&a
,&b
);
c
=add(a
,b
);
printf("sum is %f\n",c
);
return 0;
}
float add(float x
,float y
)
{
float z
;
z
=x
+y
;
return(z
);
}
运行结果: