问题 A: C语言-猴子吃桃
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
输入要求
N
输出要求
桃子总数
假如输入
10
应当输出
1534
#include<stdio.h> int main(void) { int n,x,y; scanf("%d",&n); x=1; while(n>1){ y=(x+1)*2; x=y; n--; } printf("%d ",y); return 0; }
问题 B: C语言-奖金计算
#include<stdio.h> int main(void) { int n,y; scanf("%d",&n); if(n<=100000){ y=n*0.1; } else if(n>100000&&n<=200000){ y=100000*0.1+(n-100000)*0.075; } else if(n>200000&&n<=400000){ y=100000*0.1+100000*0.075+(n-200000)*0.05; } else if(n>400000&&n<=600000){ y=100000*0.1+100000*0.075+200000*0.05+(n-400000)*0.03; } else if(n>600000&&n<=1000000){ y=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(n-600000)*0.015; } else{ y=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(n-1000000)*0.01; } printf("%d ",y); return 0; }
问题 C: C语言-公约公倍
假如输入
5 7
应当输出
1 35
#include<stdio.h> int main(void) { int m,n; int r,x,t; scanf("%d %d",&m,&n); x = m*n; if (m<n) { t=m; m=n; n=t; } while (n!=0) { r=m%n; m=n; n=r; } printf("%d %d ",m,x/m); printf(" "); return 0; }
问题 D: C语言-转置矩阵
#include<stdio.h> int main(void) { int i,j,temp; int a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d ",&a[i][j]); for(i=0;i<3;i++) for(j=0;j<3;j++) if(i<=j){ temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ",a[i][j]); printf(" "); } return 0; }
问题 E: 1999年秋浙江省计算机等级考试二级C 编程题(1)
编制程序,输入m,n(M>=n>=0)后,计算下列表达式的值并输出:
m!
n! (m-n)!
要求将计算阶乘运算的函数写为fact(n),函数返回值的类型为float
输入要求
m n
输出要求
对应表达式的值
假如输入
2 1
应当输出
2
#include<stdio.h> float fact(int n); int main(void) { int x,y; float a,b,c,d; scanf("%d %d",&x,&y); b=fact(x); c=fact(y); d=fact(x-y); a=b/(c*d); printf("%.0lf ",a); return 0; } float fact(int n) { int i; float z; z=1; for(i=1;i<=n;i++){ z=z*i; } return z; }
问题 F: 1999年秋浙江省计算机等级考试二级C 编程题(2)
题目描述
编制程序,统计文本stdin中字符$出现的次数,并将结果写入文件stdout
输入要求
字符文本
输出要求
$次数
假如输入
as$dfkjhkjkjdhf
asdfkj$lskdfj
werijweirjo$wie
应当输出
3
提示
#include <stdio.h> int main(){ FILE *p; ..... //p=fopen("data.txt","r"); p=stdin; ..... //p=fopen("res.txt","w"); p=stdout; .... return 0; }
问题 G
编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。
#include<stdio.h> int main(void) { int n,i,k,sum; scanf("%d ",&n); sum=0; for(i=1;i<=n;i++){ scanf("%d ",&k); if(k%2==0) sum=sum+k; } printf("%d ",sum); return 0; }
问题 H: 2000年秋浙江省计算机等级考试二级C 编程题(2)
题目描述
编制函数del_char
函数原型为 void del_char(char *,char),函数的功能是删除a指向的字符串中值为ch的字符,例如从字符串"AscADef"中删除'A'后,字符串为"scDef"。
输入要求
需要删除的字符ch
需要处理的字符串
输出要求
处理后的字符串
假如输入
A
AscADef
应当输出
scDef
问题 I: 2001年秋浙江省计算机等级考试二级C 编程题(1)
编程,输入n后:输入n个数,根据下式计算并输出y值。
/ x2-sinx x<-2
y={ 2x+x -2<=x<=2
| ___________
√ X2+X+1 x>2
* 输出保留两位小数
输入要求
n
n个数
输出要求
y
假如输入
1
1
应当输出
3.00
#include<stdio.h> #include<math.h> int main(void) { int n,i; double x,y; scanf("%d ",&n); for(i=1;i<=n;i++){ scanf("%lf",&x); if(x<-2){ y=x*x-sin(x); } else if(x>2){ y=sqrt(x*x+x+1); } else{ y=pow(2,x)+x; } printf("%.2f ",y); } return 0; }
问题 J: 2001年秋浙江省计算机等级考试二级C 编程题(2)
题目描述
编制函数,其功能是在float类型一维数组中查找最大值、最小值,并将它们返回到调用程序。
* 输出保留两位小数
输入要求
n
n个浮点数
输出要求
最大值 最小值
假如输入
10
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
应当输出
10.00 1.00
#include<stdio.h> int main(void) { int n,i,row,col,j; double a[20][1]; scanf("%d ",&n); for(i=0;i<n;i++) scanf("%lf",&a[i][1]); row=0; col=0; for(i=0;i<n;i++) if(a[i][1]>a[row][1]){ row=i; } for(j=0;j<n;j++) if(a[j][1]<a[col][1]){ col=j; } printf("%.2f %.2f ",a[row][1],a[col][1]); return 0; }
问题 K: 2002年秋浙江省计算机等级考试二级C 编程题(1)
题目描述
输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
输入要求
一行字符
输出要求
统计值
假如输入
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
应当输出
23 16 2 4
#include<stdio.h> int main(void) { int letter,digit,other,blank; char ch; letter=digit=other=blank=0; while((ch=getchar())!=' ') if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) letter++; else if(ch>='0'&&ch<='9') digit++; else if(ch==' ') blank++; else other++; printf("%d %d %d %d ",letter,digit,blank,other); return 0; }
问题 L: 2002年秋浙江省计算机等级考试二级C 编程题(2)
输入一个正整数n.求1+1/2!+1/3!+....+1/n!
要求定义并调用函数fact(n)计算n的阶乘,函数返回值的类型是点单精度浮点型。
* 输出保留4位小数
#include<stdio.h> double fact(int n); int main(void) { int k,i; double sum,item,a; sum=0; item=1; scanf("%d",&k); for(i=1;i<=k;i++){ sum=sum+item; a=fact(i+1); item=1/a; } printf("%.4f ",sum); return 0; } double fact(int n) { int b; double x; x=1; for(b=1;b<=n;b++){ x=x*b; } return x; }
问题 M: 2003年秋浙江省计算机等级考试二级C 编程题(1)
题目描述
输入10个数,求它们的平均值,并输出大于平均值的数据的个数。
输入要求
10个数
输出要求
大于平均数的个数
假如输入
1 2 3 4 5 6 7 8 9 10
应当输出
5
#include<stdio.h> int main(void) { int i,letter; int a[10]; double sum,x; sum=0; letter=0; x=0; for(i=0;i<10;i++){ scanf("%d ",&a[i]); sum=sum+a[i]; } x=sum/10.0; for(i=0;i<10;i++){ if(a[i]>x){ letter++; } } printf("%d ",letter); return 0; }
问题 N
输出一张摄氏一华氏温度转换表,摄氏温度的取值区间是[-1000 C,1500C ],温度间隔50C。要求定义和调用函数 ctof(c),将摄氏温度C转换成华氏温度F,计算公式:
F = 32 + C* 9/5。
例如
c=0->f=32 c=5->f=41 c=10->f=50 c=15->f=59 c=20->f=68 c=25->f=77 c=30->f=86 c=35->f=95 c=40->f=104 c=45->f=113 c=50->f=122 c=55->f=131 c=60->f=140 c=65->f=149
#include<stdio.h> int main(void) { double c,f; for(c=-100;c<=150;c++){ f=32+c*9.0/5.0; printf("c=%.0f->f=%.0f ",c,f); c=c+4; } return 0; }
问题 O:
输入一个正整数n (1≤ n ≤6),再输入一个n 行n列的矩阵,找出该矩阵中绝对值最大的元素以及它的行下标和列下标。
假如输入
2
1 2
3 4
应当输出
4 2 2
#include<stdio.h> #include<math.h> int main(void) { int n,i,j; int a[6][6]; int row=1,col=1; scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(fabs(a[i][j])>fabs(a[row][col])){ row=i; col=j; } printf("%d %d %d ",a[row][col],row,col); return 0; }
问题 P: 2006年春浙江省计算机等级考试二级C 编程题(1)
编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
#include<stdio.h> int main(void) { int x,y,z; x=y=z=0; double grade; scanf("%lf",&grade); while(grade>0){ if(grade<60) z++; else if(grade>=85) x++; else y++; scanf("%lf",&grade); } printf(">=85:%d ",x); printf("60-84:%d ",y); printf("<60:%d ",z); return 0; }
问题 Q: 2006年春浙江省计算机等级考试二级C 编程题(2)
编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。
1+1/2+ .... +1/n!
输出保留5位小数。
#include<stdio.h> double fact(int k); int main(void) { int n,i; double sum=0; scanf("%d",&n); for(i=1;i<=n;i++) sum=sum+1/fact(i); printf("sum=%.5lf ",sum); return 0; } double fact(int k) { int i; double z; z=1; for(i=1;i<=k;i++){ z=z*i; } return z; }