一、判断题 <20分>
1. 语句char *p = "Turbo C"的含义是将字符串赋给字符型指针变量p.2分
2. 若指针变量指向一维数组的第一个元素,将指针变量加整数3,即指针后移3个元素.
3. b是一维数组名,数组元素b[1]还可写成*<b++>.2分
4. 对二维数组a来说,由于a+1与*<a+1>的值相等,因此二者的含义是一样的.2分
5. 在二维数组中,行指针是指向一维数组的指针变量.2分
6. 取地址运算符&与指针运算符*的优先级相同,结合方向为自右向左.2分
7. 两个字符串中的字符个数相同时才能进行字符串大小的比较2分
8. 字符串不能用指针进行引用2分
9. char c[]="Very Good"; 是一个合法的为字符串数组赋值的语句.2分
10. char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl".2分
二、选择题 <24分>
1.下面程序段的运行结果是<  >. [B] 2分
char str[]="ABC",*p=str;
printf<"%d\n",*<p+3>>;
A. 67     B. 0     C. 字符′C′的地址     D. 字符′C′
2.阅读下列程序,则执行后的结果为<  >. [B] 2分
#include "stdio.h"
int main<>
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
  printf<"%x,%x",c[2][2],*<*<c+1>+1>>;
}
A. 62,5     B. 3e,6     C. 56,5     D. 3E,6
3.下面程序段的运行结果是<  >.   [C] 2分
char *s="abcde";
s+=2;
printf<"%d",s>;
A. cde     B. 字符′c′     C. 字符′c′的地址     D. 无确定的输出结果
4.若有变量定义 int x=3,*p;,则下面语句不正确的是<    >.   [A] 2分
A. p=&<x+1>;     B. p=&x;     C. p=&x+1;     D. p=&x, p++;
5.指针变量p1、p2类型相同,要使p2、p1指向同一变量,哪一个语句是正确的〔〕.A] 2分
A. p2=*&p1;     B. p2=**p1;     C. p2=&p1;     D. p2=*p1
6.若有语句:char *line[5];,以下叙述中正确的是<  >.  [A] 2分
A. 定义line是一个数组,每个数组元素是一个基类型为char为指针变量.
B. 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组.
C. 定义line是一个指针数组,语句中的*号称为间址运算符.
D. 定义line是一个指向字符型函数的指针.
7.若有数组定义为int a[10],i; 与a[i]=100 等价的赋值表达式是   [B] 2分
A. a+i=100     B. *<a+i>=100     C. <a+i>=100     D. &a[i]=100
8.定义函数int *max<>的正确含义是〔〕.   [B] 2分
A. 返回整型值的函数     B. 返回指向整型变量的指针     
C. 返回指向函数max<>的指针     D. 上面的叙述都不正确
9.若有定义"int <*ptr><float>;",其正确的含义是〔〕.   [C] 2分
A. ptr是指向一维数组的指针变量
B. ptr是指向int型数据的指针变量
C. ptr是指向函数的指针变量,该函数有一个float型参数,返回值是整型
D. ptr是一个函数名,该函数的返回值是指向int型数据的指针
10.若有定义char a[15]="ab\110\\cd\'\\ne";则strlen<a>返回值和sizeof<a>的返回值分别为〔〕.   [C] 2分
A. 11,15     B. 17,11     C. 10,15     D. 18,11
11.若有定义char a[15]="ab\110\\cd\'\\ne";则strlen<a+5>返回至为〔〕.   [D] 2分
A. 8     B. 10     C. 17     D. 5
12.char s[]="a\128b\\\tcd\xdg\n";则数组s的字符串长度为〔〕.  [C] 2分
A. 12     B. 10     C. 11     D. 18
三、程序填空题 <26分>
1. 功能:建立一个如下的二维数组,并按以下格式输出.
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1 10分
#include <stdio.h>
int main<>
{
int a[5][5]={0},*p[5],i,j;
for<i=0;i<5;i++>
    p[i]=__<1>__;
for<i=0;i<5;i++>
{
    *< __<2>__ +i>=1;
    *<p[i]+5-< __<3>__ >>=1;
  }
  for<i=0;i<5;i++>
  {
    for<j=0;j<5;j++>
    printf<"%2d",p[i][j]>;
      putchar<'\n'>;
  }
}               
<1>答案 4分&a[i][0]                   
<2>答案 3分p[i]                   
<3>答案 3分i+1                   
2. 输入一个星期几的数值〔0-6〕,输出该星期几的英文名 8分
#include <stdio.h>
void week<int no>
{   
    char *w[]={"Sunday","Monday","Tuesday.","Wednesday","Thursday","Friday","Saturday"};
    if<no>=0&&no<=6>
    puts<__<1>__>;
    else
    printf<"星期数值输入错误\n">;
}
void main<>
{
    int w;
    scanf<"%d",&w>;
    __<2>__;
}               
<1>答案 4分w[no]                   
<2>答案 4分week<w>                   
3. 功能:输入3个字符串,输出最大字符串. 8分
#include<stdio.h>
#include<string.h>
void main<>
{
  char s[80],__<1>__;
  int i;
  scanf<"%s",s>;
  strcpy<max,__<2>__>;
  for<i=1;i<=2;i++>{
      scanf<"%s",s>;
      if<strcmp<__<3>__,s><0>
    strcpy<max,s>;
}
    printf<"%s\n",max>;
}               
<1>答案3分max[80]                   
<2>答案 3分s                   
<3>答案 2分max                   
四、程序设计题 <30分>
1. 输入10个数,按绝对值从小到大排序后输出,要求定义一个函数sort,完成绝对值从小到大排序.〔用指针完成〕 10分
题目描述
输入10个数,按绝对值从小到大排序后输出,要求定义一个函数sort,完成绝对值从小到大排序.〔用指针完成〕             
输入描述
输入10个数             
输出描述
按绝对值从小到大排序             
样例输入
3 5 7 2 1 -15 3 8 9 4               
样例输出
1 2 3 3 4 5 7 8 9 -15
#include <stdio.h>
#include <math.h>
void sort < float *p, int n >
{
    int i,j;
    float *q, temp;
    //选择法排序
    for <i=0;i<n-1;i++> {
        q=p+i;
        for<j=i+1;j<n;j++>
              if<fabs<*<p+j>><fabs<*q>>
            q=p+j;
        temp=*q;
        *q=*<p+i>;
        *<p+i>=temp;
    }
}
void main<>
{
    float a[10],*p;
    int i;
    for<p=a,i=0;i<10;i++>
        scanf<"%f",p++>;
    p=a;
    sort< p, 10 >;
    for<i=0;i<10;i++,p++>
        printf<"%.0f ",*p>;
}
2. 输入n和x, n和x分别表示对数组前n个元素赋初值为x,要求定义一个函数value,完成对一维整形数组的n个元素进行赋值,具体赋值为x. 10分
题目描述
输入n和x, n和x分别表示对数组前n个元素赋初值为x,要求定义一个函数value,完成对一维整形数组的n个元素进行赋值,具体赋值为x.〔要求用指针实现〕             
输入描述
输入n和x             
输出描述
输出一维数组的前n个元素的值             
样例输入
5 1               
样例输出
1 1 1 1 1 
#include <stdio.h>
void value < int *p, int n, int x >
{
    int i;
    for < i=0; i<n; i++ >
        *< p+i >=x;
}
void main<>
c语言二维数组表示方法{
    int a[100], n, x, i;
    scanf< "%d%d", &n, &x >;
    value < a, n, x >;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。