第三次上机实验内容-字符替换和字符串排序
时间:2026-01-27
时间:2026-01-27
字符替换和字符串排序
上机 第一节课 替换字符 上机软件题号 11 12 13 16 36 37 38 56 61 62 81 86 87 选一道题
第二节课 字符串排序 上机软件题号 6 19 31(字符串一般排序) ( 45 70 95 左右比较) 选一道题 其他题号课后练习
字符替换和字符串排序
字符数组与字符串void main() { 字符数组 char a[4]={ a , b , c , d }; char b[4]={ a , b , c , \0 }; char b1[]=“china”; b字符数组存储的是字符 b1=“china”;╳ …… }b1
串,字符串就是带空操作 符’\0’的字符数组
c
h
i
n
a
\0
a,b,b1是代表内存地址
字符替换和字符串排序
二维字符数组
#include <stdio.h> void main() { char diamond[][5]={{′ ′,′ ′,′*′},{′′,′*′,′ ′, ′*′},{′*′,′ ′,′ ′,′ ′,′*′},{′ ′,′*′,′ ′,′*′},{′ ′,′ ′,′*′}}; int i,j; for (i=0;i<5;i++) 运行结果 { for (j=0;j<5;j++) * printf(″%c″,diamond[i][j]); * * * * printf(″\n″); } * * * }
字符替换和字符串排序
二维字符数组
#include <stdio.h> void main() { char diamond[][5]={“str1”,”str2”,”str3”}; int i,j; for (i=0;i<3;i++) {printf(″%s″,diamond[i]); printf(″\n″); } Diamond[0]是第0维数组的地址 } s t r 1 \0Diamond[1]是第1维数组的地址 Diamond[2]是第2维数组的地址 s t r 2 \0
s
t
r
3
\0
运行结果
字符替换和字符串排序
与字符串处理的相关函数 字符串的输出 char c[10]=“test”; %s表示输出字符串,输出字符数 printf(“%s”,c); 组C表示的字符串 字符串的输入 char c[5]; 表示从键盘输入字符串,依次存 scanf(“%s”,c); 储到c数组中,注意只能输入最多4
个字符
字符替换和字符串排序
与字符串处理的相关函数
加上#include <string.h> 字符串的赋值函数 strcpy(字符数组名1,字符数组名2) char str1[10],str2[10]={“china”}; strcpy(str1,str2); 表示把str2表示的字符串赋给str1 str1应足够大 str1=str2 ╳是错误的对单个字符处理函数加上头文件#include <ctype.h>
字符替换和字符串排序
与字符串处理的相关函数比较两个字符串的大小 strcmp(字符串1,字符串2) char str1[]=“china”;str2[]=“best”; if strcmp(str1,str2) 当字符串str1大于字符串str2 返回正整数 printf(“str1>str2”); 当字符串str1小于字符串str2 返回负整数 求字符串长度函数
当字符串str1等于字符串str2 返回0
strlen(字符串常量或字符数组名) strlen(str1)返回字符串中字符个数不包括’\0
字符替换和字符串排序
数组名,不是 str1[10]
字符串的连接运算 puts(str1) char str1[20]=“hello!; gets(str1) char str2[10]=“china”; strcat(str1,str2); printf(“%s”,str1); Hello!china 输出字符串 printf(“%s”,str1)数组名 (地址) 输入字符串到字符数组 scanf(“%s”,str1)
字符替换和字符串排序
例
有3个字符串,要求找出其中最大者
程序如下: #include<stdio.h> #include<string.h> void main ( ) { char string[20]; char str[3][2
0]; int i; for (i=0;i<3;i++) gets (str[i]); if (strcmp(str[0],str[1])>0) strcpy(string,str[0]) else strcpy(string,str[1]); if (strcmp(str[2],string)>0) strcpy(string,str[2]); printf(″\nthe largest string is∶\n%s\n″,string); }
字符替换和字符串排序
运行结果如下: CHINA↙ HOLLAND↙ AMERICA↙ the largest string is∶ HOLLAND
字符替换和字符串排序
文件
打开文件 读写操作(fscanf,fprintf) (fgets)针对字符串 关闭文件
字符替换和字符串排序
文件打开读写实例
#include <stdio.h> void main() 定义文件指针注意定义时有个*号 { int a[10],i; FILE *in,*out; in=fopen(“in.dat”,”r”); 以读的方式打开 in.dat 以写的方式打开out.dat out=fopen(“out.dat”,”w”); for(i=0;i<10;i++) 从in所指文件依次读取 {fscanf(in,”%d”,&a[i]); 一个整型数据到a[i] a[i]=a[i]+5;} for(i=0;i<10;i++) { fprintf(out,”%d “,a[i]);} a[i]按指定格式写到 }out所指文件中
字符替换和字符串排序
char xx[50][80] ; unsigned int maxline = 0 ; /* 文章的总行数 */ int ReadDat(void) { FILE *fp ; int i = 0 ; char *p ; if((fp = fopen("c:\\test\\IN.DAT", "r")) == NULL) return 1 ; while(fgets(xx[i], 80, fp) != NULL) { 从文件中读取79个字符存入 p = strchr(xx[i], '\n') ; xx[i]对应的一维数组中,并加上 if(p) *p = 0 ; ‘\0’ i++ ; 如果遇到’\n’,提前结束fgets的执 } maxline = i ; strchr函数在一维数组中查找指定 fclose(fp) ; 返回该字符的地址 return 0 ; }
字符替换和字符串排序
void WriteDat(void) { FILE *fp ; unsigned int i ; fp = fopen("c:\\test\\OUT.DAT", "w") ; for(i = 0 ; i < maxline ; i++) { printf("%s\n", xx[i]) ; fprintf(fp, "%s\n", xx[i]) ; } fclose(fp) ; }
字符替换和字符串排序
类型三 替 换 字 符 题
字符替换和字符串排序
替 换字符题函数ReadDat()实现从文件ENG.IN中读取一篇英文文 章 , 存 入 到 字 符 串 数 组 xx 中 ; 请 编 制 函 数 encryptChar(),按给定的替代关系对数组xx中的 所有字符进行替代,仍存入数组xx的对应的位置 上,最后调用函数WriteDat()把结果xx输出到文 件PS10.DAT中。 替代关系:f(p)=p*11 mod 256 (p是数组中某 一 个 字 符 的 ASCII 值 , f(p) 是 计 算 后 新 字 符 的 ASCII值),计算后f(p)值小 …… 此处隐藏:1450字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:内生性和工具变量法