1.C语言结构体类型变量在程序执行期间(B)
a)所有成员一直驻留在内存中
b)只有一个成员驻留在内存中
c)部分成员驻留在内存中
d)没有成员驻留在内存中
2. 以下不能正确定义二维数组的选项是(A )
A. int a[2][] = {{1, 2}, {3, 4}};
B. int a[][2] = {1, 2, 3, 4};
C. int a[2][2] = {{1}, 2, 3};
D. int a[2][2] = {{1}, {2}};
3. 一个C语言程序是由(函数)组成
4.从键盘上输入某字符串时,不可使用的函数是(A).
(A).getchar()
(B).gets()
(C).scanf()
(D).fread()
5.若要说明一个类型名STP,使得定义语句STP s等价于char *s,以下选项中正确的是(D)
A) typedef STP char *s; B) typedef *char STP;
C) typedef stp *char; D) typedef char* STP
6.设a,b均为double型常量,且a=5.5,b=2.5则表达式(int)a+b/b的值是(6)
7.若有定义:int a[5],*p=a; 则对a数组元素地址正确引用的是(B)。
A &a[5]
B p+2
C a++
D &a
8.C语言中while 和do-while 循环的主要区别是(A).
(A).do-while 的循环体至少无条件执行一次
(B).while的循环控制条件比do-while 的循环控制条件更严格
(C).do-while 允许从外部转到循环体内
(D).do-while 的循环体不能是复合语句
9.以下叙述正确的是(D).
(A).do-while语句构成的循环不能用其它语句构成的循环来代替.
(B).do-while语句构成的循环只能用break语句退出.
(C).用do-while语句构成的循环,在while后的表达式为非零时结束循环. (D).用do-while语句构成的循环,在while后的表达式为零时结束循环
10.对于void类型函数,调用时不可作为
(D)。
A:自定义函数体中的语句
B:循环体里的语句
C:if语句的成分语句
D:表达式
11.若有以下定义:char s='\092'; 则该语句(B)。
A:使s的值包含1个字符
B:定义不合法,s的值不确定
C:使s的值包含4个字符
D:使s的值包含3个字符
12.下面字符序列中可用作c语言程序标识符得一组字符序列是(D)
a)S.B,sum,aberage,_above
b)glass,month,cccc_1,4times
c)#aq,&77y,sprit,teach_01
d)W18,w_1_8,name,cf_1
13.以下叙述正确的是(C).
(A).在C程序中,main函数必须位于程序的最前面
(B).C程序的每行中只能写一条语句
(C).C语言本身没有输入输出语句
(D).在对一个C程序进行编译的过程中,可发现注释中的拼写错误
14.下列语句的结果是(D).
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
(A).3,3
(B).3,4
(C).4,3
(D).4,4 15.以下运算符中优先级最低的是(C)
A:&&
B:&
C:||
D:|
16.C语言源程序的基本单位是(函数)
17.下面有关for 循环的正确描述是(D).
(A).for 循环只能用于循环次数已经确定的情况
(B).for 循环是先执行循环循环体语句,后判断表达式
(C).在for 循环中,不能用break 语句跳出循环体
(D).for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
18..先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是(A).
(A).c='a';
(B).c="a";
(C).c="97";
(D).C='97'
19.下面选择中正确的赋值语句是(设char a[5],*p=a;)(A)。
A:p="abcd";
B:a="abcd";
C:*p="abcd";
D:*a="abcd";
20.下列语句中,不正确的是(C)。
A:static char a[2]={1,2};
B:static int a[2]={'1','2'};
C:static char a[2]={'1','2','3'};
D:static char a[2]={'1'};
21.若k为int型变量,则以下程序段的执行结果是(B).
k=-8567; printf("|%06D|\n",k);
(A).格式描述符不合法,输出无定值
(B).输出为|%06D|
(C).输出为|0-8567|
(D).输出为|-8567|
22.在执行fopen函数时,ferror函数的初值是(0)
23.以下不能正确定义二维数组的选项是
(D).
(A).int a[2][2]={{1},{2}};
(B).int a[][2]={1,2,3,4};
(C).int a[2][2]={{1},2,3};
(D).int a[2][]={{1,2},{3,4}};
24.以下不符合C语言语法的赋值语句是(A)。
A:a=1,b=2
B:++j;
C:a=b=5;
D:y=(a=3,6*5);
25.以下正确的说法是(B)。
A:用户若需调用标准库函数,调用前必须重新定义
B:用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C:系统根本不允许用户重新定义标准库函数
D:用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
26.若x=2,y=3则x&y的结果是(B)。
A:0
B:2
C:3
D:5
27.下列叙述中正确的是(D)。
A:C语言编译时不检查语法
B:C语言的子程序有过程和函数两种
C:C语言的函数可以嵌套定义
D:C语言所有函数都是外部函数
28.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值是(C)
A、7
B、8
C、9
D、10
29.运算符优先级:算术>关系>赋值
30.C语言中的标识符只能由字母、数字和下划线3中字符组成,且第一个字符必须为(C)
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母、数字和下划线中的任意一种字符
31.下列运算符中,不属于关系运算符的是(D)
A.<
B.>=
C.==
D.!
32.用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是(C)。
long a=0xffffff;
int b; char c;
A:0ffffff 和0x61
B:-1和98
C:-1和97
D:指向同一地址
33.函数ftell(fp)作用是:(A)
A.得到流式文件中的当前位置
B.移动流式文件的位置指针
C.初始化流式文件的位置指针
D.以上答案均正确
34.以下叙述中错误的是(A)
A.可以通过typedef增加新的类型
B.可以用typedef将已存在的类型用一个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名35.下面叙述中正确的是(C)
A对于用户自己定义的函数,在使用前必须加以声明
B声明函数时必须明确其参数类型和返回类型
C函数可以返回一个值,也可以什么值也不返回
D空函数在不完成任何操作,所以在程序设计中没有用处
36.若有说明:int a[3][4];则数组a中各元素是(C)
a.可在程序的运行阶段得到初值0
b.可在程序的编译阶段得到初值0
c.不能得到确定的值
d.可在程序编译或运行阶段得到初值0
37.C语言中while 和do-while 循环的主要区别是(A)。
A:do-while 的循环体至少无条件执行一次
B:while的循环控制条件比do-while 的循环控制条件更严格
C:do-while 允许从外部转到循环体内
D:do-while 的循环体不能是复合语句
38.若有下列定义,则对a数组元素地址的正确引用是(B)。
int a[5],*p=a;
A:&a[5]
B:p+2
C:a++
D:&a
39.若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是(C)。
A:1
B:2
C:2.0
D:2.5
40.以下叙述正确的是(C).
(A).在C程序中,main函数必须位于程序的最前面
(B).C程序的每行中只能写一条语句
(C).C语言本身没有输入输出语句
(D).在对一个C程序进行编译的过程中,可发现注释中的拼写错误
41.设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)
A) 6.500000
B) 6
C) 5.500000
D) 6.000000
42.以下运算符中,优先级最高的运算符是
(B).
A ?:
B ++
C &&
D ,
-【程序设计】
-------------------------------------------------
功能:编写函数fun计算下列分段函数的值:
x^2+x+6 x<0且x≠-3
f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3
x^2-x-1 其它
------------------------------------------------*/
#include "stdio.h"
float fun(float x)
{ /**********Program**********/
float y;
if (x<0 && x!=-3.0)
y=x*x+x+6;
else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)
y=x*x-5*x+6;
else y=x*x-x-1;
return y;
/********** End **********/
}
main()
{ float x,f;
printf("Input x=");
scanf("%f",&x);
f=fun(x);
printf("x=%f,f(x)=%f\n",x,f);
getch();
yzj();
}
--------------------------------------------------
功能:从键盘上输入任意实数,求出其所对应的函数值。
z=e的x次幂(x>10)
z=log(x+3) (x>-3)
z=sin(x)/((cos(x)+4)
------------------------------------------------*/
#include
#include
double y(float x)
{ /**********Program**********/ double z;
if(x>10) z=exp(x);
else if(x>-3) z=log(x+3);
else z=sin(x)/(cos(x)+4);
return(z);
/********** End **********/
}
main()
{ float x;
scanf("%f",&x);
printf("y=%f\n",y(x));
yzj();
getch();
}
功能:编写函数判断一个整数能否同时被3和5整除,若能
则返回值为1,否则为0。调用该函数求出15~300之
间能同时被3和5整除的数的个数。------------------------------------------------*/
#include "stdio.h"
int sum(int n)
{ /**********Program**********/
if(n%3==0&&n%5==0) return(1);
return(0);
/********** End **********/
}
main()
{ int i,s=0;
for(i=15;i<=300;i++)
if(sum(i)==1) s=s+1;
printf("s=%d\n",s);
yzj();
getch();}
------------------------------------------------*/
功能:能计算从1开始到n的自然数的和,n由键盘输入,
并在main()函数中输出。
------------------------------------------------*/
#include "stdio.h"
int fun(int n)
{ /**********Program**********/
int sum,i;
sum =0;
for(i=1;i<=n;i++)
{sum=sum+i;}
return(sum);
/********** End **********/
}
main()
{ int m;
printf("Enter m: ");
scanf("%d", &m);
printf("\nThe result is %d\n", fun(m)); yzj();
getch();
}
------------------------------------------------*/
功能:求1到w之间的奇数之和。(w是大于等于100小于等
于1000的整数)
------------------------------------------------*/
#include "stdio.h"
#include"conio.h"
long fun(int w)
{ /**********Program**********/
long y=0;
int i;
for(i=1;i<=w;i++)
if(i%2==1)y+=i;
return y;
/********** End **********/
}
main()
{ int m;
printf("Enter m: ");
scanf("%d", &m);
printf("\nThe result is %ld\n", fun(m)); yzj();
getch();
}
功能:求1到100之间的偶数之积。
------------------------------------------------*/
#include "stdio.h"
double fun(int m)
{ /**********Program**********/ double y=1;
int i;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
return y;
/********** End **********/
}
----------------------------------------------
功能:若x、y为奇数,求x到y之间的奇数和;若x、y为偶
数,则求x到y之间的偶数和。
------------------------------------------------*/
#include "stdio.h"
main()
{ int s,i,j;
s=fun(1,1999)-fun(2,1998);
printf("s=%d\n",s);
getch();
yzj();
}
int fun(int x,int y)
{ /**********Program**********/
int i,s=0;
for(i=x;i<=y;i+=2)
s=s+i;
return s;
/********** End **********/
}
--------------------------------------------------
功能:根据整型形参m,计算如下公式的值:y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)
例如:若m=9,则应输出:1.168229
------------------------------------------------*/
#include "stdio.h"
double fun(int m)
{ /**********Program**********/ double y=0;
int i;
for(i=0; i<=m; i++)
{y+=1.0/(i+5); }
return(y);
/********** End **********/
}
main()
{ int n;
clrscr();
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result is %1f\n", fun(n)); getch();
yzj();
}
--------------------------------------------------
功能:根据整型形参m,计算如下公式的值:y=1/2+1/4+
1/6+...+1/2m 。
例如:若m=9,则应输出:1.414484
------------------------------------------------*/
#include "stdio.h"
double fun(int m)
{ /**********Program**********/
double y=0;
int i;
for(i=1; i<=m; i++)
{y+=1.0/(2*i); }
return(y);
/********** End **********/
}
main()
{ int n;
clrscr();
printf("Enter n: ");
scanf("%d", &n);
printf("\nThe result is %1f\n", fun(n)); yzj();
getch();
}
--------------------------------------------------
功能:编写函数求表达式的和(n的值由主函数输入)。
1-1/2+1/3-1/4+......+1/m
例如:当n=20时,表达式的值为0.668771。------------------------------------------------*/
#include "stdio.h"
float sum(int n)
{ /**********Program**********/
float s=0;
int i,k=1;
for(i=1;i<=n;i++)
{ s=s+k*1.0/i;
k=-k;
}
return(s);
/********** End **********/
}
main()
{ int n;
scanf("%d",&n);
printf("sum=%f\n",sum(n));
yzj();
getch();
}
--------------------------------------------------
功能:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…
的前n项之和。
说明:每一分数的分母是前两项的分母之和,每一分数的
分子是前两项的分子之和
例如:求前20项之和的值为32.660259。------------------------------------------------*/
#include "stdio.h"
float fun(int n)
{ /**********Program**********/
int i;
float f1=1,f2=1,f3,s=0;
for(i=1;i<=n;i++)
{f3=f1+f2;
f1=f2;
f2=f3;
s=s+f2/f1;
}
return s;
/********** End **********/
}
main() { float y;
y=fun(20);
printf("y=%f\n",y);
yzj();
getch();
}
-----------------------------------------------
功能:求Sn=a+aa+aaa+aaaa+a…a的值,其中a是一个数字-----------------------------------------------
#include
void main( )
{int n,i,a,sum=0,t;
scanf("%d,%d",&a,&n);
t=a;
for(i=1;i<=n;i++)
{sum=sum+t; t=t*10+a;}
printf("sum=%d\n",sum);
}
--------------------------------------------------
功能:用函数求fibonacci数列前n项的和。说明:fibonacci数列为数列的第一项值为1,第二项值也
为1,从第三项开始,每一项均为其前面相邻两项
的和。
例如:当n=28时,运行结果:832039
------------------------------------------------*/
#include "stdio.h"
long sum(long f1,long f2)
{ /**********Program**********/
long f,k=f1+f2;
int i;
for(i=3;i<=28;i++)
{f=f1+f2;
k=k+f;
f1=f2;
f2=f;
}
return(k);
/********** End **********/
}
main()
{ long int f1=1,f2=1;
clrscr();
printf("sum=%ld\n",sum(f1,f2));
yzj();
getch();
}
-----------------------------------------------
功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函
数中由键盘输入n值,并输出运算结果。请编写fun
函数。
例如:若n值为5,则结果为153。
------------------------------------------------*/
#include
float fun(int n)
{ /**********Program**********/
int i;
float f=1,s=0; for(i=1;i<=n;i++)
{f=f*i;
s=s+f;}
return s;
/********** End **********/
}
main()
{ int i,n;
long int result;
scanf("%d",&n);
result=fun(n);
printf("%ld\n",result);
yzj();
}
--------------------------------------------------
功能:计算并输出给定整数n的所有因子之和(不包括1与
自身)。
注意:n的值不大于1000。
例如:n的值为855时,应输出704。
------------------------------------------------*/
#include "stdio.h"
int fun(int n)
{ /**********Program**********/
int s=0,i;
for(i=2;i if(n%i==0)s=s+i; return s /********** End **********/ } main() { printf("s=%d\n",fun(855)); yzj(); getch(); } -------------------------------------------------- 功能:从键盘输入一个大于3的整数,调用函数fun判断 其是否素数,然后在main函数中输出相应的结论 信息。 例如:7是素数,8不是素数。请编写fun 函数。素数是 仅能被1和自身整除的数 -------------------------------------------------*/ #include "stdio.h" main() { int m,flag; printf("input an integer:"); scanf("%d",&m); flag=fun(m); if(flag) printf("%d is a prime.\n",m); else printf("%d is not a prime.\n",m); yzj(); } int fun(int n) { /**********Program**********/ int i; int j; j= 1; for(i=2;i } return j; /********** End **********/ } -------------------------------------------------- 功能:求给定正整数n以内的素数之积。(n<28) ------------------------------------------------*/ #include "stdio.h" #include"conio.h" long fun(int n) { /**********Program**********/ long i,k; long s=1; for(i=2;i<=n;i++) {for(k=2;k if(i%k==0)break; if(k==i)s=s*i; } return s; /********** End **********/ } -------------------------------------------------- 功能:调用函数fun判断一个三位数是否"水仙花数"。 在main函数中从键盘输入一个三位数,并输 出判断结果。请编写fun函数。 说明:所谓"水仙花数"是指一3位数,其各位数字立方和 等于该数本身。 例如:153是一个水仙花数,因为153=1+125+27。 ------------------------------------------------*/ #include "stdio.h" int fun(int n) { /**********Program**********/ int bw,sw,gw; bw=n/100;sw=(n-bw*100)/10;gw=n%1 0; if(n==bw*bw*bw+sw*sw*sw+gw*gw*g w) return 1; else return 0 /********** End **********/ } main() { int n,flag; scanf("%d",&n); flag=fun(n); if(flag) printf("%d 是水仙花数\n",n); else printf("%d 不是水仙花数\n",n); getch(); } ------------------------------------------------*/ 功能:给定n个数据, 求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。 ------------------------------------------------*/ #include int station(int s[],int n) { /**********Program**********/ int i,k; k=0; for(i=1;i if(s[i]>s[k]) k=i; return(k+1); /********** End **********/ } main() { int a[100],n,i,t; clrscr(); scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); t=station(a,n); printf("the max_value position is:%d\n",t); yzj(); getch(); } ------------------------------------------------------ 功能:求一批数中最大值和最小值的差。------------------------------------------------*/ int max_min(int a[],int n) { /**********Program**********/ int i,max,min; max=min=a[0]; for(i=1;i if(a[i]>max) max=a[i]; else if(a[i] return(max-min); /********** End **********/ } #define N 30 #include "stdlib.h" #include "stdio.h" main() { int a[N],i,k; clrscr(); for(i=0;i a[i]=random(51)+10; for(i=0;i { printf("%5d",a[i]); if((i+1)%5==0) printf("\n"); } k=max_min(a,N); printf("the result is:%d\n",k); yzj(); getch(); } ------------------------------------------------*/ 功能:求一组数中大于平均值的数的个数。例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函 数值为3。 ------------------------------------------------*/ #include "stdio.h" int fun(int a[],int n) { /**********Program**********/ int i,k=0; float s=0,ave; for(i=0;i s+=a[i]; ave=s/n; printf("%f ",ave); for(i=0;i if(a[i]>ave)k++; return k; /********** End **********/ } main() { int a[10]={1,3,6,9,4,23,35,67,12,88}; int y; y=fun(a,10); printf("y=%d\n",y); yzj(); getch(); } -------------------------------------------------- 功能:统计出若干个学生的平均成绩,最高分以及得最高 分的人数。 例如:输入10名学生的成绩分别为92,87,68,56,92, 84,67,75,92,66,则输出平均成绩为77.9, 最高分为92,得最高分的人数为3人。------------------------------------------------*/ #include "stdio.h" float Max=0; int J=0; float fun(float array[],int n) { /**********Program**********/ int i;float sum=0,ave; Max=array[0]; for(i=0;i { if(Max sum=sum+array [i]; } ave=sum/n; for(i=0;i if(array [i]==Max) J++; return(ave); /********** End **********/ } main( ) { float a[10],ave; int i=0; for(i=0;i<10;i++) scanf("%f",&a[i]); ave=fun(a,10); printf("ave=%f\n",ave); printf("max=%f\n",Max); printf("Total:%d\n",J); getch(); yzj(); } int m; printf("Enter m: "); scanf("%d", &m); printf("\nThe result is %ld\n", fun(m)); yzj(); getch(); } -------------------------------------------------- 功能:编写函数fun将一个数组中的值按逆序存放,并在 main()函数中输出。例如:原来存顺序为8,6,5,4,1。要求改为:1,4,5,6,8。 ------------------------------------------------*/ #include "stdio.h" #define N 5 main() { int a[N]={8,6,5,4,1},i; for(i=0;i printf("%4d",a[i]); printf("\n"); fun(a,N); for(i=0;i printf("%4d",a[i]); yzj(); getch(); } int fun(int arr[],int n) { /**********Program**********/ int i,t; for(i=0;i { t=arr[i]; arr[i]=arr[n-1-i]; arr[n-1-i]=t; } /********** End **********/ } -------------------------------------------------- 功能:将主函数中输入的字符串反序存放。例如:输入字符串“abcdefg”,则应输出“gfedcba”。 ------------------------------------------------*/ #include #include #define N 81 char fun(char *str,int n) { /**********Program**********/ int i,j; char c; for(i=0,j=n-1;i /*或者for(i=0,j=n-1;i *(str+i)=*(str+j); *(str+j)=c;} /********** End **********/ } main() { char s [N]; int l; clrscr(); printf("input a string:");gets(s); l=strlen(s); fun(s,l); printf("The new string is :");puts(s); getch(); yzj(); } ------------------------------------------------*/ 功能:将字符串中的大写字母转换为对应的小写字母, 其它字符不变。 ------------------------------------------------*/ #include "stdio.h" void change(char str[]) { /**********Program**********/ int i; for(i=0;str[i]!='\0';i++) if(str[i]>='A' && str[i]<='Z') str[i]=str[i]+32; /********** End **********/ } 功能:将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 #include "string.h" #include "stdio.h" void change(char str[]) { /**********Program**********/ int i; for(i=0;str[i]!='\0';i++) if(str[i]>='a' && str[i]<='z') str[i]=str[i]-32; /********** End **********/ } main() { void change(); char str[40]; gets(str); change(str); puts(str); yzj(); getch(); } -------------------------------------------------- 功能:求一个给定字符串中的字母的个数。------------------------------------------------*/ #include "stdio.h" int fun(char s[]) { /**********Program**********/ int i,k=0; for(i=0;s[i]!='\0';i++) if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i] <='Z') k++; return k; /********** End **********/ } main() { char str[]="Best wishes for you!"; int k; k=fun(str); printf("k=%d\n",k); yzj(); }