c语言程序设计试题答案.docx
《c语言程序设计试题答案.docx》由会员分享,可在线阅读,更多相关《c语言程序设计试题答案.docx(5页珍藏版)》请在冰豆网上搜索。
![c语言程序设计试题答案.docx](https://file1.bdocx.com/fileroot1/2022-11/30/ec18aa26-ef3e-4058-9208-8eb091cc44db/ec18aa26-ef3e-4058-9208-8eb091cc44db1.gif)
c语言程序设计试题答案
c语言程序设计试题答案
习题7
选择题。
下列对字符串的定义中,错误的是:
A 。
A)charstr[7]=\B)charstr=\C)char*str=\
D)charstr={'F','O','R','T','R','A','N',0};
以下程序段的输出结果是:
____D_________
chara=\char*p=NULL;
for(p=a;p
A)ABCDE B)A B C D E C)E D C B A D)ABCDEBCDECDEDEE
下列程序是对字符串的相关操作,正确的是____D____。
A)
#includemain(){staticchara[5];
a=\
printf(\}
B)
#includemain(){staticchara[7]=\ printf(\}
C)
#includemain(){chara[5]=\ printf(\}
D)
#includemain(){staticchara=\ printf(\
1
}
阅读下列函数,函数功能为___A_____。
voidExchange(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}
A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值C)交换*p1和*p2的地址 D)可能造成系统故障
设有语句:
intarray[3][4];则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是:
___D_____。
A)array[i][j] B)*(*(array+i)+j)C)*(array[i]+j) D)*(array+i*4+j)
阅读下列程序,写出运行结果。
#includemain(){staticintx={1,2,3};int s,i,*p=NULL; s=1;p=x;for(i=0;imain(){inta={1,2,3,4,5};int*p=NULL;p=a;printf(\printf(\printf(\printf(\printf(\printf(\printf(\printf(\}
答案:
1,2,3,3,2,3,4,4,
#includecharb=\char*a=\main(){inti=0;
2
printf(\while(putchar(*(a+i))){ i++;}printf(\while(--i){ putchar(*(b+i));}printf(\}答案:
Program
PROGRAMi=7margorgram
/*源文件名为*/
main(intargc,char*argv){inti; for(i=0;i
假设该文件及其可执行程序位于E盘的TC目录下,则当命令行参数为Thisisaprogram,则运行结果应为什么?
答案:
Thisisa
program
阅读程序,按要求,在空白处填写适当的表达式或语句,使程序完整,并符合题目要求。
下面函数实现strlen函数的功能,即计算指针p所指向的字符串中的实际字符个数。
unsignedintMyStrlen(char*p)
{intlen;len=0;for(;*p!
=‘\\0’ ;p++){len++ ;}returnlen ;}
下面函数也是实现strlen函数功能的,但计算字符串s中的实际字符个数的方法与上一道题有所不同。
unsignedintMyStrlen(chars){char*p=s;while(*p!
= ‘\\0’ ){
3
p++;}return p-s ;}
[提示:
移动指针p使其指向字符串结束标志,此时指针p与字符串首地址之间的差值即为字符串中的实际字符个数。
]
下面函数实现strcmp函数的功能,即比较两个字符串的大小,将两个字符串中第一个出现的不相同字符的ASII码值之差作为比较的结果返回,返回值大于0表示第一个字符串大于第二个字符串,返回值小于0表示,表示第一个字符串小于第二个字符串,当两个字符串完全一样时,返回值为0。
intMyStrcmp(char*p1,char*p2){for(;*p1==*p2;p1++,p2++){if(*p1=='\\0')return 0 ;}return *p1-*p2 ;}
在下面使用指针数组的程序中,存在一个错误,试分析这个程序,并上机运行,观察运行结果,找到这个错误,并分析错误的原因。
#include
voidPrint(char*arr,intlen);
voidmain{
char*pArray={\ int num=sizeof(pArray)/sizeof(char);
printf(\ Print(pArray,num);}
voidPrint(char*arr,intlen){
inti;
for(i=0;ia[i]){ *pMinIndex=i;}}}
不用strcat函数编程实现字符串连接函数strcat的功能,将字符串t连接到字符串s的尾部。
[提示:
参考例,用i和j分别作为字符数组s和字符数组t的下标,先将i和j同时初始化为0,然后移动i使其位于字符s的尾部即字符串结束标志处,再将字符数组t中的字符依次拷贝到字符数组s中。
]答案:
voidstrcat(char*s,char*t){
while(*s)s++;
while(*s++=*t++);}
编程从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出这个字符串。
答案:
5
#include#include
intmain{
chars[100]={0};scanf(\,s);intstart=0;
intend=strlen(s)-1;
for(;start#include
intmain{
chars[100]={0};scanf(\,s);intstart=0;
intend=strlen(s)-1;intflag=1;
for(;start
voidTranspose(int*arrDest,int*arrSource,intm,intn){
for(inti=0;i
intmain{
char*months={
\,\,\,\,\,\,
\,\,\,\,\,\,};
intm;
scanf(\,&m);if(m12){
printf(\);}
else{
printf(\,months[m-1]);}}
*用指针数组编程改写例中的两个函数DayofYear和MonthDay。
答案:
于函数原型和用途都不知,故此题没有答案。
8
习题7
选择题。
下列对字符串的定义中,错误的是:
A 。
A)charstr[7]=\B)charstr=\C)char*str=\
D)charstr={'F','O','R','T','R','A','N',0};
以下程序段的输出结果是:
____D_________
chara=\char*p=NULL;
for(p=a;p
A)ABCDE B)A B C D E C)E D C B A D)ABCDEBCDECDEDEE
下列程序是对字符串的相关操作,正确的是____D____。
A)
#includemain(){staticchara[5];
a=\
printf(\}
B)
#includemain(){staticchara[7]=\ printf(\}
C)
#includemain(){chara[5]=\ printf(\}
D)
#includemain(){staticchara=\ printf(\
1
}
阅读下列函数,函数功能为___A_____。
voidExchange(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}
A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值C)交换*p1和*p2的地址 D)可能造成系统故障
设有语句:
intarray[3][4];则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是:
___D_____。
A)array[i][j] B)*(*(array+i)+j)C)*(array[i]+j) D)*(array+i*4+j)
阅读下列程序,写出运行结果。
#includemain(){staticintx={1,2,3};int s,i,*p=NULL; s=1;p=x;for(i=0;imain(){inta={1,2,3,4,5};int*p=NULL;p=a;printf(\printf(\printf(\printf(\printf(\printf(\printf(\printf(\}
答案:
1,2,3,3,2,3,4,4,
#includecharb=\char*a=\main(){inti=0;
2
printf(\while(putchar(*(a+i))){ i++;}printf(\while(--i){ putchar(*(b+i));}printf(\}答案:
Program
PROGRAMi=7margorgram
/*源文件名为*/
main(intargc,char*argv){inti; for(i=0;i
假设该文件及其可执行程序位于E盘的TC目录下,则当命令行参数为Thisisaprogram,则运行结果应为什么?
答案:
Thisisa
program
阅读程序,按要求,在空白处填写适当的表达式或语句,使程序完整,并符合题目要求。
下面函数实现strlen函数的功能,即计算指针p所指向的字符串中的实际字符个数。
unsignedintMyStrlen(char*p)
{intlen;len=0;for(;*p!
=‘\\0’ ;p++){len++ ;}returnlen ;}
下面函数也是实现strlen函数功能的,但计算字符串s中的实际字符个数的方法与上一道题有所不同。
unsignedintMyStrlen(chars){char*p=s;while(*p!
= ‘\\0’ ){
3
p++;}return p-s ;}
[提示:
移动指针p使其指向字符串结束标志,此时指针p与字符串首地址之间的差值即为字符串中的实际字符个数。
]
下面函数实现strcmp函数的功能,即比较两个字符串的大小,将两个字符串中第一个出现的不相同字符的ASII码值之差作为比较的结果返回,返回值大于0表示第一个字符串大于第二个字符串,返回值小于0表示,表示第一个字符串小于第二个字符串,当两个字符串完全一样时,返回值为0。
intMyStrcmp(char*p1,char*p2){for(;*p1==*p2;p1++,p2++){if(*p1=='\\0')return 0 ;}return *p1-*p2 ;}
在下面使用指针数组的程序中,存在一个错误,试分析这个程序,并上机运行,观察运行结果,找到这个错误,并分析错误的原因。
#include
voidPrint(char*arr,intlen);
voidmain{
char*pArray={\ int num=sizeof(pArray)/sizeof(char);
printf(\ Print(pArray,num);}
voidPrint(char*arr,intlen){
inti;
for(i=0;ia[i]){ *pMinIndex=i;}}}
不用strcat函数编程实现字符串连接函数strcat的功能,将字符串t连接到字符串s的尾部。
[提示:
参考例,用i和j分别作为字符数组s和字符数组t的下标,先将i和j同时初始化为0,然后移动i使其位于字符s的尾部即字符串结束标志处,再将字符数组t中的字符依次拷贝到字符数组s中。
]答案:
voidstrcat(char*s,char*t){
while(*s)s++;
while(*s++=*t++);}
编程从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出这个字符串。
答案:
5