前言
对于刚入门c语言的小白,多做题是有利于提高的逻辑和代码能力,以下的几道题有些是在牛客网上的题目,有些是我经常看到过的题目。刚开始写这些题,我认为有必要先思考一下,思考不出来在看答案。
奇偶统计
题目描述
任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出
输入描述
一行,一个正整数N。(1≤N≤100,000)
输出描述
一行,1~N之间奇数的个数和偶数的个数,用空格分开。
代码如下
#include<stdio.h>
int main()
{
int N;
int even=0;//统计偶数的个数
int odd=0;//统计奇数个数
scanf("%d ",&N);
for(int i=1;i<=N;i++)//对1-N遍历一遍
{
if(i%2==0)//判断偶数
{
even++;
}
else if(i%2==1)//判断奇数
{
odd++;
}
}
printf("%d %d\n",odd,even);
return 0;
}
三角形判断
题目描述
KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)
输入描述
题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。
输出描述
针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”
代码:
#include<stdio.h>
int main()
{
int a,b,c;
while((scanf("%d%d%d",&a,&b,&c))!=EOF) //多组输入,若输出错误时,scanf的返回值为EOF,此时循环结束
{
if(a+b<=c||a+c<=b||b+c<=a)//判断不是三角形的条件
{
printf("Not a triangle!\n");
}
else
{
if(a==b&&a==c)//判断等边三角形的条件,注意不能写成a==b==c
{
printf("Equilateral triangle!\n");
}
else if(a==b||a==c||b==c)//若不是等边三角形,在判断等腰三角形
{
printf("Isosceles triangle!\n");
}
else{
printf("Ordinary triangle!\n");//其余为普通三角形
}
}
}
从大到小输出
题目描述
写代码将三个整数数按从大到小输出。
例如:
输入:2 3 1
输出:3 2 1
代码
int main()
{
int a, b, c;
int mid;
scanf("%d%d%d", &a, &b, &c);
if (a < b)//判断a,b大小
{
mid = a;
a = b;
b = mid;
}
if (a < c)//判断a,c大小
{
mid = a;
a = c;
c=mid;
}
if (b < c)
{
mid = b;
b = c;
c = mid;
}
printf("%d %d %d\n", a, b, c);//从大到小输出
return 0;
}
打印素数
题目描述
写一个代码:打印100~200之间的素数
思路一
试除法,对[2,i-1]中每个数都试除一次,如果有其中一个可以除,则该数不是素数
int main()
{
int count = 0;
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j <i; j++)
{
//判断i是否为素数:用[2, i)之间的每个数据去被i除,只要有一个可以被整除,则不是素数
if (i % j == 0)
{
break;
}
}
if (j == i)
{
printf("%d ", i);
count++;
}
}
printf("\n%d\n", count);
return 0;
}
思路二
如果i能够被[2, sqrt(i)]之间的任意数据整除,则i不是素数
原因是:如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于sqrt(m),另一个大于或等于 sqrt(m)
如果是6则,[2,3)它可以被2整除,则该数不是素数,如果是15,则区间[2,4),15能被3整除,所以它不是素数
代码
int main()
{
int count = 0;
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)
{
//判断是否为素数
for (j = 2; j <=sqrt(i); j++)
{
if (i % j == 0)//如果是素数,则跳出循环
{
break;
}
}
if (j == i)
{
printf("%d ", i);
count++;
}
}
printf("\n%d\n", count);
return 0;
}
数9的个数
编写程序数一下 1到 100 的所有整数中出现多少个数字9
int main()
{
int i;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10==9)//个位上9的个数
{
count++;
}
if (i / 10 == 9)//十位上9的个数
{
count++;
}
}
printf("%d\n", count);
return 0;
}