快临近考试了,这里在带领大家复习一遍常用的函数库函数,考场上可以直接调用省去一大堆的推演代码时间

目录

#include//以下函数包含使用头文件

#include//以下函数包含使用头文件

真题函数解析 strstr

#include//以下函数包含使用头文件

2022真题


首先是字符处理函数

因为这个我们平时使用最少但是考试最容易涉及

#include<ctype.h>//以下函数包含使用头文件

字符往往我们使用的时候经常会忽略 基本是都感觉我们在处理的是字符串 其实并不是

我们很多时候的字符串处理都是基于使用字符的方式

我们直接从代码的角度出发 理解使用函数

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){char str[50]="HeLlo@W 43!27 //*//";int alnum=0,alpha=0,digit=0;/*分别记录 数字和字母 纯字母 纯数字*/int graph=0;//记录可打印字符for(size_t i=0;i<strlen(str);i++){if(isalnum(str[i])){//检查是否是字母和数字 是返回非0 否则返回0alnum++;}if(isalpha(str[i])){//检查是否是字母 是返回非0 否则返回0alpha++;}if(isdigit(str[i])){//检查是否是和数字 是返回非0 否则返回0digit++;}if(isgraph(str[i])){//检查是否是可打印字符 是返回非0 否则返回0graph++;}}printf("数字和字母:%d 字母:%d 数字:%d 可打印字符:%d",alnum,alpha,digit,graph);return 0;
}

可以在要求一段程序中有多少字母 数字等时候使用

