搜档网
当前位置:搜档网 › c语言习题答案

c语言习题答案

c语言习题答案
c语言习题答案

实验一

(1)编程求37+29的值,实习VC环境。

#include

void main()

{

int a,b,sum;

a=37;

b=29;

sum=a+b;

printf("sum=%d",sum);

}

(2)从键盘输入三个整数,求出最大数并输出。

#include

void main()

{

int a,b,c,y;

int max(int x,int y);

printf("input a,b,and c:");

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

y=max(a,b);

y=max(y,c);

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

}

int max(int x,int y)

{

int z;

if(x>y) z=x;

else z=y;

return(z);

}

(3)通过上机实践,运行下列程序并分析输出结果。

A 程序代码

#include

void main()

{

char ch='a';

printf("%c对应的ASCII码是:%d\n",ch,ch);

}

程序输出结果:a对应的ASC||码是:97

B 程序代码

#include

void main()

{

int a=168;

float b=123.456;

float x=35.567,y;

printf("a=%5d\n",a);

printf("a=%-5d\n",a);

printf("b=%6.2f\n",b);

printf("b=%e\n",b);

y=(int)(x*100+0.5)/100.0;

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

}

程序输出结果:

a=168

a=168

b=123.46b=1.234560e+002

x=f,y=35.567001

C程序代码

#include

void main()

{

int a=168;

printf("十进制数%d对应的八进制数是%o\n",a,a);

printf("十进制数%d对应的十六进制数是%x\n",a,a); }

程序输出结果:

十进制数168对应的八进制数是250

十进制数168对应的十六进制数是a8

实验二

2.1顺序结构

2.1.1已知a=1.5,b=5.3,c=2.9,计算s=-4ac的结果并输出。

#include

void main()

{

float a,b,c,s;

a=1.5;

b=5.3;

c=2.9;

s=b*b-4*a*c;

printf("s的值是%f\n",s);

}

2.1.2输入某学生的三个科目的期末考试成绩,计算出该学生的成绩总分和平均分。

#include

void main()

{

int math,english,c_program;

float sum ,average;

printf("input math,english,c_program:");

scanf("%d,%d,%d",&math,&english,&c_program);

sum=math+english+c_program;

average=sum/3;

printf("sum=%.0f,average=%.5f",sum,average);

}

2.1.3输入圆的半径,计算圆的面积,设圆周率为

3.1416.

#include

int main()

{

float r,s;

printf("请输入半径:");

scanf("%f",&r);

s=3.1416*r*r;

printf("圆的面积为%.6f",s);

}

2.1.4输入一个两位数,将其个位数和十位数互换后变成一个新的数,输出这个数。

#include

int main(void)

{

int n,a,b;

printf("input n:");

scanf("%d",&n);

b=n%10;

a=n/10;

n=b*10+a;

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

return 0;

}

2.1.5输入两个数a和b,将两数的值互换后输出新值。

#include

void main()

{

int x,y,t;

scanf("%d%d",&x,&y);

t=x;

x=y;

y=t;

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

}

2.2简单分支结构

2.2.1输入两个整数,求出其中的较小值输出。

#include

int main()

