实验5
1.1
问题1:将一个长度为n的整形数组x中最大的数存在pmax指向的内存地址,将其中最小的数存在pmin指向的内存地址。
问题2:pmax指向min的内存地址,pmin指向max的内存地址。
1.2
问题1:功能:找到长度为n的整型数组x中最大的数对应的下标。返回值:数组中最大值元素的内存地址。
问题2:可以
2.1
问题1:s1大小是80,sizeof(s1)计算的是数组大小,strlen(s1)计算字符串长度大小。问题2:不能,需写成s1[N]进行赋值。
问题3:交换两个字符数组。
2.2
问题1:s1存储字符串地址,sizeof(s1)指针变量s1的字节大小,strlen(s1)是字符串大小。
问题2:可以,这种写法是将L的地址赋值给了指针s1,2_1中的line6是将字符串赋值给 了数组s1。
问题3:交换的是这几个指针变量内存储的地址,两个字符串在内存中的位置并没有改变。
3.0
问题1:int (*ptr)[4]中,ptr是一个指向一维数组的指针。
问题2:int *ptr[4]中,ptr是一个存储指针的数组。
4.0
问题1:将字符串中所有old_char替换成new_char。
问题2:可以。
5.0
include <stdio.h>
define N 80
char* str_trunc(char* str, char x);
int main() {
char str[N];
char ch;
while (printf("输入字符串: "), gets(str) != NULL) {
printf("输入一个字符: ");
ch = getchar();
printf("截断处理...\n");
str_trunc(str, ch); // 函数调用
printf("截断处理后的字符串: %s\n\n", str);
}
return 0;
}
char* str_trunc(char* str, char x) {
while (*str != x) {
*(str++);
}
*str = '\0';
return 0;
}

第一次输入测试结果正常,第二次开始无法输入字符串
处理掉缓冲区的换行符,line18用于处理回车键。
6.0
include <stdio.h>
include <string.h>
define N 5
int check_id(char *str); // 函数声明
int main()
{
char *pid[N] = {"31010120000721656X",
"3301061996X0203301",
"53010220051126571",
"510104199211197977",
"53010220051126133Y"};
int i;
for (i = 0; i < N; ++i)
if (check_id(pid[i])) // 函数调用
printf("%s\tTrue\n", pid[i]);
else
printf("%s\tFalse\n", pid[i]);
return 0;
}
int check_id(char str) {
int i=0,j;
if(strlen(str)!=18)
return 0;
for(j=0;j<17;j++){
if((str+j)<48||(str+j)>57){
return 0;
}
}
if((str+17)==88||(str+17)>=48&&(str+17)<=57)
return 1;
else
return 0;
}

7.0
include <stdio.h>
define N 80
void encoder(char *str, int n); // 函数声明
void decoder(char *str, int n); // 函数声明
int main() {
char words[N];
int n;
printf("输入英文文本: ");
gets(words);
printf("输入n: ");
scanf("%d", &n);
printf("编码后的英文文本: ");
encoder(words, n); // 函数调用
printf("%s\n", words);
printf("对编码后的英文文本解码: ");
decoder(words, n); // 函数调用
printf("%s\n", words);
return 0;
}
void encoder(char *str, int n) {
int t,i;
t=strlen(str);
for(i=0;i<t;i++){
if(*(str+i)>=97&&*(str+i)<=122){
*(str+i)=97+(str[i]-97+n)%26;
}
else if(*(str+i)>=65&&*(str+i)<=90){
*(str+i)=65+(str[i]-65+n)%26;
}
}
}
void decoder(char str, int n) {
int t,i;
t=strlen(str);
for(i=0;i<t;i++){
if((str + i) >= 97 && *(str + i) <= 122) {
int s= (str[i] - 97 - n) % 26;
if(s < 0) {
s+= 26;
}
*(str + i) = 97 + s;
}
else if(*(str + i) >= 65 && *(str + i) <= 90) {
int s= (str[i] - 65 - n) % 26;
if(s < 0) {
s+= 26;
}
*(str + i) = 65 + s;
}
}
}



8.0
include <stdio.h>
include<string.h>
void sort(int n,char *s[]);
int main(int argc, char *argv[]) {
int i;
sort(argc-1,argv+1);
for(i = 1; i < argc; ++i)
printf("hello, %s\n", argv[i]);
return 0;
}
void sort(int n,char *s[]){
int i,j;
char *t;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(strcmp(s[j],s[j+1])>0){
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
}


浙公网安备 33010602011771号