一、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,设p1p2均为指向同一个int型一维数组的指针变量,kint型变量,下列不正确的语句是(
A  k=*p1+*p2  B  k=*p1**p2 C  p2=k  D  p1=p2
6.对于相同类型的指针变量,不能进行( )运算。   
A  +    B  -  C =    D  ==
7.有函数定义如下,则其返回值为(
    int *fint a
{
Int*pn
n=a
p=&n
return p
}
一个不可用的存储单元地址值 
B一个不可用的存储单元地址值
C  n中的值
D 形参a中得值
8,下列关于字符串的描述中,错误的是(
A,一维字符数组可以存放一个字符串
B,可以用一个字符串给二维字符数组赋值
C,二维字符数组可以存放多个字符串
D;可以用一个字符串给二维字符数组进行初始化
9;下列关于字符数组的描述中,错误的是(
A.字符数组中得每一个元素都是字符
B,字符数组可以使用初始值表进行初始化
C,字符数组可以存放字符串
D 字符数组就是字符串
10;下列关于数组下标的描述中,错误的是(
AC++中,数组元素的下标是从0开始的
B,数组元素下标是一个整型常量表达式
C,数组元素可以用下标来表示
D,数组元素的某维数下标值应小于该维的大小
11,下面能正确地将字符串“C++”进行完整赋值操作语句的是(
A  char s3={C’,‘+’,‘+}  B  char s【】=C++
Cchar s3={C++}    Dchar s3】; s0=C’;s 1=+’;s2=+’;
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 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小时内删除。