{

int a,b,min;

printf("请输入 a,b:\n");

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

if (a

min=a;

else

min=b;

printf("最小值是 %d\n",min);

return 0;

}

2.2.2 输入x的值并计算分段函数y的值。

+2x x<2

Y=f(x)=

2x-1 x>=2

#include

int main(void)

{

double x,y;

scanf("%lf",&x);

if(x<2)

y=x*x+2*x;

else

y=2*x-1;

printf("%.6f",y);

return 0;

}

2.2.3 输入两个整数并判断两数是否相等,输出相应结论。

#include

int main()

{

int a,b;

printf("请输入两个整数:\n");

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

if(a==b)

printf("a等于b");

else

printf("a不等于b");

return 0;

}

2.2.4输入一个整数,若为负数,求出它的平方;若为正数,求出它的立方,并

输出结果。

#include

void main()

{

printf("请输入一个整数:");

double x,y;

scanf("%lf",&x);

if(x<0)

y=x*x;

else

y=x*x*x;

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

}

2.2.5输入三个整数,用if-else结构求出其中的最大值。提示:首先求出两个

数的较大值放在一个变量里,然后用这个变量和第三个数再进行一次比较。 #include

int main()

{

int a,b,c,max;

printf("请输入三个数");

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

if(a>b)

max=a;

else

max=b;

if(c>max)

max=c;

else

max=a;

printf("最大值为%d\n",max);

return 0;

}

2.3简单循环结构

2.3.1计算1+4+7+ (301)

#include

void main()

{

int i,sum;

sum=0;

for(i=1;i<=301;i=i+3)

sum=sum+i;

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

}

2.3.2循环输入某学生八个科目期末考试成绩,计算出该学生成绩总分和平均分。 #include

int main(void)

{

int i,a;

float sum,average;

sum=0;

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

{

scanf("%d",&a);

sum=sum+a;

}

printf("成绩总分为%f\n",sum);

printf("平均分为%f\n",sum/8);

return 0;

}

2.3.3输入n的值,计算n!

#include

int main(void)

{

int n,i,a;

a=1;

printf("请输入n的值:%d\n");

scanf("%d",&n);

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

a=a*i;

printf("积=%d\n",a);

return 0 ;

}

2.3.4显示1~10平方,输出结果如下图所示:

1*1=1

2*2=4

3*3=9

4*4=16

5*5=25

6*6=36

7*7=49

8*8=64

9*9=81

10*10=100

#include

int main(void)

{

int i,a;

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

{

a=i*i;

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

}

return 0;

}

2.3.5计算1-3/4+5/7-7/10+…的前n 项之和。

#include

void main()

{

int i,n;

float item,flag,sum;

sum=0;

flag=1;

printf("input n:");

scanf("%d",&n);

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

{

item=flag*(2*i-1)/(3*i-2);

sum=sum+item; flag=-flag;

}

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

}

实验三

3.1.1

输入一个整数x,判定是否为5的倍数。

#include

int main(void)

{

int x;

printf("x= ");

scanf("%d",&x);

if(x%5==0)

printf("能整除5");

else

printf("不能整除5");

return 0;

}

3.1.2

输入x,计算并输入下列分段函数对应的值。

-5 x<0

Y= 0<=x<=1

x/2 x>1

#include

int main(void)

{

float x,y;

printf("x= ");

scanf("%f",&x);

if(x<0)

y=-5;

else if(x>1)

y=x/2;

else

y=x*x+2;

printf("对应值为%.2f\n",y);

return 0 ;

}

3.1.3

某商场给顾客购物的折扣率如下:

购物金额<300元不打折

300<=购物金额<500元9折

500元<=购物金额7折

要求输入一个购物金额(x),输出打折率(rate)以及购物实际付款金额(x*rate)#include

int main(void)

{

int x,y;

printf("x= ");

scanf("%d",&x);

if(x<300)

{

y=x;

printf("不打折,付款%d\n",y);

}

else if(x>=300&&x<500)

{

y=0.9*x;

printf("打9折,付款%d\n",y);

}

else

{

y=0.7*x;

printf("打7折,付款%d\n",y);

}

return 0;

}

3.1.4

求解一元二次方程+b的实数解。

#include

#include

int main(void)

{

int a,b,c,d,x1,x2;

printf("a= ,b= ,c= ");

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

d=b*b-4*a*c;

if(d>0)

{

double sqrt(double d);

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf("x1=%d\n,x2=%d\n",x1,x2);

}

else if(d=0)

{

x1=(-b+sqrt(d))/(2*a);

printf("x1=x2=%d\n",x1);

}

else

printf("没有实数解");

return 0;

}

3.1.5

从键盘输入10个字符,将所有的英文字母转换为大写后输出。

#include

int main(void)

{

char i,ch;

printf("请输入");

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

{

ch=getchar();

if(ch>='a'&&ch<='z')

ch=ch-32;

putchar(ch);

}

return 0;

}

3.1.6

从键盘输入10个字符,统计其中英文字母、空格、数字字符和其他字符的个数。#include

int main(void)

{

char ch,i;

int letter,space,digiter,other;

letter=space=digiter=other=0;

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

{

ch=getchar();

if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='z'))

letter++;

else if(ch==' '||ch=='\n')

space++;

else if(ch>='0'&&ch<='9')

digiter++;

else

other++;

}

