zoukankan      html  css  js  c++  java
  • c语言第二次实验报告

    题目一:11-7 找鞍点

    设计思路

    1.输入一个二维数组

    2.判断有几个点,如果只有一个则就是是鞍点

    3.然后用for循环判断是否为行最大值,且为列最小值

    4.输出

    实现方法:

    用双重for循环遍历比较大小,判断鞍点,也是整个程序最难的地方。

    题目二:12-8 删除重复字符

    设计思路:

    1.定义二个数组,并赋初值为0

    2.读取一个字符串

    3.判断数组中被填充的位置,填充的是非0值,没填充的是0值

    实现方法:

    str1中每个字符的assic码作为str2的下标值,并把对应位置填充为1,同一个字符的assci值相同,所以这样就去掉了重复字符。

    题目三:13-6 数组循环右移

    设计思路:

    1.定义一个空的数组

    2.把右移后的原数组放入空数组

    3.输出空数组

    实现方法:

    重定义一个数组,把处理过数据处理进去比较简便。

    题目四:14-4 输出月份英文名

    设计思路:

    1.定义指针函数

    2.按照n的数字返回字符串

    3.如果为月份外数字则反NULL

    实现方法:

    简单暴力的return,避开了一些麻烦

    题目五:15-3 函数实现字符串逆序

    设计思路:额外设定一个指针,从后到前输入

    实现方法:while循环调整指针的前后位置。

    、部分源程序

    11-7 找鞍点:

    for(i=0; i<n; i++)
            {
                y=i;
                for(p=0; p<n; p++) //找行最大值
                {
                    if(a[i][k]<=a[i][p])//数组元素之间比较,若比a[i][k]大,则将数组列标赋给k
                    {
                        k=p;
                    }
                }
                for(j=0; j<n; j++)//判断是否为列最小值
                {
                    if(a[y][k]>a[j][k])//若此行最大值不是列所在最小值,把小的行标赋给y
                    {
                        y=j;
                        break;
                    }
                }
                if(i==y)//行最大且列最小,判断条件行标不改变
                {
                    flag=0;
                    break;
                }
            }
    

     12-8 删除重复字符

    for(i=0;str1[i];i++)
    {
    str2[str1[i]]=1;//str1中每个字符的assic码作为str2的下标值,并把对应位置填充为1,同一个字符的assci值相同,所以这样就去掉了重复字符
    }
    for(i=0;i!=256;i++)
    if(str2[i]==1)//判断数组中被str1填充的位置,填充的是非0值,没填充的是0值
    printf("%c",i);//输出str2的下标值,对应str1中的字符值
    putchar('
    ');
    

      13-6 数组循环右移

    int ArrayShift( int a[], int n, int m )
    {
    	int b[1000],i;
    	for( i=0 ; i<n ; i++ )
    	{
    		if(m>n)
    		
    		while(m>n)
    			m=m-n;
    		
    		if(i-m<0)
    		b[i]=a[n-m+i];
    		else
    		b[i]=a[i-m];
    	
    	}
    	for( i=0 ; i<n ; i++ )
    	{
    		a[i]=b[i];
    	}
    }
    

      14-4 输出月份英文名

    char *getmonth( int n )
    {
    	if(n==1)
    	return ("January");
    	if(n==2)
    	return ("February");
    	if(n==3)
    	return ("March");
    	if(n==4)
    	return ("April");
    	if(n==5)
    	return ("May");
    	if(n==6)
    	return ("June");
    	if(n==7)
    	return ("July");
    	if(n==8)
    	return ("August");
    	if(n==9)
    	return ("September");
    	if(n==10)
    	return ("October");
    	if(n==11)
    	return ("November");
    	if(n==12)
    	return ("December");
    	else return (NULL);
    	 
    }
    

      15-3 函数实现字符串逆序

    void f(char *s)
    { 
    char c,*p,*q; 
    p=q=s; 
      while (*q)
       q++;
       q--;
     while ( p<q ) {
      c=(*p);
      (*p)=(*q); 
      (*q)=c; 
      p++; 
      q--; 
      
      }
    }
    

      三、遇到的问题和解决办法。

    1.测试点没有考虑周全

    2.编译过程小错误不断

    3.遇到问题应及时想他人求助

    4.不要累计问题

  • 相关阅读:
    Spring Boot → 08:嵌入式Servlet容器自定义
    Spring Boot → 09:使用外置Servlet容器_tomcat9.0
    Spring Boot → 07:错误处理机制
    Spring Boot → 06:项目实战-账单管理系统
    Spring Boot → 05:Web开发
    zzz Objective-C的消息传递机制
    Objective-C中的SEL、IMP和Class类型(转)
    zzzObjective-C的动态特性
    zzz KVC/KVO原理详解及编程指南
    zzzzz iOS绘图教程
  • 原文地址:https://www.cnblogs.com/zhangrongbo/p/8350833.html
Copyright © 2011-2022 走看看