77范文网 - 专业文章范例文档资料分享平台

C语言程序设计及实验指导练习及习题参考答案(8--10)(3)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

if(*p != 0) count++; if(count == m) {

no++;

printf(\*p = 0; count = 0; } p++;

if(p == num + n)

p = num; }

p = num;

while(*p == 0)

p++;

printf(\

}

5. 输入一个字符串,将该字符串中从第m 个字符开始的全部字符复制成另一个字符串。m由用户输入,值小于字符串的长度。要求编写一个函数mcopy(char *s, char *t, int m)来完成。 解答:

#include #include void main() {

char s[80], t[80]; int m;

void strmcpy(char *s,char *t, int m); gets(t);

scanf(\getchar();

if(strlen(t) < m)

printf(\else{

strmcpy(s, t, m); puts(s); }

}

void strmcpy(char *s, char *t, int m) {

t = t + m - 1; while(*t != '\\0') {

*s = *t; s++;

t++; }

*s = '\\0';

}

6. 输入一个字符串,再输入一个字符ch,将字符串中所有的ch 字符删除后输出该字符串。要求定义和调用函数delchar(s,c),该函数将字符串s 中出现的所有c 字符删除。 解答:

#include void main() {

char c;

char str[80];

void delchar(char *str, char c); gets(str);

scanf(\getchar(); delchar(str, c); printf(\puts(str); }

void delchar(char *str, char c) {

int i, j; i = j = 0;

while(str[i] != '\\0') {

if(str[i] != c) {

str[j] = str[i]; j++; } i++; }

str[j] = '\\0'; }

7. 输入5 个字符串,按由小到大的顺序输出。 解答:

#include #include int main( ) {

int i, j, index;

char sx[5][80], stemp[80]; for(i=0;i<5;i++)

scanf(\for(i=1; i<4; i++) {

index=i;

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

if (strcmp(sx[j],sx[index])<0)

index=j;

strcpy(stemp,sx[i]); strcpy(sx[i],sx[index]); strcpy(sx[index],stemp); }

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

puts(sx[i]); return 0;

}

8. 编程判断输入的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是。 解答:

#include void main() {

char s[80];

int mirror(char *p); gets(s);

if(mirror(s) != 0)

printf(\else

printf(\

}

int mirror(char *p) {

char *q; q = p;

while(*q != '\\0')

q++; q--;

while(p < q) {

if(*p != *q)

return 0; p++; q--; }

return 1;

}

9. 输入一行文字,统计其中的大写字母、小写字母、空格、数字以及其他字符各有多少? 解答:

#include void main() {

char s[80]; char *p;

int blank, digit, lower, other, upper; gets(s);

upper = lower = blank = digit = other = 0; for(p = s; *p != '\\0'; p++)

if(*p >= 'A' && *p <= 'Z')

upper++;

else if(*p >= 'a' && *p <= 'z')

lower++;

else if(*p >= '0' && *p <= '9')

digit++; else if(*p == ' ')

blank++; else

other++;

printf(\other); }

10. 编写函数strcomp(s1, s2),实现两个字符串的比较,返回值分别为1、0、-1表示s1>s2, s1=s2,s1

int strcomp(char *s1,char *s2) {

for (;*s1!=?\\0?;s1++,s2++) if (*s1!=*s2)

break; if (*s1-*s2>0)

return 1;

else if (*s1-*s2<0)

return -1; else

return 0;

}

**11. 输入学生人数后输入每个学生的成绩,最后输出学生的平均成绩、最高成绩和最低成绩。要求使用动态内存分配来实现。 解答:

# include # include int main ( ) {

int n, i;

float *p, sum, max, min, avg;

printf(\ scanf(\

/*为数组p 动态分配n 个浮点数float 类型大小的空间 */ if ((p=(float *)calloc(n, sizeof(float))) == NULL) {

printf(\exit(1); }

sum=0.0;

max=-1; /*初始化 */ min=1000;

printf(\提示输入n 个整数 */ for (i = 0; i < n; i++) {

scanf(\sum=sum+*(p+i); if (min>*(p+i))

min=*(p+i); if (max<*(p+i))

max=*(p+i);

}

avg=sum/n;

printf(\free(p); /* 释放动态分配的空间 */ return 0; }

3 实验指导教材参考答案

一、调试示例

利用指针指向2 个整型变量,并通过指针运算找出两个数中的最大值,输出到屏幕上。 (源程序error08_1.cpp) 源程序(有错误的程序) #include int main(void) {

int max, x, y, *pmax, *px, *py; scanf(\

*px = &x; /* 分别对px、py 和pmax 三个指针进行赋值*/

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言程序设计及实验指导练习及习题参考答案(8--10)(3)在线全文阅读。

C语言程序设计及实验指导练习及习题参考答案(8--10)(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/419153.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: