c语言编程题汇总.docx
《c语言编程题汇总.docx》由会员分享,可在线阅读,更多相关《c语言编程题汇总.docx(78页珍藏版)》请在冰豆网上搜索。
c语言编程题汇总
实验一:
简单的C程序设计(2学时)
一、实验方式:
一人一机
二、实验目的:
1、了解C语言程序的编译环境和编写过程。
2、掌握C语言程序在VisualC++6.0环境下的调试过程。
3、初步了解C语言程序的特点。
4、掌握C语言的数据类型。
三、实验容:
1、计算两个数x和y的和。
(教材P5【例1-2】)
2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。
(实验教材P18)
3、给定圆环,输入圆环半径r1、外圆环半径r2,求出圆环的面积。
(实验教材P27)
4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。
(实验教材P21)
5、输入并运行以下程序,分析运行结果。
(实验教材P27)
#include
voidmain()
{
inti,j;
i=8;j=10;
printf(“%d,%d\n”,++i,++j);
i=8;j=10;
printf(“%d,%d\n”,i++,j++);
i=8;j=10;
printf(“%d,%d\n”,++i,i);
i=8;j=10;
printf(“%d,%d\n”,i++,i);
}
四、实验程序代码:
1
#include"stdio.h"
voidmain()
{
intx,y,sum;
x=123;
y=456;
sum=x+y;
printf("sumis=%d\n",sum);
}
2
#include"stdio.h"
main()
{
doubleh,c;
//printf("Inputh\n");
scanf("%lf",&h);
c=5.0/9*(h-32);
printf("c=%lf",c);
}
3
#include"stdio.h"
#definep3.14
voidmain()
{
floatr1,r2;
doubles1,s2,s;
printf("pleaseenterr1,r2:
");
scanf("%f%f",&r1,&r2);
s2=r2*r2*p;
s1=r1*r1*p;
s=s2-s1;
printf(“圆环面积为%lf\n",s);
}
4
#include"stdio.h"
voidmain()
{
intx,y,t,max,sum=0;
floataverage;
printf("请输入两个整数xy:
");
scanf("%d%d",&x,&y);
printf("您输入的两个整数xy为:
");
printf("x=%d,y=%d\n",x,y);
max=x;
if(maxsum=x+y;
average=sum/2.0;
{t=x;x=y;y=t;}
printf("交换后的两个整数xy为:
");
printf("x=%d,y=%d\n",x,y);
printf("最大值max=%d\n",max);
printf("平均值average=%f\n",average);
}
五、实验运行结果(截图):
1、
2.
3.
4.
实验二:
顺序结构程序设计(2学时)
一、实验方式:
一人一机
二、实验目的:
1、掌握标识符、常量、变量的定义及使用。
2、掌握C语言的常用运算符及表达式。
3、掌握单分支if语句的使用方法。
4、掌握双分支if-else语句的使用方法。
三、实验容:
1、从键盘输入一个3位整数,请输出该数的逆序数。
(实验教材P27)
2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
(实验教材P27)
3、判断箱子是正方体还是长方体。
(实验教材P33)
4、有一函数:
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)编写程序,输入x值,输出y值。
5、从键盘上输入3个数a、b、c,求一元二次方程的解x1、x2,并分别把这两个解的绝对值作为圆柱的半径与高,计算圆柱的体积。
(实验教材P20)
四、实验程序代码:
1.
#include
voidmain()
{
inta,b,c,x,y;
printf("请输入一个3位的正整数:
\n");
scanf("%d",&x);
a=x/100;
b=x%100/10;
c=x%10;
y=c*100+b*10+a;
printf("%d:
%d\n",x,y);
}
2.
#include
voidmain()
{
chara,b,c;
floatx;
printf("pleaseener:
\n");
scanf("%c%c%c",&a,&b,&c);
x=(a+b+c)/3.0;
printf("(a+b+c)/3=%.2f\n",x);
}
3.
#include
voidmain()
{
intl,w,h;
printf("pleaseenterthreenumbers:
\n");
scanf("%d,%d,%d",&l,&w,&h);
if(l==w&&w==h)/*if分支*/
printf("该箱子是正方体。
\n");
else
printf("该箱子是长方体。
\n");
}
4.
#include
voidmain()
{
floatx,y;
printf("pleaseenteranumber:
\n");
scanf("%f",&x);
if(x<1)
y=x;
else
{if(x>=1&&x<10)
y=2*x-1;
elseif(x>10)
y=3*x-11;
}
printf("y的值为%f\n",y);
}
5.
#include
#include
#definep3.14
voidmain()
{
floata,b,c,x1,x2,r,h;
doubles,v;
printf("请输入三个数a,b,c:
");
scanf("%f%f%f",&a,&b,&c);
if(b*b-4*a*c>=0)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
x1=fabs(x1);
x2=fabs(x2);
printf("一元二次方程的解的绝对值x1=%f,x2=%f\n",x1,x2);
}
h=x2;
r=x1;
s=r*r*p;
v=s*h;
printf("v=%lf\n",v);
}
五、实验运行结果(截图):
1.
2
.
3.
4.
5.
实验三:
选择结构程序设计(2学时)
一、实验方式:
一人一机
二、实验目的:
1、掌握多分支语句的一般形式和使用方法。
2、掌握switch语句的一般形式和使用方法。
3、利用switch语句与break语句相结合解决生活中的问题。
4、学习调试和修改选择结构的程序。
三、实验容:
1、定义4个实型变量a、b、c、d,利用单分支if语句对其进行排序,最后将结果输出。
(实验教材P33)
2、编写程序,从键盘上输入某一年月,判断这年的这个月份有多少天。
(教材P75【例5-6】)
3、编写程序,对于给定的学生百分制成绩,分别输出等级‘A’,‘B’,‘C’,‘D’,‘E’,其中90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
(要求分别使用switch和if语句实现)(实验教材P123)
4、编写程序,从键盘上输入一个字符,如果该字符是小写字母,则转换成大写字母输出;如果是大写字母,则转换成小写字母输出;如果是其他字符,原样输出。
(实验教材P124)
四、实验程序代码:
1.
#include
voidmain()
{
floata,b,c,d,t;
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(a>d)
{
t=a;
a=d;
d=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(b>d)
{
t=b;
b=d;
d=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
printf(“%f,%f,%f,%f”,a,b,c,d);
}
2.
/*example5_6.c*/
#include
voidmain()
{
intyear,month,days;
printf("pleaseenteryearandmonth:
");
scanf("%d%d",&year,&month);
if(month,0&&month>13)printf("YouinputErrorData\n");
else
switch(month)
{
case2:
if(year%4==0&&year%100!
=0||year%400==0)
days=29;
else
days=28;
break;
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;break;
case4:
case6:
case9:
case11:
days=30;break;
}
printf("%d年%d月有%d天\n",year,month,days);
}
3.
#include
voidmain()
{
floatscore;
charch;
scanf("%f",&score);
switch((int)(score/10))
{
case10:
case9:
ch='A';break;
case8:
ch='B';break;
case7:
ch='C';break;
case6:
ch='D';break;
default:
ch='E';break;
}
printf("%f分等级是%c\n",score,ch);
}
#include
voidmain()
{
floatscore;
charch;
scanf("%f",&score);
if(score>100||score<0)printf("youinputerrordata");
elseif(score<=100&&score>=90)ch='A';
elseif(score>=80)ch='B';
elseif(score>=70)ch='C';
elseif(score>=60)ch='D';
elsech='E';
printf("%f分等级是%c\n",score,ch);
}
4.
#include
voidmain()
{
charch;
scanf("%c",&ch);
if(ch>='a'&&ch<='z')ch=ch-32;
elseif(ch>='A'&&ch<='Z')ch=ch+32;
elsech=ch;
printf("转换后卫:
%c\n",ch);
}
五、实验运行结果(截图):
1.
2.
3.
4.
实验四:
循环结构程序设计
(一)(2学时)
一、实验方式:
一人一机
二、实验目的:
1、掌握while、do-while、for语句实现循环的方法。
2、了解3种循环语句的区别和转换。
3、掌握在程序设计中用循环的方法实现各种算法。
三、实验容:
1、计算sum=1+2+…+100。
(教材P83【例6-1】)
2、从键盘上连续输入多个学生成绩分数(0-100),编写程序统计学生最高、最低和平均成绩。
(实验教材P40)
3、编写程序输出所有水仙花数,并统计水仙花数的个数,其中水仙花数是一个3位数的自然数,该数各位数的立方和等于该数本身。
(实验教材P42)
4、编写程序,计算数列
,…,计算数列的前20项的和。
(实验教材P46)
5、编写程序,从键盘上输入正整数m,判断m是否为质数。
(教材P98【例6-12】)
四、实验程序代码:
1.
#include
voidmain()
{
inti=1,sum=0;
while(i<100)
{
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
}
2.
#include
voidmain()
{
intscore,max,min,i=0;
floatsum=0.0,average;
printf("请输入学生的成绩:
\n");
scanf("%d",&score);
max=min=score;
while(score!
=-1)
{
if(score>=0&&score<=100)
{
sum=sum+score;
i++;
if(maxif(min>score)min=score;
}
scanf("%d",&score);
}
average=sum*1.0/i;
printf("max=%d,min=%d\n",max,min);
printf("有效成绩共%d个学生,平均分为:
%f\n",i,average);
}
3.
#include
voidmain()
{
inta,b,c;
intcount=0;
intm=100;
printf("100~999的水仙花数为:
");
do
{
a=m/100;
b=(m-100*a)/10;
c=m%10;
if(a*a*a+b*b*b+c*c*c==m)
{
printf("%5d",m);
count++;
}
m++;
}
while(m<1000);
printf("\n100~999的水仙花数共%d个\n",count);
}
4.
#include
#defineN20
voidmain()
{
inti;
floatm=1.0,n=2.0,t,p;
doublesum=0.0;
t=m/n;
for(i=1;i<=N;i++)
{
sum=sum+t;
p=m+n;
m=n;
n=p;
t=m/n;
}
printf("前20项的结果为:
%lf\n",sum);
}
5.
#include
#include
voidmain()
{
intm,i=2;
intflag=1;
printf("请输入一个数,验证是否为质数:
");
scanf("%d",&m);
for(i=2;i<=sqrt(m);i++)
if(m%i==0)
{
flag=0;
break;
}
if(flag=1)
printf("恭喜,你输入的数%d是质数!
\n",m);
elseprintf("对不起,你输入的数%d不是质数!
\n",m);
}
五、实验运行结果(截图):
1.
2.
3.
4.
5.
实验五:
循环结构程序设计
(二)(2学时)
一、实验方式:
一人一机
二、实验目的:
1、掌握循环嵌套的使用。
2、掌握如何在循环语句中使用循环控制语句break和continue,改变程序流程。
3、掌握在程序设计中用循环的方法实现各种算法。
三、实验容:
补充1:
编写程序,输出左下三角九九乘法口诀表。
(教材P92【例6-8】)
1、编写程序,计算圆周率π,其中π/4=1-1/3+1/5-1/7+……,直到某一项的绝对值小于10-6为止。
(教材P86【例6-4】)
2、编写一个程序,求数列1!
-3!
+5!
-7!
+……+(-1)n-1(2n-1)!
,n的值由键盘录入。
(实验教材P43)
3、使用for循环语句,打印以下二维图案。
(实验教材P44)
*
***
*****
*******
*****
***
*
4、编写程序实现“百马百担”问题。
有100匹马,要驮100担货物,其中1匹大马可以驮3担,1匹中马可以驮2担,2匹小马可以驮1担,请问大马、中马和小马可以有多少种组合。
(实验教材P47)
四、实验程序代码:
1.
#include
voidmain()
{
inti,j;
printf("左下三角九九乘法口诀表:
----------\n");
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%2d",j,i,j*i);
printf("\n");
}
}
2.
#include
voidmain()
{
inti,j,n,flag=1;
longfact,sum=0;
printf("请输入一个数,计算前几项的值:
");
scanf("%d",&n);
printf("前%d项和为:
",n);
for(i=1;i<=2*n-1;i=i+2)
{
fact=1;
for(j=1;j<=i;j++)
fact=fact*j;
sum=sum+fact*flag;
flag=-flag;
}
printf("%ld",sum);
printf("\n");
}
3.
#include
voidmain()
{
inti,j,k;
for(i=1;i<=4;i++)
{
for(j=1;j<=5-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
for(i=5;i<=7;i++)
{
for(j=1;j<=i-3;j++)
printf("");
for(k=1;k<=15-2*i;k++)
printf("*");
printf("\n");
}
}
4.
#include
voidmain()
{
intm,n,k;
intsum=0;
for(m=0;m<=100;m++)
for(n=0;n<=100-m;n++)
{
k=100-m-n;
if(k%2==0&&3*m+2*n+k/2==100)
{
printf("大马%d匹,中马%d匹,小马%d匹\n",m,n,k);
sum++;
}
}
printf("共有%d种驮法组合\n",sum);
printf("\n");
}
五、实验运行结果(截图):
1.
2.
3.
4.
实验六:
数组程序设计
(一)(2学时)
一、实验方式:
一人一机
二、实验目的:
1、掌握一维数组和二维数组的定义和数组元素的引用方法。
2、了解一维数组和二维数组初始化方法。
3、学习一维数组和二维数组的基本算法。
三、实验容:
补充1:
编写程序,计算出Fibonacci数列前20项的值,并将结果按4个数一行输出到屏幕上。
(教材P113【例7-5】)
1、下列程序的功能是:
输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。
#include
voidmain()
{inti,n,a[10],avg;
for(i=0;iscanf(“%d”,a[i]);
for(i=0;i{if(i%3==0)printf(“\n”);
printf(“%d”,a[i]);
}
for(i=0;iavg+=a[i];
printf(“\navg=%f\n”,avg);
}
2、从键盘上读入10个整数存入数组a,找出数组a中的数的最大值,并计算数组a中所有数组元素的平均值。
(教材P112【例7-4】)
3、编写程序,将数组中的值逆序存放。
(实验教材P60)
4、从键盘上输入10个整数,然后按照从小到大的顺序把这10个数排序并输出到屏幕上。
(教材P114【例7-6】冒泡法排序、P115【例7-7】选择法排序)
四、实验程序代码:
1.
#include
voidmain()
{
inti;
intFib[20];
Fib[0]=1;
Fib[1]=1;
for(i=2;i<20;i++)
Fib[i]=Fib[i-1]+Fib[i-2];
printf("Fibonacci数列前20项如下:
\n");
for(i=0;i<20;i++)
{
if(i%4==0)printf("\n")
printf("Fib[%2d]=%5d",i,Fib[i]);
}
printf("\n");
}
2.
#include
voidmain()
{
inti,a[10],max;
floatsum=0,average;
printf("Input10integerdata:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
sum=0;
for(i=0;i<10;i++)
{
if(maxs