成信大807常用函数复习
快临近考试了,这里在带领大家复习一遍常用的函数库函数,考场上可以直接调用省去一大堆的推演代码时间
目录
#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常用函数复习相关推荐
- 成信大807程序综合设计2015-2022历年真题及答案【持续更新中】
快速导航 2015年 一.填空题 二.程序改错题 三.分析程序题 四.算法设计及编程题 2016年 一.单项选择题 二.判断题 三.程序分析题 四.程序设计题 2017年 一.单项选择题 二.判断题 ...
- 成信大2020C语言编程114,南京信息工程大学2020考研大纲822CC语言程序设计
<南京信息工程大学2020考研大纲822CC语言程序设计>由会员分享,可在线阅读,更多相关<南京信息工程大学2020考研大纲822CC语言程序设计(8页珍藏版)>请在人人文库网 ...
- 成信大c语言答案P239.C,2011秋季江苏省计算机二级C语言试题与答案.doc
2011秋季江苏省计算机二级C语言试题与答案 [本试卷的欠妥处]经过对2011秋江苏省C语言试卷仔细阅读和上机调试,本试卷卷面错误比2011春有较大改进.但还存在如下三处不足之处或命题欠妥处,有待改进 ...
- 成信大808计算机基础历年真题及答案
快速导航 2015年 一.单项选择题 二.填空题 三.判断题 四.简答题 五.论述题 2016年 一.单项选择题 二.判断题 三.简答题 四.问答题 五.论述题 2017年 一.单项选择题 二.判断题 ...
- 关于成信大计算机19考研的一点总结
Paper 投出去了,把欠下的这篇文章补上.多做善事,但愿 Paper 能中. 非常有幸参与了2019年考研的复试工作(在现场帮老师打杂),此次作为旁观者,我从不一样的角度接触到了复试,颇有一些感触, ...
- 成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
目录 1. 课堂内容 2. 知识储备 3. 编程 4. 题外话(HDF5下的中文路径问题) 1. 课堂内容 OMI数据的读取与输出,这里实际考察如何取读取HDF5文件以及HDF5文件输出(这里输出是以 ...
- 成信大C语言D1,网络空间安全学院成功举办C语言程序设计大赛
4月24日晚,在学院蔺冰老师的细心指导下,由网络空间安全学院科技实践部主办,生活纪检部与外联部协办的C语言程序设计大赛在第二实验楼6607教室举行. 随着主持人宣布--比赛正式开始,现场的工作人员以最 ...
- (成信大篇)双系统中使用锐捷客户端的问题
背景 以下文章,仅针对成都信息工程大学的学生.其余高校的学生,并不适用. 本来呢,使用双系统的人就很少.这里,仅针对使用Mac系统的同学来演示.虽然用着MacBook,但是校园网.移动.联通还是挺不错 ...
- 通达信指标公式编写常用函数(五)——BARSLAST
内容提要:本文主要介绍了编写通达信指标公式常用函数BARSLAST以及综合运用最近讲过的函数编写MACD零轴之上首次金叉选股公式. 一.BARSLAST函数简介 含义:上一次条件成立到当前的周期数 使 ...
最新文章
- 提高C++性能的编程技术笔记:引用计数+测试代码
- poj2553(强连通分量)
- React编写input组件传参共用onChange
- matlab 中调用s函数表达式,[求助]S函数中能否调用M函数
- string的常见用法详解
- oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别
- XAMPP——Apache不能启动解决方案
- java数据库视频教程下载,【No147】最新oracle11g DBA 开发和应用数据库视频教程下载...
- linux祖先进程,Linux下的几种特殊进程
- ARP***防范与解决方案
- 操作 mysql 不生成日志_详解MySQL的日志
- $(document).ready()和onload区别
- SPSS统计指南【SPSS 003期】
- spark 车流量项目实战
- 打印服务自动停止的解决方法
- python实验五答案_python程序设计 实验指导答案
- 让人耳目一新的四款高质量软件,简约又实用,每一款都值得收藏
- 单节锂离子电池充电设计
- PCI/PCIe转串口Linux驱动使用说明
- 系统逻辑架构图怎么画
热门文章
- ping: www.xxx.com: 未知的名称或服务
- 天将降大任于斯人,必先灭其QQ……后必过CPA也!
- 03.23可转债打新策略
- 6.xftp需要强制升级
- 贡院赶考品“怪”美食 海内外家庭千年古城寻年味
- 如何调用api接口获取其中的数据
- c++ | cast
- 我和程序员打了13年交道后,为什么做了缘创派?
- Xenserver上连接NFS服务器时RPC:portmapperfailure;PRC:Unable to recieve
- shiro 学习(一)