一、判断题 <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是一个指向字符型函数的指针.
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型数据的指针变量
B. ptr是指向int型数据的指针变量
C. ptr是指向函数的指针变量,该函数有一个float型参数,返回值是整型
D. ptr是一个函数名,该函数的返回值是指向int型数据的指针
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小时内删除。
发表评论