printf("letter=%d,space=%d,digiter=%d,other=%d\n",letter,space,digiter,other);

return 0;

}

3.2.1

输入一个四位整数的年份,判断是否为闰年。

#include

int main(void)

{

int x,a,b,c;

printf("输入年份:");

scanf("%d",&x);

a=x%4;

b=x%100;

c=x%400;

if((a==0 && b!=0)||(c==0))

printf("闰年");

else

printf("不是闰年");

return 0;

}

3.2.2

假设自动售货机出售4种商品,薯片、爆米花、巧克力和可乐,售价分别是每份3.0元、2.5元、4.0元和3.5元。在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过五次时,退出查询;不到五次时,用户可以选择退出。当用户输入编号1~4,显示对应商品的价格;输入0,退出查询;输入其他编号,显示价格为0。

#include

int main(void)

{

char price;

int i;

printf("请输入商品的名称:\n");

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

{

price=getchar();getchar();

switch(price)

{

case '1':printf("售价3.0元\n");break;

case '2':printf("售价2.5元\n");break;

case '3':printf("售价4.0元\n");break;

case '4':printf("售价3.5元\n");break;

case '0':printf("退出查询\n");break;

default :printf("价格为0元\n");break;

}

}

return 0;

}

3.2.3

编写一个程序输入某人的身高(cm)和体重(kg),按下式确定其体重是否为标准、过胖或过瘦。判断标准为:①标准体重=身高-110;②超过标准体重5kg为过胖;③低于标准体重5kg为过瘦。

#include

int main(void)

{

int x,y,z;

printf("请输入身高和体重:\n");

scanf("%d,%d",&x,&y);

z=x-110;

if(y-z>5)

printf("过胖");

else if(y-z<-5)

printf("过瘦");

else

printf("标准");

return 0;

}

3.2.4

编写一个程序,计算购买某物品的总金额,该物品的单价为5元/公斤,购买5公斤以上打九折,购买10公斤以上打八折,购买20公斤以上打7折,购买50公斤以上打6折,购买100公斤以上打5折。(用多分支if语句求解)

#include

int main(void)

{

float x,y;

printf("购买量\n");

scanf("%f",&x);

if(x>=5 && x<10)

y=0.9*5*x;

else if(x>=10 && x<20)

y=0.8*5*x;

else if(x>=20 && x<50)

y=0.7*5*x;

else if(x>=50 && x<100)

y=0.6*5*x;

else if(x>100)

y=0.5*5*x;

else

y=5*x;

printf("付款%.2f\n",y);

return 0;

}

3.2.5

编写一个程序,输出给定的某年某月的天数。

#include

int main(void)

{

int year,month,days,leap;

printf("年,月:");

scanf("%d,%d",&year,&month);

switch(month)

{

case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;

break;

case 4: case 6: case 9: case 11:

days=30;

break;

case 2: if(year%4==0 && year%100!=0 || year%400==0) leap=1;

else

leap=0;

if (leap)

days=29;

else

days=28;

}

printf("%d年%d月的天数为%d天\n",year,month,days); }

实验四

4.1.1

输入一批正整数(以零或负数为结束标志)求其中的奇数和。

#include

#include

int main(void)

{

int data,sum;

sum=0;

printf("输入一批正整数(以零或负数为结束标志):");

scanf("%d",&data);

while(data>0)

{

if(data%2==1)

sum=sum+data;

scanf("%d",&data);

}

printf("奇数和是%d.\n",sum);

return 0;

}

4.1.2

输入两个整数a和n,求a+aa+aaa+……(n个a)之和。例如输入2和3,输出246(2+22+222)提示:可采用递推的方法计算当前项item=item*10+a

#include

int main(void)

