C语言程序设计 自测题

[单选题]

11、有以下程序
#include <string.h>
main(int argc,char *argv[])
{int i,len=0;
for(i=1;i<argc;i++) len+=strlen(argv[i]);
printf("%d\n",len);
}
程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:
ex1 abcd efg 10↙
则运行的结果是______。
A、22
B、17
C、12
D、9
12、与数学式子3乘以x的n次方/(2x-1)对应的C语言表达式是______。
A、3*x^n/(2*x-1)
B、3*x**n/(2*x-1)
C、3*pow(x,n)*(1/(2*x-1))
D、3*pow(n,x)/(2*x-1)
13、有以下程序
#include <stdlib.h>
struct NODE
{int num; struct NODE *next; }
main()
{struct NODE *p,*q,*r;
p=(struct NODE *)malloc(sizeof(struct NODE));
q=(struct NODE *)malloc(sizeof(struct NODE));
r=(struct NODE *)malloc(sizeof(struct NODE));
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%d\n",p->num+q->next->num);
}
程序运行后的输出结果是______。
A、10
B、20
C、30
D、40
14、有以下程序
struct STU
{char num[10]; float score[3]; }
main()
{struct STU s[3]={{"20021",90,95,85},
{"20022",95,80,75},
{"20023",100,95,90}},*p=s;
int i; float sum=0;
for(i=0;i<3;i++)
sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序运行后的输出结果是______。
A、260.00
B、270.00
C、280.00
D、285.00
15、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。
void sort(int a[],int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++) printf("%d,",aa[i]);
printf("\n");
}
程序运行后的输出结果是______。
A、1,2,3,4,5,6,7,8,9,10,
B、10,9,8,7,6,5,4,3,2,1,
C、1,2,3,8,7,6,5,4,9,10,
D、1,2,10,9,8,7,6,5,4,3,
16、有以下程序
void ss(char *s,char t)
{while(*s)
{if(*s==t) *s=t-'a'+'A';
s++;
}
}
main()
{char str1[100]="abcddfefdbd",c='d';
ss(str1,c); printf("%s\n",str1);
}
程序运行后的输出结果是______。
A、ABCDDEFEDBD
B、abcDDfefDbD
C、abcAAfefAbA
D、Abcddfefdbd
17、程序中头文件type1.h的内容是:
#define N 5
#define M1 N*3
程序如下:
#include "type1.h"
#define M2 N*2
main()
{int i;
i=M1+M2; printf("%d\n",i);
}
程序编译后运行的输出结果是______。
A、10
B、20
C、25
D、30
18、有以下程序
main()
{int a=15,b=21,m=0;
switch(a%3)
{case 0:m++;break;
case 1:m++;
switch(b%2)
{default:m++;
case 0:m++;break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是______。
A、1
B、2
C、3
D、4
19、以下非法的赋值语句是______。
A、n=(i=2,++i);
B、j++;
C、++(i+1);
D、x=j>0;
20、已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是______。
A、6
B、0
C、2
D、1
21、以下叙述中错误的是______。
A、二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B、在程序结束时,应当用fclose函数关闭已打开的文件
C、利用fread函数从二进制文件中读数据,可以用数组名给数组中所有元素读入数据
D、不可以用FILE定义指向二进制文件的文件指针
22、有以下程序
#include <stdlib.h>
main()
{char *p,*q;
p=(char *)malloc(sizeof(char)*20); q=p;
scanf("%s%s",p,q); printf("%s%s\n",p,q);
}
若从键盘输入:abc def↙,则输出结果是______。
A、def def
B、abc def
C、abc d
D、d d
23、若有以下程序:
main()
{int k=2,i=2,m;
m=(k+=i*=k); printf("%d,%d\n",m,i);
}
执行后的输出结果是______。
A、8,6
B、8,3
C、6,4
D、7,4
24、有以下程序
#include <string.h>
main()
{char *p="abcde\0fghjik\0";
printf("%d\n",strlen(p));
}
程序运行后的输出结果是______。
A、12
B、15
C、6
D、5
25、有以下程序
main()
{unsigned char a,b,c;
a=0x3; b=a|0x8; c=b<<1;
printf("%d%d\n",b,c);
}
程序运行后的输出结果是______。
A、-11 12
B、-6 -13
C、12 24
D、11 22
26、以下选项中,与k=n++完全等价的表达式是_______。
A、k=n,n=n+1
B、n=n+1,k=n
C、k=++n
D、k+=n+1
27、有以下程序
int a=3;
main()
{int s=0;
{int a=5; s+=a++; }
s+=a++; printf("%d\n",s);
}
程序运行后的输出结果是_______。
A、8
B、10
C、7
D、11
28、以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。
#include <string.h>
void f(char p[][10],int n)
{ char t[20]; int i,j;
for(i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if(strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i;
f(p,5); printf("%d\n",strlen(p[0]));
}
程序运行后的输出结果是______。
A、6
B、4
C、5
D、3
29、设有如下定义:
struct sk
{int a;
float b;
}data;
int *p;
若要使p指向data中的a域,正确的赋值语句是______。
A、p=&a;
B、p=data.a;
C、p=&data.a;
D、*p=data.a
30、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
{int n,k;
float score,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{for(k=1;k<=4;k++)
{scanf("%f",&score); sum+=score;}
ave=sum/4.0;
printf("NO%d:%f\n",n,ave);
}
}
上述程序运行后结果不符合题意,是因为其中有一条语句置于程序中的位置错误,这条语句是______。
A、sum=0.0;
B、sum+=score;
C、ave=sum/4.0;
D、printf("NO%d:%f\n",n,ave);
31、有以下程序:
float fun(int x,int y)
{return(x+y); }
main()
{int a=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序运行后的输出结果是______。
A、编译出错
B、9
C、21
D、9.0
32、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int a[],int n)
{int i,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++) s+=b[i];
printf("%d\n",s);
}
程序运行后的输出结果是______。
A、22
B、10
C、34
D、30
33、以下选项中合法的用户标识符是______。
A、long
B、_2Test
C、3Dmax
D、A.dat
34、有以下程序
main()
{char a[]={'a','b','c','d','e','f','g','h','\0'}; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d,%d\n",i,j);
}
程序运行后的输出结果是______。
A、9,9
B、8,9
C、1,8
D、9,8
35、设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是______。
A、printf("x=%d\n",x);
B、printf("x=%ld\n",x);
C、printf("x=%8dL\n",x);
D、printf("x=%LD\n",x);
36、有以下程序
#include <stdio.h>
main()
{FILE *fp; int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d%d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是_____。
A、20 30
B、20 50
C、30 50
D、30 20
37、若有以下说明和定义:
typedef int *INTEGER;
INTEGER p,*q;
以下叙述正确的是______。
A、p是int型变量
B、p是基类型为int的指针变量
C、q是基类型为int的指针变量
D、程序中可用INTEGER代替int类型名
38、有以下程序
int f(int n)
{if (n==1) return 1;
else return f(n-1)+1;
}
main()
{int i,j=0;
for(i=1;i<3;i++) j+=f(i);
printf("%d\n",j);
}
程序运行后的输出结果是______。
A、4
B、3
C、2
D、1
39、有以下程序
main()
{int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0;
for(i=0;i<4;i++) s+=aa[i][1];
printf("%d\n",s);
}
程序运行后的输出结果是______。
A、11
B、19
C、13
D、20
40、以下叙述中正确的是______。
A、构成C程序的基本单位是函数
B、可以在一个函数中定义另一个函数
C、main()函数必须放在其它函数之前
D、所有被调用的函数一定要在调用之前进行定义



[填空题]
6、下面程序的运行结果是______。
void swap(int *a,int *b)
{int *t;
t=a;a=b;b=t;
}
main()
{int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
7、函数sstrcmp()的功能是对两个字符串进行比较。当s 所指字符串和t所指字符相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。请填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==______)
{s++;t++; }
return ______;
}
8、若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为"读"而打开此文件:fp=fopen(______);。
9、fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。
#include <stdio.h>
#define N 100
int fun(int(*a)[N])
{int row,col,max,min;
for(row=0;row<N;row++)
{for(max=a[row][0],col=1;col<N;col++)
if(______) max=a[row][col];
if(row==0) min=max;
else if(______) min=max;
}
return min;
}

10、以下程序运行后的输出结果是______。
main()
{int x=15;
while(x>10&&x<50)
{x++;
if(x/3){x++;break;}
else continue;
}
printf("%d\n",x);
}
11、下面程序的运行结果是:______。
typedef union student
{char name[10];
long sno;
char sex;
float score[4];
}STU;
main()
{STU a[5];
printf("%d\n",sizeof(a));
}

12、有以下程序:
#include <stdio.h>
main()
{char c;
while((c=getchar())!='?') putchar(--c);
}
程序运行时,如果从键盘输入:Y?N?↙,则输出结果为______。
13、以下程序运行后的输出结果是______。
void fun(int x,int y)
{x=x+y;y=x-y;x=x-y;
printf("%d,%d,",x,y);}
main()
{int x=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}

你可能感兴趣的:(C++,c,C#,D语言,FP)