目录
5. [NOIP2008]ISBN号码(这个题我感觉特别好,因为第一遍我没做出来)
接着上来篇来写,这个习题集我感觉写一些对我来说有点难度,并且值得大家一做的练习
下面,开始上内容吧
1. 小乐乐改数字(也就是偶数变0,奇数变1)
链接 小乐乐改数字_牛客题霸_牛客网 (nowcoder.com)
这道题就是输入一个数字 偶数变0,奇数变1
下面来分析一下、
在实际做时,可以考虑有两种方法 递归,和非递归的
下来上代码,递归
#include<stdio.h>
int figure(long long n)
{
int b=(n%10)%2;
n=n/10;
if(n)
{
return 10*figure(n)+b;
}
return b;
}
int main()
{
long long n=0;
scanf("%lld",&n);
int a=figure(n);
printf("%d",a);
return 0;
}
非递归的
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
int x = 1,y=0; // x 用来控制当前位于哪一位
while(x<n)
{
y+=(n/x%2)*x; // x 从1开始,等于从个位开始往上依次摩2,得到奇偶性之后再乘 x 即当前这个位数的0或者1 比如 1+10+100 一直加到加不了
x*=10;
}printf("%d",y);
return 0;
}
或者
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int ret = 0;
int i = 0;
while (n)
{
int w = n % 10;
if (0 == w % 2)
{
w = 0;
}
else
{
w = 1;
}
ret += w * pow(10, i++);
n /= 10;
}
printf("%d\n", ret);
return 0;
}
2.牛牛的金币(坐标里找东西)
链接 牛牛的金币_牛客题霸_牛客网 (nowcoder.com)
下面分析一下
上代码
#include<stdio.h>
int main()
{
int x=0,y=0;
int x1=0,y1=0;
scanf("%d %d",&x,&y);
scanf("%d %d",&x1,&y1);
if(x1==x)
{
y1>y?printf("u"):printf("d");
}
else
{
x1>x?printf("r"):printf("l");
}
return 0;
}
3.牛牛的计划(比日期)
链接 牛牛的计划_牛客题霸_牛客网 (nowcoder.com)
分析一下
上代码
#include<stdio.h>
int main()
{
int y,m,d;
int y1,m1,d1;
scanf("%d %d %d\n",&y,&m,&d);
scanf("%d %d %d\n",&y1,&m1,&d1);
if((y1>y)||((y1>=y)&&(m1>m))||((y1>=y)&&(m1>=m)&&(d1>=d)))
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
4. 计算一元二次方程(计算方程按格式输出)
链接 计算一元二次方程_牛客题霸_牛客网 (nowcoder.com)
#include<stdio.h>
#include<math.h>
int main()
{
float a=0,b=0,c=0;
while(~scanf("%f %f %f",&a,&b,&c)) {
double d=b*b-4*a*c;
if(a != 0){
if(d > 0){
printf("x1=%.2lf;x2=%.2lf\n",(-b-sqrt(d))/(2*a),(-b+sqrt(d))/(2*a));
}else if(d ==0){
if((-b/(2*a))==0){
printf("x1=x2=0.00\n");
} else{
printf("x1=x2=%.2lf\n",-b/(2*a));
}
}else{
float s = -b/(2*a);
float x = sqrt(-d)/(2*a);
if(x>0){
printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",s,x,s,x);
}else{
printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",s,-x,s,-x);
}
}
}else{
printf("Not quadratic equation");
}
}
return 0;
}
5. [NOIP2008]ISBN号码(这个题我感觉特别好,因为第一遍我没做出来)
链接 [NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com)
#include<stdio.h>
int main()
{
char arr[13]={0};
int i,j;
scanf("%s",arr);
int s=0;
for(i=0,j=1;i<11;i++){
if(arr[i]!='-'){
s += (arr[i]-'0')*j;
j++;
}
}
int m=s%11;
if(m == arr[12]-'0' || (m==10 && arr[12]=='X')){
printf("Right\n");
}else{
if(m==10){
for(i=0;i<12;i++){
printf("%c",arr[i]);
}
printf("X");
}else{
for(i=0;i<12;i++){
printf("%c",arr[i]);
}
printf("%d",m);
}
}
return 0;
}
6. 简单计算器(就是实现+-*/)
链接 简单计算器_牛客题霸_牛客网 (nowcoder.com)
好了上代码,大家自己看一下,和自己想的一样吗
#include<stdio.h>
int main()
{
double a,b;
char c;
scanf("%lf%c%lf",&a,&c,&b);
if(c=='+'||c=='-'||c=='*'||c=='/')
{
if(c=='+')
{
printf("%.4lf%c%.4lf=%.4lf\n",a,c,b,a+b);
}
else if(c=='-')
{
printf("%.4lf%c%.4lf=%.4lf\n",a,c,b,a-b);
}
else if(c=='*')
{
printf("%.4lf%c%.4lf=%.4lf\n",a,c,b,a*b);
}
else{
if(c=='/'&&b==0.0)
{
printf("Wrong!Division by zero!\n");
}
else{
printf("%.4lf%c%.4f=%.4lf\n",a,c,b,a/b);
}
}
}else{
printf("Invalid operation!\n");
}
return 0;
}
{
switch (c)
{
case '+':
printf("%.4lf+%.4lf=%.4lf",a,b,a+b);
break;
case '-':
printf("%.4lf-%.4lf=%.4lf",a,b,a-b);
break;
case '*':
printf("%.4lf*%.4lf=%.4lf",a,b,a*b);
break;
case '/':
if(b == 0.0)
{
printf("Wrong!Division by zero!");
}
else
printf("%.4lf/%.4lf=%.4lf",a,b,a/b);
break;
default:
printf("Invalid operation!");
break;
}
}
return 0;
7.牛牛学数列3
链接 牛牛学数列3_牛客题霸_牛客网 (nowcoder.com)
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,s=1;
int tmp=0;
double sum=0;
for(i=1;i<=n;i++)
{
tmp+=s*(2*i-1);
sum+=1.0/tmp;
s=-s;
}
printf("%.3lf\n",sum);
return 0;
}
8. 数位之和
链接 数位之和_牛客题霸_牛客网 (nowcoder.com)
#include<stdio.h>
int main()
{
int a=0,sum=0,b=0;
scanf("%d",&a);
while(a>0)
{
sum+=a%10;
a/=10;
}
printf("%d",sum);
return 0;
}
9.公务员面试(就是去掉最高最低分,剩下加起来求平均值)
链接 公务员面试_牛客题霸_牛客网 (nowcoder.com)
#include <stdio.h>
int main()
{
int a, max = 0, small = 100, sum = 0, count = 0;
while (scanf("%d", &a) != EOF)
{ //把最大最小值找出拿出来
if (a > max)
{
max = a;
}
if (a < small)
{
small = a;
}
//求和
sum += a;
count++;
if (count == 7)//计数器=7时代表一组的分数好了可以进行计算
{
printf("%.2f\n", (sum - max - small) / 5.0);
count = 0;
max = 0;
small = 100;
sum = 0;
}
}
return 0;
}
10. 回文对称数(正着输入和反着的数字一样大)
链接 回文对称数_牛客题霸_牛客网 (nowcoder.com)
分析一下
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
int i=0;
for(i=1;i<=n;i++)
{
int t=0,num=i;
while(num>0)
{
t=t*10+num%10;
num=num/10;
}
if(t==i)
{
printf("%d\n",i);
}
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/91281.html