c语言程序设计试题答案
更新时间:2024-04-26 06:42:01 阅读量: 综合文库 文档下载
习 题 7
7.1 选择题。
(1)下列对字符串的定义中,错误的是: A 。
A) char str[7] = \B) char str[] = \C) char *str = \
D) char str[] = {'F','O','R','T','R','A','N',0};
(2)以下程序段的输出结果是:____D_________
char a[] = \char *p = NULL;
for (p=a; p
A)ABCDE B) A B C D E C) E D C B A D)ABCDE BCDE CDE DE E
(3)下列程序是对字符串的相关操作,正确的是____D____。
A)
#include
a = \
printf(\}
B)
#include
C)
#include
D)
#include
1
}
(4)阅读下列函数,函数功能为___A_____。
void Exchange(int *p1, int *p2) { int p; p = *p1; *p1 = *p2; *p2 = p; }
A)交换*p1和*p2的值 B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址 D)可能造成系统故障
(5)设有语句:int array[3][4]; 则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是:___D_____。
A)array[i][j] B)*(*(array + i) + j) C)*(array[i] + j) D)*(array + i*4 + j)
7.2 阅读下列程序,写出运行结果。 (1)
#include
答案:6
(2)
#include
答案:1, 2, 3, 3, 2, 3, 4, 4,
(3)
#include
2
printf(\ while (putchar (*(a + i))) { i++; } printf(\ while ( -- i) { putchar (*(b + i)); } printf(\} 答案: Program
PROGRAM i = 7 margor gram
(4)
/* 源文件名为demo.c */
main(int argc, char *argv[]) { int i; for (i=0; i
假设该文件demo.c及其可执行程序demo.exe位于E盘的TC目录下,则当命令行参数为demo.exe This is a program,则运行结果应为什么?
答案: demo.exe This is a
program
7.3 阅读程序,按要求,在空白处填写适当的表达式或语句,使程序完整,并符合题目要求。 (1)下面函数实现strlen函数的功能,即计算指针p所指向的字符串中的实际字符个数。
unsigned int MyStrlen(char *p)
{ int len; len = 0; for (; *p != ‘\\0’ ; p++) { len ++ ; } return len ; }
(2)下面函数也是实现strlen函数功能的,但计算字符串s中的实际字符个数的方法与上一道题有所不同。
unsigned int MyStrlen(char s[]) { char *p = s; while (*p != ‘\\0’ ) {
3
p++; } return p-s ; }
[提示:移动指针p使其指向字符串结束标志,此时指针p与字符串首地址之间的差值即为字符串中的实际字符个数。]
(3)下面函数实现strcmp函数的功能,即比较两个字符串的大小,将两个字符串中第一个出现的不相同字符的ASII码值之差作为比较的结果返回,返回值大于0表示第一个字符串大于第二个字符串,返回值小于0表示,表示第一个字符串小于第二个字符串,当两个字符串完全一样时,返回值为0。
int MyStrcmp(char *p1, char *p2) { for (; *p1 == *p2; p1++,p2++) { if (*p1 == '\\0') return 0 ; } return *p1-*p2 ; }
7.4 在下面使用指针数组的程序中,存在一个错误,试分析这个程序,并上机运行,观察运行结果,找到这个错误,并分析错误的原因。
#include
void Print(char *arr[], int len);
void main() {
char *pArray[] = {\ int num = sizeof(pArray) / sizeof(char);
printf(\ Print(pArray, num); }
void Print(char *arr[], int len) {
int i;
for (i=0; i printf(\ } } 答案:int num = sizeof(pArray) / sizeof(char); 应改为:int num = sizeof(pArray) / sizeof(char*);或: int num = sizeof(pArray) / sizeof(pArray[0]); 理由:pArray是一个存放了4个字符串指针的数组,其中每一个元素是一个指针,而非一个字符。 程序希望得到的运行结果如下: Total string numbers = 4 Fred Barrey Wilma Betty 7.5 编写一个交换变量值的函数,利用该函数交换数组a和数组b中的对应元素。 4 [提示:参考例7.2,用指针变量做函数参数实现两数交换。] 答案: void swap(int a[], int b[], int n) { int temp; for(int i=0;i 7.6 任意从键盘输入10个整数,用函数编程实现计算其中的最大值和最小值,并返回它们所在数组中的位置。 [提示:参考例7.3,用指针变量做函数参数,得到最大值和最小值在数组中的位置。] 答案: void MaxAndMin(int *a, int n, int *pMaxIndex, int *pMinIndex) { *pMaxIndex = *pMinIndex = 0; for (int i=0;i if (a[*pMaxIndex] if (a[*pMinIndex]>a[i]){ *pMinIndex = i; } } } 7.7 不用strcat函数编程实现字符串连接函数strcat的功能,将字符串t连接到字符串s的尾部。 [提示:参考例7.5,用i和j分别作为字符数组s和字符数组t的下标,先将i和j同时初始化为0,然后移动i使其位于字符s的尾部即字符串结束标志处,再将字符数组t中的字符依次拷贝到字符数组s中。] 答案: 5 void strcat(char*s,char*t) { while (*s) s++; while(*s++ = *t++); } 7.8 编程从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出这个字符串。 答案: #include int main() { char s[100]={0}; scanf(\,s); int start = 0; int end = strlen(s)-1; for (;start printf(\,s); } 7.9 *编程判断输入的一串字符是否为“回文”。所谓“回文”就是指顺读和倒读都一样的字符串,例如\、\都是回文。 [提示:由题意可知,回文就是一个对称的字符串,利用这一特点可采用如下算法进行判断: (1)设置两个指针pStart和pEnd,让pStart指向字符串首部,让pEnd指向字符串尾部; (2)利用循环从字符串两边对指针所指字符进行比较,当对应的两字符相等且两指针未超越对方时,使指针pStart向前移动一个字符位置即加1,使指针pEnd向后移动一个字符位置即减1,一旦发现对应的两字符不等或两指针以互相超越(不可能是回文),则立即停止循环; 6 (3)根据退出循环时两指针的位置,判断字符串是否为回文。] 答案: #include int main() { char s[100]={0}; scanf(\,s); int start = 0; int end = strlen(s)-1; int flag = 1; for (;start printf(\,flag?\:\); } 7.10 *编写一个能对任意m×n的矩阵进行转置的函数Transpose。 [提示:参考例7.9,用指针变量做函数参数编程实现。] 答案: #include void Transpose(int *arrDest,int *arrSource,int m,int n) { for (int i=0;i *(arrDest+m*j+i) = *(arrSource+n*i+j); } } } int main() { int s[3][4] = { 0,1,2,3, 7 4,5,6,7, 8,9,10,11, }; int t[4][3]; Transpose(&t[0][0],&s[0][0],3,4); for (int i=0;i<4;i++){ for (int j=0;j<3;j++){ printf(\,t[i][j]); } printf(\); } } 7.11 *用指针数组编程实现:任意从键盘输入一个数字表示的月份值n,程序输出该月份的英文表示,若n不在1~12之间,则输出“Illegal month”。 答案: #include int main() { char* months[]={ \,\,\,\,\,\, \,\,\,\,\,\, }; int m; scanf(\,&m); if (m<1 || m>12){ printf(\); } else{ printf(\,months[m-1]); } } 7.12 *用指针数组编程改写例7.4中的两个函数DayofYear和MonthDay。 答案:由于函数原型和用途都不知,故此题没有答案。 8
正在阅读:
c语言程序设计试题答案04-26
结构化学第一章习题12-16
IT服务外包维护协议书(年付)03-03
第3章 金属切削机床基本知识05-28
生态文明村申报材料04-23
2011年专升本试题03-26
2013年初中几何综合测试题及答案06-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 试题
- 答案
- 语言
- 改革开放所带来的问题 - 环境污染
- 政务服务事项管理平台V1.0操作手册 - 图文
- 临时施工用电安全措施方案
- 《控制的手段与应用》教学设计 - 图文
- LIFERAY门户系统集群配置
- 主持词(正式)
- 关于上报《滨海医院开业筹备倒计时计划表》的通知 - 图文
- 魔术金字塔解法
- 差动放大电路的设计
- 灵歌第一册130首
- 大工15春《毕业论文(设计)写作指导》在线测试
- 9第九章 有压管流和孔口、管嘴出流 - 图文
- 2016版山东省市政工程消耗量定额工程量计算规则
- 建筑工程定额与预算
- 抑制载波双边带调幅(DSB-SC)和解调的实现
- 超星尔雅中国近现代史纲要(2015版)包含所有
- midas钢管混凝土拱桥计算
- 建筑工程项目管理成本控制论文
- 2012公考资料全 - 图文
- 2017届高考英语一轮复习 Unit 17 Laughter 北师大版选修6