目录
1. 小乐乐改数字(也就是偶数变0,奇数变1)
2.牛牛的金币(坐标里找东西)
3.牛牛的计划(比日期)
4. 计算一元二次方程(计算方程按格式输出)
5. [NOIP2008]ISBN号码(这个题我感觉特别好,因为第一遍我没做出来)
6. 简单计算器(就是实现+-*/)
7.牛牛学数列3
8. 数位之和
9.公务员面试(就是去掉最高最低分,剩下加起来求平均值)
10. 回文对称数(正着输入和反着的数字一样大)
接着上来篇来写,这个习题集我感觉写一些对我来说有点难度,并且值得大家一做的练习
下面,开始上内容吧
1. 小乐乐改数字(也就是偶数变0,奇数变1)
链接 小乐乐改数字_牛客题霸_牛客网 (nowcoder.com)
这道题就是输入一个数字 偶数变0,奇数变1
下面来分析一下、
在实际做时,可以考虑有两种方法 递归,和非递归的
下来上代码,递归
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#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; }
非递归的
1
2
3
4
5
6
7
8
9
10
11
12
13#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; }
或者
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28#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("%dn", ret); return 0; }
2.牛牛的金币(坐标里找东西)
链接 牛牛的金币_牛客题霸_牛客网 (nowcoder.com)
下面分析一下
上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#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)
分析一下
上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#include<stdio.h> int main() { int y,m,d; int y1,m1,d1; scanf("%d %d %dn",&y,&m,&d); scanf("%d %d %dn",&y1,&m1,&d1); if((y1>y)||((y1>=y)&&(m1>m))||((y1>=y)&&(m1>=m)&&(d1>=d))) { printf("yesn"); } else { printf("non"); } return 0; }
4. 计算一元二次方程(计算方程按格式输出)
链接 计算一元二次方程_牛客题霸_牛客网 (nowcoder.com)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#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=%.2lfn",(-b-sqrt(d))/(2*a),(-b+sqrt(d))/(2*a)); }else if(d ==0){ if((-b/(2*a))==0){ printf("x1=x2=0.00n"); } else{ printf("x1=x2=%.2lfn",-b/(2*a)); } }else{ float s = -b/(2*a); float x = sqrt(-d)/(2*a); if(x>0){ printf("x1=%.2f-%.2fi;x2=%.2f+%.2fin",s,x,s,x); }else{ printf("x1=%.2f-%.2fi;x2=%.2f+%.2fin",s,-x,s,-x); } } }else{ printf("Not quadratic equation"); } } return 0; }
5. [NOIP2008]ISBN号码(这个题我感觉特别好,因为第一遍我没做出来)
链接 [NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32#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("Rightn"); }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)
好了上代码,大家自己看一下,和自己想的一样吗
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38#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=%.4lfn",a,c,b,a+b); } else if(c=='-') { printf("%.4lf%c%.4lf=%.4lfn",a,c,b,a-b); } else if(c=='*') { printf("%.4lf%c%.4lf=%.4lfn",a,c,b,a*b); } else{ if(c=='/'&&b==0.0) { printf("Wrong!Division by zero!n"); } else{ printf("%.4lf%c%.4f=%.4lfn",a,c,b,a/b); } } }else{ printf("Invalid operation!n"); } return 0; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27{ 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#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("%.3lfn",sum); return 0; }
8. 数位之和
链接 数位之和_牛客题霸_牛客网 (nowcoder.com)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#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("%.2fn", (sum - max - small) / 5.0); count = 0; max = 0; small = 100; sum = 0; } } return 0; }
10. 回文对称数(正着输入和反着的数字一样大)
链接 回文对称数_牛客题霸_牛客网 (nowcoder.com)
分析一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#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("%dn",i); } } return 0; }
最后
以上就是正直魔镜最近收集整理的关于牛客网C语言语法篇练习之习题集(2)1. 小乐乐改数字(也就是偶数变0,奇数变1)2.牛牛的金币(坐标里找东西)3.牛牛的计划(比日期)4. 计算一元二次方程(计算方程按格式输出)5. [NOIP2008]ISBN号码(这个题我感觉特别好,因为第一遍我没做出来)6. 简单计算器(就是实现+-*/)7.牛牛学数列38. 数位之和9.公务员面试(就是去掉最高最低分,剩下加起来求平均值)10. 回文对称数(正着输入和反着的数字一样大)的全部内容,更多相关牛客网C语言语法篇练习之习题集(2)1.内容请搜索靠谱客的其他文章。
发表评论 取消回复