c语言

C语言scanf读取中文时一些注意事项

不问归期 提交于 2020-02-06 19:52:02
下面程序所运行的命令行界面的编码是GBK (代码页: 936 简体中文 GBK ) char s[10]; scanf("%s",s); // 输入“你好啊”,然后回车 printf("%s",s); // 能正确输出“你好啊” 使用调试工具查看 s 所在的内存空间: c4 e3 ba c3 b0 a1 00 00 00 00 百度查询可知 “你好啊”的 GBK 的编码是: 你: C4E3 好: BAC3 啊: B0A1 发现和数组 s 的前 6 个字节存储的值一样,由此可知,程序所运行的命令提示符支持哪种编码,那么 C 可以正确存储和输出这种编码的字符。 char ch; scanf("%c",&ch); // 输入“你”,然后回车 使用调试器查看变量 ch 所在的内存空间: c4 scanf 的 %c 表示读取一个字符,更确切的说是读取输入缓冲区的一个字节。 int ch; scanf("%c",&ch); // 输入“你”,然后回车 使用调试器查看变量 ch 所在的内存空间: c4 00 00 00 虽然 int 占 4 个字节,但是 scanf 的 %c 只读取一个字符(字节),所以把读取的 0xc4 赋值给整型变量 ch , ch 的值就是 0xc4 ,而内存是小端表示,便是 c4 00 00 00 同时,上面的 scanf 会出现编译时警告: warning:

C语言寒假大作战02

人走茶凉 提交于 2020-02-06 18:17:42
这个作业属于哪个课程 C语言程序设计I 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10259 这个作业的目标 清晰的理解程序的设计与运行 作业正文 https://www.cnblogs.com/lsq47/p/12250008.html 其他参考文献 C Primer Plus 2本次作业 2.2.2 设计思路和遇到的问题 思路:看题目首先就会想到运用switch语句,而题目提到要用到函数,那就可以想到在switch语句中运用函数。看到每次都要重新显示操作列表,所以要用到循环,就会想到for语句或者while语句,两者相比,while语句在这里跟显优势。所以本题总共用到switch语句,while语句,函数。 问题:我在这里遇到的主要问题在循环这里,当我用for循环时,无法做到退出程序。所以多次尝试后,运用while语句才得以解决。 2.2.3 程序截图 2.2.4 程序代码 include<stdio.h> void fact();void one(); void two();void three(); void help();void five();void error(); int main() { int number=1,i=1; printf("===========口算生成器=

C语言寒假大作战03

拜拜、爱过 提交于 2020-02-06 17:32:12
问题 答案 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业链接 我在这个课程的目标是 学习git基础命令与使用,学习新的库函数-rand() 参考文献 随机数rand 作业正文 此篇博客 2.2.2 设计思路和遇到的问题 设计思路: 看题目要求,加入可以产生题目的代码。 看题目给出的新函数rand(),思考怎么使用。 在上一次的作业代码上进行操作。 心路历程:挺简单的(刚看题目) → 什么鬼,函数怎么用(看了十几分钟)→ 羞愧(作业要求下面有使用方法的链接,我没看见) → 开心(完成作业) 2.2.3 程序结果截图 2.2.4 程序代码 程序代码 ‘#include<stdio.h>’ ‘#include <stdlib.h>’ ‘#include<time.h> int help(int a) { printf("\n"); printf("帮助信息:\n"); printf("您需要输入代号命令号来进行操作,另\n"); printf("一年级题目较简单\n"); printf("二年级题目有点点难,但我相信你可以\n"); printf("三年级题目比二年级难很多哦加油!\n"); } int main() { printf("====口算生成器====\n"); printf("欢迎使用口算生成器:\n\n\n"); printf("帮助信息:\n");

C语言经典例18-求累加和

