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