一、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) 12345
12345.12346 12345.12345 12345.12345 12345.1235
4、若x为整形变量,p是基类型为整形的指针变量,则正确的赋值表达式 ( 指针与二维数组)
A p=&x B p=x C *p=&x D *p=*x
5,设p1和p2均为指向同一个int型一维数组的指针变量,k为int型变量,下列不正确的语句是( )
A k=*p1+*p2 B k=*p1*(*p2) C p2=k D p1=p2
6.对于相同类型的指针变量,不能进行( )运算。
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值。
程序功能:检查给定字符串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
(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 4
Int 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个字符且非空。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论