文章目录
任务:输入一个学生的某门课成绩score,判断学生的这门课成绩是否及格。如果大于等于60分,则结果为“及格”;否则结果为“不及格”。
#include <stdio.h>
int main()
{
float score;
scanf("%f",&score);
/********** Begin **********/
if (score>=60)
printf("这门课成绩及格!\n");
else
printf("这门课成绩不及格!\n");
/********** End **********/
return 0;
}
任务:编写程序,输入一个某年的纪年数(如:2020),判断该年是否是闰年。
/********** Begin **********/
if(year%4==0&&year%4==0||year%400==0)
printf("%d年是闰年。\n",year);
else
printf("%d年不是闰年!\n",year);
/********** End **********/
注:这里要用关系运算符==,而不能用赋值运算符,由此来进行条件判断,即是否等于0。
任务:现在有 4 个整数a,b,c,d,用交换法求 4 个整数中的最大值的解题思路如下:
a>b,a和b交换,b是a、b中的大者。b>c,b和c交换,c是a,b,c中最大者。c>d,c和d交换,d是a,b,c,d中最大者。/********** Begin **********/
if(a>b&&b>c&&c>d)
{
t=a;
d=a;
d=t;
printf("max=%d",d);
}
if(c>a&&c>b&&(c>d||d>c))
printf("max=%d",d);
if(b>a&&b>d&&d>c)
{
t=c;
c=b;
b=t;
printf("max=%d",c);
}
if(a>b&&b>d&&d>c)
{
t=c;
c=a;
a=t;
printf("max=%d",c);
}
if(a>c&&c>b&&a>d)
{
t=a;
a=b;
b=t;
printf("max=%d",b);
}
/********** End **********/
注:仔细观察,列举发现,若按交换法来算只有四种情况。
以上仅代表个人思路,如果有更好解法,麻烦指点。
如果仅通过测试,其实漏掉很多情况也可以过,只要按着测试数据"量身定做"即可。
任务:在右侧编辑器补充代码,用比较法编写程序求这 4 个整数中的最大值。

/********** Begin **********/
if(b>a)
{
t=b;
b=a;
a=t;
}
if(c>a)
{
t=c;
c=a;
a=t;
}
if(d>a)
{
t=d;
d=a;
a=t;
}
printf("max=%d",a);
/********** End **********/
任务:根据提示,在右侧编辑器补充代码,用擂台赛法输出最大值。

