1、C语言程序设计案例教程(含实验)
设计性实验的程序参考答案
实验项目一 C程序的编辑、编译、连接和运行
题目:编写程序,要求屏幕上显示如下信息:
***********************
This is a C program .
***********************
程序:
#include
2、a C programn .\n”); printf(“***********************\n”); } 实验项目二 数据类型、运算符、表达式 题目 (1)程序填空:输入1 个实数x,计算并输出其平方根(保留1 位小数)。 填空 1. double x,root; 2. root=sqrt(x); (2)输入一个大写英文字母,输出相应的小写字母。 填空 1. ch=ch+32; 实验项目三 顺序结构程序设计 题目 (1)编写程序,输入三角形的三边长a、b、c,求三角形面积area。 程序代码: #in
3、clude
4、积、圆球表面积、圆球体积、圆柱体积。
程序代码:
#include
5、积为:sq=%6.2f\n",sq);
printf("圆球体积为:vq=%6.2f\n",vq) ;
printf("圆柱体积为:vz=%6.2\n ",vz);
(3)分别用getchar函数和scanf函数读入2个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
程序代码:
#include
6、char(c1);
putchar(c2);
printf(" 请用scanf函数输入两个字符 c1,c2:");
scanf("%c %c\n",&c1,&c2);
printf("用printf语句输出结果为:");
printf("c1=%c c2=%c\n",c1,c2);
}
实验项目四 分支结构程序设计
题目
(1)程序填空。输入四个整数,输出其中的最小值。
填空:
min=a;
if(b 7、min=d;
(2)计算如下函数Y的值。
Y=
{
X (X<1)
2X-1 (1≤X<10)
3X-11 (X>=10)
程序代码:
#include 8、D、E五个等级。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。要求分别用if语句和switch语句实现。
程序代码:
① 用 if-else 语句实现:
#include 9、e if(g>60) printf("D");
else printf("E");
}
② 用 switch 语句实现:
#include 10、ntf("D");
default: printf("E");
}
}
(4)编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。
奖金 税率
a<500 0.00
500≤a<1000 0.05
1000≤a<2000 0.08
2000≤a<5000 0.10
5000≤a 0.15
提示:a=奖金数 rate=税率值 tax=应缴税款 profit=实得奖金数。
计算公式: tax = a* rate , profit= a – tax
程序代 11、码:
#include 12、fit);
}
实验项目五 循环结构程序设计
题目
(1)猴子吃桃子。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第2天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天早上想再吃时,只剩下一个桃子。问第一天共摘多少个桃子?(要求使用While循环语句实现)。
算法提示
设 total:桃子的总数
x1 :前一天的桃子数
x2 : 后一天的桃子数
day: 天数
计算公式: x1=(x2+1)*2 第1天的桃子数是第2天桃子数加1后的2倍。
程序代码:
13、include 14、r(n=201;n<300;n+=2)
{ flag=1;
for(m=2;m<=n/2;m++)
if(n/m==0)
{ flag=0;
break;
}
if(flag==0)
continue;
printf("%d ",n);
}
printf("\n");
}
(3)程序填空
① 求1-1/2+1/3-1/4+⋯⋯,输入1 个正整数 n(n<=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n 项和(保留3 位小数)。
程序代码:
#include 15、)
{
int i, n, flag;
float sum;
scanf("%d", &n);
/*----以下为所填语句------*/
sum=0;
flag=1;
for(i=1;i<=n;i++)
{ sum+=flag*1.0/i;
flag=-flag;
}
printf("%.3f\n", sum);
}
② 统计字符。输入一个正整数repeat (0 16、 )
{
int ri, repeat;
int blank, digit, letter, other;
char c;
scanf("%d", &repeat);
getchar();
for(ri=1; ri<=repeat; ri++)
{
c = getchar();
/*----以下为所填语句------*/
blank=digit=letter=other=0;
while(c!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++;
else 17、if(c>='0'&&c<='9') digit++;
else if(c==' ') blank++;
else other++;
c = getchar();
}
printf("letter=%d, blank=%d, digit=%d, other=%d\n", letter, blank, digit, other);
}
}
③ 找最大值。输入一个正整数repeat (0 18、中的最大值。
例:输入
3 (repeat=3)
12 6 1 90
10 40 30 20
-1 -3 -4 -5
输出
max is 90 (12 6 1 90 中的最大值是90)
max is 40 (10 40 30 20 中的最大值是40)
max is -1 (-1 -3 -4 -5 中的最大值是-1)
程序代码:
#include 19、为所填语句------*/
for(ri=1; ri<=repeat; ri++)
{
scanf("%d%d%d%d", &a, &b, &c, &d);
/*----以下为所填语句------*/
max=a;
if(max
void main()
{
int i,j;
for(i=1;i<9;i++);
for(j= 20、1;j<=i;j++);
{
if(i==j) printf("\n");
printf("%d*%d= %d ",i, j, i*j);
}
}
实验项目六 函数及其应用
题目
(1) 程序填空。计算代数多项式1.1+2.2x+3.3x2+4.4x3+5.5x4的值。
例: 输入
1.5
输出
54.52
程序代码:
#include 21、 y=f(x);
printf("%.2f\n",y);
}
/*----以下为所填语句------*/
float f(float x)
{
float sum=0,t=1;
int i;
for(i=1;i<=5;i++){
sum+=(i+1.0*i/10)*t;
t*=x;
}
return sum;
}
(2)编写程序,求 s=1!+2!+3!+....+10! 之和。要求定义递归函数fact(n)求n!,程序的输出形式为:1!+2!+3!+4+5!+6!+7!+8!+9!+10! = s,其中,s为求和值。
实验提示
求n!的递归公式 22、为:
1 (n=0、n=1)
fact(n)=
fact(n)=n*fact(n-1) (n>1)
注意:s 和fas(n)均为长整型。!
程序代码:
#include 23、
if (x==0||x==1)
return(1);
else
return(x*fas(x-1));
}
(3)编写程序,N名裁判给某歌手打分(假定分数都为整数)。评分原则是去掉一个最高分,去掉一个最低分,剩下的分数取平均值为歌手的最终得分。裁判给分的范围是:
60 <= 分数〈=100,裁判人数N=10。要求:每个裁判的分数由键盘输入。
实验提示
定义两个函数:
l max():返回两个数中较大的值;
l min():返回两个数中较小的值。
程序代码:
#include 24、main()
{ int i,x,sum;
sum=0;
for(i=1;i<=10;i++)
{
LOOP: scanf(“%d”,&x) ;
if(x<60||x>100)
goto LOOP;
m=max(x,m);
n= min(x,n);
sum=sum+x;
}
print(“%d”,(sum-m-n)/8);
}
int max (int x)
{
if (x>m) m=x;
return(m);
}
int min (int x)
{
if (x 25、urn(n);
}
(4)编写程序,用递归法将一个十进制整数转换成二进制数。
程序代码:
#include 26、七 数组及其应用
题目
(1)程序填空。
① 求n个数中较大值及其下标。输入一个正整数n (1 27、以下为所填语句------*/
index=0;
for(i=1; i 28、emp;
int a[10];
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%d", &n);
for(i=0; i 29、 找鞍点(选作)。
输入 1 个正整数 n(1≤n≤6)和n 阶方阵a 中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设a 最多有1 个鞍点)。
程序代码:
#include "stdio.h"
void main( )
{
int ri,repeat;
int flag,i,j,k,row,col,n,a[6][6];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for(i=0; i 30、 j 31、d\n", row, col,a[row][col]);
break;
}
}
if(!flag)
printf("NO\n");
}
}
(2)有10个数存放在一个数组中,先对该10个数从大到小排序,然后输入一个数,要求找出该数是数组中第几个元素的值,若找不到,输出未找到信息。
实验提示
① 用冒泡或者选择排序法对数组中的10个数进行排序;
② 用折半查找的方法在数组中查找指定的数。
程序代码:
#include 32、sort(int a[N]) /* 排序 */
{ int i,j,min,temp;
for(i=1;i<=9;i++)
{ min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j])
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
void main()
{ int i,j,x,a[N];
void badd( int,int[],int);
printf("Ente 33、r data:\n");
for(i=1;i<=10;i++)
{ printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf(" \n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf(" \n");
sort(a);
printf("\n The sorted numbers: \n");
for(i=1;i<=10;i++)
printf("%5d",a[i]); printf("\n");
scanf("%d",&x);
badd(x,a 34、N); /* zheban find x */
}
void badd (int x,int a[] ,int n)
{ int mid,top,bot;
top=0;
bot=n-1;
while(top<=bot)
{ mid=(top+bot)/2;
if(x==a[mid])
{ printf("\n%d=a[%3d ]\n",x,mid-1);
exit(0);
}
else if( x>mid)
top=mid+1;
else bot=mid-1;
35、 }
printf("\n can`t find %d ! ",x);
}
(3)/**/统计6个学生各4门功课的成绩。要求程序具有如下功能:
① 每个学生的4门功课的成绩从键盘读入;
② 计算每个学生的总分和平均分;
③ 按平均成绩进行排序,输出排序后的成绩单(四门功课的成绩和均分),给出名次。
如先输入学生4门课成绩:
1: 67,72,65,80
2: 75,82,94,95
3: 70,74,80,76
4:......
程序代码:
#include 36、
for(i=1;i<=6;i++) a[i][0]=i; /*输入序号*/
for(j=1;j<=6;j++)
{ t=0;
for(k=1;k<=4;k++)
{ scanf("%d",&a[j][k]); /*输入成绩*/
t=t+a[j][k]; /*计算总成绩*/
}
a[j][6]=t/4; /*计算平均成绩存入第6列*/
a[j][5]=t; /*总平均成绩存入第5列*/
printf("\n");
}
for(j=1;j<=6;j++)
{ f
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818