{

int a,n,item,i,sum;

i=1;

sum=0;

item=0;

printf("请输入两个整数a和n:");

scanf("%d,%d",&a,&n);

while(i<=n)

{

item=item*10+a;

sum=sum+item;

i=i++;

}

printf("结果为%d\n",sum);

return 0;

4.1.3

编写程序:计算2/1+3/2+5/3+8/5……的近似值。要求计算前n项之和,保留2位小数(该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)

#include

int main(void)

{

float n,i,sum,a,b,item;

printf("请输入n的值:");

scanf("%f",&n);

sum=0;

i=1;

a=2;

b=1;

item=0;

while(i<=n)

{

sum=sum+a/b;

item=a;

a=a+b;

b=item;

i=i++;

}

printf("结果为%.2f\n",sum);

return 0;

}

4.1.4

编写一个程序,找出被2,3,5整除时余数均为1的最小的10个自然数。

#include

int main(void)

{

int x,i;

i=0;

x=1;

while(i<10)

{

if(x%2==1 && x%3==1 && x%5==1)

{

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

i++;

}

x++;

return 0;

}

4.1.5

输入一个正整数,求它的位数以及各位数字之和,例如123的位数是3,各位数字之和是6.

#include

int main(void)

{

int number,digit,i,sum;

i=0;

sum=0;

printf("输入一个正整数:");

scanf("%d",&number);

while(number!=0)

{

digit=number%10;

number=number/10;

sum=sum+digit;

i=i++;

}

printf("\n",digit);

printf("该整数的位数是%d\n,各位数字之和是%d\n",i,sum);

return 0;

}

4.1.6

猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?

#include

int main(void)

{

int i,a;

a=1;

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

{

a=(a+1)*2;

}

printf("一共摘了%d\n个桃子",a);

return 0;

}

4.2.1

求100以内的全部素数,每行输出10个。素数就是只能被1和它本身整除,1不是素数,2是素数。

#include

int main(void)

{

int i,m=0,n;

for(n=2;n<=99;n++)

{

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

if(n%i==0)

break;

if(i>=n)

{

printf("%4d",n);

m++;

if(m%10==0)

printf("\n");

}

}

return 0;

}

4.2.2有一个四位数,千位上的数字和百位上的数字都被擦掉了,已知十位上的数字是1,个位上的数字是2,又知道这个数如果减去7就能被7整除,减去8就能被8整除,减去9就能被9整除。编写一个程序求这个四位数。提示:利用穷举法来解决该问题。

#include

void main()

{

int x,m,n;

for(x=1000;x<=9999;x++)

{

m=x%10;

n=x/10%10;

if(m==2 && n==1 && (x-7)%7==0 && (x-8)%8==0 && (x-9)%9==0)

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

}

}

4.2.3

取1元、2元和5元的纸币共10张,现在要支付15元。编写程序输出所有的付法。针对每一种付法,输出各种面额的纸币数量。要求将1元、2元和5元设置在最合理的取值范围内。#include

int main()

{

int m, n, k;

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

{

for (n=0; n<=10; n++)

{

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

{

if (m+2*n+5*k==15)

{

printf("1元:%d张\t2元:%d张\t5元:%d\n", m, n, k);

}

}

}

}

return 0;

}

4.2.4

找出200以内的所有完数,并输出其因子。有一个数的因子之和为该数本身,称其为完数。提示:使用二重循环嵌套,外层循环针对2~200之间的所有数,而内层循环对其中的每一个数判断其是否是完数,即判断m的每个因子之和是否等于m。其中因子是2~m/2之间能被m整除的数。

#include

int main(void)

{

int i,j,k;

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

{

k=1;

for(j=2;j<=i/2;j++)

{

if(i%j==0)

k=k+j;

}

if(k==i)

{

printf("%d=1",i);

for(j=2;j<=i/2;j++)

if(i%j==0)

printf("+%d",j);

printf("\n");

}

}

return 0;

}

4.2.5请编写程序显示下列输出:

0 1

0 1 2

0 1 2 3

0 1 2 3 4

0 1 2 3

0 1 2

0 1

#include

int main(void)

{

int i,j;

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

{

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

printf("%d ",j);

printf("\n");

}

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

{

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

printf("%d ",j);

printf("\n");

}

return 0;

}

4.2.6编写程序打出下列图案。

*

* * *

* * * * *

* * * * * * *

* * * * *

* * *

*

#include

相关主题