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

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


#include <stdio.h>						//1
void fun(int a[],int n, int *p, int *q)		    //2
{	int i; 							//3
			*p=a[0]; 							//4
			*q=0; 							//5
			for(i=1;i<n;i++) 					//6
				if(*p<a[i]) 					//7
				{	*p=a[i]; 					//8
					*q=i;  					//9  
} 				
} 									
main() 								//10
{	int i, x[50],max,index, n=10; 		//11
			for(i=0;i<n;i++)					//12
			{	scanf("%d",&x[i]); 			//13
				printf("%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 80
main()
{	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");
    else
		printf("不是回文!\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);
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值