各位CSDN的uu们你们好呀,今天小雅兰的内容还是做几道题噢,好好复习一下之前的知识点,现在,就让我们开始复习吧

牛客网在线编程_编程学习|练习题_数据结构|系统设计题库

倒置字符串_牛客题霸_牛客网


BC40 竞选社长

BC41 你是天才吗?

BC42 完美成绩

BC43 及格分数

BC44 判断整数奇偶性

BC45 最高分数

BC46 判断是元音还是辅音

BC47 判断是不是字母

BC48 字母大小写转换

BC49 判断两个数的大小关系

BC50 计算单位阶跃函数

BC51 三角形判断

BC52 衡量人体胖瘦程度

BC53 计算一元二次方程

BC54 获得月份天数

OR62 倒置字符串


此代码用到了gets这个库函数 

#include<stdio.h>
int main()
{char buf[100] = { 0 };//输入gets(buf);int count_a = 0;int count_b = 0;int i = 0;while (buf[i] != '0'){if (buf[i] == 'A'){count_a++;}else if (buf[i] = 'B'){count_b++;}i++;}if (count_a > count_b){printf("A\n");}else if (count_a < count_b){printf("B\n");}else if(count_a==count_b){printf("E\n");}return 0;
}

这段代码还可以再改进一下,可不可以不定义两个变量呢?这当然也是可以的。

#include<stdio.h>
int main()
{char arr[100]= { 0 };gets(arr);int i = 0 ;int flag = 0 ;while( arr[i] != '0'){if(arr[i] =='A'){flag++;}else if(arr[i] =='B'){flag--;}i++;}if (flag > 0){printf("A");}else if (flag < 0){printf("B");}else{printf("E");}return 0;
}

那么只定义一个变量的方法我们也掌握了,那么,还有没有其他的写法呢?比如不用gets,这当然也是可以的。

下面这段代码使用了getchar

getchar拓展_认真学习的小雅兰.的博客-CSDN博客

#include <stdio.h>int main()
{char arr[100] = { 0 };int ch = 0 ;int flag = 0 ;//如果getchar获取了while (((ch= getchar()) != '0') && ch!= EOF){if(ch=='A'){flag++;}else if(ch=='B'){flag--;}}if (flag > 0){printf("A");}else if (flag < 0){printf("B");}else{printf("E");}return 0;
}

1. 本题有很多解法。

2. 主要就是读取输入数据的问题要解决好,输入有2个结束条件(遇到读取结束EOF,或者'0')。

3. 剩余的工作就是统计个数后,然后根据情况按照格式输出。

#include <stdio.h>
int main()
{int a=0;while(scanf("%d",&a)!=EOF){if(a>=140){printf("Genius\n");}else{printf("不是天才\n");}}return 0;
}

这个代码还有另外一种写法:

#include<stdio.h>
int main()
{int n = 0;//这种写法是因为scanf读取失败返回EOF,EOF是-1,所以按位取反后的结果是0,0为假,可以让循环停止。while (~scanf("%d", &n)){if (n >= 140){printf("Genius");}else{printf("不是天才\n");}}return 0;
}

关于对组输入的题目,一定要处理好多组数据的输入问题,然后考虑循环如何结束。

这里写到了一个操作符—— ~ 

操作符的详细知识可以看小雅兰的博客噢

操作符——“C”_认真学习的小雅兰.的博客-CSDN博客_十进制数10可以表示为

整型提升+算术转换——“C”_认真学习的小雅兰.的博客-CSDN博客

#include <stdio.h>int main()
{int score = 0;while (scanf("%d", &score) != EOF){if (score >= 90 && score <= 100)printf("Perfect");}return 0;
}

1. 多组输入。

2. 数学中的 90的写法,在C语言中直接写是有bug的。

#include <stdio.h>int main()
{int score = 0;while (scanf("%d", &score) != EOF){if (score >= 60)printf("Pass\n");elseprintf("Fail\n");}return 0;
}

#include <stdio.h>int main()
{int i=0;while(scanf("%d",&i)!=EOF){if(i%2==0)printf("Even\n");else if(i%2!=0)printf("Odd\n");}return 0;
}

这几道题目都是类似的。

#include<stdio.h>
int main()
{int n1 = 0;int n2 = 0;int n3 = 0;while (scanf("%d %d %d", &n1, &n2, &n3) != EOF){int max = n1 > n2 ? n1 : n2;max = max > n3 ? max : n3;printf("%d\n", max);}return 0;
}

