第七章字符数组与指针练习题参考答案
c++数组、指针与字符串xiti答案
1.概念填空题1.1 数组定义时有3个要素:数组名、数组元素的类型和数组元素的个数。
按元素在数组中的位置进行访问,是通过下标进行的,称为直接或索引访问。
1.2 C++中的多维数组是嵌套定义的,即多维数组的基本定义是数组构成的数组,三维数组的元素是二维数组。
1.3 计算机内存是一维编址的,多维数组在内存中的存储必须转换为一维方式,C++多维数组在内存中的排列是行方式,即越低的下标变化快。
设数组a有m行n列,每个元素占内存u个字节,则a[i][j]的首地址为a[0][0]的地址+ (i*n+j)*u。
1.4数组名是整型常量,数组名赋给同类型的指针后,该指针是指向数组首元素的指针。
数组名在表达式中被转换为指向数组首元素的指针常量。
1.5每个对象都有一个指向自身的指针,称为this指针,通过使用它来确定其自身的地址。
该指针只能读,不能写。
1.6在C++中,对象访问成员所用的运算符是.,通过指针访问对象的成员所用的运算符是->。
1.7 当动态分配失败时,系统采用返回NULL来表示发生了异常。
如果new返回的指针丢失,则所分配的自由存储区空间将无法收回,称为内存泄漏。
这部分空间必须在计算机重启才能找回,这是因为无名对象的生命期为整个程序。
1.8默认复制构造函数只能完成对象成员的赋值,可能会造成重复释放,默认的析构函数可能会产生内存泄漏。
“=”运算也会产生对象重复释放。
因此我们需要自定义复制构造函数完成对象的深复制。
1.9 在用new运算符建立一个三维数组int 4*5*6,使用了3 个下标运算符,用delete运算符释放该数组时使用了 1 个下标运算符。
new返回的指针类型是int (*) [5]6]。
2 简答题2.1 用一维数组名作函数参数和用一维数组元素函数参数的含义是否相同?为什么2.2 指针变量与整型量的加减运算代表什么意义?2.3个指向普通变量的指针进行减运算是否有意义?为什么2.4什么是浅拷贝?什么是深拷贝?二者有何异同?何时必须自定义复制构造函数、析构函数,何时必须自定义=运算符中在函数, 自定义的复制构造函数、析构函数应该怎样设计?2.5从右往左解释int *(*(*pf)[5])(double *)中4个*的含义。
C语言教材第七章指针实验
C语⾔教材第七章指针实验第七章指针第⼀部分知识训练【知识要点】1. 地址与指针指针变量的概念:⽤⼀个变量专门来存放另⼀个变量的地址。
2. 指向变量的指针变量指针变量的形式:基类型 *指针变量名;&: 取地址运算符;*:指针运算符。
3. 指针与数组引⽤⼀个数组元素可以⽤下标法和指针法;可以⽤数组名作函数的参数。
4.指针与函数函数指针变量定义的⼀般形式为:类型说明符 (*指针变量名)();⼀个函数的返回值可以是⼀个函数。
【典型习题与解析】5. char * const p;char const * pconst char *p上述三个有什么区别?【解析】char * const p; //常量指针,p的值不可以修改;char const * p;//指向常量的指针,指向的常量值不可以改;const char *p; //和char const *p。
6. main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}输出结果是什么?【解析】答案:输出:2,5*(a+1)就是a[1],*(ptr-1)就是a[4],执⾏结果是2,5。
&a+1不是⾸地址+1,系统会认为加⼀个a数组的偏移,是偏移了⼀个数组的⼤⼩(本例是5个int)。
1)&a是数组指针,其类型为 int (*)[5];⽽指针加1要根据指针类型加上⼀定的值,不同类型的指针+1之后增加的⼤⼩不同。
2)a是长度为5的int数组指针,所以要加 5*sizeof(int),所以ptr实际是a[5],但是prt与(&a+1)类型是不⼀样的(这点很重要),所以prt-1只会减去sizeof(int*) a,&a的地址是⼀样的,但意思不⼀样。
3)a是数组⾸地址,也就是a[0]的地址,&a是对象(数组)⾸地址,a+1是数组下⼀元素的地址,即a[1],&a+1是下⼀个对象的地址,即a[5]。
C语言第七章复习题(含答案)
1.下列对C语言字符数组的描述中错误的是(C )。
(A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值(D)不可以用关系运算符对字符数组中的字符串进行比较2.不能把字符串:Hello!赋给数组b的语句是( B )。
(A)char b[10]={'H','e','l','l','o','!'};(B)char b[10];b="Hello!";(C)char b[10];strcpy(b,"Hello!");(D)char b[10]="Hello!";3.若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( D )。
(A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c]4.以下程序的输出结果是( B )(A) 20 (B) 21 (C) 22 (D)23main(){ int i, k, a[10], p[3];k=5;for (i=0;i<10;i++) a[i ]=i;for (i=0;i<3;i++) p[i ]=a[i *(i+1)];for (i=0;i<3;i++) k+=p[i] *2;printf("%d\n",k);5.以下程序的输出结果是(C )。
(A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9main(){ int i, x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) printf("%d,",x[i][2-i]);6.下面程序运行的结果是( C )。
指针练习题
A. + B. - C. = D.==
4.已知p是一个整型指针变量,a为一个一维整型数组,且p=a;则下列哪个语句是错误的?()
A.*p=a[0]; B. *p=*a; C. p=a+1; D.p=*a;
5.若有以下说明语句,则p2-p1的值为()
}
}
4.下列程序完成截取字符串s中从第m个位置开始的n个字符,返回所截字符串的首地址。
static char sub[20];
main(){
int m,n;
static char s[]=”good moring”;
char *cut(char *s1,int m1,int n1),*p;
int a[10],*p1,*p2;
p1=a;
p2=&a[5];
A. 5 B. 6 C. 10 D.没有指针与指针的减法
6.下列定义中不正确的是()
A.int *p; B. int p[10]; C.int (*p)() D.int *(p(n));
7.以下程序的输出结果是()
C语言程序设计课堂练习题
第7章 指针
一、选择题
1.已知p是一个整型指针变量,且p指向的是整型变量a的地址,则下列哪个语句是错误的?( )
A.*p=a; B. p=&a; C.p=&*p; D.p=*&p;
2.下列哪一项是不正确的字符串赋值或不正确的赋初值的方式?()
第9章 结构和其他数据机制
一、选择题
1.有定义如下:
struct sk
{ int a;
指针字符串练习题及答案
单项选择==================================================题号:4074若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是().A、p=aB、p=&a[2][1]C、q[i]=a[i]D、p=a[i]答案:A题号:4333执行下列语句后的结果为().int x=3,y;int *px=&x;y=*px++;printf("x=%d,y=%d\n",x,y);A、x=3,y=3B、x=4,y=4C、x=3,y不知D、x=3,y=4答案:A题号:4876下列程序的运行结果是void fun(int *a,int *b) {int *k;k=a;a=b;b=k;}main(){int a=3,b=6,*x=&a,*y=&b; fun(x,y);printf("%d %d",a,b);}A、0 0B、3 6C、编译出错D、6 3答案:B题号:4116若说明int *p,n;则通过语句scanf能够正确读入数据的程序段是().A、scanf("%d",n);B、p=&n;scanf("%d",&p);C、p=&n;scanf("%d",*p);D、p=&n;scanf("%d",p);答案:D题号:4120下面程序:int aa[3][3]={{2},{4},{6}};main(){int i,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是().A、25B、30C、26D、23答案:D题号:4124若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是().A、i=*p;B、*p=*&j;C、i=**p;D、i=&j;答案:B题号:4165阅读下面程序,程序执行后的结果为().#include"stdio.h"main(){ char *str="abcdefghijklmnopq";while(*str++!='e');printf("%c\n",*str);}A、fB、qC、eD、a答案:A题号:4167关于指针概念说法不正确的是().A、指针变量可以由整数赋,不能用浮点赋B、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中,C、一个指针变量只能指向同一类型变量D、一个变量的地址称为该变量的指针答案:A题号:4173设有以下定义:int w[2][3],(*pw)[3];pw=w;,则对w数组元素非法引用是().A、pw[0][0]B、*(pw[1]+2)C、*(pw+1)[2]D、*(w[0]+2)答案:C题号:4532若有定义:char s[3][10],*k[3],*p;,则以下赋值语句正确的是().A、k=s;B、p=k;C、p=s;D、p=s[0];答案:D题号:4174当运行以下程序时输入OPEN THE DOOR<CR>,则输出结果是#include<stdio.h>char fun(char *c){if(*c<='Z' && *c>='A')*c -='A' - 'a';return *c;}main(){char s[8],*p=s;gets(s);while(*p){*p=fun(p);putcahr(*p);p++;}putchar('\n');}A、Open The DoorB、OPEN THE DOORC、open the doorD、oPEN tHE dOOR答案:C题号:4175下列程序执行后的输出结果是().void func(int *a,int b[]){b[0]=*a+6;}main(){int a,b[5]={0};a=0; b[0]=3;func(&a,b); printf("%d\n",b[0]);}A、8B、9C、7D、6答案:D题号:4390已知有声明"char a[]="prongram",*p=a+1;",则执行以下语句不会输出字符a的是()oA、putchar(*p+4);B、putchar(*(p+4));C、putchar(a[sizeof(a)-3]);D、putchar(*(a+5));答案:A题号:4181定义语句int *swap();指的是A、其他说法都不对B、swap是一个返回指向整型值指针的函数C、swap是一个返回整型值的函数D、swap是一个指向函数的指针答案:B题号:4184有以下程序:#include<stdio.h>void swap(char *x,char *y){char t;t=*x;*x=*y;*y=t;}main(){char *s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2); }程序执行后的输出结果是().A、1bc,a23B、123,abcC、321,cbaD、abc,123答案:A题号:4211若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则输出结果不为5 的语句为().A、printf("%d",p[5]);B、printf("%d",*p[5]);C、printf("%d",*(a+5));D、printf("%d",*(p+5));答案:B题号:4215有以下程序:void fun(int *a,int i,int j){int t;if(i<j){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}main(){int a[]={1,2,3,4,5,6},i;fun(a,0,5);for(i=0;i<6;i++)printf("%d",a[i]);}执行后输出结果是().A、6 5 4 3 2 1B、2 1 4 3 6 5C、3 2 4 1 5 6D、1 2 3 4 5 6答案:A题号:4113以下程序运行后的输出结果是(). main(){char ch[]="uvwxyz",*pc; pc=ch;printf("%c\n",*(pc+5));}A、字符y的地址B、0C、元素ch[5]地址D、z答案:D题号:4695有以下程序#include<stdio.h>main(){int a[]={1,2,3,4},y,*p=&a[3]; --p; y=*p; printf("y=%d\n",y); }程序的运行结果是().A、y=0B、y=2C、y=1D、y=3答案:D题号:4298若有语句:char *line[5];下列叙述中正确的是().A、定义line是一个指针数组,语句中的*号称为间址运算符B、定义line是一个数组,每个数组元素是一个基类型为char 的指针变量C、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组D、定义line是一个指向字符型函数的指针答案:B题号:2457设有数组定义:char array[]="China";,则数组 array所占的空间为().A、5个字节B、4个字节C、6个字节D、7个字节答案:C题号:2468下述对C语言字符数组的描述中错误的是().A、字符数组中的字符串可以整体输入,输出.B、不可以用关系运算符对字符数组中的字符串进行比较.C、字符数组中可以存放字符串.D、可以通过赋值运算符"="对字符数组整体赋值.答案:D题号:2479以下程序:#include<stdio.h>#include<string.h>main(){ char str[]="abcd\n\123\xab";printf("%d",strlen(str));}运行后的输出结果是().A、10B、9C、14D、7答案:D题号:2485已知有声明"char s[20]="Hello";",在程序运行过程中若要想使数组s中的内容修改为"Good",则以下语句能够实现此功能的是().A、strcpy(s,"Good");B、strcat(s,"Good");C、s[20]="Good";D、s="Good";答案:A题号:2499以下程序段的输出结果是pritnf("%d\n",strlen("ATS\n012\1\\"));A、11B、8C、9D、10答案:C题号:2510char a1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是().A、strcat(a2,a1);B、strcpy(a2,a1);C、strcpy(a1,a2);D、strcat(a1,a2);答案:A题号:2530设有以下语句,若0<k<4,下列选项中对字符串的非法引用是().char str[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];int j;for(j=0;j<4;j++)strp[j]=str[j];A、*strpB、strpC、strp[k]D、str[k]答案:B题号:2543选择正确的输入语句().(其中:char string[10];)使得string的内容为"Hello".A、scanf("%s",&string);B、scanf("%c",string);C、scanf("%c",&string);D、scanf("%s",string);答案:D题号:2874下列数组说明中正确的是().A、static char str1[5],str2[]={"China"};str1=str2;B、static char str[];str="China";C、static char str1[],str2[];str2={"China"};strcpy(str1,str2);D、static char str[]="China";答案:D题号:2633已定义char string[20];使得string的内容为"You are student"的正确输入语句是().A、scanf("%c",&string);B、gets(string);C、scanf("%s",&string);D、scanf("%s",string);答案:B填空题==================================================题号:4875若有定义: char ch;定义指针p,并使其指向变量ch的初始化语句是_____。
C语言第七章习题带答案
选择题1.已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。
A.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知:int a, x;,则正确的赋值语句是( C )。
A.a=(a[1]+a[2])/2; B.a*=*a+1; C.a=(x=1, x++, x+2); D.a="good"; 3.已知:int a, *p=&a;,则下列函数调用中错误的是( D )。
A.scanf("%d", &a); B.scanf("%d", p); C.printf("%d", a); D.scanf("%d", *p); 4.已知:char *p, *q;,选择正确的语句( C )。
A.p*=3; B.p/=q; C.p+=3; D.p+=q;5.已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。
A.int pb=&x; B.int *pb=x; C.int *pb=&x; D.*pb=*x;一、选择题1.设有说明int (*ptr)[M];,其中的标识符ptr是( C )。
A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M列的二维数组的一行的指针D.具有M个指针元素的一维数组的指针2.已知:double *p[6];,它的含义是( C )。
A.p是指向double型变量的指针B.p是double型数组C.p是指针数组D.p是数组指针3.已知:char s[10], *p=s,则在下列语句中,错误的语句是( B )。
A.p=s+5; B.s=p+s; C.s[2]=p[4]; D.*p=s[0];4.已知:char s[100]; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。
C语言 数组和指针练习题
若当堂没做完,下周四之前上交也可。
至ftp://211.64.82.253/用户名和密码:stuC语言程序设计练习题——数组一、选择题77、以下对一维数组a的正确说明是_d ___A、char a(10);B、int a[ ];C、int k=5,a[k];D、char a[ ]={'a' , 'b' , 'c'};78、若有说明语句:int a[2][4];,则对a数组元素的正确引用是_a___A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+1]79、以下能对二维数组y进行初始化的语句是_b__A、static int y[2][ ]={{1,0,1}, {5,2,3}};B、static int y[ ][3]={{1,2,3}, {4,5,6}};C、static int y[2][4]={{1,2,3}, {4,5} , {6}};D、static int y[ ][3]={{1,0,1,0}, { }, {1,1}};80、若有说明语句:int y[ ][4]={0,0};则下面叙述不正确的是_d___A、数组y的每个元素都可得初值0B、二维数组y的行数为1C、该说明等价于int y[ ][4]={0};D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值081、以下各组选项中,均能正确定义二维实型数组s的选项是_c___A、float s[3][4];B、float s(3,4);float s[ ][4]; float s[ ][ ]={{0};{0}};float s[3][ ]={{1},{0}}; float s[3][4];C、 float s[3][4];D、float s[3][4];static float s[ ][4]={{0},{0}}; float s[3][ ];auto float s[ ][4]={{0},{0},{0}}; float s[ ][4];82、若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为__a__A、3B、2C、无确定值D、183、若二维数组y有m列,则在y[i][j]前的元素个数为_B___A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+184、下面程序中有错误的行是____1、 main( )2、 {3、 int x[3]={1};4、 int k;5、 scanf("%d", &x);6、 for (k=1; k<3; k++)7、 x[0]=x[0]+x[i];8、 printf("x[0]=%d\n", x[0]);9、 }A、3B、6C、7D、585、若有以下语句,则正确的描述是__b__char x[ ]="12345";char y[ ]={'1', '2', '3', '4', '5'};A、x数组与y数组的长度相同B、x数组长度大于y数组长度C、x数组长度小于y数组长度D、x数组等价于y数组86、以下不正确的数组定义语句是__b__A、double x[5]={2.0, 4.0, 6.0, 8.0, 10.0};B、int y[5]={0, 1, 3, 5, 7, 9};C、char ch1[ ]={'1', '2', '3', '4', '5'};D、char ch2[ ]={'\x10', '\xa', '\x8'};87、以下正确的数组定义语句是_c___A、char a[5]={'1', '2', '3', '4', '5', '\0'};B、int b[2][ ]={{1}, {2}};C、float c[ ][3]={1, 2, 3, 4, 5};D、char d[5]="CHINA";88、判断字符串str1是否大于字符串str2,应当使用__d__A、if (str1>str2)B、if (strcmp(str1, str2))C、if (strcmp(str2, str1)>0)D、if (strcmp(str1, str2)>0)89、下面程序段的运行结果是_c___char x[5]={'a', 'b', '\0', 'c', '\0'};printf("%s", x);A、'a''b'B、abC、ab└┘cD、abc90、有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是_d___A、gets(a, b);B、scanf("%s%s", &a, &b);C、getchar(a); getchar(b);D、gets(a); gets(b);91、有字符数组s1[80]和s2[80],则以下能正确对s1, s2进行输出的语句是___b_A、puts(s1, s2)B、printf("%s, %s", s1, s2);C、putchar(s1, s2);D、puts(s1), puts(s2);92、以下程序段的运行结果是_c___char a[7]="abcdef";char b[4]="ABC";strcpy(a, b);printf("%c", a[5]);A、└┘B、\0C、eD、f93、以下描述正确的是_d___A、两个字符串所包含的字符个数相同时,才能比较字符串B、字符个数多的字符串比字符个数少的字符串大C、字符串"STOP└┘"与"STOP"相等D、字符串"That"小于字符串"The"94、以下对字符数组的描述中错误的是_c___A、字符数组中可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D、不可以用关系运算符对字符数组中的字符串进行比较95、若有语句:char s1[10], s2[10]={"books"},则能将字符串books赋给数组s1的正确语句是_b___A、s1={"books"};B、strcpy(s1, s2);C、s1=s2;D、strcpy(s2, s1);96、以下printf语句的输出结果是____printf("%d\n", strlen("school");A、7B、6C、存在语法错误D、不定值97、下面程序的功能是将字符串s中所有的字符c删除。
指针经典练习题及答案
二、程序题1、计算字符串中子串出现的次数。
要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。
2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。
算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。
例如,China转换成密文为G l m r e。
要求:在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。
3、字符替换。
要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。
4、编写一个程序,输入星期,输出该星期的英文名。
用指针数组处理。
5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。
要求:利用字符串指针和指针数组实现。
6、定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。
7、实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,输它们相同的数字个数(使用动态内存分配)。
/*1、计算字符串中子串出现的次数。
要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。
*/#include<stdio.h>int subString(char *a, char *b){int i = 0;int j = 0;int m = 0;char *p = b;while(*a){while(*a){if(*a == *b){break;}a++;}while(*b){if(*a != *b){return m;}else{m = m;}b++;a++;}// a++;b = p;++m;}return m;}int main(){char a[100];char b[100];printf("请输入字符串a:");gets(a);printf("请输入字符串b:");gets(b);printf("%d", subString(a, b));return 0;}/*2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。
c语言第七章数组课后练习题答案
c语言第七章数组课后练习题答案第七章数组学习目的与要求:1 、重点掌握一维数组的定义和引用;、基本掌握二维数组的定义和引用;、重点掌握字符型数组的定义与引用;、能正确使用字符串处理函数;、学会使用数组解决实际问题。
重点:1 、一维数组的定义与引用;、二维数组的定义与引用;、字符数组的定义与引用;第1讲知识归纳:1、一维数组的定义:类型说明符数组名[ 常量表达式 ] ;数组名后必须用方括弧 [ ] ,用其他括弧均错误;方括弧中的常量表达式表示数组的元素个数;方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;2、一维数组的引用:数组名[ 下标 ] //下标从0如 int a[10] ;//可以引用的数组元素为不是本数组元素;3、一维数组的初始化:int a[3] ;a = { 1,3,} ;可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, ??, float 0.0 ;如 int a [3]= {1,} ; //a[0] =1 ; a[1]= ; a[2]= 0 ;在对数组全部元素赋初值时,可以不指定元素个数;可以在循环控制下,给数组各元素赋值;如:int a[10] ;fora [ i ] = i ;基础训练一、选择题1、在c语言中,引用数组元素时,其数组下标的数据类型允许是。
A)整型常量 B)整型表达式 )整型常量或整型表达式D)任何类型的表达式2、要说明一个有10个int元素的数组,应当选择语句。
) int a[10]; B) int a; C) int a[9] D) int a[11]3、以下对数组的正确定义是:。
A) float b[5.0] ) float b[5] C) float b D) float b[]4、对以下说明语句的正确理解是。
int a[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]C语言复习题)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确5、已知:int a[10];则对a数组元素的正确引用是。
C语言练习题第七章
C语⾔练习题第七章第七章常见题型⼀.选择题:1.C语⾔标准库函数"fgets(string,n,fp)"的功能是________。
A.从⽂件fp中读取长度为n的字符串存⼊指针string指向的内存B.从⽂件fp中读取长度为n-1的字符串存⼊指针string指向的内存C.从⽂件fp中读取n个字符串存⼊指针string指向的内存D.从⽂件fp中读取长度不超过长度为n的字符串存⼊指针string指向的内存2.参考下⾯函数f的定义:f(int a){printf("%d",a);}函数f的返回类型________。
A.同参数a的类型相同B.是void类型C.没有返回值D.⽆法确定3.函数NewPring⽤于打印sin(x)、cos(x)和ln(x)等函数的曲线模拟,其参数就是上述函数,则NewPring的原型为________。
A.double NewPrint(double x)B.void NewPrint(double(*f)(double X))C.void (*NewPrint)(double X)D.void (*NewPrint)(double f(double x))4.数组名作为参数传递给函数,此时作为实在参数的数组名被处理为________。
A.该数组的长度B.该数组的元素个数C.该数组中各元素的值D.该数组的⾸地址5.执⾏完下⾯的程序段后,屏幕显⽰的内容为何。
main(){int a=2,i;for(i=0;i<3;i++) printf("%d",f(a));}f(a)int a;{int b=0;static c=3;b++;c++;return(a+b+c);}A.777B.7 7 7C.789D.7 8 96.C程序中若函数类型未加显式说明,则函数的隐含类型为________类型。
A.voidB.intC.charD.double7.对于C程序的函数,下列叙述中正确的是________。
C++第七章习题解答new
第七章动态内存分配习题一、基本概念与基础知识自测题7.1 填空题7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。
答案:(1)代码区,存放程序代码;(2)全局变量与静态变量区,存放全局变量或对象(包括静态);(3)局部变量区即栈(stack)区,存放局部变量;(4)动态存储区,即堆(heap)区或自由存储区(free store)。
7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动态建立对象的初始化是通过(3)来(4)。
答案:(1)命名对象(2)无名对象(3)初始化式(initializer)(4)显式初始化7.1.3 在用new运算符建立一个三维数组15*30*10时,使用了(1)个下标运算符,对应的用delete运算符注销这个三维数组时使用了(2)个下标运算符。
new返回的指针是指向(3)的指针。
答案:(1)3个(2)1个(3)30行10列的2位数组7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。
如果new返回的指针丢失,则所分配的堆空间无法收回,称为(2)。
这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。
答案:(1)返回一个空指针(NULL)(2)内存泄漏(3)重新启动计算机后(4)并不依赖于建立它的作用域7.1.5 按语义的缺省的构造函数和拷贝构造赋值操作符实现的拷贝称(1),假设类对象obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。
答案:(1)浅拷贝(2)同一个堆对象7.1.6 单链表的结点包含两个域:(1)和(2)。
使用链表的最大的优点是(3),即使是动态数组也做不到这一点。
答案:(1)数据域(2)指针域(3)用多少空间,开多少空间7.1.7 进入单链表必须通过单链表的(1),如果它丢失则(2),内存也(3),在单链表中进行的查找只能是(4)。
指针与数组练习
指针练习题一、选择题1.变量的指针,其含义是指该变量的__________a)值 b)地址c)名 d)一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是__________a)a,point,*&a b)&*a,&a,*pointc)*&point,*point,&a d)&a,&*point ,point3.若有说明;int *p,m=5,n;以下正确的程序段的是__________a)p=&n; b)p=&n;scanf("%d",&p); scanf("%d",*p);c)scanf("%d",&n); d)p=&n;*p=n; *p=m;4.下面程序段的运行结果是__________char *s="abcde";s+=2;printf("%d",s);a)cde b)字符’c’ c)字符’c’的地址 d)无确定的输出结果5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是__________a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);6.以下正确的程序段是__________a)char str[20]; b) char *p=”ok”scanf("%s",&str); scanf("%s",p);c)char str[20]; d)char str[20],*p=str;scanf("%s",&str[2]); scanf("%s",p[2]);7.若有说明语句char a[]="It is mine";char *p="It is mine";则以下不正确的叙述是__________a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符8.下面程序的运行结果是__________#include <stdio.h>#include <string.h>main(){char *s1="AbDeG";char *s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}a)正数 b)负数 c)零 d)不确定的值9.下面程序的运行结果是__________#include <stdio.h>#include <string.h>fun(char *w,int n){char t,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char *p;p="1234567";fun(p,strlen(p));puts(p);}a)7654321 b)1714171 c)1711717 d)717717110.若有以下定义,则对a数组元素的正确引用是__________int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)11.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为__________a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j12.若有以下定义,则p+5表示__________int a[10],*p=a;a)元素a[5]的地址 b)元素a[5]的值c)元素a[6]的地址 d)元素a[6]的值二.填空题1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。
指针经典练习题及答案教学教材
指针经典练习题及答案二、程序题1、计算字符串中子串出现的次数。
要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。
2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。
算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。
例如,China转换成密文为G l m r e。
要求:在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。
3、字符替换。
要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。
4、编写一个程序,输入星期,输出该星期的英文名。
用指针数组处理。
5、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。
要求:利用字符串指针和指针数组实现。
6、定义一个动态数组,长度为变量n,用随机数给数组各元素赋值,然后对数组各单元排序,定义swap函数交换数据单元,要求参数使用指针传递。
7、实现模拟彩票的程序设计:随机产生6个数字,与用户输入的数字进行比较,输它们相同的数字个数(使用动态内存分配)。
/*1、计算字符串中子串出现的次数。
要求:用一个子函数subString()实现, 参数为指向字符串和要查找的子串的指针,返回次数。
*/#include<stdio.h>int subString(char *a, char *b){int i = 0;int j = 0;int m = 0;char *p = b;while(*a){while(*a){if(*a == *b){break;}a++;}while(*b){if(*a != *b){return m;}else{m = m;}b++;a++;}// a++;b = p;++m;}return m;}int main(){char a[100];char b[100];printf("请输入字符串a:");gets(a);printf("请输入字符串b:");gets(b);printf("%d", subString(a, b));return 0;}/*2、加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。
课后习题 第七章 指针与引用
一:选择题:
1.A 2.C 3.A 4.D 5.C 6.A 7.C 8.B 9.B 10.A 二:填空题 1、 给出以下程序的输出结果是___________ #include<stdio.h> void main() { int *v,b; v=&b; b=100; *v+=b; printf("%d\n",b); } 2、 说明语句"int (* p)();"的含义是____________ 3、 已知函数说明语句:void *fun();则它的含义是___________ 4、 已知:int i;char *s="a\045+045\'b";执行语句"fot(i=0;*s++;i++);"之后,变量 i 的结果是__________ 5、下面的程序是求两个整数之和,并通过形参传回结果。 int add(intx,int y, ___________z) {_________=x+y;}
} void main() {
char a[50]; cout<<"请输入一字符串:"; cin>>a; char b[30]; cout<<"请输入上字符串的一个子串:"; cin>>b; cout<<strstr_rep(a,b)<<endl; }
2.根据运算符的优先级,表达式*--p=*(--p)。所以,先执行--p 操作,使指针 p 向低地址方向移动 一个存储单元,指向 a[1]。然后用运算符"*"取得该地址所存储的数据,即 20。
C++数组指针题(含答案)_共6页
数组指针01:逆序输出从键盘输入n个整数(n<100),存放在一个一维数组中,逆序输出能被3整除的元素,并逆序输出数组下标为3的倍数的元素。
输入格式:第一个整数为个数n,后续为n个整数输出格式:第一行能被3整除的元素,第二行为下标为3的倍数的元素,各个数值之间用空格分隔。
输入:10 2 7 9 10 5 4 3 6 8 20输出:6 3 920 3 10 2#include <iostream>using namespace std;const int MAX=100;int main(){int a[MAX],n,i;cin>>n;for(i=0;i<n;i++)cin>>a[i];for(i=n-1;i>=0;i--)if(a[i]%3==0)cout<<a[i]<<" ";cout<<endl;for(i=n-1;i>=0;i--)if(i%3==0)cout<<a[i]<<" ";cout<<endl;return 0;}数组指针02:逆序存储从键盘输入n (n<100)个整数,存放在一个一维数组a中,将它们逆序存放在另一个整型数组b中,并按b数组中下标从小到大的顺序输出下标为3的倍数的数组元素。
输入格式:第一个数为数组中元素个数n,之后为n个元素输出格式:下标为3的倍数的元素,各个数值之间用空格分隔输入:10 2 7 9 10 5 4 3 6 8 20输出:20 3 10 2#include <iostream> using namespace std; const int MAX=100; int main(){int a[MAX],b[MAX],n,i; cin>>n;for(i=0;i<n;i++){cin>>a[i];b[n-1-i]=a[i];}for(i=0;i<n;i++)if(i%3==0)cout<<b[i]<<" ";cout<<endl;return 0;}数组指针03:平均值从键盘输入任意个整数(以0结束,假设不超过100个),存放在一个一维数组中,计算这组数的平均值(实型) 。
C+数组指针题答案
C+数组指针题答案数组指针01:逆序输出从键盘输入n个整数(n<100),存放在一个一维数组中,逆序输出能被3整除的元素,并逆序输出数组下标为3的倍数的元素。
输入格式:第一个整数为个数n,后续为n个整数输出格式:第一行能被3整除的元素,第二行为下标为3的倍数的元素,各个数值之间用空格分隔。
输入:10 2 7 9 10 5 4 3 6 8 20输出:6 3 920 3 10 2#includeusing namespace std;const int MAX=100;int main(){int a[MAX],n,i;cin>>n;for(i=0;i<n;i++)< p="">cin>>a[i];for(i=n-1;i>=0;i--)if(a[i]%3==0)cout<<a[i]<<" ";<="" p="">cout<<endl;< p="">for(i=n-1;i>=0;i--)if(i%3==0)cout<<a[i]<<" ";<="" p="">cout<<endl;< p="">return 0;}数组指针02:逆序存储从键盘输入n(n<100)个整数,存放在一个一维数组a中,将它们逆序存放在另一个整型数组b中,并按b数组中下标从小到大的顺序输出下标为3的倍数的数组元素。
输入格式:第一个数为数组中元素个数n,之后为n个元素。
输出格式:下标为3的倍数的元素,各个数值之间用空格分隔。
输入:10 2 7 9 10 5 4 3 6 8 20输出:20 3 10 2#include using namespace std; const int MAX=100;int main(){int a[MAX],b[MAX],n,i; cin>>n;for(i=0;i<n;i++)< p="">{cin>>a[i];b[n-1-i]=a[i];}for(i=0;i<n;i++)< p="">if(i%3==0)cout<<b[i]<<" ";<="" p="">cout<<endl;< p="">return 0;}数组指针03:平均值从键盘输入任意个整数(以0结束,假设不超过100个),存放在一个一维数组中,计算这组数的平均值(实型)。
c语言程序设计第五版习题答案
习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。
【解答】(1)语言简洁、紧凑,使用方便、灵活。
(2)数据类型丰富,表达能力强。
(3)运算符多样。
C语言中的运算符包含的范围非常广泛。
(4)具有结构化的控制语句。
如if…else语句、while语句、do while语句、switch 语句、for语句。
(5)允许直接访问物理地址。
C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。
(6)所生成的目标代码质量高,可移植性好。
2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。
一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。
3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。
二.运行程序写结果1.输入下面程序并运行。
main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。
main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************I love C programs!*************************【分析与提示】①要有文件包含语句#include <stdio.h>。
C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。
这些函数的说明都包括在stdio.h文件中。
②main是主函数的名称。
字符数组与指针练习题参考答案
字符数组与指针练习题参考答案第七章字符数组与字符串【题】下面是对s的初始化,其中不正确的是。
A)char s[5]={“abc”};B)char s[5]={‘a’,‘b’,‘c’};C)char s[5]=“”;D)char s[5]=“abcdef”;【题】下面程序段的运行结果是。
char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s”,c);A)‘a’‘b’ B)ab C)ab c【题】对两个数组a和b进行如下初始化char a[]=“ABCDEF”;char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’};则以下叙述正确的是。
A)a与b数组完全相同B)a与b长度相同C)a和b中都存放字符串D)a数组比b数组长度长提示:‘\0’是字符串结束的标志【题】有两个字符数组a、b,则以下正确的输入格式是。
A)gets(a,b); B)scanf(“%s %s”,a,b);C)scanf(“%s %s”,&a,&b);D)gets(“a”),get(“b”);【题】有字符数组a[80]和b[80],则正确的输出形式是。
A)puts(a,b); B)printf(“%s %s”,a[],b[]);C)putchar(a,b); D)puts(a),puts(b);【题】下面程序段的运行结果是。
char a[7]=“abcdef”;char b[4]=“ABC”;strcpy(a,b);printf(“%c”,a[5]);A)空格B)\0 C)e D)f提示:复制后a[0]=‘A’,a[1]=‘B’,a[2]=‘C’,a[3]=‘\0’,a[4]=‘e’,a[5]=‘f’, a[6]=‘\0’,【题】有下面的程序段char a[3],b[]=“China”;a=b;printf(“%s”,a);则。
A)运行后将输出China B)运行后将输出ChC)运行后将输出Chi D)编译出错提示:数组名是常量【题】下面程序段的运行结果是。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章字符数组与字符串【题7.29】下面是对s的初始化,其中不正确的是。
A)char s[5]={“abc”};B)char s[5]={‘a’,‘b’,‘c’};C)char s[5]=“”;D)char s[5]=“abcdef”;【题7.30】下面程序段的运行结果是。
char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};printf(“%s”,c);A)‘a’‘b’ B)ab C)ab c【题7.31】对两个数组a和b进行如下初始化char a[]=“ABCDEF”;char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’};则以下叙述正确的是。
A)a与b数组完全相同B)a与b长度相同C)a和b中都存放字符串D)a数组比b数组长度长提示:‘\0’是字符串结束的标志【题7.32】有两个字符数组a、b,则以下正确的输入格式是。
A)gets(a,b); B)scanf(“%s %s”,a,b);C)scanf(“%s %s”,&a,&b);D)gets(“a”),get(“b”);【题7.33】有字符数组a[80]和b[80],则正确的输出形式是。
A)puts(a,b); B)printf(“%s %s”,a[],b[]);C)putchar(a,b); D)puts(a),puts(b);【题7.34】下面程序段的运行结果是。
char a[7]=“abcdef”;char b[4]=“ABC”;strcpy(a,b);printf(“%c”,a[5]);A)空格B)\0 C)e D)f提示:复制后a[0]=‘A’,a[1]=‘B’,a[2]=‘C’,a[3]=‘\0’, a[4]=‘e’,a[5]=‘f’, a[6]=‘\0’,【题7.35】有下面的程序段char a[3],b[]=“China”;a=b;printf(“%s”,a);则。
A)运行后将输出China B)运行后将输出ChC)运行后将输出Chi D)编译出错提示:数组名是常量【题7.36】下面程序段的运行结果是。
char c[]=“\t\n\\\0will\n”;printf(“%d”,strlen(c));A)14 B)3 C)9 D)字符串中有非法字符,输出值不确定提示:strlen函数,求字符数符串的长度。
【题7.37】判断字符串a和b是否相等,应当使用。
A)if(a==b) B)if(a=b)C)if(strcpy(a,b)) D)if(strcmp(a,b))提示:只有strcmp函数才能判别2个字符串的关系。
【题7.38】判断字符串s1是否大于字符串s2,应当使用。
A)if(s1>s2) B)if(strcmp(s1,s2))C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0)【题7.39】下面程序段是输出两个字符串中对应字符相等的字符。
请选择填空。
char x[]=“programming”;char y[]=“Fortran”;int i=0;while(x[i]!=‘\0’&&y[i]!= ‘\0’){if(x[i]==y[i]) printf(“%c”,【1】);else i++;}【1】A)x[i++] B)y[++i] C)x[i] D)y[i]【题7.40】下面描述正确的是。
A)两个字符串所包含的字符个数相同时,才能比较字符串B)字符个数多的字符串比字符个数少的字符串大C)字符串“STOP ”与“STOP”相等D)字符串“That”小于字符串“The”【题7.41】下述对C语言字符数组的描述中错误的是。
A)字符数组可以存放字符串B)字符数组的字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较【题7.42】有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。
请选择填空。
#include <stdio.h>main(){char a[20]=“cehiknqtw”;char s[]=“fbla”;int i,k,j;for(k=0;s[k]!=‘\0’;k++){j=0;while(s[k]>=a[j]&&a[j]!=‘\0’) j++;for(【1】) 【2】;a[j]=s[k];}puts(a);}【1】 A)i=strlen(a)+k; i>=j; i-- B)i=strlen(a); i>=j; i--C)i=j; i<=strlen(a)+k; i++ D)i=j; i<=strlen(a); i++【2】 A)a[i]=a[i+1] B)a[i+1]=a[i]C)a[i]=a[i-1] D)a[i-1]=a[i]【题7.43】下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。
请选择填空。
#include <stdio.h>main(){char a[]=“acegikm”;char b[]=“bdfhjlnpq”;char c[80],*p;int i=0,j=0,k=0;while(a[i]!=‘\0’&&b[j]!=‘\0’){if(a[i]<b[j]) { 【1】 }else { 【2】 }k++;}c[k]= ‘\0’;if(【3】) p=b+j;else p=a+i;strcat(c,p);puts(c);}【1】A)c[k]=a[i]; i++; B)c[k]=a[j]; i++;C)c[k]=a[i]; j++; D)c[k]=a[j]; j++;【2】 A)c[k]=a[i]; i++; B)c[k]=a[j]; i++;C)c[k]=a[i]; j++; D)c[k]=a[j]; j++;【3】A)a[i]==‘\0’B)a[i]!=‘\0’C)a[i-1]==‘\0’D)a[i-1]!=‘\0’【题7.44】下面程序的功能是将字符串s中所有的字符‘c’删除。
请选择填空。
#include <stdio.h>main(){char s[80];int i,j;gets(s);f or(i=j=0;s[i]!=‘\0’;i++)if(s[i]!=‘c’) 【1】;s[j]=‘\0’;puts(s);}【1】A)s[j++]=s[i] B)s[++j]=s[i]C)s[j]=s[i]; j++ D)s[j]=s[i]【题7.45】下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
请选择填空。
#include <stdio.h>main(){char s[80],c1,c2=‘’;int i=0,num=0;gets(s);while(s[i]!=‘\0’){c1=s[i];if(i==0) c2=‘’;else c2=s[i-1];if(【1】) num++;i++;}printf(“There are %d words.\n”,num);}【1】 A)c1==‘’&&c2==‘’B)c1!=‘’&&c2==‘’C)c1==‘’&&c2!=‘’ D)c1!=‘’&&c2!=‘’【题7.46】下面程序的运行结果是。
#include <stdio.h>main(){char ch[7]={“12ab56”};int i,s=0;for(i=0;ch[i]>=‘0’&&ch[i]<=‘9’;i+=2)s=10*s+ch[i]-‘0’;printf(“%d\n”,s);}A)1 B)1256 C)12ab56 D)1256【题7.47】当运行以下程序时,从键盘输入:aa bb<CR>cc dd<CR>(<CR>表示回车),则下面程序的运行结果是。
#include <stdio.h>main(){char a1[5],a2[5],a3[5],a4[5];scanf(“%s%s”,a1,a2);gets(a3);gets(a4);puts(a1);puts(a2);puts(a3);puts(a4);}/*提示:scanf(“%s”)是以空格、回车为结束标志;gets( )仅是以回车作为结束标志, a3中接收到的是‘\n’puts( )函数具有输出结束后自动加换行的功能*/A)aa B)aa C)aa bb D)aa bbbb bb cc cc ddcc cc dd dddd题7.48】当运行以下程序时,从键盘输入:ab<CR>c<CR>def<CR>(<CR>表示回车),则下面程序的运行结果是。
#include <stdio.h>#define N 6main(){char c[N];int i=0;for(;i<N;c[i]=getchar(),i++);for(i=0;i<N;i++) putchar(c[i]);}A)abcdef B)a C)b D)abB c cc d ddef【题7.49】当运行以下程序时,从键盘输入:AhaMA Aha<CR>(<CR>表示回车),则下面程序的运行结果是。
#include <stdio.h>main(){char s[80],c=‘a’;int i=0;scanf(“%s”,s);while(s[i]!=‘\0’){if(s[i]==c) s[i]=s[i]-32;else if(s[i]==c-32) s[i]=s[i]+32;i++;}puts(s);}A)ahAMa B)AhAMa C)AhAMa ahA D)ahAMa ahA【题7.50】下面程序的运行结果是。
#include <stdio.h>main(){char a[80]=“AB”,b[80]=“LMNP”;int i=0;strcat(a,b);while(a[i++]!=‘\0’) b[i]=a[i];puts(b);}A)LB B)ABLMNP C)AB D)LBLMNP【题7.51】下面程序的运行结果是。
#include <stdio.h>main(){char str[]=“SSSWLIA”,c;int k;for(k=2;(c=str[k])!=‘\0’;k++){switch(c){case ‘I’: ++k; break;case ‘L’: continue;default: putchar(c); continue;}putchar(‘*’);}}A)SSW* B)SW* C)SW*A D)SW【题7.52】下面程序的运行结果是。