出自:国家开放大学C语言程序设计课程

在C语言中,一个结构类型的长度等于所含的所有数据成员类型长度的最大值。
在结构类型的定义中,其中的数据成员可以是本身类型的直接对象
在结构成员访问运算符中,点运算符和箭头运算符的左边均为结构指针变量
在一个链表的结点结构中,存在着一个指针域,但不一定指向自身结点类型。
在一个链表中,表头结点和表尾结点均无前驱结点
在C语言中,打开一个数据文件的系统函数为fopen(),它带有一个字符串参数,用来给定文件的打开方式
每次只能向文本文件中写入一个字符,不能一次写入一个字符串。
在定义一个变量时,不能给它赋初值。
关系表达式(x!=0)的等价表达式为(!x)。
在一维数组的定义语句中,数组名后带有一对圆括号。
在C语言中,在定义一个字符数组时,不能利用一个字符串进行初始化。
进行动态存储分配的calloc()函数带有一个参数。
在二维数组的定义语句中,不能给数组中每个元素赋初值
在定义指针变量的语句“int *p,pp;”中,p和pp具有相同的数据类型。
在一个函数定义中,参数表中的参数说明项之间是采用分号分开的。
在C语言程序中,存储字符串的方法是只使用字符指针。
每次只能向文本文件中写入一个字符,不能一次写入一个字符串
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a=5,b=8,c=6,d=15,x,y;
if(a>=b) x=a; else x=b;
if(c>=d) y=c; else y=d;
if(x>=y) printf("%d\n",x);
else printf("%d\n",y);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int x=5,y=0;
switch(2*x-3) {
case 4: y+=x; break;
case 7: y+=2*x+1; break;
case 10: y+=3*x; break;
}
printf("y=%d\n",y);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int i,s=0;
for(i=1;i<10;i+=3) s+=i*(i+1);
printf("s=%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int i=0, s=0;
while(s<50) {i+=2; s+=i*i;}
printf("s=%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int x=30,i=1,s=0;
do {s+=i*i; i++;} while(s<x);
printf("s=%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[8]={3,8,6,5,9,2,8,5};
int i,s=0;
for(i=0;i<8;i++) s+=a[i];
printf("s=%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[3][3]={{3,8,6},{5,9,2},{8,5,12}};
int i,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++) s+=a[i][j];
printf("s=%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[3][3]={{3,8,6},{5,9,2},{8,5,12}};
int i,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(a[i][j]%3==0) s+=a[i][j];
printf("s=%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[8]={6,8,7,12,5,15,18,9};
int s=0;
int *p=a;
while(p<a+8) s+=*p++;
printf("%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
#define N 8
void main() {
int a[N]={3,5,8,10,15,20,32,66};
int i, x;
for(i=0; i<N/2; i++) {
x=a[i]; a[i]=a[N-1-i]; a[N-1-i]=x;
}
printf("%d\n",a[1]+a[3]);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[8]={12,15,20,8,5,9,16,10};
int i,j,x=a[0]+a[1];
for(i=0; i<8; i++)
for(j=i+1; j<8; j++)
if(a[i]+a[j]>x) x=a[i]+a[j];
printf("%d ",x);
}
当使用xk3(5)调用此函数,并假定从键盘上输入的5个整数为3、4、7、8和10,则返回值为( )。
int xk3(int n) { //n为大于等于1的整数
int i,x,s=0;
for(i=0; i<n; i++) {scanf("%d",&x); s+=x;}
return s;
}
在此程序中,具有文件作用域的变量是( )。
#include<stdio.h>
int x1=5;
static int x2=8;
void main() {
int x3=20;
while(x1+x2<x3) x1+=2;
printf("%d %d %d\n",x1,x2,x3);
}
此程序运行后,得到的输出结果为( )。
#include<stdio.h>
int fn3(int a, int b) {
int c=a; a=b; b=c;
return a+2*b-3;
}
void main() {
int a=3, b=5;
int c=fn3(a+2,b+3);
printf("%d\n",3*a+b+c);
}2
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int x=5,y=8;
if(x>=y) printf("%d %d\n",x,y);
else printf("%d %d\n",y,x);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int i,f1=1,f2;
for(i=2;i<6;i++) {
f2=3*f1;
f1=f2;
}
printf("f2=%d\n",f2);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
#define N 7
void main() {
int a[N];
int i;
a[0]=1; a[1]=2;
for(i=2; i<N; i++) a[i]=2*a[i-2]+a[i-1]+1;
printf("%d\n",a[N-1]);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[8]={10,8,16,15,9,21,7,16};
int i,x=a[0];
for(i=1;i<8;i++)
if(a[i]<x) x=a[i];
printf("x=%d\n",x);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[3][3]={{2,3,4},{5,6,8},{10,15,20}};
int *p=(int*)a;
int s=0;
while(p<(int*)a+9) s+=*p++;
printf("%d\n",s);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int n=10,y=0;
while(n>6) {y+=n; n--;}
printf("y=%d\n",y);
}
假定使用xxk3(5)调用下面函数,则返回值为( )。
int xxk3(int n) {
int i,s=1;
for(i=1; i<=n; i++) s*=i;
return s;
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int i,f1=1,f2;
for(i=2;i<5;i++) {
f2=2*f1+1;
f1=f2;
}
printf("f2=%d\n",f2);
}
执行下面程序的输出结果为( )。
#include<stdio.h>
void main() {
int a[4][3]={{3,2,6},{5,4,2},{1,5,6},{8,5,7}};
int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<3;j++) if(a[i][j]>5) s+=a[i][j];
printf("s=%d\n",s);
}
补充完整下面的函数定义,计算出1+1*3+2*3+...+n*3的值并返回。
int FF(int n) {
int i,s=1;
//在下面添上一行for循环语句,循环变量为i,累加变量为s


return s;
}
根据函数原型“int FF(int a[], int n)”,编写函数定义,计算并返回数组a[n]中所有元素之和。
补充完整下面函数定义中while循环的循环体,该函数的功能是求出并返回由字符指针ptr所指向的字符串中包含的小写英文字母的个数。
int fun(char* ptr)
{
int n=0; //使用n作为统计变量
while(*ptr) { //在下面补充合适的函数体内容



}
return n;
}
编写一个主函数,计算并输出表达式1+22+32+...+102的值。
补充完整下面的函数定义,要求返回二维数组a[m][n]中所有元素的平均值。假定在计算过程中采用变量s存放累加值,采用i和j作为扫描数组的循环变量。
double Mean(double a[][N],int m,int n)
{
int i,j;
double s=0.0;
//在下面添上合适的for双重循环语句



return s/(m*n);
}
根据函数原型“int DD(int a[], int n, int MM)”编写函数定义,利用双重for循环统计出数组a[n]中任何两个不同元素的值等于MM值的配对个数,然后返回统计结果。如假定a[i]+a[j]等于MM,同时i≠j,则为一个配对。
int DD(int a[], int n, int MM)
{
int i,j,c=0; //用i和j作为循环变量,用c作为统计变量
//在下面补充一个双重for循环语句
完善下面程序,该程序功能是从键盘上输入10个整数到一维数组a[10]中,然后按照下标从大到小的次序输出数组a[10]中的每个元素值,元素值之间用一个空格分开。
#include<stdio.h>
void main()
{
int a[10],i; //用i作为循环变量
printf("从键盘输入10个整数: \n");
//向下补充程序内容,用两个for循环实现



printf("\n");
}