当前位置:首页 > C语言复习题
(3) #include
int main()
{ static int a[2][3]={{1,2,3},{4,5,6}}; int m,*ptr; ptr=&a[0][0];
m=(*ptr)*(*ptr+2)*(*(ptr+4)); printf(\ return 0; }
则程序的执行结果是 。 (4) #include
#include
{ char str[80];
void prochar(char *str,char ch); printf(\输入一字符串:\\n\ scanf(\ prochar(str,'r'); puts(str); return 0; }
void prochar(char *str,char ch) { char *p;
for(p=str;*p!='\\0';p++) if(*p= =ch) { *str=*p; (*str)++; str++; } *str='\\0'; }
则程序的执行结果是 。 (5) #include
int main()
{ int a=2,*p,**pp; pp=&p; p=&a; a++;
printf(\ return 0; }
则程序的执行结果是 。 3. 分析程序的运行结果。
(1)先分析程序的运行结果,再上机验证。
#include
{ int i,j,*pi,*pj; pi=&i; pj=&j; i=5; j=7;
printf(\
printf(\ return 0;
}
① 先静态分析程序运行的结果,再与上机运行的结果比较是否一致,若不一致分析产生的原因。 ②程序中的pi,pj是地址值,通过两次运行程序或在不同的机器中运行程,观察其结果是否一样,从中可得到什么结论?程序输出语句中“\\t”的作用是什么? (2)先分析程序的运行结果,再上机验证。
#include
int main()
{ int a[]={1,2,3}; int *p,i; p=a;
for(i=0;i<3;i++)
printf(\ return 0; }
① 先静态分析程序运行的结果,再与上机运行的结果比较是否一致,若不一致分析产生的原因,特别注意输出的格式是如何控制的。
② 通过本题的练习,希望学生掌握数组元素与指向数组的指针是不同的。
a[i]:表示数组的下标为i的元素。a[i]←p[i]←*(p+i)←*(a+i)。a是数组名,表示数组首地址,(p+i)表示数组中第i个元素的地址,*(p+i)相当于a[i]。
(3)先分析程序的运行结果,再上机验证。
#include
printf(\ if(i>1)
fun(str,i-1); }
int main()
{ char str[]=\ fun(str,4); return 0; }
① 先静态分析程序运行的结果,再与上机运行的结果比较是否一致,若不一致分析产生的原因。 ② main()函数调用fun函数时传递的一个是 str数组首地址和一个常量值4,则要求fun函数的形参必须是什么类型?在fun函数中又调用fun函数,这种调用称为什么调用?又是如何退出调用的?
(4)输出a数组的10个元素的程序如下并指出程序问题所在。 #include
for(i=0;i<10;i++) { *p=i; p++; }
for(i=0;i<10;i++,p++) printf(\ return 0; }
通过上机调试,输出的结果不是0~9,原因是什么?修改程序使其输出正确的结果为止。
(5)以下程序的功能是:输入10个数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。将空缺处语句填写完整并调试运行。
#include
int main()
{ int number[10]; int *p,i;
void maxminvalue(int array[10]); printf(\ for(i=0;i<10;i++)
scanf(\ maxminvalue(number); printf(\
for(p=number;p<=number+9;p++) printf(\ return 0; }
void maxminvalue(int array[10]) { int *max,*min,*p,*end; end=array+9; max=array; min=array;
for(p=array+1;p<=end;p++) if(*max<*p) max=p;
; ; for(p=array+1;p<=end;p++) if(*min>*p) min=p;
; ; ; return; }
(6) 调试以下程序并说出该程序实现的功能。 #include
int chnum(char *p); gets(s); if(*s= ='-')
n=-chnum(s+1); else
n=chnum(s); printf(\ return0; }
int chnum(char *p) { int num=0;
for(;*p!='\\0';p++) num=num*10+*p-'0'; return(num); }
该程序的功能是: 。当输入-23456回车时,程序输出的结果是: 。当输入23456回车时,程序输出的结果是: 。
第10章 文 件
习题9
一、选择题
1.设有以下说明语句
struct ex { int x; float y; char z; }example;
则下面的叙述中不正确的是 。 A.struct是结构体类型的关键字 B.example是结构体类型名 C.x,y,z都是结构体成员名 D.struct ex是结构体类型 2.当定义一个结构体变量时,系统分配给它的内存是 。
A.各成员所需内存量的总和 B.变量中第一个成员所需的内存量 C.成员中占内存量最大者所需的容量 D.变量中最后一个成员所需的内存量 3.有如下定义:
union data {
int i; char c;
float a; }test;
则sizeof(test)的值是 。 A.4 B.5 C.6 D.7
4.有如下的结构体类型定义和结构体变量定义,其中正确的结构体成员形式是 。
struct ss {
char x[10]; float y; };
struct ss abc={“hi”, 123.456}; A.ss.abc.y B.abc.x[0] C.ss.abc.x D.abc.x[] 5.根据下面的定义,能输出字母M的语句是 。
struct person {
char name[9]; int age; };
struct person class[10]={{\A.printf(\ B.printf(\C.printf(\ D.printf(\6.已知学生记录描述为:
struct student { int no; char name[20]; char sex; struct date { int year; int month; int day; }birth; };
struct student s;
设变量s中的“生日”应是“1991年11月11日”,下列对“生日”的正确赋值方式是 。 A.year = 1991;month = 11;day = 11;
B.birth.year = 1991;birth.month = 11;birth.day = 11; C.s.year = 1991;s.month = 11; s.day = 11;
D.s.birth.year = 1991;s.birth.month = 11;s.birth.day = 11;
共分享92篇相关文档