!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
}