回顾大一·C语言编程11.1(2)+11.2(1)(2)(2)(3)①(3)②+11.3(1)(2)+11.4(1)①②+11.4(2)

来源:互联网 发布:航仕科技 知乎 编辑:程序博客网 时间:2024/05/29 16:20

通过调用函数fun找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参指针pq传回。数组元素中的值在主函数中赋予,主函数中x是数组名,nx中的数据个数,max存放最大值,index存放最大值所在元素的下标。


#include <stdio.h>//1void fun(int a[],int n, int *p, int *q)    //2{int i; //3*p=a[0]; //4*q=0; //5for(i=1;i<n;i++) //6if(*p<a[i]) //7{*p=a[i]; //8*q=i;  //9  } } main() //10{int i, x[50],max,index, n=10; //11for(i=0;i<n;i++)//12{scanf("%d",&x[i]); //13printf("%4d",x[i]); //14} fun(x,n,&max,&index); //15 printf("\nMax=%d,Index=%d\n",max,index); //16}

以下程序的作用是扫描字符数组a和字符数组b,并输出对应位置相同的字符。


#include<stdio.h>main(){char a[10]="language",b[]="programe"; char *p1,*p2;int k;p1=a;p2=b;for(k=0;k<8;k++)if(*(p1+k)==*(p2+k))printf("%c\n",*(p1+k));}

函数voiddelete_blank(char *p)的功能为将指针p所指向的字符串中的空格给去掉。


#include<stdio.h>#define  N 80main(){void delete_blank(char *p);char a[N],i; char *p;printf("Input a string:");gets(a);delete_blank(a);// void 调用delete_blank(char *p)函数puts(a);}void delete_blank(char *p){char *q;q=p;while(*q!='\0'){if(*q!=' '){p=p+1;}q++;}*p='\0';}

以下两段程序是分别用数组、指针来实现的统计一个字符子串sunstr在一个字符串str中出现的次数(如:字符子串boy在字符串that boy is a good boy!中出现2次)。


#include<stdio.h>   //  ⑴(用数组实现)main(){char str[100],substr[10];int i,j,k,count=0;printf("请输入字符串:str="); gets(str);printf("请输入字符子串:substr=");gets(substr);for (i=0;str[i]!='\0';i++)        //判断是否到了字符串str的尾       for(j=i,k=0;substr[k]==str[j]; j++, k++)     //判断substr是否是str的子串                 if(substr[k+1]=='\0')                     {count++;     //如果substr是str的子串,累计个数                               break;                             }printf("%d",count); }

#include<stdio.h>  //   ⑵(用指针实现)main(){char str[100],substr[10],*p=str,*q=substr,*w;int i,j,k,count=0;printf("请输入字符串:str="); gets(p);printf("请输入字符子串:substr=");gets(q);for (p=str;*p!='\0';p++)       for(w=p,q=substr;*q==*w;q++,w++)                   if(*(q+1)=='\0')                     {  count++;                                    break;                             }printf("字符子串%s出现了%d次\n",substr,count); }


指向二维数组的指针变量,画图理解!


#include <stdio.h>move(int *pointer) {int i,j,t;for(i=0;i<3;i++)for(j=i;j<3;j++){t=*(pointer+3*i+j);*(pointer+3*i+j)= *(pointer+3*j+i);*(pointer+3*j+i)=t;}}main(){int a[3][3]={1,2,3,4,5,6,7,8,9},*p=a[0],i;move(p);printf("调用函数后数组的各元素为:\n");for(i=0;i<3;i++)printf("%3d %3d %3d\n",a[i][0], a[i][1], a[i][2]);}


指针数组、指向指针的指针变量,画图理解!


#include<stdio.h>main(){   char *str[]={"English","Math","Music","Computer"},**q;     int i;     q=str;     for(i=0;i<4;i++) printf("%s\n",*(q++));}

分别用选择法、冒泡法编写一个排序的函数void mysort(int*p,int n)。在主调函数中通过调用该函数,对指定的n个整数进行升序排列并输出。


include <stdio.h>main(){   void  mysort(int *p,int n);      int a[10],i;                    printf("输入10个待排序的数:\n");    for(i=0;i<10;i++)             {   printf("a[%d]=",i);        scanf("%d",&a[i]);     }    mysort(a,10);      printf("排序后的10个数:\n");    for(i=0;i<10;i++)        printf("%3d",a[i]);}void mysort(int *p,int n)  //选择法实现的排序{int i,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(p[j]<p[k])   //小值往前移k=j;if(i!=k){t=p[i];p[i]=p[k];p[k]=t;}}}

#include <stdio.h>main(){   void  mysort(int *p,int n);      int a[10],i;                    printf("输入10个待排序的数:\n");    for(i=0;i<10;i++)             {   printf("a[%d]=",i);        scanf("%d",&a[i]);     }    mysort(a,10);      printf("排序后的10个数:\n");    for(i=0;i<10;i++)        printf("%3d",a[i]);}void mysort(int *p,int n)   //冒泡法实现的排序{int i,j,t;for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++){if(p[j]>p[j+1]){t=p[j];p[j]=p[j+1];p[j+1]=t;}}}

编写一个专门用于判断一个字符串是否为回文字符串的函数int ishuiw(char *p),在主函数中接受任意一串字符,通过调用该函数,给出是否是回文的结论。


#include <stdio.h>main(){   int ishuiw(char *p);      char a[10],*p=a;                    printf("输入字符串:");printf("\n");    gets(p);    if(ishuiw(p))printf("是回文!\n");    elseprintf("不是回文!\n");}int ishuiw(char *p) {char *q;int flag=1;for(q=p;*q!='\0';)q++;q=q-1;for(;q>=p;p++,q--){if(*p==*q)continue;else{flag=0;break;}}return (flag);}


原创粉丝点击