重庆邮电大学移通学院
1.2 在主函数中输入一个字符串,然后删除该字符串里面所有的空格,并打印删除空格后的字符串。(用指针)
(1)题目分析: 首先题目要求我们用指针进行编程这个问题,然后要求是删除输入字符串中的空格,我们就要考虑找到源地址,进行对源地址上的字母进行修改。
(2)程序:
#include
char *delchar(char *s, char c_h) { char *p,*q; p = s;
while(*p != '\\0') { if(*p == c_h) { q = p;
while(*q != '\\0') { *q = *(q + 1); q++; } p--; } p++; }
return (s); }
int main() { char s[80]; char *p,c = ' ';
printf(\源串是 : \ gets(s);
p = delchar(s,c);
printf(\去除(%c)后是:%s\\n\ return 0; }
(3)运行结果:
- 21 - 21
重庆邮电大学移通学院
- 22 - 22
重庆邮电大学移通学院
2 思考题
1.下面程序段的运行结果是
B 。
char *s=”abcde” ; s+=2 ; printf(“%d”,s);
A)cde B)字符?c? C)字符?c?的地址 D)不确定
2. 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是
B 。
C 。
A)c=*p1+*p2 B)p2=c C)p1=p2 D)c=*p1*(*p2) 3.若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是
A)(*p)max(a,b) B)*pmax(a,b); C)(*p)(a,b); D )*p(a,b); 4. 写出下面程序的运行结果。
fun (char *s) { char *p=s;
while (*p) p++ ; return (p-s) ; }
main ( )
{ char *a=”abcdef” ; printf(“%d\\n”,fun(a)) ; }
5.当运行以下程序时,写出输入 6↙ 的程序运行结果。
sub(char *a,char b)
{ while (*(a++)!=?\\0?) ; while (*(a-1)
main ( )
{ char s[]=”97531”,c; c = getchar ( ) ; fun(s,c); puts(s) ; }
- 23 - 23
重庆邮电大学移通学院
集中上机总结
通过一周的集中上机我发现自己
c语言编程学的非常差,在上课
时也听不懂,好多实验都不会做,有些题目都理解不了。实验编程时自己也不会修改错误,更不知道英语解释是什么地方错了。以前上课时听懂的一些东西没有及时去复习,到用时已忘得一干二净。然而有的c语言变了一下题形我又不会了,还是基础不好。我们毕业时c语言二级是必考的内容,这也给我一个警醒要好好学。
这一周的集中上机让我学到了很多的东西,我充分理解了“实践是检验真理的唯一标准”。要学好c语言必须要多上机,多练习,多实践。
当然在这一周老师细心而又耐心的讲解也给我们解决了很多不懂的问题。也加强了我对c语言知识的复习,只是网络的细化。为自己下学期的二级考试奠定了良好的基础。上机也让我感受到了其中的乐趣,同时解到作为通信工程专业的自己在编程方面还有更远的路要走,但我有决心去好好学习。