C语言课件程序第8章补充作业.docx
- 文档编号:26083886
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:21
- 大小:20.11KB
C语言课件程序第8章补充作业.docx
《C语言课件程序第8章补充作业.docx》由会员分享,可在线阅读,更多相关《C语言课件程序第8章补充作业.docx(21页珍藏版)》请在冰豆网上搜索。
C语言课件程序第8章补充作业
第8章补充作业
1、选择题
1)变量的指针,其含义是指该变量的。
A.值B.地址C.名D.一个标志
2)若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是。
A.a,point,*&aB.&*a,&a,*point
C.*&point,*point,&aD.&a,&*point,point
3)若已定义a为int型变量,则是对指针p的正确说明和初始化。
A.int*p=a;B.int*p=*a;
C.intp=&a;D.int*p=&a;
4)下面判断正确的是。
A.char*a=“china”;等价于char*a;*a=“china”;
B.charstr[10]={“china”};等价于charstr[10];str[]={“china”};
C.char*s=“china”;等价于char*s;s=“china”;
D.charc[4]=“abc”,d[4]=“abc”;等价于charc[4]=d[4]=“abc”;
5)以下合法的定义是。
A.staticstr[]={“china”};B.char*p=“china”;
C.char*p;strcpy(p,”china”);D.charstr[13];str[]=“china”;
6)若有定义:
inta[4][6];则能正确表示a数组中任一元素a[i][j](此处0≤i<4,0≤j<6)地址的表达式是。
A.&a[0][0]+6*i+jB.&a[0][0]+4*j+i
C.&a[0][0]+4*i+jD.&a[0][0]+6*j+i
7)若有以下定义,则数值不为3的表达式是。
intx[10]={0,1,2,3,4,5,6,7,8,9},*p1;
A.x[3]B.p1=x+3,*p1++
C.p1=x+2,*(p1++)D.p1=x+2,*++p1
8)若有说明语句:
intx[3][4];则以下关于x,*x,x[0],&x[0][0]的正确描述是。
A.x,*x,x[0],&x[0][0]均表示元素x[0][0]的地址
B.只有x,x[0],&x[0][0]表示的是元素x[0][0]的地址
C.只有x[0]和&x[0][0]表示的是元素x[0][0]的地址
D.只有&x[0][0]表示的是元素x[0][0]的地址
9)若有以下说明语句:
staticinti,a[2][3]={1,3,5,7,9,11};
intm,n;
且0≤m≤1,0≤n≤2,则是对数组元素的正确引用。
A.a[m]+nB.*(a+5)
C.*(*(a+m)+3)D.*(*(a+m)+n)
10)以下程序运行的结果是。
#include
#include
main()
{
char*p1,*p2,str[50]=“abc”;
p1=“abc”;p2=“abc”;
strcpy(str+1,strcat(p1,p2));
printf(“%s\n”,str);
}
A.abcabcabcB.bcabcabcC.aabcabcD.cabcabc
11)下面程序的运行结果是。
#include
main()
{
intb,a=28;
chars[10],*p;
p=s;
do{
b=a%16;
if(b<10)
*p=b+48;
else
*p=b+55;
p++;
a=a/5;
}while(a>0);
*p=’\0’;
puts(s);
}
A.10B.2C.51D.\0
12)下面程序的运行结果是。
#include
main()
{
staticchara[]=“Language”,b[]=“programe”;
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))
printf(“%c”,*(p1+k));
}
A.gaeB.gaC.LanguageD.有语法错误
13)以下程序中调用scanf函数给变量a输入数值的方法是错误,其错误原因是。
main()
{
int*p,*q,a,b;
p=&a;
printf(“inputa:
”);
scanf(“%d”,*p);
…
}
A.*p表示的是指针变量p的地址
B.*p表示的是变量a的值,而不是变量a的地址
C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
14)以下程序运行的结果是。
#include
main()
{
inta[]={2,4,6,8,10},y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf(“%d\n”,y);
}
A.17B.18
C.19D.20
15)有如下程序:
#include
main()
{
charch[2][5]={“6937”,“8254”},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]!
=’\0’;j+=2)
s=10*s+p[i][j]-’0’;
printf(“%d\n”,s);
}
该程序的输出结果是。
A.69825B.63825
C.6385D.693825
16)已有定义:
intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是。
A.k=*ptr1+*ptr2;
B.ptr2=k;
C.ptr1=ptr2
D.k=*ptr1*(*ptr2);
17)若有说明:
int*p1,*p2,m=5,n;以下均是正确赋值语句的选项是。
A.p1=&m;p2=&p1;
B.p1=&m;p2=&n;*p1=*p2;
C.p1=&m;p2=p1;
D.p1=&m;*p2=*p1;
18)以下正确的程序段是。
A.charstr1[]=“12345”,str2[]=“abcdef”;strcpy(str1,str2);
B.charstr[10],*st=“abcde”;strcat(str,st);
C.charstr[10]=““,*st=“abcde”;strcat(str,st);
D.char*st1=“12345”,*st2=“abcde”;strcat(st1,st2);
19)下面程序段的运行结果是。
char*p=“abcdefgh”;
p+=3;
printf(“%d\n”,strlen(strcpy(p,”ABCD”)));
A.8B.12
C.4D.7
20)下面程序段的运行结果是。
chara[]=“language”,*p;
p=a;
while(*p!
=’u’)
{
printf(“%c”,*p-32);
p++;
}
A.LANGUAGE
B.language
C.LANG
D.langUAGE
2、填空题
1)若p已指向存储单元a[1]。
通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是。
2)若有以下定义和语句:
则*--p的值是。
inta[4]={0,1,2,3},*p;
p=&a[2];
3)若有定义:
inta[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是;*(a[1]+2)的值是。
4)若有定义:
intm[10][6];在程序中引用数组元素m[i][j]的四种形式是:
,
,和。
(假设i、j已正确说明并赋值)。
5)下面程序可通过行指针p输出数组a中任一行任一列元素的值。
请填空。
main()
{
inta[2][3]={2,4,6,8,10,12};
int(*p)[3],i,j;
p=a;
scanf(“%d,%d”,&i,&j);/*0≤i<2,0≤j<3*/
printf(“a[%d][%d]=%d\n”,i,j,);
}
6)下面程序的运行结果是。
main()
{
intx[]={0,1,2,3,4,5,6,7,8,9};
ints,i,*p;
s=0;
p=&x[0];
for(i=1;i<10;i+=2)
s+=*(p+i);
printf(“sum=%d”,s);
}
7)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。
请填空。
intmystrlen(char*str)
{
char*p;
for(p=str;!
=’\0’;p++);
return();
}
8)下面程序段的运行结果是。
chara[]=“12345”,*p;
ints=0;
for(p=a;*p!
=’\0’;p++)
s=10*s+*p-‘0’;
printf(“%d\n”,s);
9)下面程序的运行结果是
main()
{
intva[10],vb[10],*pa,*pb,i;
pa=va;pb=vb;
for(i=0;i<3;i++,pa++,pb++)
{
*pa=i;*pb=2*i;
printf(“%d\t%d\n”,*pa,*pb);
}
pa=&va[0];pb=&vb[0];
for(i=0;i<3;i++)
{
*pa=*pa+i;*pb=*pb*i;
printf(“%d\t%d\n”,*pa++,*pb++);
}
}
10)若输入的值分别是1,3,5,下面程序的运行结果是
main()
{
inta=0,i,*p,sum;
p=&a;
for(i=0;i<=2;i++)
{
scanf(“%d”,p);
sum=s(p);
printf(“sum=%d\n”,sum);
}
}
s(int*p)
{
intsum=10;
sum=sum+*p;
return(sum);
}
11)以下程序的运行结果是。
#include
main()
{
inti,k;
for(i=0;i<4;i++)
{
k=sub(&i);
printf(“%3d”,k);
}
printf(“\n”);
}
intsub(int*s)
{
staticintt=0;
t=*s+t;
returnt;
}
12)以下程序的输出结果是。
#include
main()
{
char*ptr1,*ptr2;
ptr1=ptr2=“abcde”;
while(*ptr2!
=’\0’)
putchar(*ptr2++);
while(--ptr2>=ptr1)
putchar(*ptr2);
putchar(‘\n’);
}
13)有以下程序,若从键盘输入:
abcdef↙,则输出结果是。
#include
#include
main()
{
char*p,*q;
p=(char*)malloc(sizeof(char)*20);
q=p;
scanf(“%s%s”,p,q);
printf(“%s%s”,p,q);
}
14)以下程序的输出结果是
#include
main()
{
charstr[]=“abc”,*ps=str;
while(*ps)
ps++;
for(ps--;ps-str>=0;ps--)
puts(ps);
}
15)设有以下程序:
#include
main()
{
inti,*p=&i;
i=10;
*p=i+5;
i=2*i;
printf(“%d\n”,*p);
}
程序执行的结果是。
16)设有两个字符串a、b,下面程序是将a、b的对应字符中的较大者存放在数组c的对应位置上。
请填空。
#include
#include
main()
{
intk=0;
chara[80],b[80],c[80]={‘\0’},*p,*q;
p=a;q=b;gets(a);gets(b);
while()
{
if()
c[k]=*q;
else
c[k]=*p;
p++;q++;k++;
}
if(*p!
=’\0’)
strcat(c,p);
else
strcat(c,q);
puts(c);
}
17)以下程序的功能是:
将无符号八进制数字字符串转换为十进制整数。
例如,输入的字符串为556,则输出十进制整数366。
请填空。
#include
main()
{
char*p,s[6];
intn;
p=s;
gets(p);
n=*p-‘0’;
while(=’\0’)
n=n*8+*p-‘0’;
printf(“%d\n”,n);
}
18)假设a数组中的数据已按从小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩下一个,然后以每行4个数据的格式输出a数组。
请填空。
#defineM10
main()
{
inta[M],i,j,n;
for(i=0;i scanf(“%d”,a+i); n=i=M-1; while(i>=0) { if(*(a+i)==*(a+i-1)) { for(j=;j<=n;j++) *(a+j-1)=*(); n--; } i--; } for(i=1;i<=n+1;i++) { printf(“%4d”,*()); if(i%4==0) printf(“\n”); } printf(“\n”); } 19)下面程序是判断输入的字符串是否是”回文”,(顺读和倒读都一样的字符串称”回文”,如level)。 请填空。 #include #include main() { chars[81],*p1,*p2; intn; gets(s); n=strlen(s); p1=s; p2=; while() { if(*p1! =*p2) break; else { p1++; ; } } if(p1 printf(“NO\n”); else printf(“YES\n”); } 20)下面程序的运行结果是 #include main() { chara[80],b[80],*p=“aAbcdDefgGH”; inti=0,j=0; while(*p! =’\0’) { if(*p>=’a’&&*p<=’z’) { a[i]=*p;i++; } else { b[j]=*p;j++; } p++; } a[i]=b[j]=’\0’; puts(a);puts(b); } 21)以下程序的执行结果是。 #include main() { staticinta[]={1,3,5,7}; int*p[3]={a+2,a+1,a}; int**q=p; printf(“%d\n”,*(p[0]+1)+**(q+2)); } 22)以下程序能找出数组x中的最大值和该值所在的元素下标,数组元素值从键盘输入,请填空。 main() { intx[10],*p1,*p2,k; for(k=0;k<10;k++) scanf(“%d”,x+k); for(p1=x,p2=x;p1-x<10;p1++) if(*p1>*p2) p2=; printf(“MAX=%d,INDEX=%d\n”,*p2,); } 23)以下程序的执行结果是。 #include #include #defineP(x)printf(“%s”,x) main() { staticchar*c[]={“youcanmakestatement”,“forthetopic”, “Thesentences”,“Howabout”}; staticchar**p[]={c+3,c+2,c+1,c}; char***pp=p; P(**++pp); P(*--*++pp+3); P(*pp[-2]+3); P(pp[-1][-1]+3); printf(“\n”); } 24)下面程序的功能是将字符串a的所有字符传送到字符串b中,要求每传送三个字符后再存放一个空格,例如字符串a为”abcdefg”,则字符串b为”abcdefg”,请选择填空。 #include main() { inti,k=0; chara[80],b[80],*p; p=a; gets(p); while(*p) { for(i=1;【1】;p++,k++,i++) b[k]=*p; if(【2】) {b[k]=’‘;k++;} } b[k]=’\0’; puts(b); } 【1】A.i<3B.i<=3C.i<3&&*p! =’\0’D.i<=3&&*p 【2】A.i==4B.*p==’\0’C.! *pD.i! =4 25)下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前面的原字符往后顺序移动,如chyab变成ychab。 请选择填空。 #include main() { charstr[80],*p,max,*q; p=str;gets(p);max=*(p++); while(*p! =’\0’) { if(max<*p) { max=*p; 【1】; } p++; } p=q; while(【2】) { *p=*(p-1); 【3】; } *p=max; puts(p); } 【1】A.p++B.p=qC.q=pD.q++ 【2】A.p>strB.p>=strC.*p>str[0]D.*p>=str[0] 【3】A.p++B.str--C.p--D.i-- 26)下面程序的功能从终端读入一行字符作为字符串放在字符数组中,然后输出请填空。 inti; chars[80],*p; for(i=0;i<79;i++) { s[i]=getchar(); if(s[i]==’\n’) break; } s[i]=; p=; while(*p) putchar(*p++); 27)下面程序的运行结果是。 chars[20]=“abcd”; char*sp=s; sp++; puts(strcat(sp,”ABCD”)); 28)下面程序段的运行结果是。 chara[]=“123456789”,*p; inti=0; p=a; while(*p) { if(i%2==0)*p=’*’; p++;i++; } puts(a); 29)下面程序的输出结果是。 main() { intb[2][3]={2,4,6,8,10,12}; int*a[2][3]={*b,*b+1,*b+2,*(b+1),*(b+1)+1,*(b+1)+2}; int**q,k; q=a[0]; for(k=0;k<6;k++) { printf(“%4d”,**q); q++; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课件程序 第8章补充作业 语言 课件 程序 补充 作业