C语言上机题库百科园第6章南信大Word格式.docx
《C语言上机题库百科园第6章南信大Word格式.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第6章南信大Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
![C语言上机题库百科园第6章南信大Word格式.docx](https://file1.bdocx.com/fileroot1/2023-2/4/d4a4b286-70d7-4c87-9f9c-0514055d2a57/d4a4b286-70d7-4c87-9f9c-0514055d2a571.gif)
B.chars[5]={"
ABCDE"
C.char*s;
s="
;
D.char*s;
scanf("
%s"
s);
设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下能正确执行并得到有意义的结果的赋值语句是()。
A.p2=c;
B.c=*p1+*p2;
C.p1=p2;
D.c=*p1*(*p2);
已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是()。
A.*p=max(a,b);
B.*p=max;
C.p=max;
D.p=max(a,b);
以下正确的叙述是()。
A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定
B.当main函数带有形参时,传给形参的值只能从命令行中得到
C.若有说明:
intmain(intargc,char**argv),则argc的值必须大于1
D.C语言允许main函数带形参,形参名只能是argc和argv
若有定义:
int(*p)[4];
则标识符p()。
A.是一个指针数组名
B.定义不合法
C.是一个指向整型变量的指针
D.是一个指针,它指向一个含有四个整型元素的一维数组
设有程序段:
chars[]="
china"
;
char*p;
p=s;
则下面叙述正确的是()。
A.*p与s[0]相等
B.数组s中的内容和指针变量p中的内容相等
C.s数组长度和p所指向的字符串长度相等
D.s和p完全相同
char*s=”abcde”;
s+=2;
printf(“%s”,s);
A.字符'
c'
的地址
B.不确定
C.cde
D.字符'
下面判断正确的是()。
A.charstr[10]={"
等价于charstr[10];
str[]={"
}
B.charc[4]="
abc"
d[4]="
等价于charc[4]=d[4]="
C.char*a="
等价于char*a;
*a="
D.char*s="
等价于char*s;
chars[]=”china”;
则下面叙述正确的是()
A.数组s中的内容和指针变量p中的内容相等
B.*p与s[0]相等
已有变量定义和函数调用语句:
inta=25;
print_value(&
a);
下面函数的输出结果是()
voidprint_value(int*x)
{printf(“%d\n”,++*x);
A.24
B.23
C.25
D.26
若有说明:
int*p,m=5,n;
以下程序段正确的是()
A.p=&
n;
*p=m;
B.p=&
scanf("
%d"
&
p);
C.p=&
*p);
D.scanf("
n);
*p=n;
变量的指针,其含义是指该变量的()
A.值
B.地址
C.一个标志
D.名
已有定义intk=2;
int*ptr1,*ptr2;
且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()
A.ptr2=k;
B.k=*ptr1+*ptr2;
C.k=*ptr1*(*ptr2);
D.ptr1=ptr2
程序设计
/*请编写函数fun,该函数的功能是:
判断字符串是否为回文,若是则函数返回1,主函数中输出"
YES"
否则返回0,主函数中输出"
NO"
。
回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include<
stdio.h>
#defineN80
intfun(charstr[])
{
/***************Begin************/
/***************End************/
voidmain()
chars[N];
FILE*out;
chartest[][80]={"
1234321"
"
123421"
123321"
abcdCBA"
inti;
printf("
Enterastring:
"
);
gets(s);
\n\n"
puts(s);
if(fun(s))
printf("
YES\n"
else
NO\n"
/************************************/
out=fopen("
debug\\out12.dat"
w"
for(i=0;
i<
4;
i++)
if(fun(test[i]))
fprintf(out,"
else
fclose(out);
【参考代码】
intfun(charstr[])
{
inti,n=0,fg=1,j=0;
while(str[j])
{
n++;
j++;
}
n/2;
i++)
/*循环比较字符*/
if(str[i]==str[n-1-i]);
/*相同,什么都不作*/
else
/*不同,直接跳出循环*/
fg=0;
break;
returnfg;
}
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
#include<
string.h>
intfun(char*s)
/************Begin*************/
/*************End*************/
FILE*wf;
charline[N];
intnum=0;
Enterastring:
\n"
gets(line);
num=fun(line);
Thenumberofwordis:
%d\n\n"
num);
/******************************/
wf=fopen("
d:
\\out19.dat"
fprintf(wf,"
fun("
Thisisabigcar"
));
fclose(wf);
/*****************************/
inti,j=0;
for(i=0;
s[i]!
\0'
if(s[i]!
'
&
(s[i+1]=='
||s[i+1]=='
))
/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/
returnj;
/*返回单词个数*/
/*假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
除了字符串前导的*号之外,将串中其他*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。
*/
voidfun(char*a)
/************Begin*************/
/************End**************/
chars[81];
FILE*in,*out;
\n"
fun(s);
Thestringafterdeleted:
/******************************/
in=fopen("
in21.dat"
r"
debug\\out21.dat"
8;
{
fscanf(in,"
s);
fprintf(out,"
%s\n"
fclose(in);
inti=0;
char*p=a;
while(*p&
*p=='
*'
)
a[i]=*p;
i++;
p++;
while(*p)
if(*p!
p++;
a[i]='
将字符串中的前导*号全部删除,中间和后面的*号不删除。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。
/************Begin**************/
/************End*************/
FILE*wf,*in;
chars[81],t[81]="
****A*BC*DEF*G*******"
puts(s);
in18.dat"
debug\\out18.dat"
t);
fun(t);
while(*p=='
/*指针p指向字符串第一个字母*/
for(;
*p!
p++,a++)
*a=*p;
*a='
/*请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。
例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。
#defineN81
voidfun(char*s)
chara[N];
"
gets(a);
Theoriginalstringis:
puts(a);
fun(a);
Thestringaftermodified:
strcpy(a,"
HelloWorld!
ThisisafirstCprogram!
\\out17.dat"
a);
charch;
inti,m,n;
i=0;
m=n=strlen(s)-1;
while(i<
(n+1)/2)
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;
/*请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该项函数后,c=4152。
conio.h>
voidfun(inta,intb,long*c)
/************Begin************/
/************End***************/
inta,b;
longc;
Inputa,b:
%d%d"
a,&
b);
fun(a,b,&
c);
Theresultis:
%ld\n"
c);
debug\\out20.dat"
for(a=10;
a<
20;
a++)
fun(a,109-a,&
%d\n"
fclose(out);
*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;