另一种写法:

#include <stdio.h>int main()
{int i = 0;int score[3] = { 0 };while (scanf("%d %d %d", &score[0], &score[1], &score[2]) != EOF){int max = 0;//每一组测试,max都恢复到0int i = 0;for (i = 0; i < 3; i++){if (score[i] > max)max = score[i];}printf("%d\n", max);}return 0;
}

1. 多组输入

2. 每组输入接受3个数字,求出最大值,因为成绩不能是负数,所以假设max期初是0.

#include <stdio.h>int main()
{char ch = 0;//存放元音字母的数组char arr[] = "AEIOUaeiou";//输入while ((ch = getchar()) != EOF){//判断int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");getchar();//去除每个字符后的\n}return 0;
}

当然,这个代码还可以用库函数——strchr

#include<stdio.h>
#include<string.h>
int main()
{int ch = 0;//存放元音字母的数组char vowel[] = "AEIOUaeiou";//输入while (ch = getchar() != EOF){//判断//strchr是用来判断ch是否在字符串vowel中出现//如果出现了,则返回在vowel字符串中的地址//如果没出现,则返回NULLif (strchr(vowel, ch)){printf("Vowel\n");}else{printf("Constantly\n");}getchar();//处理\n}return 0;
}

另一种写法:

#include <stdio.h>int main()
{char ch = 0;char arr[] = "AEIOUaeiou";//在%c的前面写一个空格会消化掉前面所有的空白字符,然后读取一个字符while (scanf(" %c", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}return 0;
}

另一种写法:

#include<stdio.h>
int main()
{char ch = 0;char arr[] = "AEIOUaeiou";//在%c的后边发给一个'\n',其实在输入时候就会消化掉这个\n字符//不会为下次留下空白字符的隐患while (scanf("%c\n", &ch) != EOF){int i = 0;for (i = 0; i < 10; i++){if (ch == arr[i]){printf("Vowel\n");break;}}if (i == 10)printf("Consonant\n");}return 0;
}

#include <stdio.h>int main()
{int ch = 0;while ((ch = getchar()) != EOF){if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')){printf("%c is an alphabet.\n", ch);}else{printf("%c is not an alphabet.\n", ch);}//清理掉\ngetchar();}return 0;
}

当然,也可以用库函数,专门用来判断是不是字母——isalpha

#include <stdio.h>int main()
{int ch = 0;while ((ch = getchar()) != EOF){if (isalpha(ch)){printf("%c is an alphabet.\n", ch);}else{printf("%c is not an alphabet.\n", ch);}//清理掉\ngetchar();}return 0;
}

#include <stdio.h>
#include<ctype.h>
int main()
{int ch = 0;while ((ch = getchar()) != EOF){if (isalpha(ch)){printf("%c is an alphabet.\n", ch);}else{printf("%c is not an alphabet.\n", ch);}//清理掉\ngetchar();}return 0;
}

#include<stdio.h>
int main()
{char ch = 0;while (scanf("%c", &ch) != EOF){if (ch >= 'A' && ch <= 'Z'){printf("%c\n", ch + 32);}else if (ch >= 'a' && ch <= 'z'){printf("%c\n",ch - 32);}}return 0;
}

当然,还有其他的写法,这里可以用到我们的库函数——islower,是专门用来判断小写字母的。

toupper——将小写字母转换为大写字母

tolower——将大写字母转换为小写字母

isupper——专门用来判断大写字母

#include<stdio.h>
#include<ctype.h>
int main()
{int ch = 0;//多组输入while ((ch = getchar()) != EOF){if (islower(ch)){printf("%c\n", toupper(ch));}else{printf("%c\n", tolower(ch));}//处理'\n'getchar();}return 0;
}

#include <stdio.h>int main()
{int i=0;int j=0;while(scanf("%d %d",&i,&j)!=EOF){if(i>j){printf("%d>%d",i,j);}else if(i==j){printf("%d=%d",i,j);}else if(i<j){printf("%d<%d",i,j);}printf("\n");}return 0;}

#include<stdio.h>int main()
{int t = 0;while (scanf("%d", &t) != EOF){if (t > 0){printf("%d\n", 1);}else if (t == 0){printf("%.1f\n", 0.5f);}else{printf("%d\n", 0);}}return 0;
}

#include <stdio.h>int main()
{int a=0;int b=0;int c=0;while(scanf("%d %d %d",&a,&b,&c)!=EOF){if(a+b>c&&a+c>b&&b+c>a&&a-b<c&&a-c<b&&b-c<a){if(a==b&&b==c&&a==c){printf("Equilateral triangle!\n");}else if((a==b&&b!=c&&a!=c)||(a==c&&a!=b&&c!=b)||(b==c&&b!=a&&c!=a)){printf("Isosceles triangle!\n");}else {printf("Ordinary triangle!\n");}}else {printf("Not a triangle!\n");}}return 0;
}

 这里就是搞清楚三角形的判断规则,并去一一穷举就行了,因为只有三条边。

#include<stdio.h>
int main()
{float weight = 0.0;float hight = 0.0;while (scanf("%f %f", &weight, &hight) != EOF){float bmi = weight / (hight * hight / 100 / 100);if (bmi < 18.5){printf("Underweight\n");}else if (bmi >= 18.5 && bmi <= 23.9){printf("Normal\n");}else if (bmi > 23.9 && bmi <= 27.9){printf("Overweight\n");}else{printf("Obese\n");}}return 0;
}

1. 多组输入

2. 浮点数除法要保证除号的两端至少有一个浮点数

#include <stdio.h>
#include <math.h>int main()
{float a = 0.0;float b = 0.0;float c = 0.0;while (scanf("%f %f %f", &a, &b, &c) != EOF){if (a != 0){float disc = b * b - 4 * a * c;if (disc > 0.0){//有两个不相等的实根printf("x1=%.2f;x2=%.2f\n",(-b - sqrt(disc)) / (2 * a),(-b + sqrt(disc)) / (2 * a));}else if (disc < 0.0){//有两个虚根printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",(-b) / (2 * a), sqrt(-disc) / (2 * a),(-b) / (2 * a), sqrt(-disc) / (2 * a));}else{//有两个相等的实根printf("x1=x2=%.2f\n", (-b) / (2 * a));}}else{printf("Not quadratic equation\n");}}return 0;
}

1. 多组输入

2. 根据不同的限制条件给出相应的计算结果

3. 小数点数后位数有限制

#include <stdio.h>int main()
{int y = 0;int m = 0;int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };while (scanf("%d%d", &y, &m) != EOF){int day = days[m - 1];if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)){if (m == 2)day += 1;}printf("%d\n", day);}return 0;
}

1. 多组输入

2. 判断闰年,如果是闰年,2月多一天,其他都正常。

#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse(char* left, char* right)
{assert(left != NULL);assert(right != NULL);while (left < right){char* tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{char arr[100] = { 0 };gets(arr);//输入int len = strlen(arr);//求字符串的长度//1.逆序整个字符串reverse(arr, arr + len - 1);//2.逆序每个单词char* cur = arr;while (*cur){//找一个单词char* start = cur;while (*cur != ' ' && *cur != '\0'){cur++;//遇到空格,说明走到一个单词的最后面//遇到\0,说明已经走到字符串的最后面//这两种情况下都需要cur++}reverse(start, cur - 1);if (*cur == ' '){cur++;//跳过空格}}printf("%s\n", arr);return 0;
}

好啦,小雅兰今天的复习内容就到这里啦,以后的内容必定更加精彩!!!

C语言刷题(3)——“C”相关推荐

  1. c语言刷题(牛客网)

    c语言刷题(牛客网100道基础题) 学习没有捷径,唯有重复多练,这是浩克为大家找的牛客网刷题资源,如果你正在学或者学完了都可以来检验一下自己能力. 浩克也会专门开个专栏来讲解c语言刷题,让大家对c语言 ...

  2. 关于C语言刷题(#define宏定义函数的常见错误)

    关于C语言刷题(#define宏定义函数的常见错误) 首先我们来先看对#define的定义 define,宏定义,C语言中预处理命令一种.分为无参宏定义和带参宏定义.无参宏定义的一般形式为:#defi ...

  3. Nowcoder《C语言刷题笔记》BC1-BC15

    Nowcoder <C语言刷题笔记> BC1-BC15 文章目录 Nowcoder <C语言刷题笔记> BC1-BC15 0x00 写在前面 0x01 简单输出 BC1 Now ...

  4. 【每日进步一点点】C语言刷题技巧及训练1

    恭喜你发现宝藏,这里是刹那芳间,很高兴为您服务~ C语言编程题 相信很多同学学校的C语言考试是上机做编程题叭,不要慌,这里将带你进行一个初步的入门,进行一些简单的编程题练习. Anyway, 请一定要 ...

  5. C语言刷题训练营-自我补全

    目录 刷题收获: 在线OJ BC1-实践出真知 BC2-我是大V BC3-有容乃大 BC6-小飞机 BC7-缩短2进制 BC8-十六进制转十进制 BC9-printf函数的返回值 BC10-成绩的输入 ...

  6. C语言刷题(8)——“C”

    各位CSDN的uu你们好呀,今天,小雅兰的内容是复习之前所学习的知识点,因为最近C语言马上就要更完啦,接下来,小雅兰会更新一些数据结构与算法的知识点,那么,复习最好的方式就是写题目,现在,让我们开始复 ...

  7. 【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习

    Go从0到入门6-Go完结篇 前言 Q1:函数-数字的阶乘 Q2:函数-绝对值 Q3:函数-加减乘除 Q4:结构体-学生信息1 Q5:结构体-学生信息2 Q6:接口-动物和老虎 Q7:错误-网络延迟 ...

  8. 计算机二级C语言刷题笔记

    目录 前言 1.题目 1068: 二级C语言-温度转换 2.题目 1067: 二级C语言-分段函数 3.题目 1060: 二级C语言-同因查找 4.题目 1058: 二级C语言-求偶数和 前言 作者: ...

  9. C语言刷题之动态规划进阶(二)

    目录 1.前言 2.最大子矩阵 1.题目 2.初步分析 3.代码实现 3.龙与地下城游戏问题 1.题目 2.初步分析 3.代码实现 4.过河 1.题目 2.初步分析 3.代码实现 1.前言 读者们好, ...

  10. 微信c语言刷题软件,独家全能微信刷题小程序正式上线(经典秒杀口诀模块全民共享)...

    原标题:独家全能微信刷题小程序正式上线(经典秒杀口诀模块全民共享) 全权所有.独家研发微信刷题打卡小程序已经开发完毕并上线,学员们可以充分利用好零碎时间,随心所欲.随时随地的进行刷题训练,背诵记忆知识 ...

最新文章

  1. Symfony 使用 hwi/oauth-bundle 实现第三方登录
  2. websocket检测服务器是否断开_websocket – 如何检测用户是否因网络断开而离开Phoenix通道?...
  3. 计算机系统的储存器结构
  4. 有关c++中const用法
  5. python常用内置函数可以操作字符串_Python常用内置函数(二)
  6. sqoop导入-hive
  7. Java异常处理实验原理_Java异常处理原理与原则
  8. rest_framework07:权限/频率/过滤组件/排序/异常处理封装Response对象
  9. 当年赫赫有名的“四大工学院”,如今都发展得怎样?依然牛气冲天
  10. mysql saveorupdate_Mybatis SaveOrUpdate插件
  11. 实践GoF的23的设计模式:SOLID原则(下)
  12. MFC中.和-的区别
  13. scienceWord总结
  14. 也许是全网最全的 Angular 新手入门指南
  15. 为什么需要等待2MSL
  16. 修改IDEA默认运行内存
  17. 对抗机器学习论文-Towards Deep Learning Models Resistant to Adversarial Attacks(PGD)
  18. 《麦田里的守望者》阅读笔记
  19. 处女作真人语音计算器上线了
  20. 内容仓库Apache JackRabbit

热门文章

  1. TL431实现太阳能LED路灯控制器
  2. 细节决定成败——动作一定要做到位,才能强身健体
  3. CA6140数控改造设计(数控示意总图+主轴箱装配图+纵向进给系统图+电气原理图+调隙式齿轮+横向进给系统图+横向丝杠支座+毕业设计说明书)
  4. html自动生成验证码,JS自动生成动态HTML验证码页面
  5. 四阶龙格库塔法的基本思想_四阶龙格库塔实验报告.docx
  6. c语言的 if end的作用,C语言中的 #if()和 #end if 用法
  7. springcloud的stream消息组件的使用@StreamListener
  8. 【软件测试】金三银四,我不允许测试工程师不知道这个刷题工具
  9. Dynamic CRM 2016 IFD配置(2)证书配置
  10. Jboss集群异常WELD-000227: Bean identifier index inconsistency detected