c语言上机练习.docx

上传人:b****7 文档编号:8697174 上传时间:2023-02-01 格式:DOCX 页数:38 大小:35.54KB
下载 相关 举报
c语言上机练习.docx_第1页
第1页 / 共38页
c语言上机练习.docx_第2页
第2页 / 共38页
c语言上机练习.docx_第3页
第3页 / 共38页
c语言上机练习.docx_第4页
第4页 / 共38页
c语言上机练习.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

c语言上机练习.docx

《c语言上机练习.docx》由会员分享,可在线阅读,更多相关《c语言上机练习.docx(38页珍藏版)》请在冰豆网上搜索。

c语言上机练习.docx

c语言上机练习

第一次上机练习(首次)

1.阅读以下程序,说出其功能和运算结果(输入5↙)。

#include

intmain()

{

intn;

intfactorial(intn);

scanf("%d",&n);

printf("%d\n",factorial(n));

return0;

}

intfactorial(intn)

{

inti,fact=1;

for(i=1;i<=n;i++)

fact=fact*i;

returnfact;

}

答案:

120求n的阶乘。

2.改正下列程序中的错误,在屏幕上显示“WelcometoYou!

”。

#include

intmian()

{

printf("WelcometoYou!

\n")

return0;

}

答案:

2行main

4行末尾少分号

3.编写程序在屏幕上显示以下内容:

Programmingisfun.

AndProgramminginCisevenmorefun!

答案:

#include

intmain()

{

printf("Programmingisfun.\nAndProgramminginCisevenmorefun!

\n");

return0;

}

4.编写程序输出以下图案:

****

***

**

*

答案:

#include

voidmain()

{

printf("****\n");

printf("***\n");

printf("**\n");

printf("*\n");

}

5.编写程序,计算并在屏幕上显示10~20的平方值。

答案:

#include

voidmain()

{

inti;

for(i=10;i<=20;i++)

printf("%d的平方值为%d\n",i,i*i);

}

将以上作业上传至ftp:

//10.4.4.126/

第二次上机练习(顺序)

1.假设m是一个三位数,则写出将m的个位,十位,百位反序而成的一个三位数(例如:

123反序为321,个位数不等于0)的程序。

答案:

#include

voidmain()

{inta,b,c,m,n;

printf("请输入m:

\n");

scanf("%d",&m);

a=m/100;

b=(m-a*100)/10;

c=m%10;

n=c*100+b*10+a;

printf("%d的反序数为%d\n",m,n);

}

2.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=‘a’,c2=’b’。

想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

a=3b=4c=5

x=1.200000,y=2.400000,z=-3.600000

x+y=3.60y+z=-1.20z+x=-2.40

u=51274n=128765

c1=’a’or97(ASCII)

c2=’b’or98(ASCII)

答案:

#include

voidmain()

{inta=3,b=4,c=5;

floatx=1.2,y=2.4,z=-3.6;

unsignedu=51274;

longn=128765;

charc1='a',c2='b';

printf("a=%2db=%2dc=%2d\n",a,b,c);

printf("x=%f,y=%f,z=%f\n",x,y,z);

printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);

printf("u=%6un=%7ld\n",u,n);

printf("c1='%c'or%d(ASCII)\n",c1,c1);

printf("c2='%c'or%d(ASCII)\n",c2,c2);

}

3.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。

用scanf输入数据,输出计算结果;输出时要求有文字说明,取小数点后2位数字,请编写程序。

答案:

#include

voidmain()

{

floatr,h,s1,s2,s3,s4,s5;

scanf("%f",&r);

scanf("%f",&h);

s1=2*r*3.14;

s2=r*r*3.14;

s3=4*s2;

s4=4/3.*s2*r;

s5=s2*h;

printf("圆周长s1=%.2f\n",s1);

printf("圆面积s2=%.2f\n",s2);

printf("圆球表面积s3=%.2f\n",s3);

printf("圆球体积s4=%.2f\n",s4);

printf("圆柱体积s5=%.2f\n",s5);

}

4.编程序:

用getchar函数读入两个字符给c1,c2,然后分别用putchar和printf函数输出这两个字符。

并思考以下问题:

(1)变量c1,c2应定义为字符型或整型?

或两者皆可?

(2)要求输出C1和C2值的ASCII码,应如何处理?

用putchar函数还是printf函数?

(3)整型变量与字符型变量是否在任何情况下都可以互相替代?

如:

charc1,c2与intc1,c2

是否无条件地等价?

答案:

#include

voidmain()

{

charc1,c2;

c1=getchar();

c2=getchar();

putchar(c1);

putchar(c2);

printf("c1=%c\n",c1);

printf("c2=%c\n",c2);

}

第三次上机练习(if语句)

1.若输入4,程序运行结果为【1】,若输入-4,运行结果为【2】,若输入10,运行结果为【3】。

#include

main()

{intx,y;

scanf("%d",&x);

if(x<1)

{y=x;

printf("x=%d,y=x=%d\n",x,y);

}

elseif(x<10)

{y=2*x-1;

printf("x=%d,y=2*x-1=%d\n",x,y);

}

else

{y=3*x-11;

printf("x=%d,y=3*x-11=%d\n",x,y);

}

}

答案:

【1】x=4,y=2*x-1=7

【2】x=-4,y=x=-4

【3】x=10,y=3*x-11=19

2.当输入19,2,21时下列程序运行的结果是( )。

#include

main()

{inta,b,c,max;

printf("pleasescanthreenumbera,b,c:

\n");

scanf("%d,%d,%d",&a,&b,&c);

max=a;

if(max

if(max

printf("maxis:

%d",max);

}

答案:

maxis:

21

3.摊论个卖西瓜,以西瓜的重量论价。

10斤以上的每斤0.3元,8斤以上的每斤0.4元,6斤以上的每斤0.5元,4斤以上的每斤0.7元,4斤以下的每斤0.8元,从键盘输入西瓜的重量和顾客所付钱数,输出应付款和应找钱数。

答案:

#include

voidmain()

{floatw,pay,total,balance,price;

printf("请输入西瓜的重量:

");scanf("%f",&w);

if(w>=10)price=0.3;

elseif(w>=8)price=0.4;

elseif(w>=6)price=0.5;

elseif(w>=4)price=0.7;

elseprice=0.8;

total=price*w;

printf("应付款%.2f,请输入实付款:

",total);

scanf("%f",&pay);printf("找零:

%.2f元\n",pay-total);

}

4.根据输入的三角形的三边,判断是否能组成三角形,若可以则输出它的面积和三角形的类型(仅区分直角三角形和一般三角形,构成三角形的充要条件是:

任意两边之和大于第三边或两边之差的绝对值小于第三边)。

答案:

#include

#include

voidmain()

{inta,b,c;floatp,s;

printf("请输入三角形的三边长a,b,c:

\n");

scanf("%d,%d,%d",&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a)

{

printf("该三角形为:

");

if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)

printf("直角三角形\n");

elseprintf("普通三角形\n");

p=(a+b+c)/.2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

printf("其面积s=%.2f\n",s);

}

elseprintf("不能构成三角形");

}

第四次上机练习(switch语句)

1.当运行以下程序时,从键盘键入China#代表回车),则下面程序的运行结果是    。

#include

voidmain()

{

intv1=0,v2=0;charch;

for(;(ch=getchar())!

=‘#’;)

switch(ch)

{

case‘a’:

case‘h’:

default:

v1++;

case‘o’:

v2++;

}

printf(“%d,%d\n”,v1,v2);

}

答案:

5,5

2.编写程序完成任意两个数的+,-,*,/运算,要求从键盘输入四个运算符之一和任意两个数,输出运算结果。

答案:

#include

voidmain()

{

floatv1,v2,v3;charch;

scanf("%f%f%c",&v1,&v2,&ch);

switch(ch)

{

case'+':

v3=v1+v2;break;

case'-':

v3=v1-v2;break;

case'*':

v3=v1*v2;break;

case'/':

v3=v1/v2;break;

}

printf("%f\n",v3);

}

3.给出一百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。

90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。

答案:

#include

voidmain()

{

intv1;charch;

scanf("%d",&v1);

switch(v1/10)

{

case10:

case9:

ch='A';break;

case8:

ch='B';break;

case7:

ch='C';break;

case6:

ch='D';break;

default:

ch='E';

}

printf("%c\n",ch);

}

4.(选作题)给定一个日期,输出这个日期是该年的第几天(输入的数据格式为YYYYMMDD,确保输入的数据有效)。

答案:

#include

voidmain()

{longdate;

inti,num,days=0,year,month,day;

printf("请输入日期,格式为YYYYMMDD:

\n");

scanf("%ld",&date);

year=date/10000;month=(date-10000*year)/100;day=date%100;

for(i=1;i

{switch(i)

{case1:

case3:

case5:

case7:

case8:

case10:

case12:

num=31;break;

case4:

case6:

case9:

case11:

num=30;break;

case2:

if((year%4==0&&year%100!

=0)||year%400==0)num=29;elsenum=28;

}

days=days+num;

}

days=days+day;

printf("%d年%d月%d日是该年的第%d天。

\n",year,month,day,days);

}

第五次上机练习(循环)

1.下面程序的运行结果是    。

#include

voidmain()

{inti,k=0;

for(i=1;;i++)

{k++;

while(k

{k++;

if(k%3==0)gotoloop;}

}

loop:

printf(“%d,%d”,i,k);

}

答案:

2,3

2.下面程序的运行结果是    。

#include

voidmain()

{inti,j,k=19;

while(i=k-1)

{k-=3;

if(k%5==0){i++;continue;}

elseif(k<5)break;

i++;

}

printf(“i=%d,k=%d\n”,i,k);

}

答案:

i=6,k=4

3.下列程序的输出为    。

#include

voidmain()

{inti,j,k=0,m=0;

for(i=0;i<2;i++)

{for(j=0;j<3;j++)k++;k-=j;}

m=i+j;

printf("k=%d,m=%d\n",k,m);

}

答案:

k=0,m=5

4.找出1~99之间满足以下条件的数:

该数的平方对于10的余数等于该数本身,或者该数的平方对于100的余数等于该数本身。

答案:

#include

voidmain()

{inti;

for(i=1;i<100;i++)

if(i*i%10==i||i*i%100==i)

printf("i=%d\n",i);

}

5.求100~499之间的所有水仙花数,即各位数字的立方和恰好等于该数本身的数。

答案:

#include

voidmain()

{inti,a,b,c;

for(i=100;i<500;i++)

{a=i/100;

b=(i-a*100)/10;

c=i%10;

if(i==a*a*a+b*b*b+c*c*c)

printf("i=%d\n",i);

}

}

6.编写一个程序,输出菱形图案,第一行为一个字母A,第二行为三个字母B,依此类推,第n行为2n-1个相应的字母,以后每行字母个数递减。

n由键盘输入。

答案:

#include

voidmain()

{intn,i,j,space,star;charch='A';

scanf("%d",&n);

for(i=1;i<=2*n-1;i++)

{if(i<=n){space=n-i;star=2*i-1;}

else{space=i-n;star=2*n-1-(i-n)*2;}

for(j=1;j<=space;j++)

printf("");

for(j=1;j<=star;j++)

printf("%c",ch);

printf("\n");

ch++;

}

}

第六次上机练习(一维数组)

1.下面程序的运行结果是    。

#include

voidmain()

{

intn[3],i,j,k;

for(i=0;i<3;i++)n[i]=0;

k=2;

for(i=0;i

for(j=0;j

n[j]=n[i]+1;

printf(“%d\n”,n[1]);

}

答案:

3

2.阅读程序,写出程序运行结果。

#include

#define MAX 100

voidmain()

  { int f[MAX],i,j,k=2,m=5;

for(i=0;i<=m;i++)   

f[i]=1;  

f[k-1]=2;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++)  

f[i]+=f[j];

 printf("%d%5d%5d\n",k,m,f[m]);

}

答案:

2520

3.从键盘输入若干整数(数据个数应少于50),其值在0至4的范围内,用-1作为输入结束的标志。

统计每个整数的个数。

试编程。

答案:

#include

voidmain()

{intn[5]={0},x,i;

scanf("%d",&x);

while(x!

=-1)

{n[x]++;

scanf("%d",&x);

}

for(i=0;i<5;i++)

printf("%d\n",n[i]);

}

4.设计一个程序,将上学期本队学员高数课程的考试成绩排序,并给出每一个学员的名次。

(如果有并列第一,则取消第二名,以此类推)

答案:

#include

#defineMAX100

voidmain()

{ints[MAX],num[MAX],sort[MAX],i,j,n,t;

scanf("%d",&n);

for(i=0;i

{num[i]=sort[i]=i+1;

scanf("%d",&s[i]);

}

for(i=0;i

for(j=i+1;j

if(s[i]

{

t=s[i];s[i]=s[j];s[j]=t;

t=num[i];num[i]=num[j];num[j]=t;

}

for(i=1;i

if(s[i]==s[i-1])sort[i]=sort[i-1];

for(i=0;i

printf("第%d名,学号:

%d,成绩:

%d\n",sort[i],num[i],s[i]);

}

第七次上机练习(二维数组)

1.下面程序可求出矩阵a的两条对角线上的元素之和。

请填空。

#include

voidmain()

{

inta[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(i==j)sum1=sum1+a[i][j];

for(i=0;i<3;i++)

for(【1】;【2】;j--)

if((i+j)==2)sum2=sum2+a[i][j];

printf(“sum1=%d,sum2=%d\n”,sum1,sum2);

}

答案:

【1】j=2

【2】j>=0

2.已知以下矩阵:

×

下面程序的功能是求出Y1,Y2,Y3,Y4的值。

请填空。

#include

voidmain()

{

floata[4][4]={{1,-0.2,0,0},{-0.8,1,-0.2,-0.2},

{0,-0.8,1,-0.2},{0,-0.8,-0.8,1}};

floatx[4]={1,1,1,1},y[4];

inti,j,k;

for(i=0;i<4;i++)

{

y[i]=0;

for(j=0;j<4;j++)

【1】

}

for(k=0;k<4;k++)

printf(“\nY[%d]=%-6.2f”,k+1,【2】);

}

答案:

【1】y[i]+=a[i][j]*x[j];

【2】y[k]

3.编程求具有4行4列数据的二维数组每一列元素之和并将其放入该列的第五行上。

输出第五行元素。

答案:

#include

voidmain()

{

floata[5][4]={0};

inti,j,k;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

scanf("%f",&a[i][j]);

for(k=0;k<4;k++)

for(i=0;i<4;i++)

a[4][k]+=a[i][k];

for(j=0;j<4;j++)

printf("\na[5][%d]=%-6.2f",j+1,a[4][j]);

}

4.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。

也可以没有鞍点。

(用常规算法做的时候,要求数据不能相同)

答案:

#include

voidmain()

{

floata[4][4]={13,2,3,1,5,6,7,8,9,10,11,12,4,14,15,16};

inti,j,k,flag=0,row,max;

for(i=0;i<4;i++)

{

max=a[i][0];row=0;

for(j=0;j<4;j++)

if(max

for(k=0;k<4;k++)

if(max>a[k][row])break;

if(k==4){flag=1;printf("a[%d][%d]=%d是鞍点\n",i+1,row+1,max);}

}

if(flag==0)printf("无鞍点");

}

第八次上机练习(字符数组)

1.运行以下程序时,如果从键盘上输入:

ab<回车>

c<回车>

def<回车>

则输出结果为(答案:

C)。

#include"stdio.h"

#de

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1