《C语言》实验报告标准答案.docx
《《C语言》实验报告标准答案.docx》由会员分享,可在线阅读,更多相关《《C语言》实验报告标准答案.docx(15页珍藏版)》请在冰豆网上搜索。
《C语言》实验报告标准答案
《C语言》实验报告答案
————————————————————————————————作者:
————————————————————————————————日期:
计算机基础实验报告(C程序)
学号
班级
姓名
指导教师
金玲玲
实验题目
实验答案
实验内容
编程题:
1、输入一个整数,输出其绝对值。
#include
voidmain()
{
intdata;
printf(“inputthedata:
”);
scanf(“%d”,&data);
if(data>=0)
printf(“%d”,data);
else
printf(“%d”,-data);
}
2、编程题:
输入一个整数,判断该数是奇数还是偶数。
#include
voidmain()
{
intdata;
printf(“inputthedata:
”);
scanf(“%d”,&data);
if(data%2==0)
printf(“%d是偶数”,data);
else
printf(“%d是奇数”,-data);
}
3、编程题:
输入某学生的C语言成绩,判定并输出是否及格。
#include
voidmain()
{
doublegrade;
printf(“inputthec’sgrade:
”);
scanf(“%lf”,&grade);
if(data>=60)
printf(“pass”);
else
printf(“notpass”);
}
4.编写一个程序,要求输入一个字符并判断它是字母字符、数字字符、还是其他字符。
(本例需画流程图)
#include
intmain()
{
charch;
printf("Enterancharacter:
");
scanf("%c",&ch);
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
printf("%cisanalpha\n",ch);
else
if(ch>='0'&&ch<='9')
printf("%cisanumeric\n",ch);
else
printf("%cisothercharacter\n",ch);
return0;
}
5.某单位马上要加工资,增加金额取决于工龄和现工资两个因素:
对于工龄大于等于20年的,如果现工资高于2000,加200元,否则加180元;对于工龄小于20年的,如果现工资高于1500,加150元,否则加120元。
工龄和现工资从键盘输入,编程求加工资后的员工工资。
#include
intmain()
{
doublesalary;
intyear;
printf("输入工龄和工资:
");
scanf("%d%lf",&year,&salary);
if(year>=20)
if(salary>2000)
salary=salary+200;
else
salary=salary+180;
else
if(salary>1500)
salary=salary+150;
else
salary=salary+120;
printf("afteraltered:
%.2f",salary);
return0;
}
6.水果店有苹果,一级5.50元/kg,二级4.20元/kg,三级3.00元/kg,四级2.50元/kg,输入苹果的等级、数量,显示出苹果的等级、数量、应付款数。
#include
intmain()
{
doubleprice,total,num;
intlevel;
printf("输入苹果等级和数量:
");
scanf("%d%lf",&level,&num);
switch(level)
{case1:
price=5.5;break;
case2:
price=4.2;break;
case3:
price=3.0;break;
case4:
price=2.5;break;
}
total=price*num;
printf("%fkg%dlevelapple:
%fyuan.",num,level,total);
return0;
}
7.在屏幕上显示一张如下所示的时间表:
*****Time*****
1morning
2afternoon
3night
Pleaseenteryourchoice:
操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,如选择1时显示"Goodmorning",选择2时显示"Goodafternoon",选择3时显示"Goodnight",对于其他选择显示"Selectionerror!
",用switch语句编程实现。
#include
main()
{
intchoice;
printf("*****Time*****\n");
printf(“1morning\n”);
printf(“2afternoon\n”);
printf(“3night\n”);
printf(“pleaseenteryourchoice\n”);
scanf("%d",&choice);
switch(choice)
{case1:
printf(“Goodmorning!
”);break;
case2:
printf(“Goodafternoon!
”);break;
case3:
printf(“Goodnight!
”);break;
default:
printf(“Selectionerror!
”);
}
}
8.用while或do...while语句实现:
输入一个正整数,计算并输出该数的各位数字之和。
如:
输入12345,其和为1+2+3+4+5。
#include
voidmain()
{intdata,s=0;
scanf(“%d”,&data);
while(data>0)
{
s=s+data%10;
data=data/10;
}
printf(“s=%d”,s);
}
9.从键盘输入若干数,求其中最大数和最小数,直到输入的数为0时结束。
(要求画此题的流程图)
#include
voidmain()
{intdata,max,min;
scanf(“%d”,&data);
max=min=data;
while(data!
=0)
{
if(data>max)max=data;
if(datascanf(“%d”,&data);
}
printf(“max=%d,min=%d”,max,min);
}
10.统计选票:
现输入选票如下:
3,1,2,1,1,3,3,2,1,2,3,3,3,2,1,1,3,2,0,4,-1
其中:
-1是结束标志;1选李,2选张,3选吴,0,4为废票,统计候选人票数。
intmain()
{intvote,l_vote=0,zh_vote=0,w_vote=0,other_vote=0;
scanf(“%d”,&vote);
for(;vote!
=-1;)
{
switch(vote)
{case1:
l_vote++;break;
case2:
zh_vote++;break;
case3:
w_vote++;break;
default:
other_vote++;
}
scanf(“%d”,&vote);
}
printf(“Li:
%d;Zhao:
%d;
Wu:
%d;Other:
%d”,l_vote,zh_vote,w_vote,other_vote);
return0;
}
11.一个灯塔有8层,共有765盏灯,其中每一层的灯数都是其相邻上层的两倍,求最底层的灯数。
#include
intmain()
{intx,s,i,k;
for(x=1;x<765/2;x++)
{s=0;
k=x;//塔顶灯数
for(i=1;i<=8;i++)
{s=s+k;k=k*2;}
if(s==765)break;
}
printf(“%d”,k/2);
return0;
}
12.求100~200间的所有素数。
#include
intmain()
{intx,y;
for(x=100;x<=200;x++)
{
for(y=2;yif(x%y==0)break;
if(y>=x)printf(“%d”,x);
}
return0;
}
13.输出100以内的所有能整除7的正整数。
#include
intmain()
{
inti;
for(i=1;i<100;i++)
{if(i%7!
=0)continue;
printf("%d\t",i);
}
return0;
}
14.输出半径为1到10的圆的面积,若面积在40到90之间则输出,否则,不输出。
#include
#definePI3.14
intmain (){
double area=0.0,r;
for(r=1;r<11;r++){
area=pI*r*r;
if (area<40) continue;
elseif (area>90) break;
printf("r=%.2f,area=%5.2f\n",r,area);
}
return0;
}
15.定义浮点型数组并初始化,求其偶数下标元素的和以及平均值
#include
#defineN10
intmain()
{doublea[N]={2.0,7.2,5.1,10.3,1.1,2.5,6.3,8,4.2,7.4},s=0,avg;
inti;
for(i=0;i<10;i+=2)
{
s+=a[i];
}
avg=s/N/2;
printf("sum=%.2f,avg=%.2f\n",s,avg);
return0;
}
16.输入10个整数,求其最大数和最小数。
#include
#defineN10
intmain()
{inta[N],i,max,min;
for(i=0;iscanf("%d",&a[i]);
max=min=a[0];
for(i=1;i{
if(a[i]>max)max=a[i];
if(a[i]}
printf("max=%d,min=%d\n",max,min);
return0;
}
17.从键盘输入10个整数,统计其中正数、零和负数的个数并输出。
#include"stdio.h"
intmain()
{intdata[10];
intneg=0,pos=0,zero=0,i;
printf(“pleaseinput10integernumbers:
\n”);
for(i=0;i<10;i++)
scanf(“%d”,&data[i]);
for(i=0,i<10,i++)
{
if(data[i]>0)
pos++;
elseif(data[i]<0)
neg++;
else
zero++;
}
printf(“Thesumofpos=%d,neg=%d,zero=%d”,pos,neg,zero);
return0;
}
18.将一个一维数组中的值按逆序存放(注意不借助其他数组实现),并要求分别输出正序和
逆序排列数据。
思路:
以中间元素为基准,对称元素相互交换
intmain()
{inti=0,j=0,t;
intarr[10];
//输入数组元素值
for(i=0;i<10;i++)
scanf(“%d”,&arr[i]);
//对称交换
for(;i<=j;i++,j++)
{t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
//输出数组元素值
printf(“afterreverse:
”);
for(i=0;i<10;i++)
scanf(“%d”,arr[i]);
return0;
}
19.分别求一个5×5矩阵的各行之和、各列之和、各对角线上的元素之和。
#include
#defineN5
voidmain()
{intarr[N][N],i,j,row[N],col[N],dig[2];//定义数组分别保存行和,列和和对角
//计算各行之和保存在row数组中
for(i=0;i{row[i]=0;
for(j=0;jrow[i]+=arr[i][j];
}
//计算各行之和保存在col数组中
for(j=0;j{col[i]=0;
for(i=0;icol[i]+=arr[i][j];
}
//计算对角线的和
for(i=0;i{dig[0]+=a[i][i];
dig[1]+=a[i][N-i-1];
}
//输出
for(i=0;iprintf(“%drowis%d”,i,row[i]);
for(i=0;iprintf(“%dcolumnis%d”,i,col[i]);
printf(“maindiagonalis%d,counterdiaonalis%d”,dig[0],dig[1]);
}
}
20.输入二维数组各元素,求一个3×4矩阵中最大的元素值,以及它的行号和列号。
#defineM3
#defineN4
main()
{
intmax,min,i,j,r,c,a[M][N];
for(i=0;ifor(j=0;jscanf(“%d”,&a[i][j]);
max=a[0][0];
for(i=0;ifor(j=0;jif(a[i][j]>max)
{max=a[i][j];
r=i;
c=j;
}
printf(“max=%d,row=%d,colum=%d\n”,max,r,c);
}
21.
若在2*8的二维数组中存放了数据,其中各行的元素构成一个整数,如第一行元素构成整数12345070。
编写程序比较两行元素构成的整数大小。
(规则:
从高位起逐个比对应位数,若每位均相等,则两数相等;若遇到第一个不相等的数字,则数字大者为大)
如:
1
2
3
4
5
0
7
0
1
2
3
6
5
1
3
2
第二行数大。
#include
#defineN8
intmain()
{inta[2][N]={{1,2,3,4,5,0,7,0},{1,2,3,6,5,1,3,2}};
intj,n=0;
for(j=0;j{if(a[0][j]==a[1][j])n++;
elseif(a[0][j]>a[1][j])
{printf(“数1>数2\n”);break;}
else{printf(“数1<数2\n”);break;}
}
if(n==8)printf(“两数相等.\n”);
return0;
}
22.输入奇数,输出图案。
其运行结果如下:
#include
#define N 50
int main()
{ int a[N][N]={0};
int n,i,j;
printf("请输入奇数");
scanf("%d",&n);
for(i=0;i{ if(i<=n/2)
{ a[i][n/2-i]=1; a[i][n/2+i]=1; } //上半部分图案
else { a[i][n-1-i+n/2]=1; a[i][i-n/2]=1; } //下半部分图案
}
for(i=0;i{for(j=0;jprintf(“%5d",a[i][j]);
printf(“\n”);
}
return 0;
}