C语言编程实验.docx
《C语言编程实验.docx》由会员分享,可在线阅读,更多相关《C语言编程实验.docx(22页珍藏版)》请在冰豆网上搜索。
![C语言编程实验.docx](https://file1.bdocx.com/fileroot1/2022-12/29/841b4841-3a6c-4b64-9375-cbe380767153/841b4841-3a6c-4b64-9375-cbe3807671531.gif)
C语言编程实验
C语言实验习题
7-1 输出图形(10 分)
编写程序输出图形。
第一行输出12个$,第二行先输出3个空格,然后再输出hello!
第三行输出12个$
输入样例:
无输入
输出样例:
$$$$$$$$$$$$
hello!
$$$$$$$$$$$$
代码:
#include〈stdio、h>
int main()
{
printf(”$$$$$$$$$$$$\n”
"hello!
\n”
”$$$$$$$$$$$$\n");
return0;
}
7-5 计算华氏温度(5 分)
本题要求编写程序,计算摄氏温度26°C对应得华氏温度。
计算公式:
F=9×C/5+32,式中:
C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
输入格式:
本题目没有输入、
输出格式:
按照下列格式输出
celsius=26,fahr= 对应得华氏温度整数值
代码:
#includeh>
intmain()
{
intf;
intc;
c=26;
f=9*c/5+32;
printf(”celsius =26,fahr= %d",f);
return 0;
}
7-9 逆序得三位数(10 分)
程序每次读入一个正3位数,然后输出按位逆序得数字。
注意:
当输入得数字含有结尾得0时,输出不应带有前导得0、比如输入700,输出应该就是7。
输入格式:
每个测试就是一个3位得正整数。
输出格式:
输出按位逆序得数。
输入样例:
123
输出样例:
321
代码:
#include<stdio。
h〉
int main()
{
ﻩintn,a,b,c;
scanf(”%d”,&n);
a=n/100;
b=n/10-a*10;
c=n—a*100-b*10;
ﻩintd;
ﻩd=a+b*10+c*100;
printf("%d",d);
return0;
}
7-10 整数四则运算(10 分)
本题要求编写程序,计算2个正整数得与、差、积、商并输出。
题目保证输入与输出全部在整型范围内。
输入格式:
输入在一行中给出2个正整数A与B。
输出格式:
在4行中按照格式“A运算符B=结果”顺序输出与、差、积、商。
输入样例:
3 2
输出样例:
3+2 =5
3-2=1
3*2=6
3/2= 1
代码:
#includeh>
intmain()
{
int A,B;
ﻩscanf("%d %d",&A,&B);
ﻩintc,d,e,f;
ﻩc=A+B;
d=A-B;
ﻩe=A*B;
f=A/B;
printf("%d+%d=%d\n”
"%d-%d = %d\n"
ﻩ ”%d * %d =%d\n”
”%d/%d =%d\n”,A,B,c,A,B,d,A,B,e,A,B,f);
ﻩreturn0;
}
7-11 求整数均值(10 分)
本题要求编写程序,计算4个整数得与与平均值。
题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出4个整数,其间以空格分隔、
输出格式:
在一行中按照格式“Sum=与;Average=平均值”顺序输出与与平均值,其中平均值精确到小数点后一位。
输入样例:
1 234
输出样例:
Sum=10;Average=2.5
代码:
#include<stdio、h>
intmain()
{
int a=1,b=1,c =1,d=1;
doubleaverage =1。
0;
scanf ("%d%d %d %d",&a, &b,&c,&d);
intAverage;
average=(double)(a+b+c+d) /4;
intsum;
sum=a+b+c+d;
printf ("Sum=%d;Average =%、1lf\n”,sum,average);
return0;
}
7-1 三天打鱼两天晒网(15 分)
中国有句俗语叫“三天打鱼两天晒网”。
假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后得第N天中就是“打鱼”还就是“晒网”?
输入格式:
输入在一行中给出一个不超过1000得正整数N。
输出格式:
在一行中输出此人在第N天中就是“Fishing”(即“打鱼”)还就是“Drying"(即“晒网”),并且输出“indayN”。
输入样例1:
103
输出样例1:
Fishinginday103
输入样例2:
34
输出样例2:
Drying inday34
代码:
#include〈stdio、h〉
intmain()
{
intN,b;
N〈=1000;
scanf("%d”,&N);
b=N%5;
if(b==4||b==0)
printf(”Dryinginday %d",N);
else
printf(”Fishinginday%d",N);
return0;
}
7-2 计算符号函数得值(15 分)
对于任一整数n,符号函数sign(n)得定义如下:
请编写程序计算该函数对任一输入整数得值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n)= 函数值"输出该整数n对应得函数值。
输入样例1:
10
输出样例1:
sign(10)=1
输入样例2:
0
输出样例2:
sign(0)= 0
输入样例3:
-98
输出样例3:
sign(-98) =-1
代码:
#include<stdio。
h>
intmain()
{
intn;
scanf(”%d",&n);
n〈0?
(printf(”sign(%d)=—1",n)):
n==0?
(printf(”sign(%d) =0”,n)):
printf("sign(%d)=1",n);
}
7-3 阶梯电价(15 分)
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表得居民用户电价分为两个“阶梯”:
月用电量50千瓦时(含50千瓦时)以内得,电价为0。
53元/千瓦时;超过50千瓦时得,超出部分得用电量,电价上调0。
05元/千瓦时。
请编写程序计算电费。
输入格式:
输入在一行中给出某用户得月用电量(单位:
千瓦时)。
输出格式:
在一行中输出该用户应支付得电费(元),结果保留两位小数,格式如:
“cost=应付电费值”;若用电量小于0,则输出"InvalidValue!
”。
输入样例1:
10
输出样例1:
cost= 5.30
输入样例2:
100
输出样例2:
cost =55。
50
代码:
#include h〉
int main()
{
inta;
doubleb;
scanf(”%d",&a);
if(a<0)
printf("Invalid Value!
\n");
elseif(a〉=0&&a〈=50、0)
{b=(0、53*a);
printf("cost=%、2lf\n",b);}
else if(a>50。
0)
{b=(0。
58*(a-50)+26。
5);
printf(”cost=%.2lf\n",b);}
}
7-4 计算油费(15 分)
现在90号汽油6、95元/升、93号汽油7。
44元/升、97号汽油7。
93元/升。
为吸引顾客,某自动加油站推出了“自助服务”与“协助服务”两个服务等级,分别可得到5%与3%得折扣、
本题要求编写程序,根据输入顾客得加油量a,汽油品种b(90、93或97)与服务类型c(m —自助,e-协助),计算并输出应付款。
输入格式:
输入在一行中给出两个整数与一个字符,分别表示顾客得加油量a,汽油品种b(90、93或97)与服务类型c(m -自助,e—协助)。
输出格式:
在一行中输出应付款额,保留小数点后2位。
输入样例:
4097m
输出样例:
301。
34
代码:
#include <stdio、h〉
#include
intmain()
{
int a,b;
doublem1,m2;
charc;
scanf("%d%d%c”,&a,&b,&c);
switch(b)
{
case90:
m1=6。
95*a; break;
case 93:
m1=7。
44*a; break;
case97:
m1=7。
93*a;break;
}
switch(c)
{
case(’m’):
m2=0。
95*m1;break;
case('e'):
m2=0。
97*m1;break;
}
printf(”%.2lf",m2);
}
7—5 两个数得简单计算器(15 分)
本题要求编写一个简单计算器程序,可根据输入得运算符,对2个整数进行加、减、乘、除或求余运算。
题目保证输入与输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。
操作数得数据类型为整型,且保证除法与求余得分母非零、
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应得运算结果。
若输入就是非法符号(即除了加、减、乘、除与求余五种运算符以外得其她符号)则输出ERROR。
输入样例1:
-7/2
输出样例1:
—3
输入样例2:
3 & 6
输出样例2:
ERROR
代码:
#include
#include
int main()
{
inta,b,d;
charc;
scanf("%d%c%d",&a,&c,&b);
if(c==’+'||c=='-’||c=='*'||c=='/'||c=='%')
switch(c)
{
case’+’:
printf(”%d",a+b);break;
case’-’:
printf("%d”,a-b);break;
case'*’:
printf("%d",a*b);break;
case'/’:
printf("%d",a/b);break;
case’%’:
printf("%d”,a%b);break;
}
else
printf("ERROR");
}
7—1 生成3得乘方表(15 分)
输入一个非负整数n,生成一张3得乘方表,输出30~3n得值、可调用幂函数计算3得乘方。
输入格式:
输入在一行中给出一个非负整数n。
输出格式:
按照幂得递增顺序输出n+1行,每行格式为“pow(3,i) = 3得i次幂得值”。
题目保证输出数据不超过长整型整数得范围、
输入样例:
3
输出样例:
pow(3,0)=1
pow(3,1)= 3
pow(3,2)=9
pow(3,3)=27
代码:
#include<stdio。
h〉
#include〈math、h〉
intmain()
{
int n,i,result;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
result=pow(3,i);
printf(”pow(3,%d)=%d\n",i,result);
}
}
7—2 奇偶分家(15 分)
给定N个正整数,请统计奇数与偶数各有多少个?
输入格式:
输入第一行给出一个正整N(≤1000);第2行给出N个正整数,以空格分隔、
输出格式:
在一行中先后输出奇数得个数、偶数得个数、中间以1个空格分隔。
输入样例:
9
8874 1012615034 2277
输出样例:
36
代码:
#include〈stdio.h〉
int main()
{
intn,i,g,k,a=0,b=0;
scanf("%d”,&n);
for(i=0;i〈n;i++)
{
scanf(”%d”,&g);
if(n<0||n>1000)continue;
k=g%2;
switch(k)
{
case1:
a++;break;
case0:
b++;break;
}
}
printf("%d %d",a,b);
return0;
}
7-3 找出最小值(15 分)
本题要求编写程序,找出给定一系列整数中得最小值。
输入格式:
输入在一行中首先给出一个正整数n,之后就是n个整数,其间以空格分隔。
输出格式:
在一行中按照“min=最小值”得格式输出n个整数中得最小值、
输入样例:
4—2-1231000
输出样例:
min=—123
代码:
#include 〈stdio。
h〉
#include〈stdlib、h>
int main()
{
inti,m,n;
scanf("%d",&n);
inta[n];
if(n〈1) ;
else
for(i=0;i〈n;i++)
scanf("%d”,&a[i]);
m=a[0];
for (i=0;i〈n;i++)
{
if(m>a[i])
m=a[i];
}
printf(”min =%d",m);
}
7-4 求平方根序列前N项与(15 分)
本题要求编写程序,计算平方根序列√1+√2+√3+⋯得前N项之与。
可包含头文件math。
h,并调用sqrt函数求平方根。
输入格式:
输入在一行中给出一个正整数N、
输出格式:
在一行中按照“sum=S"得格式输出部分与得值S,精确到小数点后两位。
题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum= 22。
47
代码:
#include〈stdio、h>
#include<math.h>
intmain()
{
inti,n;
doublesum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=sqrt(i);
}
printf("sum =%。
2lf”,sum);
}
7-5 统计学生平均成绩与及格人数(15 分)
本题要求编写程序,计算学生们得平均成绩,并统计及格(成绩不低于60分)得人数。
题目保证输入与输出均在整型范围内。
输入格式:
输入在第一行中给出非负整数N,即学生人数。
第二行给出N个非负整数,即这N位学生得成绩,其间以空格分隔。
输出格式:
按照以下格式输出:
average=成绩均值
count=及格人数
其中平均值精确到小数点后一位。
输入样例:
5
77 5492 7360
输出样例:
average=71、2
count = 4
代码:
#includemain()
{
intn,i,a,count=0,sum=0;
floatd;
scanf("%d", &n);
if(n ==0)
{
printf("average =0、0\n");
printf(”count=0");
}
else
{
for (i =0;i {
scanf("%d”, &a);
sum=sum +a;
if(a〉= 60)
count++;
}
d=(float)sum/(float)n;
printf("average=%。
1f\n”,d);
printf("count= %d”,count);
}
}
7—6 寻找250(15 分)
对方不想与您说话,并向您扔了一串数……而您必须从这一串数字中找到“250”这个高大上得感人数字。
输入格式:
输入在一行中给出不知道多少个绝对值不超过1000得整数,其中保证至少存在一个“250”。
输出格式:
在一行中输出第一次出现得“250"就是对方扔过来得第几个数字(计数从1开始)。
题目保证输出得数字在整型范围内、
输入样例:
888 666123—23325013250-222
输出样例:
5
代码:
#include
#include〈stdlib。
h〉
int main()
{
inti,n,m;
for(i=1;;i++)
{
scanf("%d",&n);
if(n==250)
break;
}
m=i;
printf(”%d",m);
}
7-7 猴子吃桃问题(15 分)
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下得桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下得一半加一个、到第N天早上想再吃时,见只剩下一个桃子了、问:
第一天共摘了多少个桃子?
输入格式:
输入在一行中给出正整数N(1〈N≤10)、
输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
代码:
#include<stdio、h>
#include <math、h>
int main()
{
inta,b,n;
scanf(”%d",&n);
a=pow(2,n-1);
printf("%d",3*a-2);
}
7-8 大笨钟(15 分)
微博上有个自称“大笨钟V”得家伙,每天敲钟催促码农们爱惜身体早点睡觉。
不过由于笨钟自己作息也不就是很规律,所以敲钟并不定时、一般敲钟得点数就是根据敲钟时间而定得,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。
另外,虽然一天有24小时,钟却就是只在后半天敲1~12下。
例如在23:
00敲钟,就就是“当当当当当当当当当当当”,而到了23:
01就会就是“当当当当当当当当当当当当"。
在午夜00:
00到中午12:
00期间(端点时间包括在内),笨钟就是不敲得、
下面就请您写个程序,根据当前时间替大笨钟敲钟。
输入格式:
输入第一行按照hh:
mm得格式给出当前时间、其中hh就是小时,在00到23之间;mm就是分钟,在00到59之间。
输出格式:
根据当前时间替大笨钟敲钟,即在一行中输出相应数量个Dang。
如果不就是敲钟期,则输出:
Onlyhh:
mm.Too earlytoDang、
其中hh:
mm就是输入得时间。
输入样例1:
19:
05
输出样例1:
DangDangDangDangDangDangDangDang
输入样例2:
07:
05
输出样例2:
Only 07:
05。
Tooearlyto Dang、
代码:
#include 〈stdio、h>
#include<stdlib、h>
intmain()
{
inta,b,n,i;
charc;
scanf("%2d%c%2d”,&a,&c,&b);
if((a〉=0&&a<=11)||(a==12&&b==0))
printf(”Only %02d:
%02d、Too earlyto Dang、",a,b);
elseif(b==0)
for(i=0;i<a-12;i++)
printf("Dang”);
else if(b!
=0)
for(i=0;i<a-11;i++)
printf("Dang");
}
7-9 输出三角形字符阵列(15 分)
本题要求编写程序,输出n行由大写字母A开始构成得三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n〈7)。
输出格式:
输出n行由大写字母A开始构成得三角形字符阵列。
格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
ABCD
E FG
HI
J
代码:
#include<stdio。
h>
#include〈stdlib.h>
intmain()
{
chara='A’;
intn,i,j,b;
scanf("%d",&n);
if(n>=1&&n〈7)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n+1-i;j++)
{b=(2*n+2—i)*(i—1)/2+j;
printf("%c",a+b—1);}
printf(”\n");
}
}
else;
return0;
}
7-10 跟奥巴马一起画方块(15 分)
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码得总统。
2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单得计算机代码:
在屏幕上画一个正方形。
现在您也跟她一起画吧!
输入格式:
输入在一行中给出正方形边长N(3≤N≤21)与组成正方形边得某种字符C,间隔一个空格、
输出格式:
输出由给定字符C画出得正方形。
但就是注意到行间距比列间距大,所以为了让结果瞧上去更像正方形,我们输出得行数实际上就是列数得50%(四舍五入取整)。
输入样例:
10 a
输出样例:
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
代码:
#include〈stdio。
h〉
#include<stdlib、h〉
intmain()
{
inti,j,N;
charc;
scanf("%d%c",&N,&c);
if(N〉=3&&N<=21)
{
for(i=0;i<(int)(N+