引言
针对初学者,每日练习几个题,快速上手C语言。第五天。(连续更新中)
采用在线OJ的形式
什么是在线OJ?
在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统,也可以用于平时的练习。
详细内容可以看一下这篇博客:
关于C/C++语言的初学者在哪刷题,怎么刷题-CSDN博客https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
1. 你是天才吗?
点进去直接做题:
你是天才吗?_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/557cc54704bb4d56b73b62d1a5455331?tpId=107&&tqId=33322&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
//方法1
int main()
{
int n = 0;
while(scanf("%d", &n) != EOF)
{
if(n>=140)
printf("Genius");
}
return 0;
}
//方法2
#include <stdio.h>
int main()
{
int n = 0;
//这种写法是因为scanf读取失败返回EOF,EOF是-1,所以按位取反后的结果是0,0为假,可以让循环停止。
while(~scanf("%d", &n))
{
if(n>=140)
printf("Genius");
}
return 0;
}
解析:
关于对组输入的题目,一定要处理好多组数据的输入问题,然后考虑循环如何结束。
方法1和方法2,给出了2种多组输入的方法。
2.完美成绩
点进去直接做题
完美成绩_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/8312e497509a450f968d9a6a2381ce32?tpId=107&&tqId=33323&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main()
{
int score = 0;
while(scanf("%d", &score) != EOF)
{
//注意if()后面不要加分号,a大于90且小于100要用&&表示与
if(score >= 90 && score<=100)
printf("Perfect");
}
return 0;
}
解析:
1. 多组输入。
2. 数学中的 90<=score<=100 的写法,在C语言中直接写是有bug的,是不允许的。
3.及格分数
点进去直接做题
及格分数_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/56513524333148b38945e1989bc7df4e?tpId=107&&tqId=33324&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main()
{
int score = 0;
while(scanf("%d", &score) != EOF)
{
if(score >= 60)
printf("Pass\n");
else
printf("Fail\n");
}
return 0;
}
解析:不用认为题简单就不自己敲了,一定要多敲。
4.判断整数奇偶性
点进去直接做题
判断整数奇偶性_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/a8b018667e274af29b5f76a6673450fc?tpId=107&&tqId=33325&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main()
{
int num = 0;
while(scanf("%d", &num) != EOF)
{
if(num % 2==1)
printf("Odd\n");
else
printf("Even\n");
}
return 0;
}
解析:很简单的一个题,一定要直接敲一遍。
5.最高分数
点进去直接做题:最高分数_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/52c18a3b49a54fc98107fbdde1415f90?tpId=107&&tqId=33326&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
//恶心大家一下,从中间往两边看,看不懂没关系,看代码二
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d\n",a>b? a>c? a:c : b>c? b:c);
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都恢复到0
int i = 0;
for(i=0; i<3; i++)
{
if(score[i] > max)
max = score[i];
}
printf("%d\n", max);
}
}
return 0;
解析:学习不同代码的优点。
6.判断是元音还是辅音
点进去直接做题:
判断是元音还是辅音_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/7eb4df4d52c44d309081509cf52ecbc4?tpId=107&&tqId=33327&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
//方法1
#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;
}
//方法2
#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;
}
//方法3
#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;
}
解析:本题的重点是处理\n,这里提供了三种方法。
7.判断是不是字母
点进去直接做题
判断是不是字母_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/91a588dd4cd244bfa616f17603ec123c?tpId=107&&tqId=33328&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
//代码一:
#include<stdio.h>
int main(){
char a;
while((a=getchar())!=EOF)
{
if(('a'<=a && a<='z')||('A'<=a && a<='Z')){
printf("%c is an alphabet.\n",a);
}else{
printf("%c is not an alphabet.\n",a);
}
getchar();
}
}
//代码二:使用库函数
#include<ctype.h>
#include<stdio.h>
int main(){
char a;
while((a=getchar())!=EOF)
{
if(isalpha(a)){
printf("%c is an alphabet.\n",a);
}else{
printf("%c is not an alphabet.\n",a);
}
getchar();
}
}
解析:灵活运用前面学过的知识。
关于isalpha函数,可以看下这篇:C/C++中对字符处理的常用函数-CSDN博客文章浏览阅读419次,点赞12次,收藏17次。C语言中的 ctype.h 头文件提供了一系列字符分类和转换函数,用于高效处理字符相关操作。https://blog.csdn.net/2401_88433210/article/details/146140744?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
8.字母大小写转换
点进去直接做题:字母大小写转换_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/850ebd30a2a34cfc87199da3fc15786a?tpId=107&&tqId=33329&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
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;
}
解析:对前面知识灵活运用。
9.计算单位阶跃函数
点进去直接做题:
计算单位阶跃函数_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/0b23793ae48a4e6cb7dfff042c959a04?tpId=107&&tqId=33331&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#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;
}
解析:要严格按照题的格式来。
10.三角形判断
点进去直接做题:
三角形判断_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/689ec1e742394e09b1059556fc167b65?tpId=107&&tqId=33332&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
#include <stdio.h>
int main() {
int a, b, c;
while(scanf("%d %d %d",&a, &b, &c) != EOF)
{
if (a + b > c && a + c > b && b + c > a)
{
if(a == b && b== c)
printf("Equilateral triangle!\n");
else if(a == b || a == c || b == c)
printf("Isosceles triangle!\n");
else printf("Ordinary triangle!\n");
}
else printf("Not a triangle!\n");
}
return 0;
}
解析:根据条件if-else就可以解决。