C语言包含特殊寄存器文件ch,c语言第二次实验报告 - osc_zfz30hgc的个人空间 - OSCHINA - 中文开源技术交流社区...

一.实验题目,设计思路,实现方法

题目一:11-4 判断上三角矩阵

编写一个程序,判断一个矩阵是不是上三角矩阵。

问题:循环条件设置不当,导致错误的重复判断,最终导致结果错误。

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

编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

问题:重复字符该如何删除

题目三:14-6 通讯录的录入与显示

通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。

问题:如何简单地录入与显示一条记录。

解决方法:运用结构数组。

题目四:14-5 指定位置输出字符串

本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。

问题:测试点二(ch1找不到, ch2找到)一直通不过。

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

本题要求实现一个字符串逆序的简单函数。函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。

问题:本题要求使用指针实现要求,对于指针的不熟悉造成了很多错误。

二、部分源程序

题目一:

for(i=0;i

scanf("%d",&a[i][j]);

}for(i=1;ij){if(a[i][j]==0)

f=1;elsef=0;

}

}

}

题目二:

for(i=0;ia[j]){

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

b[0]=a[0];

j=0;for(i=1;i

j++;

b[j]=a[i];

}

}

题目三:

structmessage{char name[11];char birth[11];chargender;char phone[17];char mobile[17];

};intmain()

{inti,n;struct message a[10];

scanf("%d",&n);for(i=0;i

scanf("%s %s %c %s %s\n",&a[i].name,&a[i].birth,&a[i].gender,&a[i].phone,&a[i].mobile);

}intk,t;

scanf("%d",&k);for(i=0;i

scanf("%d",&t);if(t>=n||t<0)

printf("Not Found\n");elseprintf("%s %s %s %c %s\n",a[t].name,a[t].phone,a[t].mobile,a[i].gender,a[t].birth);

}

题目四:

char *match( char *s, char ch1, charch2 )

{int i=0,j=0,len=0;char *p=NULL;

len=strlen(s);for(i=0;i

p=&s[i];for(j=i;j

printf("%c",s[j]);

}else{

printf("%c\n", s[j]);returnp;

}

}

}

}

printf("\n");returnp;

}

题目五:

#include

void f( char *p )

{int len,i,j=0;charc[MAXS];

len=strlen(p);for(i=len-1;i>=0;i--){

c[j]=p[i];

j++;

}for(i=0;i

p[i]=c[i];

}

}

三、心得体会

1.指针运用时要特别注意,不能返回在自定义函数内定义的地址。

2.要好好运用各种字符串处理函数!!

3.数组下标一定要注意不要越界!!

4.代码一定要多打!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值