两盒软妹~` 提交于 2020-02-06 17:11:22
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 求 s = a + a a + a a a + a a a a + a a . . . a s=a+aa+aaa+aaaa+aa...a s = a + a a + a a a + a a a a + a a . . . a 的值,其中a是一个数字。例如 2 + 22 + 222 + 2222 + 22222 2+22+222+2222+22222 2 + 2 2 + 2 2 2 + 2 2 2 2 + 2 2 2 2 2 (此时共有5个数相加),几个数相加有键盘控制。 2 分析 本题的题意就是输入一个 a a a ,然后再输入按照该规律累加几次,重点是找到该规律,发现每次累加,都是将原来的数乘以 10 10 1 0 ,再加上 a a a 3 实现 # include <stdio.h> int main ( ) { int s ; // 保存和 int a ; int n ; int t ; // 临时变量 printf ( "请输入a和n,中间用空格隔开:" ) ; scanf ( "%d%d" , & a , & n ) ; t = a ; // 将a的值赋值给临时变量,因为a的值要改变 for ( s = 0 ; n > 0 ; n -- ) { s = s + t ; a = a * 10 ; t = t + a

C语言寒假大作战01

邮差的信 提交于 2020-02-06 16:50:20
这个作业属于哪个课程 C语言程序设计 这个作业要求在哪里 要求 这个作业的目标 完成Gitee 与 git基础命令学习与使用 作业正文 教学视频 其他参考文献 Git基础 一、 1.1 码云界面 1.2 Git界面 1.3本地仓库截图 1.4 学习命令 建立仓库 查看状态 查看操作日志 返回 读取密钥 1.5 主页地址 Patrick 来源: https://www.cnblogs.com/godeagle/p/12268818.html

C语言寒假大作战03

只谈情不闲聊 提交于 2020-02-06 15:55:08
这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/SE2019-2 这个作业要求在哪里 【作业要求】( https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/10267 ) 我在这个课程的目标是 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数 作业正文 https://www.cnblogs.com/yhbujnikm/p/12268715.html 参考文献 https://www.runoob.com/cprogramming/c-function-rand.html 2.2.2设计思路和遇到的问题 设计思路:使用三个函数,作为作业题目的函数,在一,二,三年级中插入函数。 遇到的问题:我先是用a,b,c,来赋值确定随机数,后来发现所有的随机数一模一样,我就没有用a,b,c,用的是rand()%10,rand()%99,rand()%99. 2.2.3程序结果截图 2.2.4程序代码 2.2.5Gitee上传截图与链接 链接 https://gitee.com/liupan_123/liupan20199391.txt 来源: https://www.cnblogs.com/yhbujnikm/p/12268715.html

C语言寒假大作战03

久未见 提交于 2020-02-06 15:04:28
作业头 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-2/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10261 这个作业的目标 熟练C语言函数应用 作业正文 https://www.cnblogs.com/szy5201314/p/12268352.html 其他参考文献 百度 2.1 题目内容与要求 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数 2.1.1 菜单程序函数调用图如下: 2.1.2 程序截图: 2.2.2 设计思路和遇到的问题 设计思路 遇到的问题 2.2.3 程序代码 #include<stdio.h> #include <stdlib.h> #include <time.h> void menu(){ printf("操作列表:\n1)一年级 2)二年级 3)三年级\n4)帮助 5)退出程序\n请输入操作> "); } void help(){ printf("帮助信息\n您需要输入命令代号来进行操作, 且\n一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n"); } void error(){ printf("Error

L - C语言实验——找中间数

我只是一个虾纸丫 提交于 2020-02-06 11:26:57
L - C语言实验——找中间数. Description 输入三个整数,找出其中的中间数。(这里的中间数指的是大小,不是位置。) Input 输入3个整数。 Output 输出中间数。 Sample Input 1 2 3 Output 2 #include<stdio.h> #include<stdlib.h> int main() { int a,b,c,t; scanf("%d%d%d",&a,&b,&c); if(a<b) { t=a; a=b; b=t; } if(a<c) { t=a; a=c;c=t; } if(b<c) { t=b; ; b=c; c=t; } printf("%d\n",b); return 0; } 来源: CSDN 作者: 我本无意穿堂风 链接: https://blog.csdn.net/qq_40392114/article/details/104192567

c语言模拟(龟兔赛跑)

一笑奈何 提交于 2020-02-06 06:03:49
开始赛跑后的每一秒都要判断兔子是否到达休息的标准如果兔子可以休息则判断休息途中乌龟跑多少距离以及兔子休息够后是否仍然休息以及兔子和乌龟每一秒的运动距离另外每秒都要判断兔子或者乌龟是否到达终点 # include <stdio.h> void fun ( int * s1 , int * s2 , int s , int t , int v1 , int v2 , int * T , int l ) //计算兔子和乌龟跑的距离以及兔子休息时间乌龟运动距离 { int S ; S = * s1 - * s2 ; if ( S >= t ) { int i = 0 ; while ( i < s && * s2 < l && * s1 < l ) { * s2 + = v2 ; * T + = 1 ; i ++ ; } } else { * s2 + = v2 ; * s1 + = v1 ; * T + = 1 ; } int main ( ) { int v1 , v2 , s , t , l ; int s1 = 0 , s2 = 0 , T = 0 ; scanf_s ( "%d%d%d%d%d" , & v1 , & v2 , & t , & s , & l ) ; while ( s1 != l && s2 != l ) //在没有任一到达终点前一直计算 { fun ( &

【C语言】判断回文数

旧街凉风 提交于 2020-02-06 05:28:51
小菜鸡更新第一篇博客啦(有错希望能够指正且多多包涵哈)! 总结一下"回文数" 1. 数字回文数 就普通举例:‘12321’‘5665’之类的都是回文数(即每个数字正排序和逆排序的结果是一样的); 那怎么实现呢? 首先最容易想到的当然是 将 原数 的 逆序数 表示一遍 再判断两者是否相等。 那么有什么比较容易的算法可以简便地把上述步骤呈现出来呢? 来看一段代码片: int main ( ) { int number ; scanf ( "%d" , & number ) ; //输入原数 int new_number = 0 ; int s = number ; //定义一个new_number来装原数的逆排序数 //此处需要定义一个s来代替原本输入的数,不然最后比较新数与原数的时候会出错(即原数经变化不再是原数了) while ( s != 0 ) //此处的循环条件 即 s/10 到该数的最后一位数 若到了最后一位,s/10的结果必为0 { new_number = new_number * 10 + s % 10 ; //一个数除以10的余数就是该数最后一位,每次拿到一个余数,都用来构造新数,新数=新数*10+余数 s / = 10 ; //一个数除以10的商就是排除掉最后一位后的数 } if ( new_number == number ) //结果出来了就与原数进行比较