今日热闻!实验五
来源:博客园     时间:2023-05-11 06:25:47


(资料图)

TASK 1

#include#define N 4int main(){    int x[N]={1,9,8,4};    int i;    int *p;        //1.通过数组名和下标遍历输出数组元素    for(i=0;i

TASK 2

//使用指针变量访问二维数组元素#includeint main(){    int x[2][4]={{1,9,8,4},{2,0,4,9}};    int i,j;    int *p;    int (*q)[4];//指针变量,指向包含4个int型元素的一维数组        //使用数组名和下标访问二维数组元素    for(i=0;i<2;i++){        for(j=0;j<4;j++)        printf("%d",x[i][j]);        printf("\n");    }         //使用指针变量p间接访问二维数组元素    for(p=&x[0][0],i=0;p<&x[0][0]+8;p++,i++){//p在数组的起始位置,按内存中的存储形式,输出一个就加一,输出四个就换行         printf("%d",*p);        if((i+1)%4==0)//每一行就回车一下         printf("\n");    }         //使用指针变量q间接访问二维数组元素     for(q=x;q

TASK 3

//对比使用字符数组,字符指针变量处理字符串的区别//使用字符数组处理字符串#include#include#define N 80int main() {    char s1[]="xixixixi";    //char s1[]; s1="ixixixi"  不能使用这种写法,因为这是数组,数组名是常量,是不能被改变的,但可以用指针变量      char s2[]="ahahhahaha";    char tmp[N];        printf("sizeof(s1)vs.strlen(s1):\n");    printf("sizeof(s1)=%d\n",sizeof(s1));    printf("strlen(s1)=%d\n",strlen(s1));    //sizeof计算了包括"\0"这个结束标志符,但是strlen只计算了除"\0"以外的有效字符长度     strcpy(tmp,s1);    strcpy(s1,s2);    strcpy(s2,tmp);//利用函数交换了数组中元素         printf("%s\n%s\n",s1,s2);        return 0;}

TASK 4

//用指针变量处理字符串,判断一个字符串是否是回文串#include#define N 80int func(char *);int main(){    char str[80];        while(gets(str)!=NULL)//当输入的字符串不是空的时候     {        if (func(str))//根据调用的函数的返回值来看是否是回文串         printf("yes\n");        else        printf("no\n");    }    return 0;}int func(char *str){    char *begin,*end;//定义         begin= end=str;//指针变量,先把得到的数组赋值给两个指针变量         while(*end)//这个到达字符串的末尾     end++;        end--;//减去一个才是最后一个字符的位置         while(begin

TASK 5

//使用指针变量处理字符串,去除文本字符中间*号,保留前导*和末尾* #include #define N 80void func(char *);int main(){    char s[N];        while(scanf("%s",s)!=EOF){//多次输入         func(s);        puts(s);    }    return 0;}void func(char *str){    int i;    char *p1,*p2,*p;//定义三个指针变量,分别用来放前导和后导 ,以及最后的文本字符         p1=str;    while(*p1=="*")//定位到前导*后的第一个字符     p1++;        p2=str;    while(*p2)//定位到"\0"位置     p2++;    p2--;//记得返回到最后一个字符位置         while(*p2=="*")//移动到后导*位置结束的位置,到达字符位置     p2--;        p=str;//分为三个部分,字符前导,保留,粘贴到新的文本     i=0;    while(p

TASK 6

//使用指针数组对字符串排序//1.1冒泡排序法#include#includevoid sort(char *name[],int n);//函数声明 int main(){    char *course[4]={"haha","xixilahaha","heihei","hohohoho"};//先用指针数组储存字符串         int i;        sort(coure,4);//对字符串进行排序         for(i=0;i<4;i++)    printf("%s\n",course[i]);//输出处理后的字符串         return 0;} //函数定义 void sort(char *name[],int n){    int i,j;    char *tmp;//用于之后的交换的中间指针变量         for(i=0;i0){//用函数来比较字符串的大小,从小到大排序         tmp = name[j];        name[j]=name[j+1];        name[j+1]=tmp;    }    }}

TASK 7

#include #include #define N 5int check_id(char *str); // 函数声明int main(){    char *pid[N] = {"31010120000721656X",                    "330106199609203301",                    "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;}// 函数定义// 功能: 检查指针str指向的身份证号码串形式上是否合法。// 形式合法,返回1,否则,返回0int check_id(char *str){  int n,i;  n=strlen(str);  if(n!=18)  return 0;   while(*str!="\0"){     if(*str<48||(*str>58&&*str!="X"))     return 0;          *str++; } return 1;}

TASK 8

#include #define N 80void encoder(char *s);void decoder(char *s);int main(){    char words[N];        printf("输入英文文本:");    gets(words);        printf("编码后的英文文本: ");    encoder(words);    printf("%s\n", words);        printf("对编码后的英文文本解码:");    decoder(words);    printf("%s\n", words);        return 0;    }void encoder(char *s){   while(*s){       if(*s>=65&&*s<=90||*s>=97&&*s<=122){              *s=*s+1;              s++;continue;       }       else if(*s==90||*s==122){              *s=*s-25;              s++;continue;       }       s++;} return;    }void decoder(char *s){ while(*s){       if(*s>=66&&*s<=90||*s>=98&&*s<=122){              *s=*s-1;              s++;continue;       }       else if(*s==65||*s==97){              *s=*s+25;              s++;continue;       }       s++;}    return;}

关键词: