
C语言
从C语言最基本开始
菜菜是真菜
菜菜真的菜
展开
-
输入一个三位整数,输出将其转换为黑洞数的过程
黑洞数也称为陷阱数,又称为“Kaprekar”问题,是一类具有奇特转换特性的数。任何一个个位数字不全相同的三位数,经有限次"重排求差"操作,总会得到495.最后所得的495即为三位黑洞数。所谓"重排求差"操作即组成该数的数字重排后的最大数减去重排后的最小数。例如:对三位数207:第一次重排求差得:720-27=693;第二次重排求差得:963-369=594;第三次重排求差得:954-459=495;编写程序,实现如下功能:输入一个三位整数,输出将其转换为黑洞数的过程。输入输出格式为:输入:207输出:原创 2021-08-12 20:42:54 · 1554 阅读 · 0 评论 -
学生的基本信息包括学号、姓名、成绩, 写出表示学生数据的结构类型,编写一个程序,输入整数n,再输入n个学生的信息,输出成绩最高的学生信息。
学生的基本信息包括学号、姓名、成绩, 写出表示学生数据的结构类型,编写一个程序,输入整数n,再输入n个学生的信息,输出成绩最高的学生信息。代码如下:#include<stdio.h>struct Stu{ int num; char name[20]; float score;};int main(){ struct Stu s[10]; int n=0; int i=0; int max=0; printf("输入学生个数n:\n"); scanf("%d",原创 2021-02-24 16:56:16 · 15512 阅读 · 4 评论 -
C语言编程排序:输入一个正整数n,再输入n个整数,用选择法对这n个整数按从小到大的顺序排序后输出。
C语言编程排序:输入一个正整数n,再输入n个整数,用选择法对这n个整数按从小到大的顺序排序后输出。例如:输入:9 8 7 6 5 4 3输出:3 4 5 6 7 8 9选择排序的思想:选出最小的一个数与当前序列中的第一个数交换,再在余下的数字中选出最小的和第二个交换。其中会有两层循环:第一层循环:一次遍历序列中的每一个元素;第二层循环:将第一层循环得到的当前元素依次与剩下的元素进行比较,符合条件的则进行交换。代码如下:#include<stdio.h>int main(原创 2021-02-24 07:57:42 · 33514 阅读 · 6 评论 -
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和。
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和。例如:输入1234,返回10.代码如下:#include<stdio.h>int DigitSum(unsigned int num){ if(num>9) { return DigitSum(num/10)+num%10; } else { return num; }}int main(){ unsigned int num=0; int ret=0; scanf("原创 2021-02-23 08:51:47 · 600 阅读 · 0 评论 -
获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列。
获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列。例如:1的二进制序列为:00000000000000000000000000000001那么打印出来的就应该是:奇数位:0000000000000001偶数位:0000000000000000代码如下:#include<stdio.h>void print(int m){ int i=0; printf("奇数位:\n"); for(i=30;i>=0;i-=2) { printf("%d"原创 2021-02-22 16:55:15 · 411 阅读 · 0 评论 -
编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同。
编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同。例如:输入1和2,输出2.代码如下:#include<stdio.h>int bit(int m,int n){ int tmp=m^n; int count=0; while(tmp) { tmp=tmp&(tmp-1); count++; } return count;}int main(){ int m=0; int n=0; int count; pri原创 2021-02-22 16:35:07 · 237 阅读 · 0 评论 -
输入一个字符串字,如果是“回文”输出“Yes”,否则输出“No”。所谓“回文”,是指顺读和倒读都一样的字符串。
输入一个字符串字,如果是“回文”输出“Yes”,否则输出“No”。所谓“回文”,是指顺读和倒读都一样的字符串。如:“xyzyx”和“abcdcba”都是回文。要求调用回文的判断函数int huiwen(char s[]),串s是回文返回1,否则返回0。代码如下:#include<stdio.h>#include<string.h>int main(){ char arr[100]; int len; int i=0; int j; prin原创 2021-02-22 15:21:12 · 8054 阅读 · 1 评论 -
编程解决马克思手稿中的趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?
编程解决马克思手稿中的趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?如果以数学的函数思想来解决,用x表示男人,y表示女人,z表示小孩,列出下列方程式:由最后一个方程式可知x最大为10.将上述方程用程序实现,代码如下:#include<stdio.h>int main(){ int x,y,z; int i=0; printf(" man w原创 2021-02-21 16:18:56 · 20516 阅读 · 15 评论 -
将数组1的内容与数组2的内容进行交换
将数组1的内容与数组2的内容进行交换。(数组一样大)代码如下:#include<stdio.h>int main(){ int arr1[]={1,3,5,7,9}; int arr2[]={2,4,6,8,0}; int tmp=0; int i=0; int sz=sizeof(arr1)/sizeof(arr1[0]); for(i=0;i<sz;i++) { tmp=arr1[i]; arr1[i]=arr2[i]; arr2[i]=tmp;原创 2021-02-21 11:02:22 · 329 阅读 · 0 评论 -
创建一个整型数组,完成对数组的操作。
创建一个整型数组,完成对数组的操作。实现函数Init()初始化数组为全0;实现Print()打印数组的每一个元素;实现Reverse()函数完成数组元素的逆置。代码实现如下:#include<stdio.h>int main(){ int arr[10]={1,2,3,4,5,6,7,8,9,10}; int sz=sizeof(arr)/sizeof(arr[0]); Init(arr,sz); Print(arr,sz); Reverse(arr,sz); P原创 2021-02-21 10:47:25 · 2084 阅读 · 1 评论 -
利用指针-指针来求字符串长度
利用指针-指针来求字符串长度:指针-指针得到的结果是两个指针之间的元素个数,但是要注意,相减的两个指针必须属于同一个空间。#include<stdio.h>int my_strlen(char* str){ char* start=str; char* end=str; while(*end!='\0') { end++; } return end-start;}int main(){ char arr[]="welcome to China"; int le原创 2021-02-20 10:36:47 · 8296 阅读 · 0 评论 -
写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空一个空格
写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空一个空格。代码如下:#include<stdio.h>void Out(char arr[]){ int i=0; while(arr[i]!='\0') { printf("%c",arr[i]); if(arr[i+1]=='\0') break; printf("%c",' '); i++; } printf("\n");}int main(){ char arr[5原创 2021-02-08 16:48:32 · 10687 阅读 · 14 评论 -
C语言实现杨辉三角形
输出一个杨辉三角形:11 11 2 11 3 3 11 4 6 4 1……我们以输出10行为例:#include<stdio.h>int main(){ int s,q; int arr[10][10]; for (s=0;s<10;s++) { for (q=0;q<=s;q++) { if(s==q||0==q) arr[s][q]=1; else arr[s][q]=arr原创 2021-02-05 20:18:52 · 2617 阅读 · 0 评论 -
求一个整数存储在内存中的二进制中1的个数
求一个整数存储在内存中的二进制中1的个数代码如下:#include<stdio.h>int main(){ int num=0; int count=0; scanf("%d",&num); while(num) { if(num%2==1) count++; num=num/2; } printf("%d\n",count); return 0;}这个代码存在的问题是,如果输入的是一个负整数,那么结果就是错误的,运行如图:另一种代码如下:原创 2021-02-04 16:13:30 · 194 阅读 · 2 评论 -
C语言实现扫雷游戏
C语言实现扫雷游戏game1.h中的代码如下:里边放置的是相关的函数声明#include<stdio.h>#include<stdlib.h>#include<time.h>#define ROWS ROW+2#define COLS COL+2#define EASY_COUNT 10void InitBoard(char board[ROWS][COLS],int rows,int cols,char set);void DisplayBoa原创 2021-02-04 15:08:43 · 216 阅读 · 2 评论 -
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。使用gets函数进行字符串的输入;使用for循环,只有当字符为\0时查询结束。但满足if中的两个条件时,才能算为一个单词。代码如下:#include<stdio.h>int main(){ char arr[100]; int i=0; int num=0; int word=0; gets(arr); for(i=0;arr[i]!='\0';i++) { if(arr[i]==' ') { w原创 2021-02-04 11:14:24 · 5191 阅读 · 2 评论 -
输入三个字符串,要求找出其中“最大”者
输入三个字符串,要求找出其中“最大”者字符串比较大小,是将两个字符串从左至右逐个字符比较,按照ASCII码进行比较,当遇到第一个大的字符后就不再往下进行比较。使用strcmp函数进行字符串的大小比较;还需要使用strcpy函数进行字符串的复制。代码如下:#include<stdio.h>#include<string.h>int main(){ char arr[3][20]; char string[20]; int i; for(i=0;i<3;i+原创 2021-02-03 09:38:26 · 11933 阅读 · 1 评论 -
将一个数组中的值按逆序重新存放。
将一个数组中的值按逆序重新存放。代码如下:#include<stdio.h>#include<string.h>int main(){ int arr[10]; int i=0; int n; int begin=0; int end=0; printf("请问你要对多少个数字进行逆序:\n"); scanf("%d",&n); end=n-1; printf("请输入您要排序的数值:\n"); for(i=0;i<n;i++) {原创 2021-02-03 09:23:43 · 2478 阅读 · 0 评论 -
C语言实现三子棋游戏
C语言实现三子棋游戏建立三个文件,一个是用于放各个函数声明game.h文件,一个是用于显示菜单以及基本操作提示threeboard.c文件,还有一个是用于写threeboard.c文件中引用的一些函数和循环。game.h文件中代码如下:#define ROW 3#define COL 3void InitBoard(char board[ROW][COL],int row,int col);void DisplayBoard(char board[ROW][COL],int row,int c原创 2021-02-01 14:15:15 · 176 阅读 · 1 评论 -
猴子吃桃问题
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二条早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。第十天早上想再吃的时候,就只剩一个了。求第一天猴子共摘了多少个桃子?代码如下:#include <stdio.h>int main(){ int day =9; int count; int sum=1; while(day>0) { count=(sum+1)*2; sum =count;原创 2021-01-31 11:44:31 · 227 阅读 · 0 评论 -
一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹,求它在第十次落地时共经过多少米,第十次反弹多高。
一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹,求它在第十次落地时共经过多少米,第十次反弹多高。代码如下:#include<stdio.h>int main(){ double h=100.0; double sum=0.0; int i=0; for(i=1;i<10;i++) { sum+=h; h/=2; sum+=h; } sum-=h; printf("第10次落地时共经过: %lf米\n",sum); prin原创 2021-01-31 11:22:01 · 2742 阅读 · 0 评论 -
有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13.......,求出这个数列的前20项之和。
有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…,求出这个数列的前20项之和。代码如下:#include<stdio.h>int main(){ double a=2.0,b=1.0,sum=0.0; int i=0; int count=20; for(i=0;i<count;i++) { int tmp; sum+=a/b; tmp=b; b=a; a=tmp+b; } printf("前%d项和为:%f\n",coun原创 2021-01-31 11:04:08 · 10165 阅读 · 1 评论 -
判断一个数是否为完数
判断一个数是否为完数:完数是指一个数恰好等于它的因子之和,例如:6=1+2+3;代码如下:#include<stdio.h>int main(){ int data=0; int i; int sum=1; printf("请输入您要判断的数:"); scanf("%d",&data); for (i=2;i<=data/2;i++) { if (data%i==0) sum += i; } if(sum==data) printf("%原创 2021-01-31 10:46:44 · 5101 阅读 · 0 评论 -
输出100-999之间的水仙花数(附判断一个三位数是否为水仙花数)
输出100-999之间的水仙花数#include <stdio.h>int main(){ int a,b,c,i; for (i=100; i<=999; i++) { a=i/100; b=(i/10)%10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) { printf("水仙花数:%d\n",i); } } return 0;}代码运行结果如图;附:判断一个三位数是否为水仙花数:#include<原创 2021-01-30 18:08:16 · 3841 阅读 · 2 评论 -
求Sn=a+aa+aaa+......+a...a(n个a)之值
求Sn=a+aa+aaa+…+a…a(n个a)之值,其中a是一个数字,n代表a的位数,n由键盘输入。例如:2+22+222+2222 此时a=2,n=4#include<stdio.h>#include<math.h>int main(){ double a,n,i; double sum=0.0; double total=0.0; printf("请输入数字a:"); scanf("%lf",&a); printf("请输入位数n:"); sca原创 2021-01-30 17:28:00 · 1321 阅读 · 0 评论 -
冒泡排序
冒泡排序算法思想:冒泡遍历所有的数据,每次对相邻元素进行两两比较,如果顺序和预先规定的顺序不一致,则进行位置交换;这样一次遍历会将最大或者最小的数据上浮到顶端,之后再重复同样的操作,直到所有的数据有序。#include<stdio.h>void bubble_sort(int arr[],int sz){ int i=0; for(i=0;i<sz-1;i++) { int j=0; for(j=0;j<sz-1-i;j++) { if(arr[j原创 2021-01-29 14:25:50 · 136 阅读 · 0 评论 -
求第N个斐波拉契数
求第N个斐波拉契数采用函数递归的方法:#include<stdio.h>int Fib1(int x){ if(x<=2) return 1; else return Fib1(x-1)+Fib1(x-2);}int main(){ int n=0; int ret=0; printf("请输入你想找的第N个斐波拉契数: \n"); scanf("%d",&n); ret=Fib1(n); printf("第%d个斐波拉契数为:%d\n",原创 2021-01-28 11:35:02 · 166 阅读 · 0 评论 -
判断一个数值的位数,分别输出数字和其逆序数字。
给一个不多于5位数的正整数,要求:求出它是几位数;分别输出每一位数字;按逆序输出各位数字,例如原数为321,应输出123。利用分支语句判断位数;定义万位数为myriad,千位数为thousand,百位数为hundred,十位数为ten,个位数为indiv,利用switch选择语句判断并输出逆序数值。#include<stdio.h>int main(){ int a=0; int place=0; int myriad,thousand,hundred,ten,ind原创 2021-01-27 11:20:17 · 986 阅读 · 1 评论 -
猜数字游戏
猜数字游戏想要进行游戏,首先创建一个选择菜单,让用户输入选择;再使用一个rand函数,随机生成一个数字#include<stdio.h>#include<stdlib.h>#include<time.h>void menu(){ printf("*********菜单*******\n"); printf("** 1.play 0.exit **\n"); printf("********************\n");}void game原创 2021-01-25 08:36:08 · 143 阅读 · 0 评论 -
九九乘法表
九九乘法表使用C语言实现九九乘法表(%-2d是表现左对齐的格式)#include<stdio.h>#include<stdlib.h>int main(){ int a=0; for(a=1;a<=9;a++) { int b=1; for(b=1;b<=a;b++) { printf("%d*%d=%-2d ",a,b,a*b); } printf("\n"); } return 0;}菜菜的代码,希望能帮助到你哟原创 2021-01-25 08:35:31 · 153 阅读 · 0 评论 -
用C语言比较10个数字的大小
比较10个数字的大小定义一个数组,使用for循环来存放输入的十个数字,再使用一个for循环来进行两个数字的大小比较,将较大值放入到max里边,再进行和下一个数值的大小比较,最后输出。#include<stdio.h>#include<stdlib.h>int main(){ int arr[10]={0}; int a; int max=arr[0]; for(a=0;a<10;a++) { printf("请输入第%d个数:",a+1); scan原创 2021-01-25 08:35:03 · 12745 阅读 · 1 评论 -
计算1/1-1/2+1/3-1/4+1/5-...-1/100的值
计算1/1-1/2+1/3-1/4+1/5-…-1/100的值#include<stdio.h>int main(){ int a=0; double sum=0.0; int b=1; for(a=1;a<=100;a++) { sum+=b*1.0/a; b=-b; } printf("%lf\n",sum); return 0;}菜菜的代码,希望能够帮助到你哟!...原创 2021-01-25 08:34:34 · 986 阅读 · 0 评论 -
判断一个数是不是素数
素数:只能被1和本身整除的数设输入的数为a,用一个循环让a被2-a这些数轮流整除,如果都不能被整除,那么就是素数,否则不是。#include<stdio.h>int main(){ int a=0; int b=0; printf("请输入你要判断的数值: \n"); scanf("%d",&a); for(b=2;b<a;b++) { if(a%b==0) { printf("该数值不是一个素数。\n"); break; } }原创 2021-01-24 08:54:28 · 498 阅读 · 0 评论 -
判断一个年份是否是闰年?
判断一个年份是否是闰年?闰年的判断方式:能被4整除不能被100整除的是闰年;能被400整除的是闰年。代码实现如下:#include<stdio.h>int main(){ int year=0; printf("请输入你要判断的年份: \n"); scanf("%d",&year); if(year%4==0,year%100!=0) { printf("该年份是闰年!\n"); } else if(year%400==0) printf("该原创 2021-01-24 08:53:44 · 504 阅读 · 1 评论 -
求两个数的最小公约数
求两个数的最小公约数。利用辗转相除法来进行计算:例如:求12和36的最小公约数:64%12 余数为412%4 余数为0所以最小公约数为4#include<stdio.h>int main(){ int a=0; int b=0; int r=0; printf("请输入两个数值: \n"); scanf("%d %d",&a,&b); while(a%b) { r=a%b; a=b; b=r; } printf("最小公约数为原创 2021-01-24 08:53:05 · 3054 阅读 · 6 评论 -
比较三个数值的大小
比较三个数值的大小使用if分支语句:#include<stdio.h>int main(){ int a=0; int b=0; int c=0; char arr[3]={a,b,c}; int i=0; printf("请输入三个数: \n"); scanf("%d %d %d",&a,&b,&c); for(i=0;i<3;i++) { if(a>c) { if(a>b) { printf("%原创 2021-01-23 08:36:58 · 4254 阅读 · 5 评论 -
模拟用户登录场景
编写代码实现,模拟用户登录场景,并且只能登录三次,只允许输入三次密码,如果密码正确则登录成功,如果三次输入均错误,则退出程序。#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ int i=0; char password[10]={0}; for(i=0;i<3;i++) { printf("请输入密码: \n"); scanf("%s",&原创 2021-01-23 08:36:06 · 251 阅读 · 0 评论 -
编写代码,演示多个字符从两端移动,向中间汇聚。
编写代码,演示多个字符从两端移动,向中间汇聚。#include<stdio.h>#include<string.h>#include<Windows.h>#include<stdlib.h>int main(){ char arr1[]="wlecome to China!!!!!"; char arr2[]="*********************"; int left=0; int right=strlen(arr1)-1;\\s原创 2021-01-23 08:35:18 · 282 阅读 · 2 评论 -
使用二分查找法,从一个有序数组中查找某个具体的数字。
使用二分查找法,从一个有序数组中查找某个具体的数字。#include<stdio.h>int main(){ int arr[]={1,2,3,4,5,6,7,8,9,10}; int a=0; int b=sizeof(arr)/sizeof(arr[0]);\\计算数组的长度,便于确定右下标的值 int left=0; int right=b-1; printf("请输入你要查找的数: \n"); scanf("%d",&a); while(left<=原创 2021-01-22 16:45:28 · 1505 阅读 · 0 评论 -
使用C语言循环语句计算1-10的阶乘之和
计算1-10的阶乘之和定义变量mul为一个数值的阶乘;定义变量sum为阶乘之和。#include<stdio.h>int main(){ int a; int b; int mul; int sum=0; for(a=1;a<=10;a++) { mul=1; for(b=1;b<=a;b++) { mul=b*mul; } sum=sum+mul; } printf("%d\n",sum); return 0;}菜菜的代原创 2021-01-22 09:35:11 · 11595 阅读 · 0 评论