C语言
Please Sit Down
Fake it,until make it!
展开
-
定义函数指针的三种方式 C语言
函数指针定义方式(先定义函数类型,根据类型定义指针变量); 先定义函数指针类型,根据类型定义指针变量; 直接定义函数指针变量;int my_func(int a,int b){ printf("ret:%d\n", a + b); return 0;}//1. 先定义函数类型,通过类型定义指针void test01(){ typedef int(FUNC_TYPE)(int, int); FUNC_TYPE* f = my_func; //如何调用? (*f)(10, 20)..原创 2021-09-06 21:16:53 · 7608 阅读 · 0 评论 -
输出在6~1000的所有合数
题目:编一程序输出在6~1000的所有合数,合数是指1个数等于其诸因子之和的数。例如,6=1+2+3,28=1+2+4+7+14,则6、28就是合数。int main(void){ int i, k, sum; printf("6~1000之间的所有合数:\n"); for (i = 6; i <= 1000; i++) //外循环控制被判断的数的范围为6-1000 { sum = 0; for (k = 1; k < i;原创 2021-12-06 22:45:06 · 869 阅读 · 0 评论 -
生小牛问题
题目:一个农场有头母牛,现在母牛オー岁,要到四岁オ能生小牛,四岁之后,每年生一头小牛。假设每次生的都是母牛,并且也遵守4年才生育的原则,且所生的牛都不会死,问20年之后共有多少头牛?int main(void){ int i; int a[21]; a[1] = 1; a[2] = 1; a[3] = 1; for (i=4;i<=20;i++) a[i] = a[i - 1] + a[i - 3]; for (i=1;i原创 2021-12-06 22:06:30 · 347 阅读 · 0 评论 -
同构数 C语言
找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如,5是25右边的数,25是625右边的数,5和25就是同构数。int main(){ int i; for(i=1;i<100;i++) if(i*i%10==i||i*i%100==i) printf("%3d",i); return 0;}...原创 2021-11-27 16:29:08 · 5157 阅读 · 3 评论 -
计算s=1+12+123+1234+12345 C语言
#define N 5#include <stdio.h>int main(){ int t = 0, s = 0 , i; for (i = 1; i <= N; i++) { t = i + t * 10 ; s += t; } printf("s=%d\n", s); return 0;}原创 2021-11-24 20:11:11 · 12338 阅读 · 0 评论 -
歌德巴赫猜想 C语言
歌德巴赫猜想:从键盘上输入一个大于6的偶数,总能找到两个素数,使得这两素数之和正好等于该偶数。#include <stdio.h>#include <conio.h>int prime(int n){ int k, flag = 1; for (k = 2; k <= n/2 + 1; k++) if (n % k == 0){ flag = 0 ; break; }原创 2021-11-23 20:52:05 · 380 阅读 · 0 评论 -
计算两个数的平均值几种方法
方法一:直接求平均值(两个数相加再除以二)int average(int x,int y){ return (x + y) / 2;}这种算法存在着一定的缺陷,当x和y足够大时x和y的和就会存在数据溢出,从而得不到我们想要的结果。(不推荐采用)方法二:x + y与x的差值除以2的和,可以避免数据溢出int average(int x,int y){ return x + (y - x) / 2;}方法三:改进方法二版本(位移)int average(int.原创 2021-10-29 21:25:21 · 8681 阅读 · 0 评论 -
输出一个螺旋方阵 C语言
int main(){ int a[10][10],i,j,k=0,m,n; printf("Enter n(n<10):"); scanf("%d",&n); if(n%2==0) m=m/2; else m=m/2+1; for(i=0;i<m;i++){ for(j=i;j<n-i;j++){ k++; a[i][j]=k; } for(j=i+1;j&.原创 2021-10-09 20:10:52 · 1733 阅读 · 3 评论 -
计算两个矩阵的乘积 C语言
int main(){ int a[3][2]={2,-1,-4,0,3,1},b[2][2]={7,-9,-8,10}; int i,j,k,s,c[3][2]; for(i=0;i<3;i++){ for(j=0;j<2;j++){ for(k=s=0;k<2;k++) s+=a[i][k]*b[k][i]; c[i][j]=s; } } for(i=0;i<.原创 2021-10-08 21:11:44 · 1408 阅读 · 0 评论 -
给定一个十进制输出它的任意进制形式 C语言
给定一个十进制,输出它的二进制形式。int main(){ int x,y,i,a[8],j,u; scanf("%d",&x); y=x;i=0; do{ u=y/2; a[i]=y%2; i++;y=u; } while (y>=1); for(j=i-1;j>=0;j--){ printf("%d",a[j]); } return 0;}...原创 2021-10-08 20:35:42 · 197 阅读 · 0 评论 -
函数指针做函数参数(回调函数)的例子
提供一个函数可以输出任意类型的数据。void my_printf(void * data,void(*mp)(void *)){ // 利用传入的数据作为参数去调用第二个参数对应的方法 mp(data);}// 打印整形数据方法void print_int(void * data){ int * value = data; printf("%d\n",*value);}// 打印浮点型形数据方法void print_double(void * data){ double *原创 2021-09-06 21:36:30 · 224 阅读 · 0 评论 -
查找目标子串在原串中位置 C语言
int find_substr(char* str,char* sub_str){ int index = 0; while(*str!='\0'){ if(*str != *sub_str){ str++; index++; continue; } // 创建临时指针进行查找 char* temp_str = str; char* temp_substr = sub_str; while(*temp_substr != '\0'){ if(*temp.原创 2021-09-02 22:09:23 · 391 阅读 · 0 评论 -
几种实现字符串反转的方式 C语言
void reverse_str01(char* str){ int i,len,mid,temp; len = strlen(str); mid = len%2==0 ? len/2 : len/2+1; for(i=0;i<mid;i++){ temp = str[i]; str[i] = str[len-i-1]; str[len-i-1] = temp; }}void reverse_str02(char* str){ int len,start,end; .原创 2021-09-01 22:07:35 · 1206 阅读 · 0 评论 -
字符串拷贝的几种方式 C语言
// 利用数组,遍历数组进行拷贝void str_copy01(char* dest, char* src){ int i; for(i=0;src[i]!='\0';i++){ dest[i]=src[i]; } dest[i]='\0';}// 利用指针,解引用进行拷贝void str_copy02(char* dest, char* src){ int i; for(i=0;*(src+i)!='\0';i++) { *(dest+i) = *(src+i); } .原创 2021-09-01 21:24:01 · 2807 阅读 · 0 评论 -
计算学生成绩的标准差 C语言
根据所给的一组学生的成绩,由公式:计算出标准差(Standard Deviation)σ并返回。公式中μ为平均成绩,N为学生人数,xi为学生成绩。例如,如有成绩为:50,60,70,80,90,100,55,65,75,85,95,99,则运行结果应为:16.527754#include <stdio.h>#include <math.h>double fun(double x[], int n){ int i; double avg = 0.0, su原创 2021-08-31 21:57:32 · 2893 阅读 · 0 评论 -
根据指定字母,顺序输出若干相邻字母 C语言
函数fun的功能是:根据形参c中指定的英文字母,按顺序打印出若干后继相邻字母,输出字母的大小写与形参c一致,数量由形参定。若输出字母中有字母Z或z,则应从A或a开始接续,直到输出指定数量的字母。例如:c为'Y',d为4,则程序输出ZABC;c为‘z’,d为2,则程序输出ab。#include <stdio.h>#pragma warning(disable : 4996)void fun(char c, int d){ int i; char A[26], a[26],原创 2021-08-31 21:35:11 · 1685 阅读 · 0 评论 -
将二进制转换成十进制 C语言
函数fun的功能是将一个由字符0和1组成的表示二进制数的字符串,转换成相应的十进制整数值返回。该串长度最大不超过15。例如,若表示二进制数的字符串为:"10011",则运行结果应为:10011-->19#include <stdio.h>#pragma warning(disable : 4996)#define N 16int fun(char *s){ int i, n = 0; for (i = 0; s[i] != '\0'; ++i) n =原创 2021-08-31 20:57:32 · 10780 阅读 · 0 评论 -
根据年月日判断该日是这一年的多少天 C语言
函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。其中函数isleap用来判别某一年是否为闰年。例如,若输入:2008 5 1,则程序输出:2008年5月1日是该年的第122天。#include <stdio.h>int isleap(int year){ int leap; leap = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0); return原创 2021-08-31 20:37:07 · 749 阅读 · 0 评论 -
统计长整形中每个数字出现的次数 C语言
函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组a中,其中:a[0]存放0出现的次数,a[1]存放1出现的饮数,...... a[9]存放9出现的次数。例如,若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1#include <stdio.h>void fun(int m, int a[10]){ int i; for (i = 0; i < 10; i++) a[i] = 0; while (m >原创 2021-08-31 20:24:32 · 1117 阅读 · 0 评论 -
求函数f(x)的表达式 C语言
函数fun()的功能是:计算,直到。若x=2.5,函数值为:1.917915。#include <stdio.h>#include <math.h>#pragma warning(disable : 4996)double fun(double x){ double f, t; int n; f = 1.0 + x; t = x; n = 1; do { n++; t *= (-1.0) * x / n;原创 2021-08-30 20:50:59 · 2928 阅读 · 0 评论 -
找出矩阵在行中最大、列中最小的元素 C语言
函数fun的功能是:在3x4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。例如有下列矩阵: 1 2 13 4 7 8 10 6 3 5 9 7程序执行结果为:find:a[2][2] = 9#define M 3#define N 4void fun(int (*a)[N]){ int i = 0, j, find = 0, rmax, c, k; while ((i < M) && ...原创 2021-08-30 20:30:36 · 3652 阅读 · 0 评论 -
将带头节点单链表元素逆置 C语言
函数fun的功能是将带头结点的单向链表逆置。若原链表中从头至尾结点数据域依次为:2、4、6、8、10逆置后,从头至尾结点数据域依饮为:10、8、6、4、2#include <stdio.h>#include <stdlib.h>#define N 5typedef struct node{ int data; struct node *next;} NODE;void fun(NODE *h) { NODE *p, *q, *r; p原创 2021-08-29 22:05:42 · 2423 阅读 · 0 评论 -
将单链表元素逆置 C语言
函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10逆置后,从头至尾结点数据域依次为:10、8、6、4、2#include <stdio.h>#include <stdlib.h>#define N 5typedef struct node { int data; struct node *next;} NODE;NODE *fun(NODE *h) { NODE *p, *q, *r;原创 2021-08-29 21:52:59 · 770 阅读 · 0 评论 -
将字符数组中超过长度为k的串右边删除 C语言
函数fun的功能是:在形参s所指字符串数组中,将所有串长超过k字符串中右边的字符删除,只保留左边的K个字符。ss所指字符串数组中共有N个字符串,且串长小于M。#include <stdio.h>#include <string.h>#define N 5#define M 10void fun(char (*ss)[M], int k){ int i = 0; while (i < N) { ss[i][k] = '\0';原创 2021-08-29 21:27:12 · 492 阅读 · 0 评论 -
统计字符串中出现频率最高的字母 C语言
数fun的功能是:找出形参s所指子待 中出现频率最高的子母(不区分大小写),并统计出其出现的次数。例如:形参s所指的字符串为:程序执行后的输出结果为:letter 'a':3 timesletter 's':3 times#include <stdio.h>#include <string.h>#include <ctype.h>void fun(char ...原创 2021-08-29 21:01:41 · 4363 阅读 · 0 评论 -
将二维矩阵列元素循环左移k位 C语言
函教fun的功能是:将a所指3x5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。例如,有下列矩阵: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5若k等于2,程序执行结果为: 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2#define M 3#define N 5void fun(int (*a)[N], int k){ int i,...原创 2021-08-29 20:27:14 · 981 阅读 · 0 评论 -
判断矩阵是否“幻方” C语言
函数fun的功能是:判定形参a所指的NXN(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;不是,函数返回值为0。"幻方"的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。例如,以下3x3的矩阵就是一个"幻方": 4 9 2 3 5 7 8 1 6#define N 3int fun(int (*a)[N]){ int i, j, m1, m2, row, colum; m1 = m2 = 0; for (i = 0...原创 2021-08-29 20:13:45 · 3538 阅读 · 1 评论 -
随机产生20个互不相同的整数放在数组中 C语言
函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中。#include <stdio.h>#include <stdlib.h>#define N 20void fun(int *a){ int i, x, n = 0; x = rand() % 20; while (n < N) { for (i = 0; i < n; i++) if (x == a[i])原创 2021-08-29 19:59:57 · 3718 阅读 · 0 评论 -
将长整型数据中偶数取出,并按顺序逆置 C语言
函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。例如,输入一个整数:27638496,函数返回值为:64862。unsigned long fun(unsigned long n){ unsigned long x = 0; int t; while (n) { t = n % 10; if (t % 2 == 0) x = x * 10 + t; n原创 2021-08-28 22:28:04 · 3564 阅读 · 3 评论 -
将长整型中为偶数的数去除并组成一个新的整形数据 C语言
函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:27638496,新的数:739。void fun(unsigned long *n){ unsigned long x = 0, i; int t; i = 1; while (*n) { t = *n % 10; if (t % 2 != 0) { x =原创 2021-08-28 21:51:58 · 1886 阅读 · 0 评论 -
建立一个N*N的矩阵,内一层比外一层的值多1 C语言
建立一个N*N的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=7,生成的矩阵为:1 1 1 1 1 1 11 2 2 2 2 2 11 2 3 3 3 2 11 2 3 4 3 2 11 2 3 3 3 2 11 2 2 2 2 2 11 1 1 1 1 1 1#define N 7void fun(in...原创 2021-08-28 22:21:00 · 732 阅读 · 0 评论 -
查找指定学生的数据,并给分数进行修改 C语言
定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。#define N 5typedef struct student{ long sno; char name[10]; float scor原创 2021-08-28 21:44:22 · 939 阅读 · 0 评论 -
在字符串数组中查找键盘输入中字符串相同的串 C语言
在形参s所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回-1.ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。#include <stdio.h>#include <string.h>#define N 5#define M 8int fun(char (*ss)[M], char *t){ int i; for (i = 0; i < N; i++) if (st原创 2021-08-28 21:29:53 · 2101 阅读 · 0 评论 -
把字符串数组中的字符串按由长到短的顺序排序 C语言
利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。#define N 5#define M 8void fun(char (*ss)[M]){ char *ps[N], *tp; int i, j, k; for (i = 0; i < N; i++) ps[i] = ss[i]; for (i = 0; i < N - 1; i++) { k =原创 2021-08-28 21:21:42 · 632 阅读 · 1 评论 -
统计字符串中单词的个数 C语言
计算出形参s所指字将串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。列如:形参s所指的字符串为:This is a c language program.,函数的返回值为6。#include <stdio.h>int fun(char *s){ int n = 0, flag = 0; while (*s != '\0'){ if (*s != ' ' && flag == 0){ n++;原创 2021-08-28 20:56:14 · 1108 阅读 · 0 评论 -
将字符串转成整形数据并相加 C语言
题目:将a和b所指的两个字符串转换成面值相同的整数,并进行相加,将结果作为函数值返回,规定字符串中只含9个的以下数字字符。例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831。#include <stdio.h>#include <string.h>#include <ctype.h>#define N 9// 将字符串转换成long型数据long ctod(char *s){ long d = 0; wh原创 2021-08-28 20:35:13 · 1507 阅读 · 0 评论 -
计算数组中大于平均值的数组 C语言
计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参,所指数组中,在主函数中输出。例如:有10个正数:46 30 32 40 6 17 45 15 48 26平均值为:30.5000000主函数中输出:46 32 40 45 48#define N 10double fun(double x[],double *y){ int i,j; double ...原创 2021-08-28 20:23:06 · 2862 阅读 · 2 评论 -
将字符串中的所有字母字符顺序前移,其它字符顺序后移 C语言
题目:将形参s所指字符串中的所有字母字符顺序前移,其它字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asd123fgh543df,处理后新字符串为:asdfghdf123543。#include <stdio.h>#include <string.h>#include <malloc.h>char *fun(char *s){ int i, j, k, n; char *p, *t; n = strlen(s)原创 2021-08-28 18:17:02 · 2617 阅读 · 0 评论 -
求f(x)的表达式 C语言
函数fun的功能是:计算f(x)直到的值。若x=2.5,函数值为:12.182494#include <stdio.h>#include <math.h>double fun(double x){ double f, t; int n; f = 1.0 + x; t = x; n = 1; do { n++; t *= x / n; f += t; } while (fabs(t) >= 1e-6); return f;}i.原创 2021-08-25 21:16:10 · 3186 阅读 · 0 评论 -
求函数f(x)的表达式 C语言
函数fun的功能是:计算f(x)的前n项。若x=2.5,n-12时,函数值为:12.182340.#include <stdio.h>double fun(double x, int n){ double f, t; int i; f = 1.0; t = 1; for (i=1; i<n; i++){ t *= x/i; f += t; } return f;}int ma原创 2021-08-25 21:00:40 · 2458 阅读 · 0 评论