c语言总练习题
!4,42
?45
1
Description
键盘输入一个双精度数据,乘以2以后输出
Input
输入一个double型数据
Output
输出它的两倍数,结果保留8位小数
Sample Input
3.1415926536
Sample Output
6.28318531
#include<stdio.h>
int main()
{
double a,s;
scanf("%lf",&a);
s=a*2;
printf("%.8lf",s);
return 0;
}
2
Description
OJ上的题目,选择题总共有200题,判断题有50题,填空题有120题,假设试卷中的选择题每题0.6分,判断题每题0.2分,填空题每题0.3分,要出一份三种题型都有、总共有100题的卷子,但总分只能有m分(m不超过59,不少于30,由键盘输入),每种题目出多少?请你帮忙计算一下,总共有多少种出题方案,分别应该怎样出。
Input
输入整数m的值(后台给的m,能保证至少有一种方案)
Output
输出每一种方案的组合数据以及方案总数
Sample Input
55
Sample Output
84,2,14
85,5,10
86,8,6
87,11,2
4
#include<stdio.h>
int main()
{
int a,m,i,j,k,s;
scanf("%d",&m);
s=m*10;
a=0;
for(i=1;i<200;i++)
for(j=1;j<50;j++)
for(k=1;k<120;k++)
if(i+j+k==100&&i*6+j*2+k*3==s)
{
a=a+1;
printf("%d,%d,%d\n",i,j,k);
}
printf("%d\n",a);
return 0;
}
3
Description
键盘输入分子和分母的值(都是整数),求分数的值。结果保留2位小数
Input
输入两个整数
Output
输出分数的值
Sample Input
2,6
Sample Output
0.33
#include<stdio.h>
int main()
{
int a,b;
float m;
scanf("%d,%d",&a,&b);
m=(float)a/b;
printf("%.2f\n",m);
return 0;
}
4
Description
输入一个华氏温度,要求输出摄氏温度。公式为 c=5/9 (F-32) 输出要求取位2小数。
Input
一个华氏温度,浮点数
Output
摄氏温度,浮点两位小数
Sample Input
-40
Sample Output
c=-40.00
#include<stdio.h>
int main()
{
float a,b;
scanf("%f",&a);
b=5./9*(a-32);
printf("c=%.2f",b);
return 0;
}
5
Description
键盘输入考试总人数和不及格人数,输出及格人数、总人数、及格率,其中,前两项数据输出结果最小宽度为n(n由键盘输入),最后一项及格率保留2位小数,最小宽度为6
Input
总人数,不及格人数,n
Output
及格人数、总人数、及格率,每个数据占一行
其中及格人数、总人数最小宽度都是n,及格率最小宽度为6(含%)
Sample Input
99 4 5
Sample Output
95
99
95.96%
#include<stdio.h>
int main()
{
int kz,bj,jg,n;
float jgl;
scanf("%d %d %d",&kz,&bj,&n);
jg=kz-bj;
jgl=(float)jg/kz*100;
printf("%*d\n%*d\n%5.2f%%",n,jg,n,kz,jgl);
return 0;
}
/*
Input
按例子所示的格式输入一组数据
Output
输出符合格式要求的结果
6
Sample Input
A
B
C D
1 2
3,4
5 E
6F
a=7,b=8
Sample Output
c1=A,c2=B
c1=C,c2=D
a=1,b=2
3 4
a=5 c1=E
a=6,c1=F
a=7,b=8
#include <stdio.h>
int main()
{
int a,b;
char c1,c2;
//在下面填写几行代码,利用getchar()函数输入字符给c1,c2, 此处不允许使用scanf()函数
c1=getchar();
getchar();
c2=getchar();
getchar();
printf("c1=%c,c2=%c\n",c1,c2); //输出c1,c2,请填上合适的格式控制--------下同
//在下面填写代码,用scanf()输入两个数据给c1,c2,必须用到scanf(),可以另有getchar()
scanf(" %c %c",&c1,&c2);
printf("c1=%c,c2=%c\n",c1,c2);
//在下面填写代码,用scanf()输入两个数据给a,b
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
//在下面填写代码,用scanf()输入两个数据给a,b
scanf("%d,%d",&a,&b);
printf("%d %d\n",a,b);
//在下面填写代码,用scanf()输入两个数据给a,c1
scanf(" %d %c",&a,&c1);
printf("a=%d c1=%c\n",a,c1);
//在下面填写代码,用scanf()输入两个数据给a,c1
scanf("%d%c",&a,&c1);
getchar();
printf("a=%d,c1=%c\n",a,c1);
//在下面填写代码,用scanf()输入两个数据给a,b
scanf("a=%d,b=%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
7
Description
期末时,学校评选奖学金,以所得积分为依据,积分规定:
(1)每人基础分75分
(2)C语言考试90及以上加10分
(3)高数考试90及以上加8分
(4)英语考试90及以上加7分
键盘输入三门课的成绩,求该生最终积分
Input
输入三门课成绩
Output
输出积分
Sample Input
95 92 98
Sample Output
100
#include<stdio.h>
int main()
{
int c,math,en,jf=75;
scanf("%d %d %d",&c,&math,&en);
if(c>=90)
jf+=10;
if(math>=90)
jf+=8;
if(en>=90)
jf+=7;
printf("%d",jf);
return 0;
}
8
Description
键盘输入两个整数,然后:
(1)若任意一个数在10~100(包括10和100)之间,则输出它们,否则不输出;
(2)不管什么情况,程序的最后都输出:End
要求:(1)用if的第一种格式编程,即不允许使用else (2)不允许使用复合语句
Input
Output
Sample Input
5 12
Sample Output
5,12 End
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
if(a>=10&&a<=100||b>=10&&b<=100)
printf("%d,%d\n",a,b);
printf("End");
return 0;
}
9
Description
键盘输入两个整数,若前者大,则输出两个数的差以及它们的平方差,否则输出两个数的和以及它们的平方和
Input
Output
第一行输出两数的和或差
第二行输出两数的平方和或平方差
Sample Input
1,2
Sample Output
3 5
#include<stdio.h>
int main()
{
int a,b,ch,he,pch,phe;
scanf("%d,%d",&a,&b);
ch=a-b;
pch=a*a-b*b;
he=a+b;
phe=a*a+b*b;
if(a>b)
printf("%d\n%d",ch,pch);
else
printf("%d\n%d",he,phe);
return 0;
}
10
Description
键盘输入一个整数(0--51),如果在0-25之间,则输出对应的大写字母,(0对应A,1对应B,2对应C,......25对应Z);否则输出对应的小写字母(26--a, 27--b, 28--c...51--z)
本题必须用if的第二种格式编程,否则不得分
Input
输入整数,整数范围是0--51
Output
输出题目要求的内容
Sample Input
1
Sample Output
B
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a>=0&&a<=25)
printf("%c",a+65);
else
printf("%c",a+71);
return 0;
}
11
Description
某产品的价格是800元/件,但若购买量大可给予一定的折扣:超过100(含100,下同)件时打9折,超过200件打85折,超过300件打82折,超过500件打8折,请用嵌套的if-else语句编程求解应收款。
不允许使用并列(平等)的if,即:所有的if必须都嵌套
Input
购买产品的件数
Output
应收款
Sample Input
400
Sample Output
262400
#include<stdio.h>
int main()
{
int a,s;
scanf("%d",&a);
if(a<100)
s=a*800;
else if(a<200)
s=a*80*9;
else if(a<300)
s=a*8*85;
else if(a<500)
s=a*8*82;
else if(a>=500)
s=a*80*8;
printf("%d",s);
return 0;
}
12
Description
某产品的价格是800元/件,但若购买量大可给予一定的折扣:够100件时打9折,够200件打85折,够300件打82折,够500件打81折,请用单独的if语句编程求解应收款。
所谓单独的if语句,是指所有的if都是平等的、不嵌套的(都是格式一)
本题程序代码中不允许出现else
特别注意:实数的存储和计算是不精确的
思考:本题还可用哪种格式编程?
Input
输入购买件数
Output
输出应收款
Sample Input
400
Sample Output
262400
#include<stdio.h>
int main()
{
int a,s;
scanf("%d",&a);
if(a<100){
s=a*800;
printf("%d",s);}
if(a>=100&&a<200){
s=a*80*9;
printf("%d",s);}
if(a>=200&&a<300){
s=a*8*85;
printf("%d",s);}
if(a>=300&&a<500){
s=a*8*82;
printf("%d",s);}
if(a>=500){
s=a*81*8;
printf("%d",s);}
return 0;
}
13
Description
键盘输入一个字符,若是大写字母,则变成小写后输出,若是小写字母,则变成大写后输出,都不是,则原样输出
Input
一个任意字符
Output
输出相应的字符
Sample Input
a
Sample Output
A
#include<stdio.h>
int main()
{
char n;
scanf("%c",&n);
if(n>=65&&n<=90)
n+=32;
else if(n>=97&&n<=122)
n-=32;
else n=n;
printf("%c",n);
return 0;
}
14
Description
某产品的价格是800元/件,但若购买量大可给予一定的折扣:够100件时打9折,够200件打85折,够300件打82折,够500件打8折,请用switch语句编程求解应收款。
必须用switch语句,用if语句 不得分
Input
输入一个购买量
Output
输出应付款
Sample Input
10
Sample Output
8000
#include <stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
switch(x/100)
{
case 0:
y=x*800;break;
case 1:
y=x*90*8;break;
case 2:
y=x*85*8;break;
case 3: y=x*82*8;break;
case 4:
default : y=x*80*8;
break;
}
printf("%d\n",y);
return 0;
}
15
Description
某售楼处规定:售楼员每卖出一套商品房,可提成1000元,每卖出一套别墅,可提成2000元。为了鼓励多卖别墅,公司做了如下补充规定:卖商品房的提成设上限,上限与一年中卖出的别墅数量有关:
0套: 上限是:10000元
1~5套:上限是:20000元
6-10套:上限是:30000元
11套以上:上限是:50000元
键盘输入售楼员一年卖出的商品房数量和别墅数量,计算应得的提成
Input
输入两个整数,分别代表商品房和别墅数量
Output
输出应得的提成
Sample Input
25,2
Sample Output
24000
#include<stdio.h>
int main()
{
int bs,sp,tc;
scanf("%d,%d",&sp,&bs);
if(bs==0)
if(sp<=10)
tc=sp*1000;
else tc=10000;
if(bs>=1&&bs<=5)
if(sp<=20)
tc=sp*1000+bs*2000;
else tc=20000+bs*2000;
if(bs>=6&&bs<=10)
if(sp<=30)
tc=sp*1000+bs*2000;
else tc=30000+bs*2000;
if(bs>=11)
if(sp<=50)
tc=sp*1000+bs*2000;
else tc=50000+bs*2000;
printf("%d",tc);
return 0;
}
16
Description
老师规定:平时练习题限定最高得分率k%,超出的不计。k取决于课堂测验的得分率k1,两者对应关系如下。
测验得分率k1 练习题最高得分率k
0<=k1<10 30
10<=k1<20 40
20<=k1<40 50
40<=k1<70 70
70<=k1<=100 100
键盘输入一个整数(0--100)作为k1,求k
要求:必须用switch编程,用if不得分
Input
输入一个整数
Output
输出k的值
Sample Input
30
Sample Output
50
#include<stdio.h>
int main()
{
int k1,k;
scanf("%d",&k1);
switch(k1/10)
{
case 0: k=30;break;
case 1: k=40;break;
case 2:
case 3: k=50;break;
case 4:
case 5:
case 6: k=70;break;
case 7:
case 8:
case 9:
case 10: k=100;break;
}
printf("%d",k);
return 0;}
17
Description
单位分福利,规定男职工每人每10年工龄可分10斤鸡蛋(不足10年的部分按10年计,比如11年的按20年计),女职工比男职工可多分2斤(每10年工龄),如果是干部,比一般职工再多分5斤(每10年工龄),,编程给出不同人应分多少鸡蛋。职工性别、工龄及是否干部从键盘输入。
Input
先输入工龄,再输入性别(用m或M表示男,用f或F表示女),最后输入是否干部(Y或y表示干部,N或n表示非干部)。数据之间用逗号隔开。
如:12,F,Y
Output
输出应分鸡蛋的重量
Sample Input
12,F,Y
Sample Output
34
*1种方法
#include<stdio.h>
int main()
{
int gl,s,n;
char sex,gb;
scanf("%d,%c,%c",&gl,&sex,&gb);
n=(gl-1)/10+1;
s=n*10;
if(sex=='f'||sex=='F')
s=s+n*2;
if(gb=='Y'||gb=='y')
s=s+n*5;
printf("%d\n",s);
return 0;}
18
Description
键盘输入10个整数,问:第几个数最大?最大值是多少?
Input
输入10个整数,用空格或回车隔开
Output
先输出最大值序号,再输出最大值
Sample Input
-5 -9 -1 -10 -3 -8 -6 -7 -2 -4
Sample Output
3,-1
方法1:
#include<stdio.h>
int main()
{
int a[10];
int i,max,m;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0,max=a[0],m=0;i<=9;i++)
{
if(a[i]>=max)
{max=a[i];
m=i+1;
}
}
printf("%d,%d\n",m,max);
return 0;
}
方法2:
#include<stdio.h>
int main()
{
int i,j,a,m;
scanf("%d",&a);
m=a;
j=1;
for(i=2;i<=10;i++)
{
scanf("%d",&a);
if(a>=m)
{m=a;
j=i;
}
}
printf("%d,%d",j,m);
return 0;
}
19
Description
统计n个数中大于x的个数和小于x的个数。
Input
输入包括两行。第一行是 n (1<n<100) 和x (|x|<=10000) 。第二行有n个整数,用 ‘,’分隔。
Output
输出大于x的数的个数和小于x的数的个数。
Sample Input
6 3
1,2,3,4,5,6
Sample Output
3 2
方法1:
#include<stdio.h>
int main()
{
int s=0,i,n,x,b=0,t;
float j;
scanf("%d %d",&n,&x);
int a[100];
for(i=0;i<n;i++){
scanf("%d,",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]>x) {s++;}
else b++;
}
for(i=0;i<n;i++)
{
if(a[i]==x) {t++;}
}
printf("%d %d\n",s,b-t);
return 0;
}
方法2:
#include<stdio.h>
int main()
{
int n,x,i,a,j=0,k=0;
scanf("%d %d\n",&n,&x);
for(i=1;i<n;i++)
{
scanf("%d,",&a);
if(a<x)
j++;
if(a>x)
k++;
}
printf("%d %d",k,j);
return 0;
}
20
Description
找出[1000,n](n由键盘输入,1000<=n<=9999)间所有符合条件的数,条件是:
(1)个位数和百位数的和,等于十位数和千位数的差(十位数减千位数,不是千位数减十位数)
(2)偶数
Input
输入一个n
Output
输出符合条件的数
Sample Input
1100
Sample Output
1010
1032
1054
1076
1098
#include<stdio.h>
int main()
{
int n,a=1000,i;
scanf("%d",&n);
for(i=1000;i<=n;i++)
{
if(a%2==0&&(a%10+a/100%10==a/10%10-a/1000))
printf("%d\n",a);
a=a+1;
}
return 0;
}
21
Description
C老师特别可恨,动不动就抓重修,想偷懒糊弄一下都不行!这不,最近又出台了一项新规定:每当做不出一个题目,就将平时成绩打x折(例如:x为95时就打95折),若又有一题做不出来,则在此基础上再打x折。某同学平时玩游戏比较多,再加上社团活动占用了很多时间,所以基本没怎么学C语言,现在他比较关心一件事:多少题做不出来,平时成绩就不及格了?(平时成绩拿不到60%就是不及格),请你快编个程序帮他算算吧,他自己肯定是编不出程序来的。
Input
键盘输入整数x,x在【50~99】之间
Output
输出达到不及格的题目数
Sample Input
90
Sample Output
5
#include<stdio.h>
int main()
{
int i,x,a;
float z=100;
scanf("%d",&x);
for(i=1; ;i++)
{
z=z*(x/100.);
if(z<60)
break;
}
printf("%d",i);
return 0;
}
22
Description
秋天,黑熊掰了一堆玉米留着过冬,如今冬天开始了,黑熊开始食用这些玉米,假设它每天吃掉现有(之前剩下的)玉米总数的n%(n由键盘输入),问,当玉米总数不足原来(最初)一半的时候,冬天已过去了多少天?
Input
输入n
Output
输出天数
Sample Input
20
Sample Output
4
#include<stdio.h>
int main()
{
int n,i;
float z=1.0;
scanf("%d",&n);
for(i=1;z>=0.5;i++)//z>=0.5和这里的if写一个就可以,没有if时i=0为起始值,如果用if,i=1
{
z=z*(1-n/100.);
if(z<0.5)
break;
}
printf("%d",i);
return 0;
}
23
Description
歌手大赛共有n名评委,每位评委给出一个分数,去掉最高分和最低分各一个,求选手最终得分
保留2位小数
Input
输入评委人数和每个评委所给分数(整数)
Output
输出选手最后得分,保留两位小数
Sample Input
9
90,96,92,97,95,96,90,95,97
Sample Output
94.43
方法1:
#include<stdio.h>
int main()
{
int a[100];
int i,n,s=0,max,min;
float m;
scanf("%d\n",&n);
for(i=0;i<=n-1;i++)
scanf("%d,",&a[i]);
max=a[0];min=a[0];
for(i=0;i<=n-1;i++)
{
if(max<a[i])
max=a[i];
if(min>a[i])
min=a[i];
s+=a[i];
}
s=s-max-min;
m=1.0*s/(n-2);
printf("%.2f",m);
return 0;
}
方法2:
#include<stdio.h>
int main()
{
int i,n,a,s=0,max,min;
float m;
scanf("%d\n",&n);
for(i=0;i<=n-1;i++)
scanf("%d,",&a);
max=a;min=a;
for(i=1;i<=n;i++)
{
scanf("%d,",&a);
if(max<a)
max=a;
if(min>a)
min=a;
s+=a;
}
s=s-max-min;
m=1.0*s/(n-2);
printf("%.2f",m);
return 0;
}
24
Description
键盘输入一串字符,以回车键结束,统计其中数字的个数和空格的个数
Input
输入一串字符,以回车键结束
Output
输出数字和空格的个数
Sample Input
as23s df6 AS30N8
Sample Output
6,2
方法1:
#include<stdio.h>
int main()
{
char s;
int i,a=0,b=0;
while((s=getchar())!='\n')
{
if(s>='0'&&s<='9')
a++;
if(s==' ')
b++;
}
printf("%d,%d\n",a,b);
return 0;
}
方法2:
#include<stdio.h>
int main()
{
int i,a=0,b=0;
char s;
for(i=1;;i++)
{
scanf("%c",&s);
if(s=='\n')
break;
if(s==' ')
a++;
if(s>='0'&&s<='9')
b++;
}
printf("%d,%d",b,a);
return 0;
}
25
Description
编写程序,读入若干同学计算机的考试成绩(整数),以-1结束,求平均成绩(保留1位小数)
Input
输入若干成绩,以-1结束
Output
输出平均成绩
Sample Input
66 77 88 99 -1
Sample Output
82.5
#include<stdio.h>
int main()
{
int a,i,p=0;
float z=0;
for(i=0;;i++)
{scanf("%d",&a);
if(a==-1)
break;
else
p=p+a;
}
z=(float)p/i;
printf("%.1f",z);
return 0;
}
26
Description
设有表达式 a+aa+aaa+aaaa+......,其中a代表一个数字,如:2+22+222+2222+22222+.......
键盘输入数字a和正整数n,求表达式前n项的和
Input
输入a和n
Output
输出表达式前n项的和
Sample Input
5,3
Sample Output
615
#include<stdio.h>
int main()
{
int a,n,s=0,t,i;
scanf("%d,%d",&a,&n);
t=a;
for(i=1;i<=n;i++)
{
s=s+t;
t=t*10+a;
}
printf("%d",s);
return 0;
}
27
Description
键盘输入正整数n,求表达式前n项的和
Input
输入n
Output
求表达式前n项的和
Sample Input
3
Sample Output
10
#include<stdio.h>
int main()
{
int a,n,s=0,t,i;
scanf("%d",&n);
t=0;
for(i=1;i<=n;i++)
{
t=t+i;
s=s+t;
}
printf("%d",s);
return 0;
}
28
Description
一个4位数,若分成两个2位数(如:2025分为20和25),并且这两个两位数的和的平方等于该4位数本身(如:(20+25)*(20+25)=2025),则该4位数称为平方数。
键盘输入一个4位整数n,求n以内的最大平方数,若没有,输出No。
Input
输入一个4位整数
Output
输出n以内最大平方数
Sample Input
9999
Sample Output
9801
#include<stdio.h>
int main()
{
int n,i=1000,a=0;
scanf("%d",&n);
while(i<=n)
{
if((i/100+i%100)*(i/100+i%100)==i)
a=i;
i++;
}
if(a=0)
printf("No");
else
printf("%d",a);
return 0;
}
29
Description
有数列:1,3,7,13,21,31,43,57,73...... 键盘输入一个整数n,问数列的前多少项之和可以超过n?
Input
输入正整数n
Output
输出项数
Sample Input
15
Sample Output
4
#include<stdio.h>
int main()
{
int n,s=0,t,i;
scanf("%d",&n);
for(i=1;;i++)
{
t=i*i-(i-1);
s=s+t;
if(s>n)
break;
}
printf("%d",i);
return 0;
}
30
Description
有一个数列如下:
A,a+a^2,a+(a+a^2)^2......
其特点是,从第二项开始,每一项都等于前一项的平方+a
键盘输入a的值(整数),再输入一个整数n(n>0),求数列前n项的和
Input
输入a和n的值
Output
输出数列前n项的和
Sample Input
1 2
Sample Output
3
#include<stdio.h>
int main()
{
int a,n,s=0,b,t=0,i;
scanf("%d %d",&a,&n);
for(i=1;i<=n;i++)
{
b=a+t*t;
s=s+b;
t=t*t+a;
}
printf("%d",s);
return 0;
}
31
Description
一筐鸡蛋,2个2个拿,最后剩一个,3个3个拿,正好拿完,4个4个拿,最后余1个,5个5个拿,差一个,6个6个拿,余3个,每次拿7个,正好拿完,每次拿8个,余1个,每次拿9个,正合适,问:筐里最少多少个鸡蛋?
Input
无
Output
输出最少的鸡蛋数
#include<stdio.h>
int main()
{
int a=0;
for(a=0;;a++)
{
if((a%2==1)&&(a%3==0)&&(a%4==1)&&(a%5==4)&&(a%6==3)&&(a%7==0)&&(a%8==1)&&(a%9==0))
// if((a%4==1)&&(a%10==9)&&(a%6==3)&&(a%8==1)&&(a%63==0)) 也行
{
printf("%d",a);
break;
}
}
return 0;
}
32
Description
求1+2+4+7+11+16+22+29+37+......前n项的和
Input
输入整数n
Output
输出前n项的和
Sample Input
1
Sample Output
1
#include<stdio.h>
int main()
{
int n,i,t=1,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s+t;
t=t+i;
}
printf("%d",s);
return 0;}
33
Description
键盘输入一个正整数n(n是四位数),求闭区间[n,10000]中满足下列条件的最小数:
(1)是素数
(2)个位上的数字等于十位上的数字
若没有,输出No
Input
输入一个4位的正整数
Output
输出符合条件的最小数或No
Sample Input
9999
Sample Output
No
#include<stdio.h>
int main()
{
int n,i,j,a,b,k,m=0,c=0,d = 0;
scanf("%d",&n);
for(i=n;i<=10000;i++)
{
if(c == 1)
break;
else{
d=0;
for(j=2;j<i;j++)
{ if(i%j==0)
{
d++;
break;}
}
if(d== 0)
{
a=i%10;
b=i/10%10;
if(a==b)
{
m=i;
c++;
}
}
}
}
if(m!=0)printf("%d",m);
else printf("No");
return 0;}
34
Description
完数是指一个数的因子之和等于它本身,如:6=1+2+3
键盘输入一个整数N,找出N以内(不含N)的完数
Input
正整数N
Output
输出N以内的完数,每个一行
Sample Input
100
Sample Output
6
28
#include<stdio.h>
int main()
{
int n,i,j,s;
scanf("%d",&n);
for(i=1;i<n;i++)
{
s=0;
for(j=1;j<=i-1;j++)
{
if(i%j==0)
s=s+j;
}
if(s==i)
printf("%d\n",i);
}
return 0;
}
35
Description
键盘输入两个正整数a,b,问:闭区间 [a,b] 中有多少个素数?
Input
输入两个正整数(先输入小数,再输入大数)
Output
输出素数的个数
Sample Input
100,200
Sample Output
21
#include<stdio.h>
int main()
{
int a,b,s=0,i,j;
scanf("%d,%d",&a,&b);
for(i=a,s=0;i<=b;i++)
{
for(j=2;j<=i;j++)
if(i%j==0)
break;
if(j==i)
s=s+1;
}
printf("%d",s);
return 0;
}
36
Description
开晚会需要买水果,键盘输入购买水果的钱数(整数,单位元),要求苹果、梨和西瓜都要买,总数为100斤。已知苹果价格是0.4元,梨0.2元,西瓜4元,问每种水果买多少?请给出所有可能的方案,每个方案占一行。
注:水果重量只能是整数斤
Input
输入买水果的钱数,整数
Output
输出所有可能的方案
Sample Input
40
Sample Output
5,90,5
24,72,4
43,54,3
62,36,2 81,18,1
#include<stdio.h>
int main()
{
int m,i,j,k;
scanf("%d",&m);
for(i=1;i<100;i++)
for(j=1;j<100;j++)
for(k=1;k<100;k++)
if(((i*4+j*2+k*40)==m*10)&&(i+j+k==100))
printf("%d,%d,%d\n",i,j,k);
return 0;
}
37
Description
编程打印下面图形的前n行
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
注:最后一行左边没有空格
程序框架如下,请你将所缺代码提交到考试系统中
#include<stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
/*****************************************/
//将此处所缺代码填写到文本框中提交
/*****************************************/
}
return 0;
}
Input
输入n
Output
打印图形的前n行
Sample Input
1
Sample Output
1
#include<stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=9-i;j++)
printf(" ");
for(j=1;j<=i;j++)
printf("%d",j);
for(j=i-1;j>0;j--)
printf("%d",j);
printf("\n");
}
return 0;
}
38
Description
键盘输入一个正整数作为圆的半径(圆心在坐标原点),求:有多少个横坐标和纵坐标都是整数的点被圆覆盖?(说明:含圆周上的点)
Input
输入半径
Output
输出“点”数
Sample Input
1
Sample Output
5
#include<stdio.h>
int main()
{
int n,x,y,t=0;
scanf("%d",&n);
for(x=-n;x<=n;x++)
for(y=-n;y<=n;y++)
if(x*x+y*y<=n*n)
t++;
printf("%d",t);
return 0;
}
39
Description
输出九九乘法表的前n行
Input
输入整数n
Output
输出九九乘法表的前n行
Sample Input
4
Sample Output
1*1= 1
2*1= 2 2*2= 4
3*1= 3 3*2= 6 3*3= 9
4*1= 4 4*2= 8 4*3=12 4*4=16
方法1
#include<stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{ for(j=1;j<=i;j++)
{ if(j==1)
printf("%d*%d=%2d",i,j,i*j);
else printf(" %d*%d=%2d",i,j,i*j);
}
printf("\n");}
return 0;
}
方法2
#include<stdio.h>
int main(){
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i-1;j++)
printf("%d*%d=%2d ",i,j,i*j);
printf("%d*%d=%2d\n",i,j,i*j);
}
40
Description
输出下面图形的前n行(星是对称的)
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
注:最后一行左边没有空格
Input
输入一个不超过10的正整数
Output
输出前n行图形
Sample Input
6
Sample Output
*
***
*****
*******
*********
***********
#include <stdio.h>
int main(){
int i,j,m;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
for(j=1;j<=10-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
return 0;
}
return 0;
}
41
兑换硬币:一分二分五分
#include<stdio.h>
int main(){
int a,b,c,m,sum=0;
scanf("%d",&m);
for(a=0;a<=100*m;a++)
{
for(b=0;b<=50*m;b++)
{
for(c=0;c<=20*m;c++)
{
if(5*c+2*b+a==100*m)
{
sum++;
}
}
}
}
printf("%d",sum);
return 0;
}
42
6.5:辗转赋值计算1 - 1/2 + 2/3 - 3/5 + 5/8 - 8/13 + 13/21…前n项(例题)点击开闭
窗体顶端
Descripti
on
编程计算1 - 1/2 + 2/3 - 3/5 + 5/8 - 8/13 + 13/21…前n项的值,结果保留6位小数
Input
输入n
Output
表达式前n项的值
Sample Input
15
Sample Output
1.195956
*****不知道对不对
#include<stdio.h>
int main()
{
int n,i;
float a=1,b=1,d,c=1,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s+(b/a)*c;
d=b;
b=a;
c=-c;
a=a+d;
}
printf("%.6f",s);
return 0;
}
#include<stdio.h>
int main()
{
int n,i,c;
float h,b,a;
scanf("%d",&n);
b=1;a=1;
for(i=1,h=0,c=1;i<=n;i++)
{
h+=((float)a/b)*c;
b=a+b;
a=b-a;
c=c*(-1);
}
printf("%6f\n",h);
return 0;
}
窗体底端
43
6.5:辗转赋值,s(n)=2/2-2/3+......点击开闭
窗体顶端
Description
已知表达式S(n)=2/2-2/3+3/4-4/6+...,(后一个分数的分母是前一个分数的分子分母之和减去1,后一个分数的分子是前一个分数的分母),计算前n项的和
Input
输入一个正整数n
Output
输出前n项的和,结果保留六位小数
Sample Input
2
Sample Output
0.333333
#include<stdio.h>
int main()
{
int n,i,a,b,c,d;
float h;
scanf("%d",&n);
a=2;b=2;c=1;d=2;
for(i=1,h=0;i<=n;i++)
{h+=((float)b/a)*c;
d=a;
a=(a+b-1);
b=d;
c=c*(-1);}
printf("%6f",h);
return 0;
}
窗体底端
44
Description
第一年,只有一头小母牛(0岁),它从第四年(3岁)开始,每年都生一头小母牛(一年只生一头),而且,所有的小母牛也都会在第四年开始生育........假设所有的母牛都不会死,请问,第n年,此牛群共有多少母牛?
Input
键盘输入一个整数n
Output
Sample Input
1
Sample Output
1
#include<stdio.h>
int main()
{
int n,a,b,c,d,i;
scanf("%d",&n);
a=1;b=1;c=1;d;
if(n<=3)
printf("1\n");
else{
for(i=4;i<=n;i++)
{ d=a+c;
a=b;
b=c;
c=d;
}
printf("%d",d);}
return 0;
}
45
6.6:循环:无符号短整数化为二进制(程序填空)点击开闭
窗体顶端
Description
键盘输入一个无符号短整数,将它化为二进制,不允许使用数组、位运算和递归函数。
提示:可以用以下方法,看看里面能不能包含2,4,8,16,32,64......这些2的x次幂,如:若整数是100,里面可以包含64,还可以包含32,不能包含16,8,能包含4,不能包含2和1,故化为二进制后结果是1100100
程序已有框架如下,请将所缺代码填写到考试页面的文本框中*/
#include<stdio.h>
int main()
{
unsigned short n;
int i,sum,m,k;
scanf("%u",&n);
//此处需要自己编写代码
return 0;
}
Input
输入一个无符号短整数
Output
输出二进制数
Sample Input
4
Sample Output
100
这个图不是这个题,但也是思路;
46
窗体底端
Description
程序中用c=getchar()可以从输入设备读入一个数字字符(例如'3’,其ascii码值是51,即:c的值是51),若用三个getchar()可以取回3个字符(例如:'3','5','2'),请编程将用户输入的数字字符序列(不多于5个)转化为整数。
如:用户输入三个字符:352(实际取回的是'3','5','2'),转为整数则为:352 (三百五十二)
程序已有框架如下,请你将所缺代码填写到考试页面的文本框中。
#include<stdio.h>
int main()
{
char c;
int n=0;
while( ) //将括号中所缺代码填写到考试页面的第一个文本框中
{
c=getchar();
/////////////////////////////////////////////////////////////////////////////////
/*将此处所缺代码填写到考试页面的第二个文本框中*/
/////////////////////////////////////////////////////////////////////////////////
}
printf("%d",n);
return 0;
}
Input
输入数字字符,不多于5个
Output
输出转化后的整数
Sample Input
352
Sample Output
352
#include<stdio.h>
int main()
{
char c;
int n=0;
while(n<100000)
{
c=getchar();
if(c>=48&&c<=57)
n=n*10+c-48;
else break;
}
printf("%d",n);
return 0;
}
47
6.6:循环(字符转纯小数)点击开闭
窗体顶端
Description
键盘输入一个以'.'开头的字符序列(‘.’后面全是数字,例如:.314),用若干getchar()将它们取回,请编程将这个字符序列化为一个纯小数。
如:键盘输入:.39867(共6个字符)
计算结果应为:0.39867(是一个实数)
int main()
{
/******************************************************/
// 自行添加代码
/******************************************************/
printf("%f\n", x); // x 的值应为纯小数
return 0;
}
Input
输入一个小数点开头的字符序列(后面都是数字字符)
Output
输出一个纯小数(保留6位小数)
Sample Input
.562
Sample Output
0.562000
窗体底端
#include<stdio.h>
int main()
{
char c;
float x=0,n=0;
int i=1;
getchar();
while(x==0)
{
c=getchar();
if(c>=48&&c<=57)
{n=n*10+c-48;
i=i*10;
}
else break;
}
x=n/i;
printf("%f\n",x);
return 0;
}
48
Description
编一函数,用来输出26个大写的英文字母,然后编主函数调用之
Input
无输入
Output
输出26个大写字母
Sample Input
Sample Output
ABCDEFGHIJKLMNOPQRSTUVWXYZ
#include<stdio.h>
void f()
{
printf("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
}
int main()
{
f();
return 0;
}
49
50
Description
编程序,求直角三角形的斜边长。两直角边由键盘输入(两个整数),由被调函数计算斜边长(保留两位小数)。
Input
Output
Sample Input
3 4
Sample Output
5.00
#include<stdio.h>
#include<math.h>
float f(int a,int b)
{
float s;
s=sqrt(a*a+b*b);
return s;
}
int main()
{
int x,y;
scanf("%d %d",&x,&y);
printf("%.2f",f(x,y));
return 0;
}
51
Description
请用函数调用的方式编程,本题考察函数设计是否合理
n个学生,都想知道自己的体重是否超标,标准是:对于男生,若体重(单位:kg)不超过(身高-100),即为标准,否则算超标;对于女生,若体重不超过(身高-115),即为标准,否则算超标。
键盘输入n及每个人的身高、体重和性别,分别判断他们是否体重超标。若超标,输出Yes,不超标输出No
Input
输入人数,占一行
依次输入每人的数据,每人数据占三行
其中:性别用字母代表,输入M或m代表男生,输入F或f代表女生
Output
依次输出每个人是否超标
Sample Input
3 175 65 M 167 52 f 160 55 F
Sample Output
No No Yes
#include<stdio.h>
int main()
{
int n,s,t,i;
char x;
int f(int a,int b,char c);
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
scanf("%d\n%d\n%c",&s,&t,&x);
if(f(s,t,x)==1)
printf("No\n");
if(f(s,t,x)==0)
printf("Yes\n");
}
return 0;
}
int f(int a,int b,char c)
{
int s;
if(c=='f'||c=='F')
if(b<=a-115)
s=1;
else s=0;
else if(c=='m'||c=='M')
if(b<=a-100)
s=1;
else s=0;
return s;}
52
Description
编一函数,用来输出九九乘法表的前n行,并编写主函数。
Input
输入整数n
Output
Sample Input
5
Sample Output
1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
方法1:佳妤
#include<stdio.h>
void jky(int x)
{
int i,j,s;
for(i=1;i<=x;i++){
for(j=1;j<=9;j++){
s=j*i;
if(j==1) printf("%d*%d=%d",i,j,s);
else if(j==i) printf(" %d*%d=%d",i,j,s);
else
printf(" %d*%d=%-2d",i,j,s);
if(i==j) break;
}
printf("\n");}
}
int main()
{
int a;
scanf("%d",&a);
jky(a);
return 0;
}
方法2:我的不对
#include<stdio.h>
int main()
{
int n;
void jj(int k);
scanf("%d",&n);
jj(n);
return 0;
}
void jj(int n)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
if(j==1)
printf("%d*%d=%d",j,i,i*j);
else if(j==i)
printf(" %d*%d=%d",j,i,i*j);
else printf(" %d*%d=%-2d",j,i,i*j);
}
printf("\n");
}
}
53
Description
本题必须用函数调用的方式编程,考察函数设计的合理性
一般人不愿意暴露自己的隐私,比如:体重,但有时候又不得不说,于是就会用某些暗语代替。今有一项指标X( X=体重- 年龄),每个人必须说出年龄和体重,但体重可以用大写字母代替:A代表45公斤(A的ASCII码值-20=45),B代表46公斤......
键盘输入人数n以及每个人的两项数据(年龄和体重),依次输出每个人的指标
Input
输入n,占一行
输入每个人的数据,每人数据占两行
Output
输出每个人的指标,每个一行
Sample Input
2 21 F 19 Z
Sample Output
29
51
(*ASCII码值不用getchar,%c型的直接%d型就行,所以是b-20)
#include<stdio.h>
int main()
{
int n,s,i;
char t;
int f(int a,char b);
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
scanf("%d\n%c",&s,&t);
printf("%d\n",f(s,t));
}
return 0;
}
int f(int a,char b)
{
int x;
x=(b-20)-a;
return x;
}
54
Description
有3个软件,都需要征求用户意见才能安装,规定如下:对于任何一个软件,若用户输入Y,则安装,输入其他任何字符都表示不安装。请你编写一个函数,该函数可以分辨出用户做出的是哪一种选择(共8种可能),要求在此函数中输入三个字符
编写主函数,调用上面的函数,主函数根据用户的选择输出相应信息:000代表都不安装,100代表只安装第一个,010代表只安装第二个,011代表安装第二个和第三个......111代表全安装
Input
输入3个字符,每个一行
Output
输出相应的信息
Sample Input
Y
,
Y
Sample Output
101
(*注意输入时回车会有影响,用getchar())
#include<stdio.h>
int f()
{
char a,b,c;
int i,j,k,s;
scanf("%c",&a);
getchar();
scanf("%c",&b);
getchar();
scanf("%c",&c);
if(a=='Y')
i=1;
else i=0;
if(b=='Y')
j=1;
else j=0;
if(c=='Y')
k=1;
else k=0;
s=i*100+j*10+k;
return s;
}
int main()
{
printf("%03d",f());
return 0;
}
55
Description
已有程序框架如下:
#include <stdio.h>
/***********************************/
/* 此处缺少被调函数的定义 */
/***********************************/
int main()
{
int n,m, i;
scanf("%d,%d", &n,&m);
for(i=n; i<=m;i++)
if( ) //括号中缺少的是含有函数调用的代码
printf("%5d",i);
return 0;
}
上面程序的功能是找出n到m之间的素数,只是缺少两部分代码。所缺第一部分代码应是一个函数的定义,该函数用来判断某数是否为素数,所缺第二部分代码应包含有函数调用。
请将所缺的两部分代码分别填写到题目下面的两个文本框中并提交,其他代码不需要提交。
Code1填写函数定义
Code2填写主函数所缺代码
(素数定义:只能被1和它本身整除的数,1不是素数)
Input
输入两个正整数,先输入小的,再输入大的
Output
输出两个数之间的所有素数
Sample Input
1,3
Sample Output
2 3
(* ==不是=)
#include <stdio.h>
int sh(int a)
{
int q,p;
for(q=2;q<=a;q++)
{
if(a%q==0)
break;
}
if(q==a)
p=1;
else p=0;
return p;
}
int main()
{
int n,m, i;
scanf("%d,%d", &n,&m);
for(i=n; i<=m;i++)
if(sh(i)==1) //括号中缺少的是含有函数调用的代码
printf("%5d",i);
return 0;
}
56
Description
一个4位数,若分成两个2位数(如:2025分为20和25),并且这两个两位数的和的平方等于该4位数本身(如:(20+25)*(20+25)= 2025),则该4位数称为平方数。
写一个函数,用来判断一个数是否平方数,然后编写主函数统计n(n由键盘输入)以内的平方数的个数
Input
输入一个4位整数
Output
输出平方数的个数
Sample Input
1001
Sample Output
0
#include<stdio.h>
int f(int a)
{
int p;
if((a/100+a%100)*(a/100+a%100)==a)
p=1;
else p=0;
return p;
}
int main()
{
int n,i,m=0;
scanf("%d",&n);
for(i=1000;i<=n;i++)
{
if(f(i)==1)
m=m+1;
}
printf("%d",m);
return 0;
}
57
Description
编写函数,用来输出前n个大写的英文字母,并编写主函数调用它
Input
输入一个整数n (1<=n<=26)
Output
输出前n个大写字母
Sample Input
2
Sample Output
AB
(*在被调函数里输入)
#include<stdio.h>
void f()
{
int i,p=65;
int n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("%c",p);
p++;
}
}
int main()
{
f();
return 0;}
58
Description
键盘输入两个整数存入变量a、b,求开区间(a,b)中满足以下条件的最大数,若没有满足条件的数,输出No
条件:
(1)该数是3和7的倍数
(2)该数最后2位数字是21
要求:用函数调用的方式编程,即:某数是否满足条件由被调函数sub判断
程序已有框架如下,请你把所缺代码提交到考试页面的文本框中
#include <stdio.h>
/**********************************/
//此处定义被调函数sub()
/**********************************/
int main()
{
/***********************************/
//此处给出主函数代码
/***********************************/
}
Input
输入两个整数,先输入小数,再输入大数
Output
输出符合条件的最大数或No
Sample Input
10000,20000
Sample Output
18921
****不知道对不对
#include<stdio.h>
int sub(int x)
{
int m;
if(x%21==0&&x%100==21)
m=1;
else m=0;
return m;
}
int main()
{
int a,b,i,q;
scanf("%d,%d",&a,&b);
for(i=b-1;i>a;i--)
{
if(sub(i)==1)
{printf("%d",i);
break;}
}
if(i==a)
printf("No");
return 0;
}
59
Description
编写一个递归函数,该函数可以求出裴波那契数列的任意一项。裴波那契数列的前两项都是1,其后每一项,都是该项前面两个数之和:1,1,2,3,5,8,13,21......
主函数已在后台,系统会自动将主函数添加到你提交的代码之后,其内容如下:
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
只需要提交被调函数的代码。
Input
输入一个正整数表示第几项
Output
输出数列中该项的值
Sample Input
3
Sample Output
2
#include<stdio.h>
int f(int m)
{
int a=1;
if(m==1||m==2)
a=1;
if(m>2)
a=f(m-1)+f(m-2);
return a;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
60
Description
总共有n个台阶,每次可以跨1个台阶,也可以跨2个台阶,问,有多少种上法?
例如, 若有3个台阶可以有3种上法:
(1)1+1+1(跨1个,跨1个,跨1个)
(2)1+2 (跨1个,跨2个)
(2)2+1(跨2个,跨1个)
Input
键盘输入台阶数
Output
给出方案数
Sample Input
3
Sample Output
3
#include<stdio.h>
int f(int m)
{
int a=1;
if(m==1)
a=1;
if(m==2)
a=2;
if(m>2)
a=f(m-1)+f(m-2);
return a;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", f(n));
return 0;
}
61
Description
已有程序框架如下:
#include <stdio.h>
/*************************************/
/* 此处缺少被调函数定义 */
/*************************************/
/*int main()
{
int a,b;
scanf("%d,%d", &a,&b);
swap( ); //此处缺少参数
printf("%d,%d",a,b);
return 0;
}
程序功能是从键盘获取两个整数存入a,b,交换a,b的值后输出。请你在题目下面的两个文本框中分别填写上面所缺的两处代码,然后提交,其他代码不要提交。
Code1文本框填写函数定义
Code2文本框填写参数
Input
输入两个整数
Output
输出交换后的两个数
Sample Input
1,2Sample Output
2,1
#include <stdio.h>
void swap(int *p,int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
int main()
{
int a,b;
scanf("%d,%d", &a,&b);
swap(&a,&b);
printf("%d,%d",a,b);
return 0;
}
62
Description
主函数中输入一个整数,由被调函数(无返回值)使之变为绝对值,然后主函数输出它
注意:输入输出都由主函数完成,被调函数没有返回值
Input
输入任意整数
Output
输出其绝对值
Sample Input
-9Sample Output
9
#include <stdio.h>
void swap(int *p)
{
if(*p>=0)
*p=*p;
else *p=-*p;
}
int main()
{
int a;
scanf("%d", &a);
swap(&a);
printf("%d",a);
return 0;
}
63
Description
主函数中定义变量max和min。在被调函数中输入n个整数(先输入n,再输入n个整数),找出最大、最小值分别存入主函数中的max和min中。最后结果在主函数中输出。
已有程序框架如下:
#include <stdio.h>
/***************************************************************/
//此处缺少被调函数的定义
/***************************************************************/
/*int main()
{
int max,min;
max_min(______________); //横线处缺少函数实参
printf("max=%d min=%d\n",max,min);
return 0;
}
请编写被调函数定义,填写到考试页面的第一个文本框中,并将横线处所缺代码填写到第二个文本框中
Input
n以及n个整数
Output
输出最大、最小值
Sample Input
10
5 9 17 11 2 29 3 1 23 17Sample Output
max=29
min=1
#include <stdio.h>
void max_min(int *p,int *q)
{
int n,a,b,m,k,i;
scanf("%d",&n);
scanf("%d",&b);
m=k=b;
for(i=1;i<=n-1;i++)
{
scanf("%d",&a);
if(a>m)
m=a;
if(a<k)
k=a;
}
*p=m;
*q=k;
}
int main()
{
int max,min;
max_min(&max,&min); //横线处缺少函数实参
printf("max=%d min=%d\n",max,min);
return 0;
}
64
Description
主函数输入两个正整数a、b,由被调函数做如下操作:从大数上减掉一半的数值加在小数上,使小数增大,然后反过来再操作一次。最后在主函数中输出操作后a、b的值。
如:键盘输入9,7,则第一次操作后两个数变成:5,11,第二次操作后变成:10,6
主函数已在后台,只是其中缺少一行函数调用的代码。请你编写被调函数,并在主函数中填写所缺代码
系统已有代码:
#include <stdio.h>
int main()
{
int a,b;
scanf("%d,%d",&a,&b);
//此处需要添加函数调用的代码
printf("%d,%d\n",a,b);
return 0;
}
注:考试系统中会出现两个空,第一个空中填写被调函数的代码,第二个空中填写主函数所缺的一行代码。被调函数的代码将出现在系统已有的代码之前
Input
任意两个整数
Output
输出处理后的两个数
Sample Input
9,7Sample Output
10,6
#include <stdio.h>
void f(int *p,int *q)
{
if(*p>*q)
{
*q=*p/2+*q;
*p=*p-(*p/2);
*p=*q/2+*p;
*q=*q-(*q/2);
}
else
{
*p=*q/2+*p;
*q=*q-(*q/2);
*q=*p/2+*q;
*p=*p-(*p/2);
}
}
int main()
{
int a,b;
scanf("%d,%d",&a,&b);
//此处需要添加函数调用的代码
f(&a,&b);
printf("%d,%d\n",a,b);
return 0;
}
65
Description
main函数中定义了四个整形变量a、b、m、n, 其中a、b用来存储键盘输入的两个正整数,m、n分别用来存储a、b的最大公约数和最小公倍数,但是main函数只负责输入数据和输出结果,求最大公约数和最小公倍数的任务需要另一个函数去完成,即:被调函数需要求出这两个值并分别存储到main函数定义的m、n中,请在下面的主函数中填写函数声明和调用语句,并编写被调函数sub,然后将全部代码一起提交。
注意:1.不允许改变主函数其他任何地方,只填空。2.被调函数只有一个。
#include <stdio.h>
int main()
{
______________; //这里需要填写代码
int a,b,m,n;
scanf("%d,%d",&a,&b);
_______________; //此处调用sub函数,请填写一条语句
printf("%d,%d,a=%d,b=%d\n",m,n,a,b);
return 0;
}
Input
输入两个正整数,中间用逗号隔开
Output
输出最大公约数和最小公倍数以及a、b的值,中间用逗号隔开
Sample Input
15,20Sample Output
5,60,a=15,b=20
#include <stdio.h>
int main()
{
void sub(int a,int b,int *p,int *q);
int a,b,m,n;
scanf("%d,%d",&a,&b);
sub(a,b,&m,&n);
printf("%d,%d,a=%d,b=%d\n",m,n,a,b);
return 0;
}
void sub(int a,int b,int *p,int *q)
{
int i,j;
for(i=a;i>=1;i--)
{
if(a%i==0&&b%i==0)
{ *p=i;
break;
}
}
for(j=a;j<=a*b;j=j+a)
{
if(j%b==0)
{
*q=j;
break;
}
}
}
66
Description
键盘输入10个整数,问:第m(m:0~9)个元素的值共出现了几次?
Input
输入10个整数
Output
输出第m个元素的值出现了几次
Sample Input
3 5 7 2 5 3 2 5 9 0 3
Sample Output
2
Code 1 here:
#include<stdio.h>
int main()
{
int a[10],i,k,s=0;
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&k);
for(i=0;i<=9;i++)
{if(a[k]==a[i])
s=s+1;
}
printf("%d",s);
return 0;
}
67
*
Description
键盘输入10个整数,再输入一个正整数m(m不超过9),将数组前m个元素移动到最后,其他数据前移填补前面的空位置(不允许再定义别的数组或变量)
程序已有框架,请将所缺代码提交
#include<stdio.h>
int main()
{
int a[10],m,i,j,t;
for(i=0;i<=9;i++)
scanf("%d",a+i);
scanf("%d",&m);
//////////////////////////////////////////
//此处缺少代码
//////////////////////////////////////////
for(i=0;i<=9;i++)
{
if(i==0)
printf("%d",a[i]);
else
printf(" %d",a[i]);
}
return 0;
}
Input
输入10个整数,再输入一个m
Output
输出移动后的数组各项值
Sample Input
1 2 3 4 5 6 7 8 9 0 3
Sample Output
4 5 6 7 8 9 0 1 2 3
#include<stdio.h>
int main()
{
int a[10],m,i,j,t;
for(i=0;i<=9;i++)
scanf("%d",a+i);
scanf("%d",&m);
for(j=0;j<m;j++)
{
for(i=1;i<10;i++)
{
t=a[i-1];
a[i-1]=a[i];
a[i]=t;}
}
for(i=0;i<=9;i++)
{
if(i==0)
printf("%d",a[i]);
else
printf(" %d",a[i]);
}
return 0;
}
68
*
Description
按从小到大的顺序从键盘输入10个整数存入数组int a[11]中,再从键盘输入一个任意整数,将它插入到数组中,要求插入后数组仍然是从小到大排列的。
注意:不允许用排序的方法做 ,即不允许先把数存到数组中然后排序,而是应该先给这个数腾出位置,直接把它存到该位置
Input
输入10个数,然后再输入一个数
如:
1 3 5 7 9 11 13 15 17 19
12
Output
输出插入后的数组内容,如
1 3 5 7 9 11 12 13 15 17 19
Sample Input
1 3 5 7 9 11 13 15 17 19 12
Sample Output
1 3 5 7 9 11 12 13 15 17 19
#include<stdio.h>
int main()
{
int a[11];
int i,m,n;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>=a[i])
m=i+1;
for(i=10;i>=m;i--)
a[i]=a[i-1];
a[m]=n;
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("%d",a[10]);
return 0;}
69
*
Description
输入10个互不相同整数存入数组,先按原始顺序输出它们,将最大值和最小值交换位置后,再输出一次。
程序已有框架,你只需要把所缺代码提交即可,其他代码已在后台。
#include <stdio.h>
int main()
{
int a[10],i,max,min,kmax,kmin,temp; //kmax和kmin分别用来存储最大、最小数的序号,max和min未必用到
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<=8;i++)
printf("%d ",a[i]);
printf("%d\n",a[9]);
/***********************************/
/* 此处缺少代码 */
/***********************************/
for(i=0;i<=8;i++)
printf("%d ",a[i]);
printf("%d\n",a[9]);
return 0;
}
Input
随意输入10个互不相同的整数
Output
输出原顺序,交换位置后,再输出一次
Sample Input
3 0 5 8 9 2 7 6 1 4
Sample Output
3 0 5 8 9 2 7 6 1 4 3 9 5 8 0 2 7 6 1 4
#include <stdio.h>
int main()
{
int a[10],i,max,min,kmax,kmin,temp; //kmax和kmin分别用来存储最大、最小数的序号,max和min未必用到
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<=8;i++)
printf("%d ",a[i]);
printf("%d\n",a[9]);
max=min=a[9];
for(i=0;i<10;i++)
{if(max<=a[i])
{ max=a[i];
kmax=i;}
if(min>=a[i])
{
min=a[i];
kmin=i;
}
}
temp=a[kmin];
a[kmin]=a[kmax];
a[kmax]=temp;
for(i=0;i<=8;i++)
printf("%d ",a[i]);
printf("%d\n",a[9]);
return 0;
}
70
*
Description
键盘输入10个整数存入数组,找出最大值和最小值,先将最大值与最前面的数交换,再将最小数与最后一个数交换,使得最终最大值在最前,最小值在最后。
说明:输入的数据确保最大值和最小值都只有一个
Input
输入10个整数
Output
输出处理后数组中所有数据
Sample Input
2 4 1 5 8 9 0 4 7 6
Sample Output
9 4 1 5 8 2 6 4 7 0
#include<stdio.h>
int main()
{
int a[10];
int i,kmin,kmax,max,min,s,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
min=max=a[0];
for(i=0;i<10;i++)
{
if(max<=a[i])
{ max=a[i];
kmax=i;}
if(min>=a[i])
{min=a[i];
kmin=i;}
}
if(kmin==0)
{ s=a[0];a[0]=a[kmax];a[kmax]=s;
kmin=kmax;
t=a[9];a[9]=a[kmin];a[kmin]=t;}
else
{ s=a[0];a[0]=a[kmax];a[kmax]=s;
t=a[9];a[9]=a[kmin];a[kmin]=t;}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;717273
}
c语言总练习题的更多相关文章
- Python语言:Day11练习题
24.实现一个整数加法计算器:如:content=input('请输入内容:')#如:5+9或5+ 9或5 + 9 content = input("请输入需要计算的:") #如: ...
- Python语言:Day9练习题及其答案
1.使用while循环输出1,2,3,4,5,6, 8,9,10 #!/usr/bin/python3 n = 1 while n <= 10: if n != 7: print(n) else ...
- MySQL语言 数据库练习题分解。
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- Go语言基础练习题系列2
1.练习1 生成一个随机数,让一个用户去猜这个数是多少? 代码示例如下: package main import ( "fmt" "math/rand" //m ...
- Go语言基础练习题系列1
1.练习1 题目:使用fmt分别打印字符串.二进制.十进制.十六进制.浮点数. package main import ( "fmt" ) func main() { var a ...
- C语言经典练习题:水仙花数
废话不说直接进入正题:传说中的水仙花数就是一个三位数的各个位数的三次方之和就是这个数本身例如153=1*1*1+5*5*5+3*3*3. 好,开始解题:首先,题中已经说了水仙花数是一个三位数,也就是说 ...
- m_Orchestrate learning system---网站的语言选择功能(中文英文)
m_Orchestrate learning system---网站的语言选择功能(中文英文) 一.总结 一句话总结:有两种方法,一是session+js端代码,而是session+php端代码. 推 ...
- 重温C语言(1)----计算算术表达式的值
<C程序设计语言>练习题 5-10 编写程序 expr,计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示.例如,命令 expr 2 3 4 + * 计算表达式 ...
- C语言程序运行时的一些细节
本章可以看作是 <Unix 环境高级编程>Ch7 的笔记. C 程序运行的开始和结束 一个可以运行的 C 语言总要有一个 main 函数,main 函数现在的完整定义是 int main( ...
随机推荐
- springcloud禁用动注册正在运行的服务
@EnableDiscoveryClient(autoRegister=false)或者在配置文件里spring.cloud.service-registry.auto-registration.en ...
- eclipse工具按键翻译
1.新建项目界面 2.新建类界面 3.类中右击
- Java公开课-02.抽象类和接口
在讲述抽象类和接口之前,扯点别的:封装,继承,多态,我只做个简单的涉略 一,封装 1.体现: 将变量和方法放到一个类中 私有字段封装成共有属性 2.this: 如果发现成员变量的名称和方法参数的名称相 ...
- windows10系统终极净化方法
去年购入一台华硕FL8000U,性能很是不错,但是硬件只能兼容win10,不支持win7(linux倒是可以,但是始终用不顺手),win10里面杂七杂八的确实很多,本人重度强迫症+洁癖+极简主义,所以 ...
- 渐进式Web应用(PWA)入门教程(上)
最近关于渐进式Web应用有好多讨论,有一些人还在质疑渐进式Web应用是否就是移动端未来. 但在这篇文章中我并不会将渐进式APP和原生的APP进行比较,但有一点是可以肯定的,这两种APP的目标都是使用户 ...
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装
在asp.net项目中,添加一个[一般处理程序]来处理请求是很自然的事,这样会得到一个实现自IHttpHandler的类,然后只需在ProcessRequest方法中写上处理逻辑就行了.但是这样的一个 ...
- 关于checkpoint
Ⅰ.Checkpoint 1.1 checkpoint的作用 缩短数据库的回复时间 缓冲池不够用时,将脏页刷到磁盘 重做日志不可用时,刷新脏页 1.2 展开分析 page被缓存在bp中,page在bp ...
- 解决持久化数据太大,单个节点的硬盘无法存储的问题;解决运算量太大,单个节点的内存、CPU无法处理的问题
需要学习的技术很多,要自学新知识也不是一件容易的事,选择一个自己比较感兴趣的会是一个比较好的开端,于是,打算学一学分布式系统. 带着问题,有目的的学习,先了解整体架构,在深入感兴趣的细节,这是我的计划 ...
- 实际项目开发需要注意的tips
1.尽量少用== 或者 != ,除非能够保证这里不会出现强制类型转换,严格起见,最好用 === 与 !==
- 在linux服务器之间复制文件和目录命令scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...