实验五
实验五
实验任务11111111111111
1;
问题1:找出最大值及最小值
问题2:指向x[0]
2;
问题1:函数find_max的功能是查找数组中的最大值元素,并返回指向该最大值元素的指针
问题2:不可以,line2应把“&”去掉
实验任务22222222222222
1;
问题1:大小为80,sizeof计算的是总字节数,strlen是从第一个字符开始到'\0'结束
问题2:不能,赋值表达式的左边需要是变量,但数组名是常量指针
问题3:交换
2;
问题1:存放的是字符串常量的起始地址,sizeof计算的是内存大小,strlen计算的是从第一个字符开始到结束符的字符个数
问题2:可以,语义相同,但数组只能在定义时赋值,而2.2中的可以指向任意的字符串常量
问题3:交换的地址,不交换
实验任务333333333333333

问题:第一个指的是指向有四个元素的一维数组的指针,第二个指的是有四个指针的数组
实验任务44444444444

1.函数replace的功能是将字符串中所有指定的旧字符替换为新字符
2.可以
实验任务555555555555
1 #include <stdio.h> 2 #define N 80 3 4 char* str_trunc(char* str, char x); 5 6 int main() 7 { 8 char str[N]; 9 char ch; 10 11 while (printf("输入字符串:"), gets(str) != NULL) 12 { 13 printf("输入一个字符:"); 14 ch = getchar(); 15 16 printf("截断处理...\n"); 17 str_trunc(str, ch); 18 19 printf("截断处理后的字符串:%s\n\n", str); 20 getchar(); 21 } 22 return 0; 23 } 24 25 char* str_trunc(char* str, char x) 26 { 27 char* start = str; 28 while (*str != '\0') 29 { 30 if (*str == x) 31 { 32 *str = '\0'; 33 break; 34 } 35 str++; 36 } 37 38 return start; 39 }

问题:getchar()此处用来储存回车键
实验任务666666666666
1 #include <stdio.h> 2 #include <string.h> 3 #define N 5 4 int check_id(char *str); 5 int main() 6 { 7 char *pid[N] = {"31010120000721656X", 8 "3301061996X0203301", 9 "53010220051126571", 10 "510104199211197977", 11 "53010220051126133Y"}; 12 int i; 13 for (i = 0; i < N; ++i) 14 if (check_id(pid[i])) 15 printf("%s\tTrue\n", pid[i]); 16 else 17 printf("%s\tFalse\n", pid[i]); 18 return 0; 19 } 20 21 int check_id(char *str) { 22 char *p = str; 23 int count = 0; 24 25 while (*p != '\0') { 26 count++; 27 if (count > 18) return 0; 28 p++; 29 } 30 31 if (count != 18) return 0; 32 33 for (int i = 0; i < 17; i++) { 34 if (str[i] < '0' || str[i] > '9') { 35 return 0; 36 } 37 } 38 39 char last = str[17]; 40 if ((last >= '0' && last <= '9') || last == 'X') { 41 return 1; 42 } 43 44 return 0; 45 }

实验任务7777777777777777
1 #include <stdio.h> 2 #define N 80 3 void encoder(char *str, int n); 4 void decoder(char *str, int n); 5 int main() { 6 char words[N]; 7 int n; 8 9 printf("输入英文文本: "); 10 gets(words); 11 12 printf("输入n: "); 13 scanf("%d", &n); 14 15 printf("编码后的英文文本: "); 16 encoder(words, n); 17 printf("%s\n", words); 18 19 printf("对编码后的英文文本解码: "); 20 decoder(words, n); 21 printf("%s\n", words); 22 23 return 0; 24 } 25 26 void encoder(char *str, int n) { 27 char *p = str; 28 29 while (*p != '\0') { 30 if (*p >= 'a' && *p <= 'z') { 31 *p = 'a' + (*p - 'a' + n) % 26; 32 } else if (*p >= 'A' && *p <= 'Z') { 33 *p = 'A' + (*p - 'A' + n) % 26; 34 } 35 p++; 36 } 37 } 38 39 void decoder(char *str, int n) { 40 char *p = str; 41 42 while (*p != '\0') { 43 if (*p >= 'a' && *p <= 'z') { 44 *p = 'a' + (*p - 'a' - n + 26) % 26; 45 } else if (*p >= 'A' && *p <= 'Z') { 46 *p = 'A' + (*p - 'A' - n + 26) % 26; 47 } 48 p++; 49 } 50 }

实验任务88888888888
1 #include <stdio.h> 2 #include<string.h> 3 4 void sort(int n, char *s[]); 5 6 int main(int argc, char *argv[]) { 7 int i; 8 9 sort(argc-1, argv+1); 10 11 for(i = 1; i < argc; ++i) 12 printf("hello, %s\n", argv[i]); 13 return 0; 14 } 15 16 void sort(int n, char *s[]){ 17 int i,j; 18 char *tmp; 19 20 for(i=0;i<n-1;++i) 21 for(j=0;j<n-1-i;++j) 22 if(strcmp(s[j],s[j+1])>0){ 23 tmp=s[j]; 24 s[j]=s[j+1]; 25 s[j+1]=tmp; 26 } 27 }


浙公网安备 33010602011771号