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.递归的思想可以使很多复杂的问题化繁为简。