/********** Begin **********/
max = a;
if(b > max)
max = b;
if(c > max)
max = c;
if(d > max)
max = d;
/********** End **********/
任务:
/********begin********/
if(ch>='A'&& ch<='Z' ) || (ch>='a'&& ch<='z'))
printf("%c是英文字母",ch);
if(ch>='1'&& ch<='9' ) )
printf("%c是数字字符",ch);
if(ch>='!'&& ch<='/' ) || (ch>=':'&& ch<='@'))
printf("%c是其他字符",ch);
/********end********/
注:||优先级没有&&高,里面小括号也可以不加。另外,其他字符有省略(因为偷懒了),但是能保证通过测试,详细可以对照ASC||表。
任务:输入4个整数,编程用交换法由小到大顺序输出这4个数。
/********** Begin **********/
if(a>b)
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
printf("%d %d %d %d\n",a,b,c,d);
/********** End **********/
注,通过第一轮比较,可以确定d的最大值,通过第二轮可以确定c最大值,以下同理,因为值都被交换到其他位置,所以需要多轮交换确定。
任务:输入4个整数,编程用比较法由小到大顺序输出这4个数。
/********** Begin **********/
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(a>d)
{
t=a;
a=d;
d=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(b>d)
{
t=b;
b=d;
d=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
printf("%d %d %d %d",a,b,c,d);
/********** End **********/
注:因为按顺序输出a,b,c,d。只要保证a,b,c,d按大小输出即可,所以a先和b,c,d比较不断交换确保a是最小值,其他同理。(感觉这两题一样一样的,非要搞这麻烦第二关还不是靠交换)
任务:
有一分段函数:

编写程序,用嵌套的if-else语句实现,要求输入x的值,输出y的值。
/********** Begin **********/
if(x>1)
printf("y=%.2f\n",exp(sqrt(x))-1);
else
{
if(x<-1)
printf("y=%.2f\n",sin(x*x));
else
printf("y=%.2f\n",fabs(x)+2);
}
/********** End **********/
任务:已知一元二次方程的三个系数,编程求ax2+bx+c=0方程的根,系数a,b,c的值由键盘输入,构建一个一元二次方程的实例,其中a不等于0。
输入说明: 输入一行,包含三个双精度浮点数a, b, c(它们之间以逗号分开),分别表示方程ax2+bx+c=0(a=0)的系数。
输出说明: 若两个实根相等,则输出形式为: x1=x2=…
若有两个实根不等,则输出形式为: x1=… x2=…
若有两个虚根,则输出: x1=实部+虚部i x2=实部-虚部i
说明:实部为0时不可省略,所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
/**********Bigin**********/
double a,b,c,d,m,n,x1,x2;
scanf("%lf,%lf,%lf",&a,&b,&c);
d=b*b-(4*a*c);
if(d>0)
{
x1=((-b)+sqrt(d))/(2*a);
x2=((-b)-sqrt(d))/(2*a);
printf("x1=%.5lf\nx2=%.5lf",x1,x2);
}
if(d==0)
{
x1=(-b)/(2*a);
printf("x1=x2=%.5lf",x1);
}
if(d<0)
{
m=sqrt(-d)/(2*a);
n=(-b)/(2*a);
printf("x1=%.5lf+%.5lfi\nx2=%.5lf-%.5lfi",n,m,n,m);
}
/**********End**********/
注:
任务:输入一个字符,判断该字符是否为小写英文字母,如果是输出其小写英文字母循环排序后的第6个小写字母。
/**********Begin**********/
if(ch>='a'&&ch<='t')
printf("是小写英文字母,循环增加6为%c",ch+6);
else if(ch>='u'&&ch<='z')
printf("是小写英文字母,循环增加6为%c",ch-20);
else
printf("不是小写英文字母");
/**********END**********/
注:因为循环排序,如果到了后6个英文字母,按照ASCII的表是符号,要将u后面的字母加六正好循环到a后六个,需要将ch值-26+6=-20。
任务:编写程序给一个不多于5位的正整教number,要求输出number是几位数。要求使用if-else嵌套。
/********** Begin **********/
if(number>=1&&number<=9)
printf("%d是一位数",number);
else if(number>=10&&number<=99)
printf("%d是二位数",number);
else if(number>=100&&number<=999)
printf("%d是三位数",number);
else if(number>=1000&&number<=9999)
printf("%d是四位数",number);
else
printf("%d是五位数",number);
/********** End **********/
任务:输入三个正实数,如果能构成三角形,编程求三角形的面积。
相关知识:构成三角形的条件为:三角形任意两边之和大于第三边。求三角形面积的公式为:
area=s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
/********** Begin **********/
s = (a+b+c) / 2;
area = sqrt(s*(s-a)*(s-b)*(s-c));
if(a+b>c && a+c>b && b+c>a)
printf("area=%f",area);
else
printf("is not triangle!");
/********** End **********/
任务:用switch语句编写一个简单的实数四则运算程序。
/********** Begin **********/
switch(c)
{
case '+': printf("%0.2lf%c%0.2lf=%0.2lf",a,c,b,a+b);
break;
case '-': printf("%.2lf%c%.2lf=%.2lf",a,c,b,a-b);
break;
case '/':
if(b!=0)
printf("%.2lf%c%lf=%.2lf",a,c,b,a/b);
else
printf("error");
break;
case '*':printf("%.2lf%c%.2lf=%.2lf",a,c,b,a*b);
break;
}
/********** End **********/
注:
任务:输入某年某月某日,判断这一天是这一年的第几天,要考虑这一年是否是闰年。
相关知识:以10月5日为例,应该先把前 9 个月的天数加起来,然后再当月的天数5天,还要判断是否是闰年,如果是闰年且月份大于3时需考虑多加一天。
充分利用switch-case 中break的特性,计算某月以前月份的总天数.
#include<stdio.h>
int main()
{
int day,month,year,num=0,leap;
scanf("%d%d%d",&year,&month,&day);
/*****先计算某月以前月份的总天数*****/
/********** Begin **********/
switch(month)
{
case 12: num +=30;
case 11: num+=31;
case 10: num+=30;
case 9: num+=31;
case 8: num+=31;
case 7: num+=30;
case 6: num+=31;
case 5: num+=30;
case 4: num+=31;
case 3: num+=28;
case 2: num+=31;
}
/********** End **********/
/*****再加上当月的天数*****/
num+=day;
/*****判断是不是闰年*****/
/********** Begin **********/
if(year%4==0 && year%100!=0 || year%400==0)
/********** End **********/
/*****如果是闰年且月份大于2,总天数应该加一天*****/
/********** Begin **********/
if(month>2)
{
num+=1;
}
/********** End **********/
printf("这一天是这一年的第%d天",num);
return 0;
}
注:
根据switch特性,没有break时后面代码会执行完,所以从12月开头,输入几月,可以保证这个月份之前天数累加完。
判断是否为闰年
year%4==0 && year%100!=0 || year%400==0
任务:给一个不多余5位的正整数,要求如下:①求出它是几位数②分别输出每一位数字③按逆序输出各位数字。
相关知识:

#include <stdio.h>
#include <math.h>
int main()
{
int num,y,x1,x2,x3,x4,x5,place;
scanf("%d",&num);
place=log10((double)num)+1;//
/********** Begin **********/
y=num;
x1=y%10;
y=y/10;
x2=y%10;
y=y/10;
x3=y%10;
y=y/10;
x4=y%10;
y=y/10;
x5=y%10;
switch(place)
{
case 1:
printf("%d为1位数\n",num);
printf("顺序输出为:%d\n",num);
printf("逆序输出为:%d\n",num);
break;
case 2:
printf("%d为2位数\n",num);
printf("顺序输出为:%d,%d\n",x2,x1);
printf("逆序输出为:%d,%d\n",x1,x2);break;
case 3:
printf("%d为3位数\n",num);
printf("顺序输出为:%d,%d,%d\n",x3,x2,x1);
printf("逆序输出为:%d,%d,%d\n",x1,x2,x3);
break;
case 4:
printf("%d为4位数\n",num);
printf("顺序输出为:%d,%d,%d,%d\n",x4,x3,x2,x1);
printf("逆序输出为:%d,%d,%d,%d\n",x1,x2,x3,x4);
break;
case 5:
printf("%d为5位数\n",num);
printf("顺序输出为:%d,%d,%d,%d,%d\n",x5,x4,x3,x2,x1);
printf("逆序输出为:%d,%d,%d,%d,%d\n",x1,x2,x3,x4,x5);
break;
}
/********** End **********/
return 0;
}
注:
任务:用switch语句实现对输入的数字1~7转换成文字星期几,对其它数字不转换
/********** Begin **********/
int day;
scanf("%d",&day);
switch(day)
{
case 1:printf("Monday");break;
case 2:printf("Tuesday");break;
case 3:printf("Wednesday");break;
case 4:printf("Thursday");break;
case 5:printf("Friday");break;
case 6:printf("Saturday");break;
case 7:printf("Sunday");break;
default:printf("error");
}
/********** End **********/
任务:编程序,输入一个百分制的成绩后, 判断该成绩为A、B、C、D、E哪一个等级,A等为85~100,B等为80~84,C等为70~79,D等为60~69,E等为0~59,用switch语句来实现。
#include <stdio.h>
int main()
{
int score;
scanf("%d",&score);
/********** Begin **********/
switch(score/10)
{
case 10:
case 9: printf("A\n");break;
case 8:
if(score>=85)
printf("A\n");
else
printf("B\n");
break;
case 7: printf("C\n");break;
case 6: printf("D\n");break;
default: printf("E\n");
}
/********** End **********/
return 0;
}
注:
85~100,B等为80~84,所以在case8里面再设置一个if条件判断即可。很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr