C语言今日份练习

2024-01-08 13:21:25

//1.题目名称:从大到小输出
//? ?题目内容:写代码将三个数按从大到小输出

#include<stdio.h>
int main()
{
?? ?int a = 0;
?? ?int b = 0;
?? ?int c = 0;
?? ?scanf_s("%d %d %d", &a, &b, &c);//2 1 3
?? ?int d = 0;
?? ?if (a < b)
?? ?{
?? ??? ?
?? ??? ?d = a;
?? ??? ?a = b;
?? ??? ?b = d;
?? ?}
?? ?else if (a < c)//else 是否则 if 是如果?
?? ?{

?? ??? ?d = a;
?? ??? ?a = c;
?? ??? ?c = d;
?? ?}
?? ?if (b < c)//这里不能加else 因为这样的话就只会执行第二个else if 而这个里面的语句不执行
?? ?{
?? ??? ?
?? ??? ?d = b;
?? ??? ?b = c;
?? ??? ?c = d;
?? ?}
?? ?printf("%d %d %d\n", a, b, c);
?? ?return 0;
}

//2.题目名称:打印3的倍数的数
//? ?题目内容:写一个代码打印1-100之间所有3的倍数的数字

#include<stdio.h>
int main()
{
?? ?int i = 0;
? int count=0;
?? ?for (i = 1; i <= 100; i++)
?? ?{
?? ??? ?if (i % 3 == 0)
?? ??? ?{
?? ??? ??? ?printf("%d ", i);
? ? ? ? ? ? count++;
?? ??? ?}
?? ?}
?? ?printf("\ncount=%d", count);
?? ?return 0;
}

//3.题目名称:最大公约数
//? ?题目内容:给定两个数,求这两个数的最大公约数
//? ?辗转相除法:公约数 两个数取模,不为0,再取模,取到0的话就为最大公约数

#include<stdio.h>

int main()
{
?? ?int a = 0;
?? ?int b = 0;
?? ?scanf_s("%d %d", &a, &b);
?? ?int r = 0;
?? ?while (a % b)
?? ?{
?? ??? ?r = a % b; //18%24=18
?? ??? ?a = b;
?? ??? ?b = r;
?? ?}
?? ?printf("%d\n", b);
?? ?return 0;
}

//4.题目名称: 打印闰年(要想知道多少个闰年count++就行)
//? ?题目内容:打印1000年到2000年之间的闰年

#include<stdio.h>
int main()
{
?? ?int i = 0;
?? ?int count = 0;
?? ?for (i = 1000; i <= 2000; i++)
?? ?{
?? ??? ??? ??? ?//判断i是否为闰年(两个条件用if和else if)(也可以if(()||())
?? ??? ??? ??? ?//1.能被4整除并且不能被100整除是闰年
?? ??? ??? ??? ?//2.能被400整除是闰年
?? ??? ??? ??? ?if (i % 4 == 0 && i % 100 != 0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("%d ", i);
?? ??? ??? ??? ??? ?count++;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else if (i % 400 == 0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("%d ", i);
?? ??? ??? ??? ??? ?count++;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0))
?? ??? ?{
?? ??? ??? ?printf("%d ", i);
?? ??? ??? ?count++;
?? ??? ?}
?? ?}
?? ??? ?printf("\ncount=%d\n", count);
?? ??? ?return 0;
}

//5.题目名称:打印素数
//? ?题目内容:写一个代码:打印100-200之间的素数

#include<stdio.h>

int main()
{
?? ?int i = 0;
?? ?int count = 0;
?? ?for (i = 100; i <= 200; i++)
?? ?{
?? ??? ?//判断i是否为素数
?? ??? ?//素数判断的规则
?? ??? ?//1.试除法
?? ??? ?//产生2->i-1个数
?? ??? ?int j = 0;
?? ??? ?for (j = 2; j < i; j++)//j<i的意思就是从2到i-1的范围
?? ??? ?{
?? ??? ??? ?if (i % j == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?//1.break跳到这里来
?? ??? ?//2.都是素数时到这里来
?? ??? ?//固定一个
?? ??? ?if (j == i)
?? ??? ?{
?? ??? ??? ?printf("%d ", i);
?? ??? ??? ?count++;
?? ??? ?}
?? ?}
?? ?printf("\ncount=%d ", count);
?? ?return 0;
}
//优化算法(开平方)即a和b中至少有一个数字<=开平方i(i=a*b);也可以在奇数里找,偶数肯定不是素数

//6.题目名称:数9的个数
//? ?题目内容:编写程序数一下1到100的所有整数中出现多少个数字9
#include<stdio.h>

int main()
{
?? ?int i = 0;
?? ?int count = 0;
?? ?for (i = 1; i <= 100; i++)
?? ?{
?? ??? ?if (i % 10 == 9)
?? ??? ??? ?count++;
?? ??? ? if (i / 10 == 9)
?? ??? ??? ?count++;
?? ?}
?? ?printf("%d ", count);
?? ?return 0;
}

//7.题目名称:分数求和
//? ?题目内容:计算1/1-1/2+1/3-1/4...+1/99-1/100的值,打印出结果
#include<stdio.h>

int main()
{
?? ?int i = 0;
?? ?int b = 1;
?? ?double a = 0;
?? ?double sum = 0.0;
?? ?for (i = 1; i <= 100; i++)
?? ?{
?? ??? ?a = 1.0 / i;
?? ??? ?sum += b * a;
?? ??? ?b = -b;
?? ??? ?
?? ?}
?? ?printf("%lf ", sum);
?? ?return 0;
}

//8.题目名称:求最大值
//? ?题目内容:求10个整数中最大值
#include<stdio.h>

int main()
{
?? ?int arr[] = { -1,-2,-3,-4,-5,-6,-7,-8,-9,-10 };
?? ?int max = arr[0];//认为max就是最大值,再把里面每个元素跟max比较,再互换
?? ?int i = 0;
?? ?int a = 0;
?? ?int sz = sizeof(arr) / sizeof(arr[0]);
?? ?for (i = 0; i < sz; i++)
?? ?{
?? ??? ?if (max < arr[i])
?? ??? ?{
?? ??? ??? ?a = max;
?? ??? ??? ?max = arr[i];
?? ??? ??? ?arr[i] = a;
?? ??? ?}
?? ?}
?? ?printf("%d ", max);
?? ?return 0;
}

//9.题目名称:乘法口诀表
//? ?题目内容:在屏幕上输出9*9乘法口诀表
//1*1=1
//2*1=2 2*2=4 a*b=m 先确定行 再确定列
#include<stdio.h>

int main()
{
?? ?int i = 0;
?? ?//确定打印9行
?? ?for (i = 1; i <= 9; i++)
?? ?{
?? ??? ?//打印一行 ?
?? ??? ?int j = 0;
?? ??? ?for (j = 1; j <= i; j++)
?? ??? ?{
?? ??? ??? ?printf("%d*%d=%-2d ", i, j, i*j);
?? ??? ?}
?? ??? ?printf("\n");
?? ?}
?? ?return 0;
}

//10.题目名称:二分查找
//? ? ?题目内容:编写代码再一个整形有序数组中查找具体的某个数
//? ? ?要求:找到了就打印数字所在的下标,找不到则输出:找不到
#include<stdio.h>

int main()
{
?? ?int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
?? ?int k = 7;
?? ?int left = 0;
?? ?int sz = sizeof(arr) / sizeof(arr[0])-1;
?? ?int right = sz;
?? ?int mid = 0;
?? ?while (left <= right)//加一个循环,因为要一直找
?? ?{
?? ??? ?mid = (left + right) / 2;
?? ??? ?if (arr[mid] > k)
?? ??? ?{
?? ??? ??? ?right = mid - 1;
?? ??? ?}
?? ??? ?else if (arr[mid] < k)
?? ??? ?{
?? ??? ??? ?left = mid + 1;
?? ??? ?}
?? ??? ?else
?? ??? ??? ?break;
?? ?}
?? ?if (left <= right)
?? ??? ?printf("找到了,下标是%d\n", mid);
?? ?else
?? ??? ?printf("找不到\n");
?? ?return 0;
}

//11.题目名称:猜数字游戏
//? ? ?题目内容:1.电脑会生成一个随机数
//? ? ? ? ? ? ? ? ? ? ? ?2.猜数字
#include<stdio.h>

#include<stdlib.h>
#include<time.h>
void game()
{
?? ?//1.生成一个随机数
?? ?int ret = 0;
?? ?int guess = 0;//接收猜的数字
?? ?//拿时间戳来设置随机数的生成起始点
?? ?//time_t time(time_t *timer)
?? ?//time_t
?? ?ret = rand() % 100 + 1;//生成1-100之间随机数
?? ?//2.猜数字
?? ?while (1)
?? ?{
?? ??? ?printf("请猜数字:>");
?? ??? ?scanf_s("%d", &guess);
?? ??? ?if (guess > ret)
?? ??? ?{
?? ??? ??? ?printf("猜大了\n");
?? ??? ?}
?? ??? ?else if (guess < ret)
?? ??? ?{
?? ??? ??? ?printf("猜小了\n");
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?printf("恭喜你,猜对了\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?}
}
void menu()
{
?? ?printf("*************************************\n");
?? ?printf("**** ? 1.play ? ? 0.exit ? ? ? ? ****\n");
?? ?printf("*************************************\n");
}
int main()
{
?? ?int input=0;
?? ?srand((unsigned int)time(NULL));
?? ?do {
?? ??? ?menu();
?? ??? ?printf("请选择:>");
?? ??? ?scanf_s("%d",&input);//要是输入1或0没问题,但是输入其他数有问题要用default所以想到switch语句
?? ??? ?switch (input)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?game();
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?printf("退出游戏\n");
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("选择错误,请重新选择\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?} while (input);
?? ?return 0;
}

12.题目名称:关机程序
? ?题目内容:写一个关机程序
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
?? ?char input[10] = { 0 };
?? ?//shutdown - s - t 60
?? ?//cmd command-命令行
?? ?//system()-执行系统命令的
?? ?system("shutdown -s -t 60");
again:
?? ?printf("请注意,你的电脑将在1分钟内关机。如果输入:我是猪,就取消关机\n请输入:>");
?? ?scanf("%s", &input);
?? ?if (strcmp(input,"我是猪") == 0)//比较两个字符串-strcmp()
?? ?{
?? ??? ?system("shutdown -a");
?? ?}
?? ?else
?? ?{
?? ??? ?goto again;
?? ?}
?? ?return 0;
}

文章来源:https://blog.csdn.net/2301_80300263/article/details/135441884
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。