机缘

疫情好像又进入学校了,明天开始大概率又在寝室待着学了,这样搞下去只能烤地瓜了。

专业课考c语言,在复习c语言的时候做了考研资料里面的编程练习,其实就过了两天,再看之前写的程序,已经感觉有很多欠考虑的了,权当记录生活了!

之前只学过c++,但是平时用c也不少,但是实际上用的c和做题不太一样,很多题目主要考察那些容易混淆的地方,实际使用的时候都用比较清晰可读性比较强的代码。


头文件

//
// Created by 方程 on 2022/10/12.
//#include <stdbool.h>#ifndef CPROJECT_FUNCTION_H
#define CPROJECT_FUNCTION_H#endif //CPROJECT_FUNCTION_H
#define M 4
#define N 5
typedef struct student{char * ID;int point;
}Stu;extern void str_swap(char ** p1, char ** p2);//交换两个字符串,输入两个字符串指针的地址
extern long numstr_int(char*p);//将数字字符串转换为整形数字
extern void Matrix3x3_1row(char s[3][3],char p[]);//3x3矩阵按列从上到下放入一行
extern int countwords(char * p);//字符串数单词个数
extern int * delete_same_elements(int a[], int n, int * count);//删除连续重复元素,count接收剩余元素个数,返回删除后数组指针
extern char * pre_m_move_to_sub(char a[], int m);//将字符串第m个及之前的挪到第m个之后
extern char * delete_space_in_str(char *a);//输入字符串数组删除字符串里面的空格
extern bool is_huiwen(char * p);//判断回文字符串
extern void student_points_classifer(Stu * S,int n,int point,char * high_IDlist[],char * low_IDlist[],int * h_num, int * l_num);//返回高于低于某个分值的学生学号数组和人数
extern int student_range_out(Stu * S,char * p[],int n,int high,int low);//返回范围内学生个数,传入范围内储存学生学号的数组p
extern void delete_oddASCII(char * s,char t[]);//将字符串s中ASCII码为奇数的删除
extern int prime_less_than_lim(int lim,int  aa[]);//输出小于等于lim的所有素数,并返回素数个数,建议下次再看看
extern int sum_edge_of_5x4matrix(int a[M][N]);//返回一个5X4矩阵边上一圈元素的和
extern void delete_staykey_in_str(char * in,char * out);//删除字符串中的*号
extern void move_pre_staykey_to_sub(char * in,char * out);//把字母之前的的星号移到后面
extern int max_element_in_array(int s[],int * pos);//返回最大值,在pos中存放最大值在数组中的下标
extern int Fibonacci_nearest_k1(int k);//循环求斐波那契数列大于k最靠近k的值
extern int Fibonacci_nearest_k2(int k);//递归求斐波那契数列大于k最靠近k的值
extern int Fibonacci(int x);//递归求斐波那契数列
extern void k_prime_nearest_m(int m,int k,int p[]);//大于m最靠近m的k个素数存放在p中
extern void trans_oddpos_small_to_big(char * p);//把数组中奇数下标的小写字母改成大写,如果是数字不改写
extern void Matrix3X3_subtriangle_output_0(int pp[3][3]);//将3X3矩阵的下三角部分变成0
extern char * delete_staykey_front_lastchar(char*a);//有点没懂指针与内存,删除字符串中最后一个字母之前的星号
extern Stu search_student_by_point(Stu * a,char *p,int n);//找出p字符串对应学生返回这个学生结构体,没有则返回成绩为-1,学号为空的结构体,n是学生个数
/*
返回数组时 只能返回静态非变量长度数组指针
传入字符数组在形参可以写char*p char p[]效果一致
形参和函数里用指针操作不影响,但是能被改变值的字符串写法是数组写法,用字符指针引导只能查不能改,也就是说有改动的字符串在主函数中接收只能是数组而不能是字符串
数组和指针的区别:传入指针要想对内存操作要二级指针,而数组直接操作数组名即可操作内存,char a[] 把内容存在stack。char *a 则把指针存在 stack,把内容存在 constants。
全局数组,未初始化时,默认值都是 0;
局部数组,未初始化时,默认值为随机的不确定的值;
局部数组,初始化一部分时,未初始化的部分默认值为 0;
*/