接下来更为常用的函数介绍

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){char str[50]="HeLlo@W 43!27 //*//";int lower=0,upper=0,space=0;/*分别记录 小写字母 大写字母 空*/for(size_t i=0;i<strlen(str);i++){if(islower(str[i])){//检查是否是大写字母 是返回非0 否则返回0lower++;}if(isupper(str[i])){//检查是否是小写字母 是返回非0 否则返回0upper++;}if(isspace(str[i])){//检查是否是空格 是返回非0 否则返回0space++;}}printf("大写字母:%d 小写字母:%d 空格:%d ",lower,upper,space);return 0;
}

这种函数方便之处就在于考试的时候不用写很长的判断

比如判断小写字母 就不用写成

if(str[i]>='a'&&str[i]<='z');

这样不仅节约了一些时间 还可以防止出错(漏掉等于之类);

接下来在介绍两个不怎么常用的函数

大小字母互相转化

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){char str[50]="HeLlo@W 43!27 //*//";printf("大写后的字符");   for(size_t i=0;i<strlen(str);i++){printf("%c",toupper(str[i]));//返回传入字符的大写字母}printf("\n小写后的字符");  for(size_t i=0;i<strlen(str);i++){printf("%c",tolower(str[i]));//返回传入字符的小写字母    }return 0;
}

#include<string.h>//以下函数包含使用头文件

字符串函数我们不仅要会使用 而且要求我们还要熟悉使用

下面我们还是以代码来说明

首先是连接函数

#include<stdio.h>
#include<string.h>
int main(){char s1[50]="HeLloW";char s2[50]="world";strcat(s1,s2);//把s2连接到s1后面printf("%s",s1);//注意s1是被修改的 注意保证s1的空间能装下s2
}

其次是拷贝函数

这里需要说明的是 我们通常在整数赋值的时候 直接让a等于b 或者在字符的时候 直接让字符

c1等于c2 但这里需要注意的是 字符串我们要么采用数组逐位去复制 要么使用下列函数拷贝赋值 千万不要让字符串s1等于s2(!!!严重错误)

#include<stdio.h>
#include<string.h>
int main(){char s1[50]="HeLloW";char s2[50]="world";strcpy(s1,s2);//把s2拷贝到s1里面printf("%s",s1);//注意s1是被修改的 注意保证s1的空间能装下s2
}

下面是比较值大小的函数 我想这个是我们应该用的比较多的 因为我们不能直接比较字符串的大小 通常采用 两种方法 一种就是用数组遍历逐位比较 另一种就是采用函数比较

#include<stdio.h>
#include<string.h>
int main(){char s1[50]="abcd";char s2[50]="aabcd";char s3[50]="bc";char s4[50]="abcd";int a,b,c;//分别记录值//用s1和各个字符串分别比较大小a=strcmp(s1,s2);b=strcmp(s1,s3);c=strcmp(s1,s4);printf("a=%d b=%d c=%d",a,b,c);
}

我们可以看到当s1<s2(s3) 返回负数  s1>s2返回正数 s1=s2(s4)返回0

接下来是比较简单的一个函数

#include<stdio.h>
#include<string.h>
int main(){
    char s1[50]="abcd1a4s5w6";
    int n=strlen(s1);
    printf("n=%d",n);
}

使用这个函数我们只需要记住一点就是他不包含末尾的终止符'\0'

接下来我们介绍一个没怎么常用的函数

真题函数解析 strstr

2021年成信大考题中有涉及到一道题

当然这是不知名学长给的答案 笔者不是这样写的

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
int find(char *s1, char *s2)
{
int n=0,len1=0,len2=0;
len1=strlen(s1);
len2=strlen(s2);
while(len1>=len2)
{
s1=strstr(s1,s2);//扫描字符串 s1,并返回第一次出现 s2 的位置
if(s1!=0){
n++;
s1+=len2;//长串从找到子串的位置开始后移一个子串的长度
}
else break;
len1=strlen(s1);
}
return n;
}
int main(void)
{
int find(char *s1, char *s2);
int count;
char str1[N], str2[N];
char *s1 = str1, *s2 = str2;
printf("请输入字符串 1:\n");
gets(str1);
printf("请输入字符串 2;\n");
gets(str2);
count=find(s1, s2);
printf("%d", count);
system("pause");
return 0;
}

笔者思路为如下

这个函数的功能是若s2是s1的子串char *strstr(s1,s2);返回s2在s1中首次出现的地址 如果不是 则返回NULL

#include<stdio.h>//以下函数包含使用头文件

这个库的函数相比大家都很熟悉了

对于常见的函数printf、scanf、gets、getc、puts、putchar,我们就不做过多的介绍

这里主要讲一下在文件下的一些函数使用

下面我们从代码入手

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){char *p;char s[20];FILE *fp;fp=fopen("2.1.txt","r");//打开文件2.1 类型为txt 打开方式r(只读)if(fp==NULL){//打开失败printf("File can not be opened\n");exit(0);//结束程序}p=fgets(s,20,fp);//20代表n/*函数使用 读入n-1个fp中的字符串个数 存入到s中 遇到换行 文件末尾 或者读满n-1个字符 结束*/while(p != NULL){      printf("%s",p);//p不是空就输出p=fgets(s,20,fp);//继续读入}fclose(fp);//关闭文件return 0;
}

上面代码介绍了一种读入 字符串读入方式

接下来介绍另一种读入格式化读入

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct a{char name[10];int age;float Mscore;float Escore;float Yscore;
}stu;
int main(){stu b;FILE *fp;fp=fopen("student.txt","w+");//创建文件 并采用w+(写入)if(fp==NULL){printf("File can not be opened\n");exit(0);}for(int i=1;i<=5;i++){printf("请输入第%d个学生的信息(姓名 年龄 数学 英语 语文)\n",i);scanf("%s %d %f %f %f",b.name,&b.age,&b.Mscore,&b.Escore,&b.Yscore);//从终端读入fprintf(fp,"%s %d %.2f %.2f %.2f",b.name,b.age,b.Mscore,b.Escore,b.Yscore);/*用fprintf把读入的对用数据写入文件 注意是写入*/fprintf(fp,"\n");}rewind(fp);//因为接下来要读入 所以把文件指针拉回开头 当然也可以关闭文件在重新打开/*该函数使用一般在需要让文件指针回到最前面时 使用*/printf("----------------------------------------------------\n\n");//分行for(int i=1;i<=5;i++){printf("输出第%d个学生的信息(姓名 年龄 数学 英语 语文)\n",i);fscanf(fp,"%s %d %f %f %f",b.name,&b.age,&b.Mscore,&b.Escore,&b.Yscore);/*用fscanf 从文件里面把对应的数据读到结构体里面来 注意是从文件读过来*/printf("%s %d %.2f %.2f %.2f\n",b.name,b.age,b.Mscore,b.Escore,b.Yscore);//输出}fclose(fp);return 0;
}

没有打人名 成绩乱写的 还请见谅

一般来说我们考试就考到以上两种读入即可 当然还有fgets的缩减版 就是fgetc 也就是一个字符一个字符的读入

原理还是一样的 比如去年的真题

2022真题

还是比较简单的 以下是笔者的代码段 仅供参考

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
int main(){FILE *fp,*fq;char s;int A,a,num,sum;A=a=num=sum=0;fp=fopen("1.txt","r");fq=fopen("2.txt","w");if(fp==NULL){printf("no opend\n");exit(0);}if(fq==NULL){printf("no opend\n");exit(0);}s=fgetc(fp);while(s!=EOF){if(islower(s)){a++;}else if(isupper(s)){A++;}else if(isdigit(s)){num++;}if(s=='\n'){sum++;}printf("%c",s);s=fgetc(fp);      }sum++;printf("\n大写=%d 小写=%d 数字=%d 行号=%d\n",A,a,num,sum);rewind(fp);s=fgetc(fp);num=0;printf("转换后\n");while(s){if(num==0){if(islower(s)){s=toupper(s);//小写转大写num=1;}}else if(isupper(s)){s=tolower(s);//大写转小写}else if(s=='\n'){num=0;}else if(isdigit(s)||islower(s)){}else{break;}printf("%c",s);putc(s,fq);s=fgetc(fp);}fclose(fp);fclose(fq);return 0;
}

当然剩下的还有二进制的fread和fwrite 但是一直没有考过 选择题都没有见过 但是今年也不好说 所以还请大家多多留意复习 我将在随后上传数据结构复习思维导图和数据结构常见代码合集

成信大807常用函数复习相关推荐

  1. 成信大807程序综合设计2015-2022历年真题及答案【持续更新中】

    快速导航 2015年 一.填空题 二.程序改错题 三.分析程序题 四.算法设计及编程题 2016年 一.单项选择题 二.判断题 三.程序分析题 四.程序设计题 2017年 一.单项选择题 二.判断题 ...

  2. 成信大2020C语言编程114,南京信息工程大学2020考研大纲822CC语言程序设计

    <南京信息工程大学2020考研大纲822CC语言程序设计>由会员分享,可在线阅读,更多相关<南京信息工程大学2020考研大纲822CC语言程序设计(8页珍藏版)>请在人人文库网 ...

  3. 成信大c语言答案P239.C,2011秋季江苏省计算机二级C语言试题与答案.doc

    2011秋季江苏省计算机二级C语言试题与答案 [本试卷的欠妥处]经过对2011秋江苏省C语言试卷仔细阅读和上机调试,本试卷卷面错误比2011春有较大改进.但还存在如下三处不足之处或命题欠妥处,有待改进 ...

  4. 成信大808计算机基础历年真题及答案

    快速导航 2015年 一.单项选择题 二.填空题 三.判断题 四.简答题 五.论述题 2016年 一.单项选择题 二.判断题 三.简答题 四.问答题 五.论述题 2017年 一.单项选择题 二.判断题 ...

  5. 关于成信大计算机19考研的一点总结

    Paper 投出去了,把欠下的这篇文章补上.多做善事,但愿 Paper 能中. 非常有幸参与了2019年考研的复试工作(在现场帮老师打杂),此次作为旁观者,我从不一样的角度接触到了复试,颇有一些感触, ...

  6. 成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析

    目录 1. 课堂内容 2. 知识储备 3. 编程 4. 题外话(HDF5下的中文路径问题) 1. 课堂内容 OMI数据的读取与输出,这里实际考察如何取读取HDF5文件以及HDF5文件输出(这里输出是以 ...

  7. 成信大C语言D1,网络空间安全学院成功举办C语言程序设计大赛

    4月24日晚,在学院蔺冰老师的细心指导下,由网络空间安全学院科技实践部主办,生活纪检部与外联部协办的C语言程序设计大赛在第二实验楼6607教室举行. 随着主持人宣布--比赛正式开始,现场的工作人员以最 ...

  8. (成信大篇)双系统中使用锐捷客户端的问题

    背景 以下文章,仅针对成都信息工程大学的学生.其余高校的学生,并不适用. 本来呢,使用双系统的人就很少.这里,仅针对使用Mac系统的同学来演示.虽然用着MacBook,但是校园网.移动.联通还是挺不错 ...

  9. 通达信指标公式编写常用函数(五)——BARSLAST

    内容提要:本文主要介绍了编写通达信指标公式常用函数BARSLAST以及综合运用最近讲过的函数编写MACD零轴之上首次金叉选股公式. 一.BARSLAST函数简介 含义:上一次条件成立到当前的周期数 使 ...

最新文章

  1. 提高C++性能的编程技术笔记:引用计数+测试代码
  2. poj2553(强连通分量)
  3. React编写input组件传参共用onChange
  4. matlab 中调用s函数表达式,[求助]S函数中能否调用M函数
  5. string的常见用法详解
  6. oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别
  7. XAMPP——Apache不能启动解决方案
  8. java数据库视频教程下载,【No147】最新oracle11g DBA 开发和应用数据库视频教程下载...
  9. linux祖先进程,Linux下的几种特殊进程
  10. ARP***防范与解决方案
  11. 操作 mysql 不生成日志_详解MySQL的日志
  12. $(document).ready()和onload区别
  13. SPSS统计指南【SPSS 003期】
  14. spark 车流量项目实战
  15. 打印服务自动停止的解决方法
  16. python实验五答案_python程序设计 实验指导答案
  17. 让人耳目一新的四款高质量软件,简约又实用,每一款都值得收藏
  18. 单节锂离子电池充电设计
  19. PCI/PCIe转串口Linux驱动使用说明
  20. 系统逻辑架构图怎么画

热门文章

  1. ping: www.xxx.com: 未知的名称或服务
  2. 天将降大任于斯人,必先灭其QQ……后必过CPA也!
  3. 03.23可转债打新策略
  4. 6.xftp需要强制升级
  5. 贡院赶考品“怪”美食 海内外家庭千年古城寻年味
  6. 如何调用api接口获取其中的数据
  7. c++ | cast
  8. 我和程序员打了13年交道后,为什么做了缘创派?
  9. Xenserver上连接NFS服务器时RPC:portmapperfailure;PRC:Unable to recieve
  10. shiro 学习(一)