打了九天,进步是可见的。当时实践入门直接开打,导致上课都在摸鱼...现在改成了向后自学。用最新手的方式打出来的代码,用作保存记录。
1. (程序题)
题目编号:Exp02-Basic01,GJBook3-03-03
题目名称:递增排序
题目描述:任意三个实数a、b、c,按照从小到大的顺序输出。
输入:输入三个实数(测试数据均只有一位小数)。
输出:按照从小到大顺序输出之前输入的三个实数,以一个西文空格间隔,且每个实数小数点后保留1位。
样例:
输入: 2.3 5.6 1.2
输出: 1.2 2.3 5.6
#include<stdio.h>
int main()
{
float a,b,c,t;
scanf("%f%f%f",&a,&b,&c);
if(a<b) { t=a;a=b;b=t;}
if(a<c) {t=a;a=c;c=t;}
if(b<c){t=b;b=c;c=t;}
printf("%.01f %.01f %.01f",c,b,a);
}
入门的时候打过,当时觉得很妙,后面了解到了条件运算符(?:),觉得这个也很不错,还没用这个试过。
2. (程序题)
题目编号:Exp02-Basic02
题目名称:括号统计
题目描述:编程序,判断给定以字符‘@’结束的字符序列中‘(’与‘)’、‘[’与‘]’、‘{’与‘}’的个数是否相等。
输入:输入一串以字符‘@’结束的字符序列,其间可能含有若干空白字符。
输出:个数不相等的括号(按花括号、方括号、圆括号的顺序);如果三种括号的个数都相等,输出NULL。
样例1:
输入:{a+b*c+(d/e-f]}}@
输出:{}[]()
样例2:
输入:{a + b*c+(d/e-f]}@
输出:[]()
#include<stdio.h>
int main()
{
int a=0,b=0,c=0,d=0,e=0,f=0;
char m=0;
while(m!='@'){
scanf("%c",&m);
switch(m){
case '{':a++;break;
case '}':b++;break;
case '[':c++;break;
case ']':d++;break;
case '(':e++;break;
case ')':f++;break;
default:break;}
}
if(a!=b) printf("{}");
if(c!=d) printf("[]");
if(e!=f) printf("()");
if(a==b&&c==d&&e==f) printf("NULL");
return 0;
}
这个当时看的c入门书有,但是没想到把这两个套在一起,这题属于醍醐灌顶。
3. (程序题)
题目编号 :Exp02-Basic03
题目名称:数字求和
题目描述:给定一个整数a,以及另外的5个整数,问题是:这5个整数中,可以被a整除的整数和是多少?
输入:输入一行只包括6个小于100的整数,其中第一个整数是a,输入保证a不为零。
输出:输出一行,给出一个整数,是5个数中可以被a整除的所有整数的和。
样例1:
输入:10 10 -20 30 40 11
输出:60
样例2:
输入:11 10 20 30 40 12
输出:0
#include<stdio.h>
int main()
{
int a,t=1,m=0,n=0;
scanf("%d",&a);
while(t<=5)
{
scanf("%d",&m);
if((m%a)==0) {n=n+m;}
t=t+1;
}
printf("%d",n);
return 0;
}
这题到第八题都不难,直到第九题狠狠把我给创了...到现在还搁这想为什么那个数能过呢...
4.5.6.7.8.跳过
9. (程序题)
题目编号 :Exp02-Basic09,GJBook3例-04-10
题目名称:斐波纳契序列
问题描述:
开始,有一对小兔子。
一个月后,变成大兔子开始怀孕;
两个月后, 生出一对小兔子,这时共有两对兔子(一对大兔子, 一对小兔子), 同时大兔子又再次怀孕;
三个月后, 以前出生的小兔子变成大兔子,以前怀孕的大兔子又生出一对小兔子, 这时共有三对兔子(两对大兔子, 一对小兔子), 所有大兔子又全部怀孕;
四个月后, 以前出生的小兔子变成大兔子,以前怀孕的大兔子又各生出一对小兔子, 这时共有五对兔子(三对大兔子, 两对小兔子), 所有大兔子又全部怀孕;
五个月后, 以前出生的小兔子变成大兔子,以前怀孕的大兔子又各生出一对小兔子, 这时共有八对兔子(五对大兔子, 三对小兔子), 所有大兔子又全部怀孕;
…… ……
假设在兔子的生养过程中没有死亡。编程序,输入 n , 计算 n 个月后,有多少对兔子, 并输出。
提示:注意序列各项间的递推关系。
输入:一个非负整数n,表示月份(n≤91)
输出:n 个月后的兔子数(单位:对)
样例1:输入 0 输出 1
样例2:输入 1 输出 1
样例3:输入 2 输出2
样例4:输入10 输出89
#include<stdio.h>
int main(void)
{
long long w=2,u,v; //如果用int型的话,输入50以上就会溢出
int i,n;// int最大为2×10的9次方,而long long可以到9×10的18次方
u=1;v=1;i=2;
scanf("%d",&n);
if(n==1||n==2)
w=1;
while(i<n){
u=v; //用三个变量递推,算出w后u,v各向后进一位
v=w;
w=v+u;
i++;}
printf("%lld",w);
return 0;
}
笑死,还没想明白。开摆。
剩下的再说吧。