C语言100天练习题记录本
目录
C语言100天练习题【记录本】
C语言经典100题(手把手 编程)
可以在哔哩哔哩找到(url: )
已解决的天数
一,二,五,六,八,十三,十四,十五,十七,二十,二十一,二十三
下面的都是模模糊糊的(值得大家做的)
可以学学这些算法,我是算法白痴,但是我不是白痴
第三天(未解决)
第四天
#include <stdio.h>
// 判断是否为闰年
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100!= 0) || (year % 400 == 0);
}
int main() {
int year, month, day;
int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int total_days = 0;
printf("请输入年月日:");
scanf("%d %d %d", &year, &month, &day);
// 判断闰年,更新二月天数
if (isLeapYear(year)) {
days_in_month[1] = 29;
}
// 计算天数
for (int i = 0; i < month - 1; i++) {
total_days += days_in_month[i];
}
total_days += day;
printf("这是第%d天\n", total_days);
return 0;
}
第十一天
兔子生崽问题,类似斐波那契数
#include <stdio.h>
//不用递归的做法
int main() {
int x[20]={1,1};
for (int i = 2; i < 13; i++)
{
x[i] = x[i-1] + x[i-2];
printf("%d\n",x[i]);
}
return 0;
}
第十二天
求素数,差点给我搞红温了,555555555555
#include <stdio.h>
int main() {
// 遍历 101 到 199 之间的所有整数
for (int i = 101; i < 200; i++) {
int is_prime = 1; // 每次判断新的数之前,假设 i 是素数
// 检查 i 是否能被 2 到 i-1 之间的任何整数整除
for (int j = 2; j < i; j++) {
if (i % j == 0) {
is_prime = 0; // i 不是素数
break;
}
}
// 如果 i 是素数,则输出 i
if (is_prime) {
printf("%d\n", i);
}
}
return 0;
}
第十四天
将一个正整数分解成质因数,写出来了
#include <stdio.h>
int main() {
int x ;
printf("请输入要分解的数字:");
scanf("%d,",&x);
if (x==0 || x==1)
{
printf("%d",x);
}
for (int i = 2; i < 10; i++)
{
if (x%i == 0)
{
printf("%d\t",i);
x = x / i;
i = 2;
}
}
return 0;
}
第十六天(未解决)
求最大公约数和最小公倍数
第十七天
求字符串里面存在多少数字,字母,空格和其他字符
#include <stdio.h>
int main() {
char x[100];
int shuzi = 0;
int zimu = 0;
int kongge =0 ;
int qita = 0;
printf("请输入字符串:");
fgets(x,sizeof(x),stdin);
for (int i = 0; x[i] !='\0'; i++)
{
if (x[i]=='\n')
{
break;
}
if (x[i]<='9' && x[i]>='0')
{
shuzi++;
}
else if ((x[i]>='a' && x[i]<='z') || (x[i]>='A' && x[i]<='Z'))
{
zimu ++;
}
else if (x[i] == ' ')
{
kongge++;
}else{
qita++;
}
}
printf("%d %d %d %d\n",shuzi,zimu,kongge,qita);
return 0;
}
第十八天
求s=2+22+222+2222……
#include <stdio.h>
#include <math.h>
int main() {
int count;
int bottom;
int sum = 0;
int i;
printf("请输入底数和次数:");
scanf("%d %d", &bottom, &count);
for (i = 0; i <= count; i++) {
sum += (int)pow(bottom, i);
}
printf("总数是:%d\n", sum);
return 0;
}
第十九天(未解决)
1000以内的完数