指针和数组习题
指针例题经典
指针例题经典一、指针例题经典嘿,宝子们!今天咱们来唠唠那些超经典的指针例题。
指针这玩意儿啊,就像一把神奇的小钥匙,能打开好多编程世界里的小秘密呢。
你看啊,有这么一道例题。
就是定义一个整型数组,然后用指针去遍历这个数组,找出数组里的最大值。
这就像是在一群小伙伴里找那个最高的人一样。
咱们先定义一个数组,就像这样:int arr[] = {1, 5, 3, 7, 2};然后再定义一个指针,让这个指针指向这个数组的开头,就像给小侦探指了个路,让他从这儿开始找。
这个指针的定义呢,就是int p = arr; 然后呢,小指针就开始它的旅程啦。
它从数组的第一个元素开始,一个一个地看,和后面的元素比较。
要是后面的元素比它指向的元素大,那就让指针指向这个更大的元素。
最后呢,这个指针指向的就是数组里最大的元素啦。
还有一道题也很有意思。
是关于函数指针的。
函数指针就像是一个超级快递员,它能把函数这个大包裹送到你想要的地方。
比如说,有一个函数是用来计算两个数的和的,函数原型是int add(int a, int b)。
那我们要定义一个函数指针来指向这个函数,就像这样:int (fp)(int, int) = add; 然后呢,我们就可以通过这个函数指针来调用这个函数啦,就像fp(3, 5);这样就会得到8。
这是不是超级酷呢?再讲讲指针和结构体的例题。
结构体就像是一个小盒子,里面可以装好多不同类型的东西。
比如说,有一个结构体是用来表示一个学生的信息的,里面有学生的姓名、年龄和成绩。
我们可以定义一个结构体类型:struct student {char name[20];int age;float score;};然后我们定义一个结构体变量,再用指针指向这个结构体变量。
这个指针就可以用来访问结构体里的各个成员啦。
就像我们要访问学生的年龄,就可以用指针->age这样的形式。
这就像打开小盒子,拿出里面特定的东西一样。
指针例题真的很有趣,就像一个个小谜题一样。
计算机二级c语言第九章 数组和指针习题与答案
第九章数组和指针1、有以下程序main(){ int a[]={2,4,6,8,10}, y=0, x, *p;p=&a[1];for(x= 1; x< 3; x++) y += p[x];printf("%d\n",y);}程序运行后的输出结果是A)10 B)11 C)14 D)152、有以下程序void sum(int a[]){ a[0] = a[-1]+a[1]; }main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n", a[2]);}程序运行后的输出结果是A)6 B)7 C)5 D)83、有以下程序main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++< 7) if(p[i]%2) j+=p[i];printf("%d\n",j);}程序运行后的输出结果是A)42 B)45 C)56 D)604、设有定义语句 int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是A)for(i=0;i<6;i++) printf("%2d",*(p++));B)for(i=0;i<6;i++) printf("%2d",*(p+i));C)for(i=0;i<6;i++) printf("%2d",*p++);D)for(i=0;i<6;i++) printf("%2d",(*p)++);5、有以下程序#include < stdio.h >main(){ int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q=*(p+5);printf("%d %d\n",*p,*q); }程序运行后的输出结果是A)运行后报错 B)6 6 C)6 11 D)5 106、有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是A)5 B)6 C)8 D)97、已有定义:int i,a[10],*p;则合法的赋值语句是A)p=100; B)p=a[5]; C)p=a[2]+2; D)p=a+2;8、以下能正确定义一维数组的选项是A)int num []; B)#define N 100int num [N];C)int num[0..100]; D)int N=100;int num[N];9、有以下程序main(){ int p[7]={11,13,14,15,16,17,18},i=0,k=0;while(i< 7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}执行后输出结果是A)58 B)56 C)45 D)2410、有以下程序main(){ int x[8]={8,7,6,5,0,0},*s;s=x+3;printf("%d\n",s[2]);}执行后输出结果是A)随机值 B)0 C)5 D)611、若有定义:int aa[8];。
指针数组函数练习(含参考答案).
for(i=0;i
printf("%.0f\t",array[i];
Transfer(array,N;
printf("\n";
for(i=0;i
printf("%.0f\t",array[i];
printf("\n";
}
3.编写一个通用函数,该函数可以实现求数值型二维数组的上三角各元素的平方根的和(即先对上三角各元素求平方根,然后再对平方根求和)。编写主程序调用该函数,计算数组A的上三角元素的平方根的和。
scanf("%d",#
Transfer(num;
}
5.编写一个通用函数,该函数可以实现把一个十进制的正整数转换成七进制。例如把88转换成154。编写主程序调用该函数,把整数123455转换成七进制并输出。
注:把一个十进制的整数转换成七进制的方法是:把十进制数当作被除数,用7除,直到商为0为至,然后把余数倒序即可。例88除7的余数依次是4、5、1,则其七进制为:154。
注:把一个十进制的整数转换成二进制的方法是:把十进制数当作被除数,用2除,直到商为0为止,然后把余数倒序即可。例18除2的余数依次是0、1、0、0、1,则其二进制为:10010。
#include
void Transfer(int num
{
int a[100];
int count=0;
while(num!=0
return 1;
else
return 0;
}
void main(
{
int count=0;
long i;
for(i=10000;i<=99999;i++
计算机等级考试二级C语言之二维数组与指针--题+答案
D) 定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
(10) 有以下程序
main()
{ int a[3][3], *p, i;
p=&a [0][0] ;
for ( i=0 ; i<9 ; i++) p[i]=i+1;
(5) 若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是
A) p+1
B) *(p+3)
C) *(p+1)+3
D) *(p[0]+2))
(6) 有以下定义和语句
int a[3][2]={1,2,3,4,5,6,},*p[3];
pa=a;
for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
}
执行后输出结果是
A) 7
B) 6
C) 8
for(i=1;i<3;i++)
for(j=0;j<=i;j++)s+=a[i][j];
printf(“%dn”,s);
}
(21) 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是
A) &t[3][2]
B) t[3]
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#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语言第2次练习题一.选择题1)一个C程序的执行是________.A.从程序的main( )函数开始执行。
B.从本程序的第一个函数开始执行。
C.从本程序第一条语句开始执行D.从#include 处开始执行3) 定义 int a, *p1; 若使p1指向a,在程序中应使用_______。
A.*p1=&a; B. p1=&a; C. p1=a; D. p1=*a;4) 下列为一维数组初始化时, 正确的是_______.A)int a[ ]={1,3,5,….15};B) int a[5]=1; C) int a[3]={5,6,8,3}; D) int a[5]={0};5).下列要将2,4,6,8存入数组a中,不正确的是______.B)int a[4]={2,4,6,8}; B) int a[ ]={2,4,6,8};C) int a[4]; a={2,4,6,8}; D) int a[4]; a[0]=2;a[1]=4,a[2]=6;a[3]=8;6).下列二维数组定义并初始化中, 正确的是A) int a[2][ ]={{3,4},{5,10,15}};B) int a[2][3]={2,3,4,5,6,7,8,9};C) int a[ ][3]={{0},{1,2},{3,4,5}};D) int a[ ][4]={(1,2,4,5),(2,3),(3,4,9),(5,6,8)};7). 若有说明: int a[5][5]; 则对数组元素的正确引用是______.A) a[3+2][3] B) a[0,3] C) a[4][1+2] D) a[ ][2]8).若有定义: char ch[ ]=”book120”; 则数组ch的存储长度是____;A) 7 B) 8 C)9 D)109) 设有定义: char s[20]; 向数组s中输入含有中间空格的字符串应使用的语句是______.A)scanf(“%s”,&s);B) scanf(“%s”,s);C)s=getchar(); D)gets(s);10).在数组: int a[][3]={{1},{3,2},{4,5,6},{0}}; 中, 数组元素a[2][1]的值是________.A)3 B) 4 C) 5 D) 211) 以下字符串赋值错误的是________。
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删除。
数组和指针 笔试题
数组和指针笔试题当然!以下是一个关于数组和指针的笔试题:题目:编写一个函数,接收一个整型数组和数组的长度作为参数,并将数组中的元素逆序存放。
要求:只能使用指针来操作数组,不能使用任何其他的辅助数组或临时变量。
示例输入:arr = [1, 2, 3, 4, 5], length = 5示例输出:arr = [5, 4, 3, 2, 1]请编写代码实现该功能,并给出示例输入的输出结果。
以下是示例代码:```c#include <stdio.h>void reverseArray(int *arr, int length) {int *start = arr;int *end = arr + length - 1;while (start < end) {int temp = *start;*start = *end;*end = temp;start++;end--;}}int main() {int arr[] = {1, 2, 3, 4, 5};int length = sizeof(arr) / sizeof(arr[0]);printf("原数组:");for (int i = 0; i < length; i++) {printf("%d ", arr[i]);}reverseArray(arr, length);printf("\n逆序后的数组:");for (int i = 0; i < length; i++) {printf("%d ", arr[i]);}return 0;}```以上代码定义了一个reverseArray函数,该函数通过使用指针实现了将数组元素逆序存放的功能。
在主函数中,我们定义了一个示例数组arr,并计算出数组的长度。
然后调用reverseArray函数对数组进行逆序操作,并打印出逆序后的数组。
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#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个),存放在一个一维数组中,计算这组数的平均值(实型)。
第五章_数组与指针习题
第五章数组与指针习题一、.基本概念与基础知识自测题5.1 填充题5.1.1 数组定义时有三个要素:数组名,数组元素的(1)和数组元素的(2)。
按元素在数组中的位置进行访问,是通过(3)进行的,称为(4)或(5)访问。
为了使数组声明中数组的大小修改更为方便,总是将(6)用于声明数组长度。
答案:(1)类型(2)数量(3)下标运算符(4)下标(5)索引(6)常变量5.1.2 C/C++中的多维数组用的是一个(1)的定义,即多维数组的基本定义是(2)构成的数组,三维数组的元素是(3)。
答案:(1)嵌套(2)以数组作为元素(3)二维数组5.1.3 计算机内存是一维编址的,多维数组在内存中的存储(1),C/C++多维在内存中的排列是(2)方式,即越(3)的下标变化(4)。
设数组a有m行n列,每个元素占内存u个字节,则a[i][j]的首地址为(5)+ (6)。
答案:(1)必须要转化为一维方式,(2)按行方式(3)右(4)越快(5)a数组的首地址(6)(i*n+j)*u5.1.4 对于多维数组,(1)的大小是确定的,所谓“不检查数组边界”只是不检查(2)的边界,而(3)的边界是在控制之中的,所以多维数组名作为函数的参数只可以(4)缺省。
答案:(1)较低各维的(2)最高维(第一维)(3)较低各维(4)最高维5.1.5 指针变量保存了另一变量的(1)值,不可以任意给指针变量赋一个地址值,只能赋给它(2)和(3)的地址。
使用变量名来访问变量,是按(4)来直接存取变量称为(5)方式;而借助指针变量取得另一变量的地址,访问该变量称为(6)方式。
答案:(1)地址(2)NULL(3)已经分配了内存的变量的地址(4)按变量的地址(5)直接访问(6)间接访问5.1.6 固定指向一个对象的指针,称为(1),即(2),定义时const放在(3)。
而指向“常量”的指针称为(4),指针本身可以指向别的对象,但(5),定义时const放在(6)。
指针和数组习题
一、1 数组可以在定义时整体赋初值,但不能在赋值语句中整体赋值。
()2. 取数组a的第5个元素的地址,正确的写法是()A) *a[4] B) &a[4]C) a[4] D) *(a+4)3. 程序段输出结果是()int main(){double number = 12345.12345678;cout << setw(10) << setprecision(5) << number << endl;cout << setw(10) << setprecision(10) << number << endl;return 0;}12345 B)12345 C) 12345 D) 1234512345.12346 12345.12345 12345.12345 12345.12354、若x为整形变量,p是基类型为整形的指针变量,则正确的赋值表达式()A p=&xB p=xC *p=&xD *p=*x5,设p1和p2均为指向同一个int型一维数组的指针变量,k为int型变量,下列不正确的语句是()A k=*p1+*p2B k=*p1*(*p2)C p2=kD p1=p26.对于相同类型的指针变量,不能进行()运算。
A,+ B,- C,= D,==7.有函数定义如下,则其返回值为()int *f(int a){Int*p,n;n=a;p=&n;return p;}A 一个不可用的存储单元地址值B一个不可用的存储单元地址值C n中的值D 形参a中得值8,下列关于字符串的描述中,错误的是()A,一维字符数组可以存放一个字符串B,可以用一个字符串给二维字符数组赋值C,二维字符数组可以存放多个字符串D;可以用一个字符串给二维字符数组进行初始化9;下列关于字符数组的描述中,错误的是()A.字符数组中得每一个元素都是字符B,字符数组可以使用初始值表进行初始化C,字符数组可以存放字符串D 字符数组就是字符串10;下列关于数组下标的描述中,错误的是()A;C++中,数组元素的下标是从0开始的B,数组元素下标是一个整型常量表达式C,数组元素可以用下标来表示D,数组元素的某维数下标值应小于该维的大小11,下面能正确地将字符串“C++”进行完整赋值操作语句的是()A char s【3】={‘C’,‘+’,‘+’}B char s【】=“C++”C,char s【3】={“C++”} D,char s【3】;s【0】=‘C’;s 【1】=‘+’;s【2】=‘+’;12,在C++中,二维数组元素在内存中的存放顺序为()A.按行存放B。
132实验十三数组指针和函数综合编程练习参考答案.doc
数组、指针和函数综合编程练习:打印最高分和学号假设每班人数最多不超过40人,具体人数由键盘输入,试编程打印最高分及其学号。
程序1 用一维数组和指针变量作为函数参数,编程打印某班一门课成绩的最高分及其学号。
/*以一维数组的数组名作函数参数,实参、形参均为数组以指针变量作函数形参,通过该指针变量间接访问主调函数中的变量,并修改其值*/#include <stdio.h>#define ARR_SIZE 40int FindMax(int score[ ], long num[ ], int n, long *pMaxNum);void main(){int score[ARR_SIZE], maxScore, n, i;long num[ARR_SIZE], maxNum;printf("Please enter total number:");scanf("%d", &n); /*从键盘输入学生人数n*/printf("Please enter the number and score:\n");for(i=0; i<n; i++) /*分别以长整型和整型格式输入学生的学号和成绩*/{scanf("%ld%d", &num[i], &score[i]);}maxScore = FindMax(score, num, n, &maxNum); /*计算最高分及学生学号*/printf("maxScore = %d, maxNum = %ld\n", maxScore, maxNum);}/* 函数功能:计算最高分及最高分学生的学号函数入口参数:整型数组score,存放学生的成绩长整型数组num,存放学生的学号函数出口参数:长整型指针变量pMaxNum,指向最高分学生的学号函数返回值:最高分*/int FindMax(int score[ ], long num[ ], int n, long *pMaxNum){int i;int maxScore;maxScore = score[0];*pMaxNum = num[0]; /*假设score[0]为最高分*/ 以一维数组的数组名作函数参数,实参、形参均为数组for (i=1; i<n; i++){if (score[i] > maxScore){maxScore = score[i]; /*记录最高分*/*pMaxNum = num[i]; /*记录最高分学生的学号num[i]*/ }}return (maxScore); /*返回最高分maxScore*/}程序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.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。
C++指针数组试题
(一)填空题1.一个指针类型的对象占用内存的______个字节的存储空间.2.一个指针类型指向一个数据对象,它保存着该数据对象的______,若数据对象为DataType类型,则该指针的类型为__________.3.若要把一个整形指针P转换为字符指针,则采用的强制转换表达式为__________.4.假定一个数据对象为int *类型,则采用的强制转换表达式为________.5.假定P是一个指向整数对象的指针,则用___________表示该整数对象,用_________表示指针变量P的地址.6.假定P是一个指针,则*P++运算首先访问____________,然后使_______的值增1.7.假定P是一个指针,则(*P)++运算首先访问_____________,然后使_________的值增1.8.假定P所指对象的值为25,P+1所指对象的值为42,则*P++的值为________.9.假定P所指对象的值为25,P+1所指对象的指为42,则*++P的值为________.10.假定P所指对象的值为25,P+1所指对象的值为42,则执行(*P)++运算后,P所指对象的值为_______.11.假定P所指对象的值为25,P+1所指对象的值为42,则执行*(P++)或*P++运算后,P所指对象的值为________.12.假定A是一个一维数组,则A[i]的指针访问方式为________.13.一个数组的数组名实际上是指向该数组__________元素的指针,并且在任何时候都不允许_______它.14.若要定义整形指针P并初始指向X,则所使用的定义语句为_______________.15.若P指向X,则______与X的表示是等价的.16.在一个二维数组int a[m][n]中,包含的一维元素a[i]的类型为________,访问a[i]时返回值的类型为_______.17.假定a是一个二维数组,则a[i][j]的指针访问方式为_____________.18.若y是x的引用,则&y和&x的值______,即为变量______的地址.19.招待int *p=new int[10]操作,使p指向动态分配的数组中下标为________的元素,该元素可表示为_______或_________.20.执行char *p=new char(‘a’)操作后,p所指向的数据对象的值为_________.21.执行__________操作将释放由P所指向的动态分配的数据空间.22.执行__________操作将释放由P所指向的动态分配的数组空间.(二)写出下列每个程序运行后的输出结果并上机验证1.#include<iostream>void main(){ char a[15]=”1352460357589”;char *p=a;int c1,c3,c5;c1=c3=c5=0;while(*p){ if(*p==’1’) c1++;else if(*p==’3’) c3++;else if(*p==’5’) c5++;p++;}cout<<c1<<’‘<<c3<<’‘<<c5<<endl; } 2. #include<iomanip.h>void main(){int a[8]={3,5,7,9,11,13,15,17};int *p=a;for(int i=0;i<8;i++){cout<<setw(5)<<*p++;if((i+1)%4==0) cout<<endl;}} 3.#include<iostream>void main(){int a[8]={46,38,72,55,24,63,50,37};int s=0;int *p=a+3;while(p<a+8) s+=*p++;cout<<s<<' '<<s/5<<' '<<float(s)/5<<endl; }4. #include<iostream>void main(){int a[8]={46,38,72,55,24,63,50,37};int max=*a,min=*a;for(int *p=a+1;p<a+8;p++){if(*p>max) max=*p;if(*p<min) min=*p;}cout<<max<<' '<<min<<endl;}5. #include<iomanip>void main(){int a[5]={3,6,9,12,15};int *p=a;for(int i=0;i<5;i++)cout<<setw(5)<<*p++;cout<<endl;for(i=0;i<5;i++)cout<<setw(5)<<*--p;cout<<endl;}6. #include<iomanip>void main(){int a[8]={4,8,12,16,20,24,28,32};int *p=a;do{cout<<*p<<' ';p+=2;}while(p<a+8);cout<<endl;}7. #include<iomanip>void main(){int x=20,y=40,*p;p=&x;cout<<*p<<' ';*p=x+10;p=&y; cout<<*p<<endl;*p=y+20; cout<<x<<' '<<y<<endl;}8. #include<iostream>void main(){int x=12, *xp=&x;*xp=x+5;cout<<*xp<<' '<<x<<endl;x+=2**xp+1;cout<<*xp<<' '<<x<<endl;}9. #include<iostream>void main(){char a[3][15]="computer","typewriter","telephone";char (*p)[15]=a;for(int i=0;i<3;i++)cout<<*p++<<endl;} 10. #include<iostream>#include<string>typedef char AA[10];void main(){AA a,b="camera";char *ap=a,*bp=b+strlen(b);while(bp!=b) *ap++=*--bp;*ap='\0';cout<<a<<' '<<b<<endl;}11. #include<iostream>const n=5;void main(){int a[n]={3,10,5,4,7};int *p1=a,*p2=a+n-1;while(p1<p2){int x=*p1;*p1=*p2;*p2=x;p1++;p2--;}for(int i=0;i<n;i++)cout<<*(a+i)<<' ';cout<<endl;}12. #include<iostream>void main(){int x=24;int &y=x;cout<<x<<' '<<y<<endl;y=46; x=y+3;cout<<x<<' '<<y<<endl;}13. #include<iostream>void main(){int x=23;int *p1=new int(5);int *p2=new int(x-8);cout<<*p1<<' '<<*p2<<endl;int temp=*p1;*p1=*p2;*p2=temp;cout<<*p1<<' '<<*p2<<endl;delete p1; delete p2;}14. #include<iomanip> const int n=12; void main() { int *a=new int[n]; a[0]=0; a[1]=1; for(int i=2;i<n;i++) a[i]=a[i-1]+a[i-2]; for(i=0;i<n;i++) { cout<<setw(5)<<a[i]; if((i+1)%6==0) cout<<endl; } delete []a; } (三) 编写下列程序并上机运行1. 有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前二项之和,试产生出此数列的前20项,并按逆序显示出来.2. 从键盘上输入一个字符串,假定该字符串的长度不超过30,试统计出该串中所有十进制数字字符个数. 3. 首先从键盘上输入一个4行4列的一个实数矩阵列到一个二维数组中,然后求出主列角线上元素之乘积. 4.已知一个数组矩阵为求出该矩阵的转置矩阵.并输出出来,其中转置矩阵中的[i][j]位置上的元素等于矩阵中的[j][i]位置上的元素.5.首先让计算机随机产生出10个两位正整数,然后按照从小到大的次序显示出来.6.从键盘上输入一个字符串,假定字符串的长度小于80,试分别统计出每一种英文字母(大,小写等同看待)的个数并输出出来.7.已知一个矩阵A 为另一个矩阵B 为求出A 与B 的乘积矩阵C[3][4]并输出出来,其中C 中的每个元素C[[i][j]等于 A[i][0]*B[0][j]+A[i][1]*B[1][j]+A[i][2]*B[2][j]+A[i][3]*B[3].。
数组指针习题讲解
22.有以下程序: #include<stdio.h> void f(char p[][10], int n) /*字符串从小到大排序*/ { char t[10];int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0) { strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);} } main( ) { char p[5][10]={"abc", "aabdfg", "abbd", "dcdbe", "cd"}; f(p,5); printf("%d\n",strlen(p[0])); } 程序运行后的输出结果是( )。 A .2 B.3 C.4 D.6 23.若二维数组a有m列,则在a[i][j]之前的元素个数为( )。 A.j*m+I B.i*m+j C.i*m+j-1 D.i*m+j+1
18.已知:static int a[3][4]={0};则下面正确的叙述是( )。 A.只有元素a[0][0]可得到初值0 B.此说明语句是错误的 C.数组a中每个元素都可得到初值,但其值不一定为0 D.数组a中每个元素均可得到初值0 19.已知:int a[]={1,2,3,4,5,6,7,8,9,10};则值为5的表达式是( )。 A.a[5] B.a[a[3]] C.a[a[4]] D.a[a[5]] 20.在C语言中,二维数组元素在内存中的存放顺序是( )。 A.按行存放 B.按列存放 C.由用户自己定义 D.由编译器决定 21.对以下说明语句的正确理解是( )。 int a[10]={6,7,8,9,10}; A.将5个初值依次赋给a[1]~a[5] B.将5个初值依次赋给a[0]~a[4] C.将5个初值依次赋给a[6]~a[10] D.因为数组长度与初值的个数不相同,所以此语句不正确
C语言指针习题及答案
指针主要内容的习题及答案一.选择题1.变量的指针,其含义是指该变量的 B 。
A)值B)地址C)名D)一个标志2.已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是 B 。
A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) 3.若有说明:int *p,m=5,n;以下程序段正确的是 D 。
A)p=&n ; B)p = &n ;scanf(“%d”,&p); scanf(“%d”,*p);C)scanf(“%d”,&n); D)p = &n ;*p=n ; *p = m ;4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是 D 。
void print_value(int *x){ printf(“%d\n”,++*x); }A)23 B)24 C)25 D)265.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是C 。
A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ; C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ;6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是D 。
A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p 7.下面判断正确的是 C 。
A)char *a=”china”; 等价于char *a; *a=”china” ;B)char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”;}C)char *s=”china”; 等价于char *s; s=”china” ;D)char c[4]=”abc”,d[4]=”abc”; 等价于char c[4]=d[4]=”abc” ;8.下面程序段中,for循环的执行次数是 C 。
指针经典练习题(含答案版)一
指针一.填空题(20分)1. 指针变量是把内存中另一个数据的地址作为其值的变量。
2. 能够直接赋值给指针变量的整数是 0。
3. 如果程序中已有定义:int k;1)定义一个指向变量k的指针变量p的语句是 int* p = &k; 。
2)通过指针变量,将数值6赋值给k的语句是 *p = 6; 。
3)定义一个可以指向指针变量p的变量pp的语句是 int ** pp; 。
4)通过赋值语句将pp指向指针变量p的语句是 pp = &p; 。
5)通过指向指针的变量pp,将k的值增加一倍的语句是 *(*pp)*= 2; 。
4. 当定义某函数时,有一个形参被说明成int *类型,那么可以与之结合的实参类型可以是int型指针、 int型数组等。
4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。
例如,输入的字符串为:556,则输出十进制整数366。
请填空。
45*8#include <stdio.h>main( ){ char *p,s[6]; int n; p=s; gets(p); n=*p-'0';while( *++p != '\0') //先++ ,后*n=n*8+*p-'0';printf("%d \n",n);}二.选择题(22分)1. 以下count函数的功能是统计substr在母串str中出现的次数。
int count(char *str,char *substr){ int i,j,k,num=0;for(i=0; ①B ;i++){for( ②B ,k=0;substr[k]==str[j];k++,j++)if(substr[ ③C ]==’\0’){num++;break;}}return num;}①A) str[i]==substr[i] B) str[i]!=‘\0’C) str[i]==‘\0’ D) str[i]>substr[i]②A) j=i+1 B) j=i C) j=i+10 D) j=1③A) k B) k++ C) k+1 D) ++k2. 以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符)。
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程序设计》练习题指针和数组
第10章指针和数组1.设int x[4]={10,20,30,40}, y, *p=&x[1];则执行语句y=(*--p)++;后变量y的值为_____。
2.下列程序片段中不正确的字符串赋值或初始化方式是_____。
A. char *str; str="string";B. char str[7]={'s','t','r','i','n','g','\0'};C. char str[10]; str="string";D. char str []="string";3.有以下定义及语句,则对数组a元素的不正确引用的表达式是_____。
int a[4][5];*p[2],j;for (j = 0 ; j <4 ; j++)p[j]=a[j];A. p[0][0]B. *(a+3)[4]C. *(p[1]+2)D. *(&a[0][0]+3)4.若有下列的程序段,则对数组元素的错误引用是_____。
int a[12] = {0}, *p[3], ** pp, j;for (j = 0 ; j < 3 ; j++)p[j]=&a[j*4];pp = p ;A. pp[0][1]B. a[10]C. p[3][1]D. *(*(p+2)+2)5.如有以下定义和语句,int a[5]={ 9,8,7,6,5}, *p ;p=&a[3];则*--p的值是_____。
6.若有定义:int a[3][2]={2,4,6,8,10,12}; 则*a[1]+1的值是_____。
7.下述函数通过递归方法将字符串倒置,使用时需要指定字符数组的首地址、起始下标。
请填空。
#include<stdio.h>void fun(char *s,int low,int high){if ( )return;else{char t;fun( );t=s[low];s[low]=s[high];s[high]=t;}}8.阅读以下程序说明和C程序,把应填的内容写入空格处。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、1 数组可以在定义时整体赋初值,但不能在赋值语句中整体赋值。
()2. 取数组a的第5个元素的地址,正确的写法是()A) *a[4] B) &a[4]C) a[4] D) *(a+4)3. 程序段输出结果是()int main(){double number = 12345.12345678;cout << setw(10) << setprecision(5) << number << endl;cout << setw(10) << setprecision(10) << number << endl;return 0;}12345 B)12345 C) 12345 D) 1234512345.12346 12345.12345 12345.12345 12345.12354、若x为整形变量,p是基类型为整形的指针变量,则正确的赋值表达式()A p=&xB p=xC *p=&xD *p=*x5,设p1和p2均为指向同一个int型一维数组的指针变量,k为int型变量,下列不正确的语句是()A k=*p1+*p2B k=*p1*(*p2)C p2=kD p1=p26.对于相同类型的指针变量,不能进行()运算。
A,+ B,- C,= D,==7.有函数定义如下,则其返回值为()int *f(int a){Int*p,n;n=a;p=&n;return p;}A 一个不可用的存储单元地址值B一个不可用的存储单元地址值C n中的值D 形参a中得值8,下列关于字符串的描述中,错误的是()A,一维字符数组可以存放一个字符串B,可以用一个字符串给二维字符数组赋值C,二维字符数组可以存放多个字符串D;可以用一个字符串给二维字符数组进行初始化9;下列关于字符数组的描述中,错误的是()A.字符数组中得每一个元素都是字符B,字符数组可以使用初始值表进行初始化C,字符数组可以存放字符串D 字符数组就是字符串10;下列关于数组下标的描述中,错误的是()A;C++中,数组元素的下标是从0开始的B,数组元素下标是一个整型常量表达式C,数组元素可以用下标来表示D,数组元素的某维数下标值应小于该维的大小11,下面能正确地将字符串“C++”进行完整赋值操作语句的是()A char s【3】={‘C’,‘+’,‘+’}B char s【】=“C++”C,char s【3】={“C++”} D,char s【3】;s【0】=‘C’;s 【1】=‘+’;s【2】=‘+’;12,在C++中,二维数组元素在内存中的存放顺序为()A.按行存放B。
按列存放C,有用户自己定义D,有编译器决定二、解释下列语句含义(10分)(1)int *p(); 语句含义:____________________________________________________(2)int (*p)(); 语句含义:__________________________________________________(3)int (*p)[3]; 语句含义:_________________________________________________(4)int *p[4]; 语句含义:___________________________________________________(5)int **p; 语句含义:____________________________________________________三、阅读程序选择正确答案填空程序功能:检查给定字符串s是否满足下列两条件:1、从字符串首字符起,在顺序检查s中的字符的过程中,遇到的右括号“)”的个数在任何时候均不超过所遇到的左括号“(”的个数;2、字符串s中左括号“(”的个数与右括号“)”的个数相同。
若字符串s同时满足上述条件1和条件2,函数返回非0值,否则返回0值。
int check( (1) ) (){int lp, rp;lp = 0;rp = 0;while ((2)) (){if ( *s == '(' )lp++;else if ( *s == ')' ){rp++;if ((3) ) ()return 0;}(4) ; ()}return ((lp != rp) ? 0 : 1);}(1) A. char *s B. char s[][] C. char s D. char s[](2) A. *s B. *s == 0 C. *s != 0 D. s(3) A. rp > lp B. rp < lp C. rp == lp D. rp != lp(4) A. s++ B. (*s)++ C. ++(*s) D. ++s四、阅读程序(22分)(1)下面程序运行会出错吗?如果会,请改正。
(4分)#include <stdio.h>main(){char buffer[128];int c;int pos=0;while((c=getchar()) != EOF){buffer[pos++] = c;}printf("%s", buffer);}(2)给下面程序找错。
请标注在程序上,并给予恰当的文字说明。
(6分)#include <stdio.h>main(){int size=10, i;float f[size];for (i=0; i<=size; i++)scanf("%f", f[i]);if (f[0] = f[10])printf("您输入的第一个数和最后一个数相等\n");}(3) 输入一行字符(最多80个),统计其中的大写字母,小写字母,数字,空格及其它字符的个数。
#include <stdio.h>#define UCASE 0#define LCASE 1#define NUM 2#define SPACE 3#define OTHER 4Int main(){int i=0;char temp;int letter[5]={0};while(temp=getchar()!=’\n’){if(temp>=’A’&&temp<=’Z’)letter[UCASE]++;else if(temp>=’a’&&temp<=’z’)letter[LCASE]++;else if(temp>=’0’&&temp<=’9’)letter[NUM]++;else if(temp==’’)letter[SPACE]++;else letter[OTHER]++;}printf(“Upper case: %d\nLower case: %d\nNumber: %d\n\Space: %d\n\);return 0;}(4) 用户输入若干个(不超过20个)小于100的正整数,编程求出这些数的最大值、最小值和平均值。
用户输入一个负数表示输入结束。
/*这题……让输入正整数,负数表示结束,输入0咋整……*/#include <stdio.h>main(){int i=0,temp;int max=0,min=100,sum=0;int num[20];while(scanf(“%d”,temp)==1){if(temp<=0)break;if(temp>max)max=temp;if(temp<min)min=temp;sum+=temp;num[i]=temp;i++;}if(i==0)printf(“No input.\n”);else{printf(“Max: %d\n”,max);printf(“Min: %d\n”,min);printf(“Average: %lf\n”,sum/(double)i);}}(5) 利用memcpy()函数实现char* my_strcpy(char* dst, char* src)函数,把字符串src拷贝到dst内,并返回dst。
char* my_strcpy(char *dst,char *src){int i=0;while(*(src+(i++)));return (char *)memcpy(dst,src,i);}(6) 用户输入一行字符串,可能输入的字符个数不定,以回车作为结束标志。
统计用户的输入中一共有多少个单词。
单词之间以空格或者\t作为分隔。
#include <iostream>#include <string>using namespace std;int main(){int word=0;string input;getline(cin,input);for(int i=0;i<input.size();i++){if(input[i]==’’||input[i]==’\t’)word++;}if(input[input.size()-1]!=’’||input[input.size()-1]!=’\t’)word++;cout<<word<<endl;return 0;}(7). 分析下面的程序,请找到并改正其中的任意五行错误或不当的代码,不改正不得分(可以在题目上直接改)。
统计字符数。
判断一个由’0’ ~ ‘9’这10个字符组成的字符串中哪个字符出现的次数最多。
输入数据:第一行是测试数据的组数m,每组测试数据占1行,每行数据不超过1000个字符且非空。
输出要求:m行,每行对应一组输入,包括出现次数最多的字符和该字符出现的次数。
如果有多个字符出现的次数相同且最多,那么输出ASCII码最小的那一个。
#include <iostream>using namespace std;main() {int cases, sum[10], i, max;char str[1000];cin >> case;while (cases > 0) {cin.getline(str, 1000);for (i = 0; i < 10; i++)sum[i] = 0;for (i = 0; i < strlen(str); i++)++sum[str[i] - 0];max = 0;for (i = 1; i < 10; i++)if (sum[i] >= sum[max]) max = i;cout << max + '0' << sum[0];cases--;}}(8)写出下面程序的执行结果。