C语言
C语言知识点及相关经典例题
ZD_012
这个作者很懒,什么都没留下…
展开
-
【C语言】从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以 !结束。
#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; int i = 0; char str[100], filename[100]; if ((fp == fopen("test", "w")) == NULL) { printf("cannot open the file\n"); ...原创 2020-03-28 21:15:36 · 10074 阅读 · 2 评论 -
【C语言】从键盘上输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止
在写代码之前,我们先来了解几个函数:fopen() 函数fopen函数是打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);“文件指针名” 必须是被声明为FILE 类型的指针变量;“文件名” 是被打开文件的文件名;“使用文件方式” 是指文件的类型和操作要求;“文件名” 是C风格字符串。举个栗子,在下面的代码中 (fp == fopen(filename...原创 2020-03-28 20:48:14 · 5019 阅读 · 0 评论 -
【C语言】计算字符串中子串出现的次数
#include <stdio.h>#include <stdlib.h>#include<conio.h>int main(){ char str1[20]; char str2[20]; char *p1, *p2 = NULL; int count = 0; printf("请输入两个字符串:\n"); scanf("%s%s", &a...原创 2020-03-28 20:13:58 · 2243 阅读 · 0 评论 -
【C语言】某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
#include <stdio.h>#include <stdlib.h>int main(){ int num = 0; int a[4]; scanf("%d", &num); a[0] = num / 1000; a[1] = num / 100 % 10; a[2] = num / 10 % 10; a[3] = num % 10; ...原创 2020-03-28 17:15:20 · 10064 阅读 · 0 评论 -
【C语言】读取7个数(1 ~ 50)的整数值,每读取一个值,程序打印出该值个数的 *
#include <stdio.h>#include <stdlib.h>#include <conio.h>int main(){ int a, n = 0; while (n <= 7) { do{ scanf("%d", &a); } while (a < 1 || a > 50); for (i...原创 2020-03-28 16:46:18 · 4975 阅读 · 0 评论 -
【C语言】两个字符串连接程序
#include <stdio.h>#include <stdlib.h>int main(){ char a[] = "abcdefg"; char b[] = "higklmn"; char c[80]; char *p = NULL; int i = 0; int j = 0; int k = 0; while (a[i] != '\0' &am...原创 2020-03-28 16:28:09 · 610 阅读 · 1 评论 -
【C语言】一个不小于6的偶数总能表示为两个素数之和
#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){ int a, b, c, d = 0; scanf("%d", &a); for (b = 3; b <= a / 2; b += 2) //先寻找一个素数b { for (c = 2;...原创 2020-03-26 14:08:15 · 2226 阅读 · 0 评论 -
【C语言】求0-7所能组成的奇数个数
解题思路这个问题其实是一个排列组合的问题,设这个数为sum=a1a2a3a4a5a6a7a8,a1-a8表示这个数的某位的数值,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字。如果最后一位数为偶数,则这个数一定为偶数。a1-a8可以取0-7这个八个数字,首位数字不为0,范围为0-77777777。从该数为一位数到该数为8位数开始统计奇数的个数:1.当只有一位数时也...原创 2020-03-25 11:32:15 · 2404 阅读 · 0 评论 -
【C语言】八进制转换为十进制
#include<stdio.h>#include<stdlib.h>int main(){ char *p; char s[6]; int n; p = s; gets(p); n = 0; while (*(p) != '\0') { n = n * 8 + *p - '0'; p++; } printf("%d", n); sys...原创 2020-03-25 10:27:01 · 1658 阅读 · 0 评论 -
【C语言】809 * ?? = 800 * ?? + 9 * ?? + 1。
题目描述809 * ?? = 800 * ?? + 9 * ?? + 1。其中 ?? 代表两位数,8 * ?? 的结果为两位数,9 * ?? 的结果为三位数。求 ?? 代表的两位数,及809 * ?? 后的结果。解题思路刚开始我拿到这题时,我是懵的。可能有很多小可爱和我想得一样,用乘法分配率来看809 * ?? = (800 + 9) * ?? = 800 * ?? + 9 * ?? ,这样...原创 2020-03-24 16:20:20 · 1837 阅读 · 1 评论 -
【C语言】连接两个链表
#include<stdio.h>#include<stdlib.h>struct list{ int data; struct list* next;};typedef struct list node;typedef node* link;//删除节点link delete_node(link ptr, link tmp){ if (tmp...原创 2020-03-24 15:48:15 · 860 阅读 · 1 评论 -
【C语言】海滩上有一堆桃子,五只猴子来分。
题目描述海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?完整代码int main(){ int count = 0; for (int i = 1; i < 1...原创 2020-03-24 14:55:41 · 1476 阅读 · 0 评论 -
【C语言】反向输出一个链表
#include<stdio.h>#include<stdlib.h>struct list{ int data; struct list *next;};int main(){ struct list *head, *p, *tail; int num = 0; tail = (struct list*)malloc(sizeof(struct ...原创 2020-03-23 20:23:05 · 1189 阅读 · 0 评论 -
【C语言】创建一个链表
struct list{ int data; struct list *next;};int main(){ struct list *head, *p; int n = 0; int num = 0; head = NULL; p = NULL; printf("请输入n个数:"); scanf("%d", &n); for (int i = 0; i &l...原创 2020-03-24 13:44:43 · 270 阅读 · 0 评论 -
【C语言】有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
达到、原创 2020-03-24 13:45:15 · 3317 阅读 · 0 评论 -
【C语言】编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n;当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
float pEven(int n){ float sum = 0; for (float i = 2; i <= n; i += 2) { sum += 1 / i; } return sum;}float pOdd(int n){ float sum = 0; for (float i = 1; i <= n; i += 2) { sum += 1...原创 2020-03-18 17:19:44 · 6412 阅读 · 0 评论 -
【C语言】编写input() 和 output() 函数输入,输出5个学生的数据记录
#include<stdio.h>#include<stdlib.h>#define N 5struct student{ char num[6]; char name[4]; int score[4];}stu[N];void input(struct student stu[]){ for (int i = 0; i < N; i++)...原创 2020-03-12 13:11:29 · 8936 阅读 · 0 评论 -
【C语言】写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
#include<stdio.h>#include<stdlib.h>int main(){ char str[20]; printf("请输入字符串:"); scanf("%s", str); char *p = str; int length = 0; while (*p != '\0') { length++; p++; } prin...原创 2020-03-12 11:30:41 · 9397 阅读 · 0 评论 -
【C语言】有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
#include<stdio.h>#include<stdlib.h>#define nMax 50int main(){ int a[nMax] = { 0 }; int n = 0; int *p; int i, k, m; printf("一圈的总人数:"); scanf("%d", &n); p = a; for (int i = ...原创 2020-03-12 11:20:10 · 1154 阅读 · 0 评论 -
【C语言】输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
#include<stdio.h>#include<stdlib.h>#define N 10void Swap(int* x, int* y){ int tmp = *x; *x = *y; *y = tmp;}int main(){ int a[N] = { 0 }; printf("请输入数组:"); for (int i = 0; i...原创 2020-03-10 20:31:05 · 4349 阅读 · 1 评论 -
【C语言】打印出杨辉三角形(要求打印出10行)
#include<stdio.h>#include<stdlib.h>#define N 10int main(){ int a[N][N] = { 0 }; int i, j; //计算边上的值 for (i = 0; i < N; i++) { //第一列 a[i][0] = 1; //最后一列 a[i][i] = 1; }...原创 2020-03-10 14:22:18 · 3505 阅读 · 0 评论 -
【C语言】取一个整数a从右端开始的4~7位
程序分析(1)先使a右移4位(2)设置一个低4位全为1,其余全为0的数。可用~ (~0<<4)。(3)将上面二者进行&运算源代码#include<stdio.h>#include<stdlib.h>int main(){ unsigned a, b, c, d; scanf("%o", &a); b = a >>...原创 2020-03-10 12:58:49 · 3633 阅读 · 2 评论 -
【C语言】学习使用按位取反~
程序分析二进制:~0 = 1;~1 = 0。源代码#include<stdio.h>#include<stdlib.h>int main(){ int a, b; a = 234; b = ~a; printf("\40:The a's 1 (decimal) is %d\n", b); //b = -235 a = ~a; printf("...原创 2020-03-09 16:22:35 · 319 阅读 · 0 评论 -
【C语言】学习使用按位异或 ^
程序分析二进制:0^0 = 0;0^1 = 1;1 ^ 0 = 1;1^1 = 0源代码#include<stdio.h>#include<stdlib.h>int main(){ int a, b; a = 077; //077是八进制,转换为二进制是111111 b = a ^ 3; //3转换为二进制是011 /* 11...原创 2020-03-09 15:47:28 · 332 阅读 · 0 评论 -
【C语言】学习使用按位或 |
程序分析二进制:0|0 = 0;0|1 = 1;1|0 = 0;1|1 = 1源代码#include<stdio.h>#include<stdlib.h>int main(){ int a, b; a = 077; //077是八进制,转换为二进制是111111 b = a | 3; //3转换为二进制是011 /* 1111...原创 2020-03-09 15:22:29 · 643 阅读 · 0 评论 -
【C语言】学习使用按位与&
程序分析二进制:0&0 = 0;0&1 = 0; 1&0 = 0;1&1 = 1源代码#include<stdio.h>#include<stdlib.h>int main(){ int a, b; a = 077; //077是八进制,转换为二进制是111111 b = a & 3; //...原创 2020-03-09 14:15:48 · 664 阅读 · 0 评论 -
【C语言】学习使用register定义变量的方法
#include<stdio.h>#include<stdlib.h>int main(){ register int i; int tmp = 0; for (i = 0; i <= 100; i++) { tmp += i; } printf("This sum is %d\n", tmp); system("pause"); retu...原创 2020-03-09 13:53:36 · 438 阅读 · 0 评论 -
【C语言】学习使用external的用法
#include<stdio.h>#include<stdlib.h>int a, b, c;void add(){ int a; a = 3; c = a + b;}int main(){ a = b = 4; add(); printf("The value of c is equal to %d\n", c); system("paus...原创 2020-03-09 13:39:51 · 1222 阅读 · 0 评论 -
【C语言】学习使用static的另一种用法
#include<stdio.h>#include<stdlib.h>int main(){ int i, num; num = 2; for (int i = 0; i < 3; i++) { printf("\40:The num equal %d\n", num); num++; { static int num = 1; ...原创 2020-03-09 13:30:33 · 103 阅读 · 0 评论 -
【C语言】学习使用auto定义变量的用法
#include<stdio.h>#include<stdlib.h>int main(){ int i, num; num = 2; for (int i = 0; i < 3; i++) { printf("\40:The num equal %d\n", num); num++; { auto int num = 1; p...原创 2020-03-09 13:08:48 · 690 阅读 · 0 评论 -
【C语言】学习static定义静态变量的用法
#include<stdio.h>#include<stdlib.h>void func(){ int var = 0; static int static_var = 0; printf("\40:var equal %d\n", var); printf("\40:static var equal %d\n", static_var); printf(...原创 2020-03-09 12:58:50 · 276 阅读 · 0 评论 -
【C语言】将一个数组逆序输出
程序分析用第一个与最后一个交换。源代码#include<stdio.h>#include<stdlib.h>#define N 5int main(){ int a[N] = { 1, 2, 3, 4, 5 }; printf("原始数列为:"); for (int i = 0; i < N; i++) { printf("%d ", a[...原创 2020-03-09 12:49:55 · 9337 阅读 · 1 评论 -
【C语言】有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
源代码#include<stdio.h>#include<stdlib.h>int main(){ int number = 0; int a[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99 }; printf("原始序列为:"); for (int i = 0; i < 9; i++) { printf(...原创 2020-03-09 12:06:52 · 1741 阅读 · 5 评论 -
【C语言】求一个3*3矩阵对角线元素之和
程序分析利用双重for循环控制输入二维数组,再将a[i][j]累加后输出。源代码#include<stdio.h>#include<stdlib.h>int main(){ float a[3][3]; float sum = 0; printf("请输入3*3矩阵元素:"); for (int i = 0; i < 3; i++) { f...原创 2020-03-09 11:32:14 · 1835 阅读 · 0 评论 -
【C语言】对10个数进行排序
程序分析利用选择法。即从后9个比较过程中,选择一个最小的与第一个元素交换,依次类推,即用第二个元素与后8个进行比较,并进行交换。源代码#include<stdio.h>#include<stdlib.h>int main(){ int a[10] = { 0 }; printf("请输入十个数:"); for (int i = 0; i < 10;...原创 2020-03-08 15:17:23 · 5375 阅读 · 0 评论 -
【C语言】练习函数调用
void hello_world(){ printf("Hello World!\n");}void three_hellos(){ for (int i = 1; i <= 3; i++) { hello_world(); }}int main(){ three_hellos(); system("pause"); return 0;}原创 2020-03-08 14:06:55 · 249 阅读 · 0 评论 -
【C语言】文本颜色设置
#include<stdio.h>#include<stdlib.h>#include<conio.h>int main(){ int color; for (color = 1; color < 16; color++) { textcolor(color); _cprintf("This is color %d\r\n", col...原创 2020-03-08 14:18:27 · 579 阅读 · 0 评论 -
【C语言】学习gotoxy() 与 clrscr() 函数
在写代码之前,我们先来了解一下gotoxy() 与 clrscr() 函数。gotoxy() 函数函数原型: extern void gotoxy(int x, int y)函数用法: #include <system.h>函数功能: 将光标移动到指定位置。说明: gotoxy(x,y)将光标移动到指定行x和列y。设置光标到文本屏幕的指定位置,其中参数x,y为文本屏幕的坐标...原创 2020-03-08 13:58:12 · 3086 阅读 · 1 评论 -
【C语言】Press any key to change color
由于某些编译器的不同,某些编译器里面没有特定的一些函数 。我用的是vs2013,因为vs2013里面的conio头文件里面没有特定函数,所以得自己写textbackground() 函数。_cprintf() 函数和 _getch()函数也是我的编译器中指定的函数,有的小伙伴用的是cprintf() 函数和 getch()函数哦!#include<stdio.h>#include...原创 2020-03-07 16:46:42 · 628 阅读 · 0 评论 -
【C语言】请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
#include<stdio.h>#include<stdlib.h>int main(){ char i, j; printf("请输入第一个字母\n"); scanf("%c", &i); getchar(); switch (i) { case 'm': printf("monday\n"); break; case 't':...原创 2020-03-07 16:04:04 · 4328 阅读 · 1 评论