![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言趣味编程
以C语言编程经典
例题
WJT0129
从大陆红到西海岸
展开
-
C语言数组中相差最小的两个元素(称为最接近数)的差
【代码】C语言数组中相差最小的两个元素(称为最接近数)的差。原创 2022-09-26 21:36:32 · 1978 阅读 · 0 评论 -
定义一个长度为30的整型数组,按顺序赋予从2开始的偶数,然后按顺序每5个数求出一个平均值,放在另一个数组中,输出这个数组。
。。。原创 2022-06-18 18:41:37 · 1012 阅读 · 0 评论 -
二分查找C语言
void search(int *a, int n, int m){ int begin, end, mid; begin = 0; end = n - 1; while(begin <= end){ mid = (begin + end) / 2; if (a[mid] == m){ printf("已找到 下标为%d\n", mid); break; } else if (a[mid] < m)begin = mid +1; el.原创 2022-05-30 10:02:00 · 93 阅读 · 0 评论 -
c语言单链表的创建与遍历
#define LEN sizeof(node)typedef struct Node{ int data; struct Node *next;}node;node * creatnode(){ node* head, *h; head = (node*)malloc(LEN); head->next = NULL; h = head; for (int i = 1; i <= 10; i++){ node * p = (node*)malloc(LEN); p-.原创 2022-05-29 18:23:58 · 173 阅读 · 0 评论 -
比较两个字符串大小
题目要求:将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1<s2,输出一个负数;若s1=s2,则输出0;输出的正数和负数的绝对值应是相比较的两个字符串相对应的字符的ASCII码的差值。代码如下:int str_cmp(char *s1, char *s2){ int i= 0; while (s1[i] == s2[i] && s1[i] != '\0') i++; if (s1[i] == '\0'&& s2[i]=='\0')原创 2022-05-27 16:29:10 · 4615 阅读 · 0 评论 -
c语言打印菱形图案
int main(){ int i, j; for (i = 1; i <= 4; i++){//打印菱形的上三角图像 for (j = 1; j <= 4 - i; j++) printf(" "); for (j = 1; j <= 2*i-1; j++) printf("*"); putchar(10); } for (i = 3; i > 0; i--){//打印菱形的下三角图像 for (j = 1; j <= 4 - i; j.原创 2022-05-25 13:06:57 · 2802 阅读 · 0 评论 -
回文数的打印与判断
void f1(int n){//打印0~n之间回文数 int p; for (int i = 1; i <= n; i++) { p = i; int m = 0; while (p > 0) { m = m * 10 + p % 10; p /= 10; } if (i == m) printf("%d\n", i); }}void f2(int n){//判断是否为回文数 int i, m = 0; i = n; w.原创 2022-05-16 11:51:24 · 230 阅读 · 0 评论 -
选择排序和冒泡排序
//选择排序void f1(int *a, int n){ int temp; for (int i = 0; i < n - 1;i++) for (int j = i + 1; j < n;j++) if (a[i]>a[j]){ temp = a[i]; a[i] = a[j]; a[j] = temp; } printf("选择排序后\n"); for (int i = 0; i < n; i++) printf("%d\t", a[i]);.原创 2022-05-16 11:21:23 · 76 阅读 · 0 评论 -
单链表 创建(无头结头 尾插法)和打印
#define LEN sizeof(node)typedef struct Node{ int data; struct Node * next;}node;//定义结点nodenode * creat_link(int n){ node * head = (node *)malloc(LEN); node * h = (node *)malloc(LEN); h = head; h->next = NULL; for (int i = 1; i <=10; i++){.原创 2022-04-07 20:54:59 · 517 阅读 · 0 评论 -
单链表的基本操作(增删改查)
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#define LEN sizeof(node)typedef struct Node { int data; struct Node * next;}node;//定义结点void create_link(node * head.原创 2022-04-06 15:27:28 · 950 阅读 · 0 评论 -
单链表 的创建(尾插法)和打印
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#include <stdio.h>#define LEN sizeof(struct Node)typedef struct Node{ int data; struct Node * next;}node;//定义结.原创 2022-04-05 21:11:25 · 119 阅读 · 0 评论 -
单链表 的创建(头插法)与打印
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>#include <stdio.h>#define LEN sizeof(struct Node)typedef struct Node{ int data; struct Node * next;}node;//定义结点.原创 2022-04-05 20:57:31 · 874 阅读 · 0 评论 -
C语言答应9*9乘法表
int main(){ //打印9*9乘法表 int i, j; for (i = 1; i < 10;i++) for (j = 1; j <=i; j++){ printf("%d*%d=%d", j, i, i*j); printf("\t"); if (j == i)printf("\n"); } return 0;}运行效果如图下:原创 2022-03-13 14:28:17 · 834 阅读 · 0 评论 -
将一个字符串插入另一个字符串的指定位置
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<math.h>#include<string.h>void str(char a[], char b[], int k){ int i, j; int b_len = strlen(b); //定义b的字符长度 b_len = 3 int a_len = strlen(a); //定义a的字符长度 a_len =9 //下面k-1.原创 2022-03-12 20:07:36 · 3144 阅读 · 0 评论 -
编程计算1*2*3+4*5*6+...+99*100*101的值
int i, sum = 0; for (i=1; i < 100; i += 2){ sum += i*(i + 1)*(i + 2); } printf("%d\n", sum);原创 2022-02-23 22:28:01 · 1751 阅读 · 0 评论 -
从键盘输入一个字符串,分别统计其中的字母,数字和其他字符的个数
printf("请输入一个字符串\n"); char a[100]; int num1 =0,num2 =0,num3 = 0; gets(a); for (int i = 0;a[i]!='\0'; i++){ if (a[i] > '0'&&a[i] < '9') num1++; else if ((a[i] >='a'&&a[i]<= 'z') ||(a[i] >= 'A'&&a[i]<='...原创 2022-02-23 21:36:28 · 13562 阅读 · 1 评论 -
C语言将2行3列的行列式转置输出
int main(){ int a[2][3],i, j ,b[3][2]; printf("请输入2行3列的数值\n"); for (i = 0; i < 2; i++){ for (j = 0; j < 3; j++){ scanf("%d", &a[i][j]); } } for (i = 0; i < 3; i++){ for (j = 0; j < 2; j++){ b[i][j] = a[j][i]; } } f.原创 2022-01-04 20:34:24 · 2262 阅读 · 0 评论 -
已知2020年元旦是星期六,计算2000年某年某月是星期几
C语言实现代码如下:int main(){ int daytab[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; char weekname[][7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "sat" }; int i, m, d, week, days; printf("Input date:month=?,day=?\n"); scanf("%d%d", &原创 2021-11-27 10:31:23 · 529 阅读 · 0 评论 -
输入10个整数,要求输出其中的最大值和最小值
代码如下int main(){ int num[10], i,max,min; printf("请你输入10个整数\n"); for (i = 0; i < 10; i++){ scanf("%d", &num[i]); } max = num[0]; min = num[0]; for (i = 0; i < 10; i++){ if (max <= num[i]) max = num[i]; if (min>num[i]) min原创 2021-10-27 20:02:06 · 25403 阅读 · 1 评论 -
从键盘随机输入10个整数,然后从小到大顺序输出
代码如下:int main(){ int num[10],i,j; printf("请输入10个整数\n"); for (i = 0; i <10; i++){ scanf("%d", &num[i]); } for (i = 0; i < 10; i++){ for (j = i+1; j < 10; j++){ if (num[i]>num[j]){ int t; t = num[i]; num[i] = num[.原创 2021-10-27 19:45:55 · 25344 阅读 · 3 评论 -
用c语言编写以英文字母为元素的菱形图案
解析:使用for循环语句实现本题功能,外层for循环每输出一行执行一次。对于每输出的一行,先用for输出相应的空格,即进行输出定位,然后,用for循环输出相应的字母。其中用c标记每行要输出的字母,初值为'A',每输出一行,c自增加1.从而改变输出的字母,以便依次取'A','B','C'.对应的程序如下:int main(){ char c; int i, j, k, n; printf("输入n:\n"); scanf("%d", &n); printf("对应的菱形图为:.原创 2021-10-27 14:07:05 · 2207 阅读 · 1 评论 -
编写一个程序,输入若干个整数,以-1标记为结束,输出其中的最大值和最小值。
解析:利用while循环接收用户的输入,用break退出循环语句。第一次输入时,将该数同时赋给最大值和最小值,对以后输入的数进行比较,将最大值赋给max,最小值赋给min。这样对数组扫描一遍即可求出其中的最大数和最小数。对应的代码如下:int main(){ int max, min, first = 1, num; printf("请输入若干个整数\n"); while (1){ scanf("%d", &num); if (num == -1) break; w.原创 2021-10-27 20:03:41 · 11298 阅读 · 2 评论 -
编写一个程序将十进制整数n转换二进制数,要求从低位到高位输出
解析:采用除2留余法进行进制转换。对应的代码如下:int main(){ int n; printf("请输入十进制整数n的值\n"); scanf("%d", &n); while (n != 0){ printf("%d", n % 2); n = n / 2; } return 0;}以输入12为例,结果如下图:...原创 2021-10-25 22:15:27 · 2035 阅读 · 0 评论 -
C语言选择结构程序设计题
编写一个程序,将给定的百分制成绩转换为成绩等级A、B、C、D、E。90分以上为A,80~90分为B,70~80分为C,60~70分为D,60分以下为E。 int main(){ int num; printf("请输入你的分数\n"); scanf("%d", &num); switch (num / 10){ case 0:case 1:case 2:case 3:case 4:case 5: printf("成绩等级为E\n"); break; case 6: pr..原创 2021-10-11 22:54:36 · 625 阅读 · 0 评论 -
1.2 借书方案知多少
1.问题描述:小明有5本新书,要借给A,B,C这三位小朋友,若每次每人只能借一本,则可以有多少种不同的借法?2. 问题分析:本题属于数学当中常见的排列组合问题,即从5个数中取出3个不同的数排列组合的总数。我们可以将5本书进行1~5的编号,A,B,C。 3个人每次都可以从5本书中任选一本书,即每人都有5种选择,由于一本书不可能同时借给一个以上的人,因此三个人的书籍编号不一样。3.代码如下int main() { int a, b, c,i=0; for (a = 1; a <原创 2021-08-13 18:07:18 · 563 阅读 · 0 评论 -
输出1900——2000年中是闰年的年份呢
#include<stdio.h>int main() { int m; for (m = 1900; m <= 2000; m++) { if (m % 4 == 0 && m % 100 != 0) { printf("%d\n",m); } } return 0;}符合闰年的条件是能被4整除,但不能被100整除结果如下:...原创 2021-08-05 11:42:44 · 1285 阅读 · 0 评论 -
求两个数m和n的最大公约数
辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。int main() { int m, n,i; printf("请输入m,n的值\n"); scanf("%d, %d ", &m, &n); if (m<n){ i = n; n = m; m = i; } while (m原创 2021-08-05 10:18:10 · 8197 阅读 · 10 评论 -
将100~200之间的素数输出
int main() { int i,j; for (i = 100; i <= 200; i++) { for (j = 2; j <i; j++) { if (i % j == 0) { break; } } if (j >= i) { printf("%d\n", i); } } return 0;}原创 2021-08-04 23:08:36 · 659 阅读 · 0 评论 -
判断一个数n能否同时被3和5整除
int main() { int n; printf("请输入n的值\n"); scanf("%d", & n); if (n % 3 == 0 && n % 5 == 0) { printf("n能同时被3和5整除\n"); } else { printf("n不能同时被3和5整除\n"); } return 0;}原创 2021-08-04 22:11:16 · 2761 阅读 · 0 评论 -
求1+2+3+...+100.
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main() { int num = 0; for (int i = 1;i<=100;i++) { num += i; } printf("1+2+...+100的值是%d\n",num); return 0;}原创 2021-08-04 22:01:42 · 85 阅读 · 0 评论 -
有三个数a,b,c,要求按大小顺序把它们输出
int main() { int a, b, c; printf("请输入三个数\n"); scanf("%d %d %d", &a, &b, &c); if (a > b && a > c) { if (b > c) { printf("从大到小的顺序是%d,%d,%d", a, b, c); } if (c > b) { printf("从大到小的顺序是%d,%d,%d", a, c, b); } }.原创 2021-08-04 21:45:46 · 1422 阅读 · 0 评论 -
10个数依次输入,要求输出最大的数
int main() { int i, max,a[10]; printf("请输入10个数\n"); for (i = 0; i < 10; i++) { scanf("%d", &a[i]); } max = a[0]; for (i = 0; i < 10;i++) { if (a[i] > max) { max = a[i]; } } printf("最大值是%d",max); return 0;}...原创 2021-08-04 21:09:58 · 10349 阅读 · 1 评论 -
交换两个变量的值(不使用第三辅助变量)
交换两个变量的值(不使用第三辅助变量)提示:用加、减法实现。int main(){ int a, b; printf("请输入两个数值\n"); scanf("%d %d", &a, &b); printf("a=%d b=%d \n",a, b); a = a + b; b = a - b; a = a - b; printf("交换后的结果如下:\n"); printf("a=%d b=%d\n ", a, b); return 0;}运行结果原创 2021-06-06 13:00:43 · 158 阅读 · 0 评论 -
1.1 百钱百鸡问题 C语言趣味编程
1.1 百钱百鸡问题代码如下:#include<stdio.h>int main(){ int a, b, c; for (a = 0; a <=20; a++){ for (b = 0; b <=33; b++){ for (c = 0; c <=100; c++){ if (a + b + c == 100 && 5 * a + 3 * b + c/3 == 100){ printf("公鸡有%d.原创 2021-06-01 20:54:09 · 549 阅读 · 0 评论