c语言第二次实验报告

题目一

 

 

题目二

 

 

题目三

 

 

题目四

 

 

题目五

 

 

部分源代码

11-1求矩阵的局部极大值

#include<stdio.h>
int main(){
    int m,n,i=0,j=0,count=1;
    scanf("%d%d",&m,&n);
    int a[20][20];
    for(i=0;i<m;i++)
       for(j=0;j<n;j++)
          scanf("%d",&a[i][j]);
    for(i=1;i<m-1;i++)
       for(j=1;j<n-1;j++){
          if(a[i][j]>a[i-1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j+1]){
          printf("%d %d %d\n",a[i][j],i+1,j+1);
          count=0;
          }
       }
    if(count==1)
    printf("None %d %d",m,n);
    return 0;   
}

12-6 字符串转换成十进制整数

#include<stdio.h>

int main(){

    char str[1000],a[1000];

    int i=0,k=0;

    int number;

    while((str[i]=getchar())!='#')

    i++;

    str[i]='\0';

    for(i=0;str[i]!='\0';i++){

    if(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='f'||str[i]>='A'&&str[i]<='F'){

           a[k]=str[i];

           k++;

       }

    }

    a[k]='\0';

    number=0;

    for(i=0;a[i]!='\0';i++){

       if(a[i]>='0'&&a[i]<='9'){

       number=number*16+a[i]-'0';

        }

       else if(a[i]>='A'&&a[i]<='F'){

       number=number*16+a[i]-'A'+10;

        }

       else if(a[i]>='a'&&a[i]<='f'){

       number=number*16+a[i]-'a'+10;

        }

    }

    for(i=0;str[i]!='\0';i++){

       if(str[i]=='-')

       continue;

    if(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='f'||str[i]>='A'&&str[i]<='F')

       number=-number;

    }

    printf("%d",number);

    return 0;

}#include<stdio.h>

int main(){

    char str[1000],a[1000];

    int i=0,k=0;

    int number;

    while((str[i]=getchar())!='#')

    i++;

    str[i]='\0';

    for(i=0;str[i]!='\0';i++){

    if(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='f'||str[i]>='A'&&str[i]<='F'){

           a[k]=str[i];

           k++;

       }

    }

    a[k]='\0';

    number=0;

    for(i=0;a[i]!='\0';i++){

       if(a[i]>='0'&&a[i]<='9'){

       number=number*16+a[i]-'0';

        }

       else if(a[i]>='A'&&a[i]<='F'){

       number=number*16+a[i]-'A'+10;

        }

       else if(a[i]>='a'&&a[i]<='f'){

       number=number*16+a[i]-'a'+10;

        }

    }

    for(i=0;str[i]!='\0';i++){

       if(str[i]=='-')

       continue;

    if(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='f'||str[i]>='A'&&str[i]<='F')

       number=-number;

    }

    printf("%d",number);

    return 0;

}

 

13-5 判断回文字符串

bool palindrome( char *s ){
int i,k,n;
n=strlen(s);//引入函数计算字符串的长度
for(i=0,k=n-1;i<n;i++,k--){
if(s[i]!=s[k])return false;
}
return true;
}

14-8 字符串排序

#include<stdio.h>

#include<string.h>

int main(void)

{

    int i,j;

    char a[50][200], t[200];//改大了点,不然字符串太长会超出数组范围

   

    for (i = 0; i < 5; i++)

    {

        scanf("%s",a[i]);

    }

    for (i = 1; i < 5; i++)

    {

        for (j =0; j < 5-i ;j++)

        if (strcmp(a[j], a[j+1]) > 0)

        {

        strcpy(t,a[j]);

        strcpy(a[j], a[j + 1]);

        strcpy(a[j + 1], t);

        }

    }

    printf("After sorted:\n");

    for (i = 0; i < 5; i++)

    puts(a[i]);

    return 0;

}

 

15-10 找最长的字符串

#include<stdio.h>

#include<string.h>

struct s{

    char name[86];

};

int main()

{

    int n,i,max=0,index;

    scanf("%d",&n);

    struct s longer[n];

    for(i=0;i<n;i++)

        scanf("%s",longer[i].name);

        for(i=0;i<n;i++)

        {

            if(strlen(longer[i].name)>max)

            {

            max=strlen(longer[i].name);

            index=i;

            }

            }

    printf("The longest is: %s",longer[index].name);

    return 0;

}

遇到的问题,解决方法和心得体会

1.选择排序法,冒泡排序法,这些算法十分重要,要积累使用的方法和心得。

2.由于指针比较困难所以指针必须搞懂其概念,十分重要,它不同于数组,方便快捷,必须掌握!

3.递归的思想可以使很多复杂的问题化繁为简。

posted on 2018-01-26 21:24  廖擎宇  阅读(150)  评论(0编辑  收藏  举报

导航