源程序

//
// Created by 方程 on 2022/10/20.
//
void Matrix3X3_subtriangle_output_0(int pp[3][3]){for(int i=0;i<=2;i++){for(int j=0;j<=i;j++){pp[i][j]=0;}}
}
//
// Created by 方程 on 2022/10/16.
//
int countwords(char * p){int count = 0;int sta =0;while(*p){if(*p =='.'||*p ==','||*p =='!'||*p =='?') {count += 1;sta = 1;}else if(*p == ' '&&sta != 1  ) {count += 1;sta = 0;}elsesta = 0;p++;}return count;
}
#include <string.h>
#include <stdio.h>//
// Created by 方程 on 2022/10/18.
//
void delete_oddASCII(char * s,char t[]){int len=strlen(s);int j=0;for(int i=0;i<len;i++){if(s[i]%2==0) t[j++]=s[i];}t[j]=0;//给数组有值的后一位清空
}
#include <stdio.h>//
// Created by 方程 on 2022/10/16.
//
int * delete_same_elements(int a[], int n, int * count){int k = a[0];*count = 1;for(int i=1;i<n;i++){if(a[i]!=k) {*count += 1;k = a[i];a[*count - 1] = a[i];}}for(int i=*count;i<n;i++){a[i]=0;}return a;
}
//
// Created by 方程 on 2022/10/16.
//
char * delete_space_in_str(char a[]){static char p[100];int i=0,j=0;while(a[i]){if(a[i]!=' '){p[j++]=a[i];}i++;}return p;
}
//
// Created by 方程 on 2022/10/20.
//
int Fibonacci(int x){if (x==0) return 0;else if (x==1) return 1;else return Fibonacci(x-1)+ Fibonacci(x-2);
}
int Fibonacci_nearest_k1(int k){int f0=0,f1=1;int mid=f0+f1;while(mid<k){//为0退出f0=f1;f1=mid;mid=f0+f1;}return mid;
}
int Fibonacci_nearest_k2(int k){int x=0;int mid = 0;while(mid<k){mid= Fibonacci(x++);}return mid;
}
#include <stdbool.h>
#include <string.h>//
// Created by 方程 on 2022/10/17.
//
bool is_huiwen(char * p){int len=strlen(p);for(int i=0;i<(len/2);i++){if(p[i]!=p[len-1-i]) return false;}return true;
}

//
// Created by 方程 on 2022/10/16.
//
void Matrix3x3_1row(char s[3][3],char p[]){for(int j=0;j<=2;j++)for(int i=0;i<=2;i++){*p++ = s[i][j];}
}
#include <stdio.h>//
// Created by 方程 on 2022/10/19.
//
int max_element_in_array(int s[],int * pos){int len=0,i;int max;int * p=s;while(*s){//s的值在这改变了,后面用p就行了,s是形参不会带出s++;len++;}max=p[0];for(i=1;i<len;i++){if(max < p[i]) {max=p[i];*pos = i;}}return max;
}
//
// Created by 方程 on 2022/10/16.
//
long numstr_int(char*p){int t;long x;if(p[0]='-'){p++;t = -1;}else t = 1;while(*p){x = x*10+(*p++-'0');//等同于x = x*10+(*p++-48);//在计算过程中 char会被隐式转换为long//如'0'ascii码为48,某个数字字符的ascii值减去'0'将等于他的整形值}return x*t;}
#include <string.h>
//
// Created by 方程 on 2022/10/16.
//
char * pre_m_move_to_sub(char a[], int m){int count = 0;int len=strlen(a);static char p[100];for(int i=m;i<len;i++){p[count++] = a[i];}for(int i=0;i<m-1;i++){p[count++] = a[i];}p[count] = a[m-1];return p;
}
#include <stdio.h>//
// Created by 方程 on 2022/10/18.
//
int prime_less_than_lim(int lim,int  aa[]){int count=0;int i=0,j=0;for(i=2;i<=lim;i++){//第一个循环控制数for(j=2;j<=(i/2);j++){//判断素数,用2到i/2的数取余,无余数则不是素数if(i%j==0) break;}//执行完则说明j无法被2到i/2整除,执行完j=i/2+1if(j>(i/2)) {//上面循环被完整执行完的情况下aa[count++]=i;}}return count;
}
void k_prime_nearest_m(int m,int k,int p[]){int count=0;int i=0,j=0;for(i=m+1;1;i++) {//第一个循环控制数for (j = 2; j <= (i / 2); j++) {//判断素数,用2到i/2的数取余,无余数则不是素数if (i % j == 0) break;}//执行完则说明j无法被2到i/2整除,执行完j=i/2+1if (j > (i / 2)) {//上面循环被完整执行完的情况下p[count++] = i;if(count==k) break;}}
}
#include <stdio.h>
#include <stdbool.h>
#include <string.h>//
// Created by 方程 on 2022/10/19.
//
void delete_staykey_in_str(char * in,char * out){while(*in != '0'){if(*in != '*') {*out = *in;out++;}in++;}*out='0';
}
void move_pre_staykey_to_sub(char * in,char * out){int count_staykey=0;bool stat=0;while(*in != '\0'){if(*in == '*' && stat==0) {count_staykey+=1;}if(*in >= 'A'&& stat==0){//只让这个执行一次stat=1;}if(stat==1){*out = *in;out++;}in++;}for(int i=0;i<count_staykey;i++){*out = '*';out++;}*out='\0';
}
char delete_staykey_front_lastchar(char*a){char * p=a;//在a重新赋值后p会丢失目标char * q,*t;//q存放最后一个字母的在内存位置,q是p的派生,t存放这个字母在a中的元素的地址,t是a的派生int count=0;while (*p){if(*p>='A'&&*p<='z') {a[count++]=*p;t=p;q=&a[count-1];}p++;}p=a;while(*p){if(*p<'A'&& p>t) a[count++]=*p;p++;}a[count]='\0';return q;
}

void str_swap(char ** p1, char ** p2)
{char *p="";p = *p1;*p1 = *p2;*p2 = p;
}//
// Created by 方程 on 2022/10/12.
//
//
// Created by 方程 on 2022/10/17.
//
#include <stdio.h>
#include "function.h"
void student_points_classifer(Stu * S,int n,int point,char * high_IDlist[],char * low_IDlist[],int * h_num, int * l_num){for(int i=0;i<=n-1;i++){if(S[i].point>=point) {high_IDlist[*h_num] = S[i].ID;*h_num+=1;}else if(S[i].point<point) {low_IDlist[*l_num] = S[i].ID;*l_num+=1;}}
}
int student_range_out(Stu * S,char * p[],int n,int high,int low){int j=0;for(int i=0;i<=n-1;i++){if(S[i].point>=low && S[i].point<=high) {p[j] = S[i].ID;j+=1;}}return j;
}
Stu search_student_by_point(Stu * a,char *p,int n){Stu s;bool stat = 0;for(int i=0;i<n;i++){if(a[i].ID==p) {s.point=a[i].point;s.ID=a[i].ID;stat=1;break;}}if(stat==0){s.point=-1;s.ID='\0';}return s;}
//
// Created by 方程 on 2022/10/18.
//
#define M 4
#define N 5
int sum_edge_of_5x4matrix(int a[M][N]){int sum=0;for(int i=0;i<N;i++){//先加上上下两个边sum+=a[0][i];sum+=a[M-1][i];}for(int j=1;j<M-1;j++){//再加上两个竖边sum+=a[j][0];sum+=a[j][N-1];}return sum;
}
//
// Created by 方程 on 2022/10/20.
//
void trans_oddpos_small_to_big(char * p){int count=0;while(*p){if(((count+2)%2) && *p<'z'&& *p>'a') *p-=32;count++;p++;}
}

憧憬

下面计划还练习一下书上的代码
希望能在疫情到来这几天好好复习
感觉天天都在虚度光阴,我真是个废物

不成熟的c语言练习1相关推荐

  1. 不成熟的c语言练习2

    机缘 五味陈杂,这个月没咋写代码做项目,考研也应该是废了,准备把天赋带到考公和工作上,最近打算准备一下毕设和整理以前的课设.晚上玩完游戏练习了几个常用的基础排序算法,不知道以后的工作是否还能用上这些. ...

  2. Go 之父:聊聊我眼中的 Go 语言和环境

    大家好,我是煎鱼. 之前春节假期,在家闭关多日.看到了在 2021 年 6 月 Go 语言之父 Rob Pike 在 UNSW Computing(悉尼新南威尔士大学计算机)组织的分享会议,介绍了他对 ...

  3. 扯淡!C语言怎么可能被淘汰呢?

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达 我想通过这篇短文向你展示C伟大的一面. 作者 | Jakub Lukasiewicz, ...

  4. 大数据场景中语言虚拟机的应用和挑战

    点击上方蓝字关注我们 大数据场景中语言虚拟机的应用和挑战 吴明瑜1,2, 陈海波1,2, 臧斌宇1,2 1 领域操作系统教育部工程研究中心,上海 200240 2 上海交通大学软件学院并行与分布式系统 ...

  5. C 语言怎么可能被淘汰呢?

    我想通过这篇短文向你展示C伟大的一面. 作者 | Jakub Lukasiewicz,已获作者翻译授权 译者 | 弯月,责编 | 张文 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID: ...

  6. r软件 linux,分享|Linux 上好用的 R 语言 IDE

    前一段时间,我已经介绍过 Linux 上针对 C/C++ 语言的最好 IDE.很显然 C 或 C++ 并不是现存的唯一的编程语言,是时间讨论某些更加特别的语言了. 假如你做过一些统计工作,很可能你已经 ...

  7. Linux 上好用的 R 语言 IDE

    假如你做过一些统计工作,很可能你已经见识过 R 语言 了.假如你还没有,我真的非常推荐这门专为统计和数据挖掘而生的开源编程语言.若你拥有编程背景,它的语法可能会使你感到有些不适应,但希望它的向量化操 ...

  8. 大数据常用十种开发语言

      随着大数据热潮持续延烧,几乎每个产业都有如洪水般倾泻的信息,面对上万笔的顾客浏览纪录.购买行为数据,如果要用 Excel 来进行数据处理真是太不切实际了,Excel 相较于其他统计软件的功能已相去 ...

  9. 国内首个基于 Rust 语言的 RPC 框架 — Volo 正式开源!

    Volo 是字节跳动服务框架团队研发的轻量级.高性能.可扩展性强.易用性好的 Rust RPC 框架,使用了 Rust 最新的 GAT 和 TAIT 特性. 在字节内部,Volo 已经落地多个业务和基 ...

最新文章

  1. WIN10 + VS2015 + WDK10 + SDK10 + VM虚拟机驱动开发调试环境搭建
  2. make编译工具使用
  3. 牛客网暑期ACM多校训练营(第一场)J Different Integers
  4. SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)
  5. thymleaf中枚举 判断对象值内容
  6. 字符串输出为什么第一个没了_「课堂笔记」Python基础语法:变量和输入输出
  7. 5G 重新定义生老病死!
  8. Sublime Text 2 快捷键用法大全(转)
  9. 1、Fiddler 打断点 bpu
  10. 对于C语言可移植性的思考
  11. Swift开发经验——外部参数名
  12. 关于采用消息钩子机制的透明加密的简单破解
  13. 注塑机结构及辅助设备详解
  14. 【jzoj1592】【二分】【GDKOI训练】音乐节拍
  15. scp使用 及 安装
  16. python docx 提取图片_Python提取docx文档中所有嵌入式图片和浮动图片
  17. c语言中 dbl2str,c语言中FLT_DIG和DBL_DIG是什么意思?~
  18. 信号与电源完整性分析(一)提高信号质量
  19. 家庭用户无线上网案例(AC通过三层口对AP进行管理)
  20. phytool下载与使用(详解)

热门文章

  1. 广告点击率的贝叶斯平滑
  2. 用户在线广告点击行为预测的深度学习模型(含PPT下载)
  3. 大模型席卷应用,三分之二工作岗位将受影响,开发者如何应对?
  4. 计算机考研注意事项,计算机考研经验分享
  5. 计算机组成原理控制器的功能
  6. ARM FPU 加速浮点计算 介绍
  7. 本地远程连接不上宝塔面板里的数据库的解决方案
  8. 华为优秀员工的16项标准让你的职场之路更顺利
  9. Jmeter用户自定义变量
  10. Marks Distribution