第六章
单选
若已定义char s[10];则在下面表达式中不表示s[1]的地址是( )。
A.&s[1]
B.&s[0]+1
C.s+1
D.s++
下面程序段的运行结果是( )。
char a[ ]=”language” , *p ;
p=a ;
while (*p!='u') { printf(“%c”,*p-32); p++ ; }
A.language
B.langUAGE
页脚内容
1
C.LANGUAGE
D.LANG
下面能正确进行字符串赋值操作的是( )
A.char s[5]={'A','B','C','D','E'};
B.char s[5]={\"ABCDE\
C.char *s ; s=\"ABCDE\" ;
D.char *s; scanf(\"%s\
设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下能正确执行并得到有意义的结果的赋值语句是( )。
A.p2=c;
B.c=*p1+*p2;
C.p1=p2;
D.c=*p1*(*p2);
已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是( )。
页脚内容
2
A.*p=max(a,b);
B.*p=max;
C.p=max;
D.p=max(a,b);
以下正确的叙述是( )。
A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定
B.当main函数带有形参时,传给形参的值只能从命令行中得到
C.若有说明: int main(int argc,char **argv),则argc的值必须大于1
D.C语言允许main函数带形参,形参名只能是argc和argv
若有定义:int (*p)[4];则标识符p( )。
A.是一个指针数组名
B.定义不合法
C.是一个指向整型变量的指针
页脚内容
3
D.是一个指针,它指向一个含有四个整型元素的一维数组
设有程序段:char s[ ]=\"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.字符'c'
页脚内容
4
下面判断正确的是()。
A.char str[10]={\"china\等价于 char str[10]; str[ ]={\"china\";}
B.char c[4]=\"abc\等价于 char c[4]=d[4]=\"abc\" ;
C.char *a=\"china\"; 等价于 char *a; *a=\"china\" ;
D.char *s=\"china\"; 等价于 char *s; s=\"china\" ;
设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是( )
A.数组s中的内容和指针变量p中的内容相等
B.*p与s[0]相等
C.s数组长度和p所指向的字符串长度相等
D.s和p完全相同
已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是( void print_value(int *x)
{ printf(“%d\\n”,++*x); }
页脚内容
5
)
A.24
B.23
C.25
D.26
若有说明:int *p,m=5,n;以下程序段正确的是( )
A.p = &n ; *p = m ;
B.p=&n ;scanf(\"%d\
C.p = &n ;scanf(\"%d\
D.scanf(\"%d\
变量的指针,其含义是指该变量的( )
A.值
B.地址
C.一个标志
页脚内容
6
D.名
已有定义int k=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的花括号中填入所编写的若干语句。
试题程序:*/
页脚内容
7
#include #define N 80 int fun(char str[]) { /***************Begin************/ /*************** End ************/ } void main() { char s[N]; FILE *out; char test[][80]={\"1234321\ int i; 页脚内容 8 printf(\"Enter a string : \"); gets(s); printf(\"\\n\\n\"); puts(s); if(fun(s)) printf(\"YES\\n\"); else printf(\"NO\\n\"); /************************************/ out=fopen(\"debug\\\\out12.dat\ for(i=0;i<4;i++) if(fun(test[i])) fprintf(out,\"YES\\n\"); 页脚内容 9 else fprintf(out,\"NO\\n\"); fclose(out); /************************************/ } 【参考代码】 int fun(char str[]) { int i,n=0,fg=1,j=0; while (str[j]) { n++; j++; 页脚内容 10 } for(i=0;i if(str[i]==str[n-1-i]); /*相同,什么都不作*/ else /*不同,直接跳出循环*/ { fg=0; break; } return fg; } 页脚内容 11 /*请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include #include #define N 80 int fun(char *s) { /************Begin*************/ /*************End*************/ 页脚内容 12 } void main() { FILE *wf; char line[N]; int num=0; printf(\"Enter a string:\\n \"); gets(line); num=fun(line); printf(\"The number of word is:%d\\n\\n \ /******************************/ wf=fopen(\"d:\\\\out19.dat\ fprintf(wf,\"%d\ 页脚内容 13 fclose(wf); /*****************************/ } 【参考代码】 int i,j=0; for(i=0;s[i]!='\\0';i++) if(s[i]!=' '&&(s[i+1]==' '||s[i+1]== '\\0')) /*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/ j++; return j;/*返回单词个数*/ /*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。 在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是 页脚内容 14 ****ABCDEFG。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include #include void fun (char *a) { /************Begin*************/ /************End**************/ } void main() { 页脚内容 15 char s[81]; FILE *in,*out; int i; printf(\"Enter a string :\\n\"); gets(s); fun(s); printf(\"The string after deleted:\\n\"); puts(s); /******************************/ in=fopen(\"in21.dat\ out=fopen(\"debug\\\\out21.dat\ for(i=0;i<8;i++) { 页脚内容 16 fscanf(in,\"%s\ fun(s); fprintf(out,\"%s\\n\ } fclose(in); fclose(out); /******************************/ } 【参考代码】 int i=0; char *p=a; while(*p&&*p=='*') { 页脚内容 17 a[i]=*p;i++;p++; } while(*p) { if(*p!='*') { a[i]=*p;i++; } p++; } a[i]='\\0'; /*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是 页脚内容 18 A*BC*DEF*G*******。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include void fun (char *a) { /************Begin**************/ /************End*************/ } void main() { FILE *wf,*in; 页脚内容 19 int i; char s[81],t[81]=\"****A*BC*DEF*G*******\"; printf(\"Enter a string :\\n\"); gets(s); fun(s); printf(\"The string after deleted:\\n\");puts(s); /******************************/ in=fopen(\"in18.dat\ wf=fopen(\"debug\\\\out18.dat\ for(i=0;i<8;i++) { fscanf(in,\"%s\ fun(t); 页脚内容 20 fprintf(wf,\"%s\\n\ } fclose(in); fclose(wf); /*****************************/ } 【参考代码】 char *p=a; while(*p=='*') p++; /*指针p指向字符串第一个字母*/ for(;*p!='\\0';p++,a++) *a=*p; 页脚内容 21 *a='\\0'; /*请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。 例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:*/ #include #include #define N 81 void fun(char*s) { /************Begin*************/ /************End**************/ 页脚内容 22 } void main() { char a[N]; FILE *out; printf(\"Enter a string:\"); gets(a); printf(\"The original string is:\"); puts(a); fun(a); printf(\"\\n\"); printf(\"The string after modified:\"); puts(a); 页脚内容 23 strcpy(a,\"Hello World! This is a first C program!\"); fun(a); /******************************/ out=fopen(\"d:\\\\out17.dat\ fprintf(out,\"%s\ fclose(out); /******************************/ } 【参考代码】 char ch; int i,m,n; i=0; m=n=strlen(s)-1; 页脚内容 24 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。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的 页脚内容 25 若干语句。 试题程序: */ #include #include void fun(int a ,int b,long *c) { /************Begin************/ /************End***************/ } void main() { int a,b; long c; 页脚内容 26 FILE *out; printf(\"Input a ,b: \"); scanf(\"%d%d\ fun(a,b,&c); printf(\"The result is :%ld\\n\ /******************************/ out=fopen(\"debug\\\\out20.dat\ for(a=10;a<20;a++) { fun(a,109-a,&c); fprintf(out,\"%d\\n\ } fclose(out); 页脚内容 27 /******************************/ } 【参考代码】 *c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10; 页脚内容 28 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务