前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【c语言】一些刷题遇到的小知识点—1(会更新)

【c语言】一些刷题遇到的小知识点—1(会更新)

作者头像
用户11292525
发布2024-09-26 11:02:56
840
发布2024-09-26 11:02:56
举报
文章被收录于专栏:学习

简单c语言概念类题目.

题目一 四舍五入
要求:输入浮点型数字自动四舍五入 (如输入3.1 输出3)
// 因为转换规则内的精度参数可以直接帮我们自动四舍五入。 // 只需要在% f中间加上.0就可以了,这样表示精确到小数点后0位。 // 举一反三,假如说要精确到小数点后两位,那么就是 % .2f这样写,也就是在中间加上.2
代码语言:javascript
复制
#include <stdio.h>

int main() {
    double d = 0;
    scanf("%lf", &d);
    printf("%.0f", d);
    return 0;
}
题目二  输入年月日
要求:输入一串数字,输入的数字能自动在输出中分成年月日  
        (如 输入👉19790506 输出👉你的出生日期是1979年05月06日)
//  所以我们要提前准备好 存放年月日的三个变量 int a,b,c;而非单个的a 小知识点:通过 scanf 函数的 % n 格式(n是实数)控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据。
//  { scanf("%4d%2d%2d", &a, &b, &c) ; //   第一个四个数字,第二 三都是两个数字,所以是 %4  %2  %2 ; //   输入完成 把他们放到a b c的地址  }
代码语言:javascript
复制
#include<stdio.h>

int main()
{
    int a = 0,b = 0,c = 0;
    scanf("%4d%2d%2d", &a,&b,&c);
    printf("你的出生日期是%d年%d月%d日", a,b,c);
    return 0;
}

你以为你对了?hhh   你会发现你输入的19790506,输出的结果中本该出现05月,而却是5月!!! 0呢?0呢??

 ————嘿嘿,知识点空缺了吧(没错就是作者大大我犯的错误QAQ )

小知识点: printf 函数的 % 0格式控制符,输出数值时指定左面不使用的空位置自动填0。

于是我恍然大悟需要这打印的时候做点什么 ——👉 printf (" month =%02d\n", b);

代码语言:javascript
复制
int main()
{
    int a = 0, b = 0, c = 0;
    scanf("%4d%2d%2d", &a, &b, &c);
    printf("你的出生日期是%d年%02d月%02d日", a, b, c);
    return 0;
}

 分支和循环类题目

题目一 猜数字游戏

首先,我们进入游戏,需要游戏菜单,所以需要一进入页面就显示的菜单,这里我用了do while循环结构,在do阶段先噶菜单

在菜单中,我们还需要游戏按钮选项,点击开始或退出,不同按钮触发我们用的是switch开关结构

开始游戏,猜数字需要 先系统生成随机数字,这里运用的是rand, srand, time的结构 

// 这里记录下我de新知识点:

  // 头文件rand和srand <stdlib.h>   

                               time<time.h>

  //  ②随机数运用形式 :(范围a到b的随机数)a + rand ( ) % ( b - a + 1 ) 

                                           ( 如:1-100的随机数: 1 + rand( )% 100 )

 srand((unsigned int)time(NULL))

其次,猜数字猜大猜小,需要猜好几次,所以我们考虑用for/while循环

以下是我敲的代码:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void game()  //游戏单独调用函数
{
	int r = rand() % 100 + 1;//这是随机数生成
	int guess = 0;
	int count = 7; //设置了机会次数

	for(count=7;count<=7&&count>0;) //我用的for循环
	{
		printf("还剩下%d次机会", count);
		printf("请输入你猜的数字:");
		scanf("%d", &guess);
		count--;
		if (guess > r)
		{
			printf("猜大了\n");
		}
		else if (guess < r)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你猜对了!你真棒!\n");

			break;
		}
		if (count == 0)
		{
			printf("很遗憾,在规定的时间你没猜出!输了吧!傻逼!!\n");
		}
	}

}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));  //随机数的srand只需调用一次,于是我放前面了

	do  //菜单放在do的位置
	{
		printf("***********************\n");
		printf("*****1.开始游戏********\n");
		printf("*****0.退出游戏********\n");
		printf("***********************\n");
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game(); //游戏单独调用函数来作,这样代码没那么臃肿
			break;
		case 0:
			printf("退出成功\n");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}
	} while (input);
	return 0;
}
题目二 求100-200的全部素数以及素数个数

这个是运算结果

    这题我犯了个错误,导致我运算的结果都只有素数个数等于0 

    各位看官能看出哪里错了嘛

   (咳咳不信都看得出来 /固执 /自我安慰)

代码语言:javascript
复制
int main()          这是含错误的代码
{
	int a = 0;//a是100-200内的数
	int c = 0;//c是标记非素数的
	int count = 0;
	for (a = 100; a <= 200; a++)
	{
		
		int b = 0;
		for (b = 2; b <= a - 1; b++) //是2到(素数-1)的数的范围
		{
			if (a % b == 0)
			{
				c = 1;
				break;
			}

		}
		if (c == 0)
		{
			count++;
			printf("%d\n", a);

		}
	}
				printf("count=%d", count);
	
	return 0;

}

3

2

1

 ————公布答案啦

错误是应该把第7行的放到第11行去

减肥法

这个得知道这个c是用来干嘛的,我后边标了注释,即c像个标记

如果不是素数就变为0,是素数就保持1不变

假设第一次变成了0 只能代表当前的数字不为素数,所以下次循环的时候要重新初始化,再去判断下一个数是不是素数

要是放在外面,这个c就不管循环多少次都是0,没有意义了

(嘻嘻给自己讲的真好,夸夸~)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单c语言概念类题目.
    • 题目一 四舍五入
      • 题目二  输入年月日
      •  分支和循环类题目
        • 题目一 猜数字游戏
          • 题目二 求100-200的全部素数以及素数个数
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档