(完整word版)C语言程序设计填空题及答案复习用
C语言程序设计期末复习题及答案(1)

5. n为整型,表达式n=1,n+2,n*5 的值是__5_______。
6. 已知:float x=8.53; 整形变量i=(int)x;则i=__8_____。
7. 已知:int x=5;语句y=x++*x++;执行完成后x=___7__,y=_25____。
int i, k, num;
gets(str1); gets(str2);
i=strlen(str1);
k=strlen(str2);
num=______? ____: ____;
printf("%d\n", num);
}
2. 下面程序是计算字符串中实际字符的个数,即实现和字符串处理函数strlen相同的功能,补充空白处的程序。
for (j=0;j<n-1-i;j++)
if (a[j]>a[j+1])
{c=a[j];a[j]=a[j+1];a[j+1]=c;}
}
2. 本题20分.总体程序完整性3分,结构体定义正确3分,结构体数组定义以及初始化正确6分,指针定义正确3分,输出判断正确3分,输出姓名地址2分。以下代码为参考代码,答案不唯一。
(B)在指针操作中,运算符“&”是取指针指向的对象的值。
(C)在指针操作中,运算符“*”的操作对象是一个地址。
(D)语句int *ip;定义了指针变量只能存放整型变量的地址。
14.判断字符串str1是否大于字符串str2,应当使用___d________。
(A)if (str1>str2)
大学计算机C语言程序设计(填空题)

一、填空共219题第1题题号:422设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【1】 .Struct stud{ char num[6];int s[4];double ave;} a,*p;答案:1). 22第2题题号:533设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是【1】. for (x=0,y=0;y!=123&&x<3;x++)scanf ("%d",&y);答案:1). 3第3题题号:496静态变量和外部变量的初始化是在【1】阶段完成的,而自动变量的赋值是在【2】时进行的.答案:1). 编译2). 函数调用第4题题号:96已知a=13,b=6, a&b的十进制数值为【1】.答案:1). 4第5题题号:398程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次.答案:1). 0第6题题号:651设w=5;w+= -2;则w的值为【1】.答案:1). 3第7题题号:258下面程序段的输出结果是【1】.int a=12; a=a&0377;pritnf("%d\n",a);答案:1). 12第8题题号:457设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2后,t的值是【1】.答案:1). 1第9题题号:402设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的二进制数是【1】.答案:1). 11110000第10题题号:311若所用变量均已正确定义,则执行下面程序段后的值是【1】.for(i=0 ; i<2 ; i++ ) printf("YES"); printf("\n");答案:1). YESYES第11题题号:663int x=2;z=++x+1; 则z的值为【1】.答案:1). 4第12题题号:1442设有int x=11,则表达式(x++ * 1/3)的值是【1】。
C语言考试填空题(全部答案)

计算机程序设计基础(C语言)程序填空练习题程序填空:阅读程序。
在划线处填写适当的表达式或语句,使程序完整并符合题目要求1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。
m ain( ) 参考答案:{ char ch;ch=get char();if( ) ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'printf("It is an English character\n");else if( ) ch>='0'&&ch<='9'printf("I t is a digit character\n");else if( ) ch==' 'printf("It is a space character\n");elseprintf("It is other character\n"); }2.10个学生成绩按交换法排序。
main(){ float score[10], temp1;int i,j;printf("Please enter score:\n");f or (i=0; i<10; i++)scanf("%f",&score[i]);f or (i=0; i<9; i++)f or (j=i+1; j<10; j++)if(score[j] > score[i]){ temp1=score[j];score[j]=score[i];score[i]=temp1;}printf("Sorted results:\n");f or (i=0; i<10; i++)printf("%4.0f\n", score[i]); }11.排序函数:用交换法按成绩由高到低对学生成绩重新排序void Sort(float score[ ],int n){ int i,j;f loat t emp1;f or (i=0; i<n-1; i++){ f or (j=i+1; j<n; j++)if( ) score[j] > score[i]{ t emp1 = score[j];; score[j]=score[i];score[i] = temp1;}}}自定义一函数求n!, 编写程序输入n,输出n!.#include<stdio.h>long jc(int n){ int i=1;long p=1;while (i <= n){ p=p*i;i++; }} return p;main(){ int n;print f("Please ent er n:");scanf("%d",&n);printf("%d!= %ld\n",n,); jc(n)}4.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。
《C语言程序设计》复习题(2)-填空题

{ unsigned short x=65536; int y;
printf(“%d\n”, y=x);
} 50. 若有 int x=11; 则表达式 1/3*x++的值为 0 。
51. 执行语句 printf(“%d” , (a=2)&&(b=-2) ); 后的 输出是 1 。
52. 执行下列程序段后, 变量 i 的值是 16 。 int i=10 ; switch (i) { case 9: i+=0; case 10: i+=1; case 11: i+=2; default: i+=3; }
值为 -2 。 27. C语言中 标号 标识符无值、无类型且不需要声
明便可直接使用。 28. 若已声明: int x=1 , z=1 , y=1 , k ;则执行表达式
k=x++||++y&&++z后,变量k,x,y,z的值是 1,2,1,1 。
最小数是: 1000000000000000
29. 若用八进制常量表示C中的int型常1量0 (0160bits0)0
float x=25.0;
fwrite(&x,sizeof(float),1,fp);
48. 若有定义: int b=17; float a=4.5, c=6.5;
则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为 49. 下列程序执行后的输出结果是 0 。
7.5 。
main( )
是 for 。
35. 若一个函数不需要形式参数 , 则在定义函数时, 应使形式参数表为空或放置一个 void 。
(完整word版)c语言填空题题库

二, 填空题( 10 道小题,共20 分)1、一个C 源程序中至少应包含一个[main] 函数。
2、a是整型变量,则执行表达式a=25/3%3后a的值为。
[2]3、i nt m=5,y=2; 则表达式y+=y- =m*=y 的值为。
[-16]4、执行下列语句: int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%d , %d \n", a,b ); 的输出结果分别是[2,1]5、条件表达式的格式为表达式1?表达式2:表达式3,若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较[高]的类型6、当运行以下程序时,从键盘键入right?<CR>(<CR> 代表回车),则下面程序的运行结果是。
#include<stdio.h>main( ){ char c;while((c=getchar())! ='?') putchar(++c)}[sjhiu?]7、C语言中的数组必须先[定义],然后使用。
8、如果需要从被调用函数返回一个函数值,被调用函数必须包含【return 】语句。
9、已知:float f1=3.2,f2,*pf仁&f1;f2=f1 ,则*f2 的值为。
[3.2]10 、以下程序void fun(char *a, char *b){ a=b; (*a)++; } main (){ char c1="A", c2="a", *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf( “ &cn&”c ,c1,c2);}运行后的输出结果是。
[&c&c]11、字符串常量“ 123 ”在内存中的字节数是。
[8 字节]12、已有定义:int x=3 ; 则表达式:x=x+1.78 的值是。
C语言程序设计期末考试复习题及答案

A)称为函数的直接递归调用 B)称为函数的间接递归调用
C)称为函数的循环调用 D)C语言中不允许这样的递归调用
6.以下叙述中正确的是 ( A )
{ char a='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);}
程序运行后的输出结果是a)b,b B)b,c C)a,b D)a,c
9.有以下函数定义:(c)
void fun(int n, double x) { …… }
1 main()
2 { int x;
3 if (x=90) printf(“right”);
4 else printf(“error”);
}
行号: 改为: main()
2 { char s[]=”china”;
(4) main()
{ int a,b;
a=5;
b=8;
p(a,b);
p(a+b,a);
}
p(int x,int y)
{
y=x+y;
printf(“%d %d”,x,y);
}
程序的运行结果是:
A)for(i=1,p=1;i<=5;i++) p*=i;B)for(i=1;i<=5;i++){ p=1; p*=i;}
C)i=1;p=1;while(i<=5){p*=i; i++;}D)i=1;p=1;do{p*=i; i++; }while(i<=5);
完整word版,C语言程序设计期末考试试题(含答案)

C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是( )A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是( )A、ABCB、abcC、a_bcD、ab.c3、一个C语言程序是由( )A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( )A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( )A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是( )A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是( ) 。
#include<stdio.h>main(){int x;float y;scanf("%3d%f",&x,&y);}A、12345B、123C、45D、3458、若有以下定义int a,b; float x,则正确的赋值语句是( )A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是( )#include<stdio.h>{int i=10,j=10;printf("%d,%d\n",++i,j--);}A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是( )#include<stdio.h>main(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);A、A,YB、65,65C、65,90D、65,8911、下列运算符中优先级最高的是( )A、<B、十C、%D、!=12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。
C语言程序设计选择填空习题及答案

习题一一、选择题1.C程序的基本单位是(A)。
A.函数B.文件C.语句D.字符2.C程序中的变量(B)。
A.不用说明B.先说明后引用C.先引用后说明D.引用和说明顺序无关3.变量的说明在(B)。
A.执行语句之后B.执行语句之前C.执行语句当中D.位置无关4.C语言是一种(C)。
A.机器语言B.符号语言C.高级语言D.面向对象的语言二、填空题1.一个C程序总是从主函数开始执行。
2.结构化程序由顺序、选择、循环三种基本结构构成。
3.一个C程序只有一个名为main的主函数。
4.C程序中的每个语句以分号结束。
5.C程序中,函数由函数首部和函数体组成。
6.每个基本结构有一个入口和一个出口,没有死循环和死语句。
7.算法是计算机解决问题所依据的步骤。
习题二一、选择题1.下列数据中属于字符串常量的是( B)。
A.ABC B."ABC" C.'abc' D.'A'2.在计算机内存中,'\n'占用的字节数是( C)。
A.4 B.3 C.1 D.23.字符串"ABC"在内存中占用的字节数是( D)。
A.6 B.8 C.3 D.44.在C语言中,合法的长整型常数是( B)。
A.568701400 B.0L C.0.03546287 D.2.654e115.char型常量在内存中存放的是( A)。
A.ASCII代码值B.BCD代码值C.十进制代码值D.内码值6.下列各项中正确的标识符是( D)。
A.?bb B.a=8 C. b.βD.b_47.下列不正确的转义字符是( D)。
A.\\ B.\ 0 C.\" D.0x48.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为( B)。
A.0 B.1 C.2 D.39.设a的值为5,执行下列语句后,b的值不为2的是( C)。
A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=(float)a/210.执行语句x=(a=3,b=a--)后,x、a、b的值依次是( C)。
C语言程序设计试题及答案

C语言程序设计试题及答案IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】C语言程序设计一、选择题(共40分,每小题2分)1、以下叙述不正确的是(D )A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面2、下列四个选项中,是不合法的用户标识符的选项是( B )A、abcB、12ACC、sunD、 A3、设有语句int a=4;则执行了语句a+=a- =a*a后,变量a的值是(A )A、-24B、0C、4D、164、下列运算符中优先级最高的是( B )A、<B、+C、&&D、==5、在C语言中,运算对象必须是整型数的运算符是( A )A、%B、/C、%和/D、 +6、以下关于运算符的优先顺序的描述正确的是( C )A、关系运算符<算术运算符<赋值运算符<逻辑与运算符B、逻辑与运算符<关系运算符<算术运算符<赋值运算符C、赋值运算符<逻辑与运算符<关系运算符<算术运算符D、算术运算符<关系运算符<赋值运算符<逻辑与运算符7、在C语言中,如果下面的变量都是int类型,则输出的结果是( C )sum=pad=5;pAd=sum++,pAd++,++pAd;printf(“%d\n”,pad);A、7B、6C、5D、48、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B )A、 INPUT x、y、z;B、scanf(“%d%d%d”,&x,&y,&z);C、 scanf(“%d%d%d”,x,y,z);D、read(“%d%d%d”,&x,&y,&z);9、假定从键盘输入23456< 回车 >,下面程序的输出结果是:( C )void main ( ){ int m,n;scanf(“%2d%3d”,&m,&n);printf(“m=%d n=%d\n”,m,n);}A、m=23 n=45B、m=234 n=56C、m=23 n=456D、语句有错误10、若运行时,给变量x输入12,则以下程序的运行结果是( A )main( ){ int x,y;scanf(“%d”,&x);y=x>12?x+10:x-12;printf(“%d\n”,y);}A、 0B、 22C、 12D、1011、C语言中while和do-while循环的主要区别( A )A、do-while的循环体至少执行一次B、while 的循环控制条件比do-while的循环控制条件严格C、do-while允许从外部转到循环体内D、do-while的循环体不能是复合语句12、以下对二维数组的正确说明的语句是( C )A、int a[3][]B、float a(3,4)C、double a[3][4]D、float a(3)(4)13、以下程序的输出结果是(C)main( ){ int i,x[3][3]={1,2,3,4,5,6,7,8,9};for (i=0;i<3;i++)printf(“%d”,x[i][2-i]);}A、1,5,9B、1,4,7C、3,5,7D、3,6,914、以下能对一维数组a进行正确初始化的语句是( C )A、int a[10]=(0,0,0,0,0);B、 int a[10]={ };C、int a[10]={0};D、 int a[10]={10 *1};15、以下程序执行后的输出结果是:( A )int fun( int a,int b,int c){ a=456;b=567;c=678;}void main( ){ int x=10,y=20,z=30;z=fun(x,y,z);printf(“%d,%d,%d\n”,z,y,x);}A、30,20,10B、10,20,30C、10,30,50D、10,30,4016、以下说法正确的是(A)如果在一个函数中的复合语句中定义了一个变量,则该变量A、只在该复合语句中有效B、在该函数中有效C、在本程序范围内有效D、为非法变量17、以下函数调用语句中含有的实参个数为(B )func((exp1,exp2,exp3),(exp4,exp5));A、1B、2C、4D、518、在C语言程序中,以下说法正确的是( B )。
大学C语言程序设计(填空题)

C 语言程序设计习题-填空题
x=7; x+=x-=x+x; 习题 33-参考答案 -14 习题 34(填空题)[知识点:表达式] 若 a 和 b 均为 int 型变量,则以下语句的功能是______。 a+=b;b=a-b;a-=b; 习题 34-参考答案 交换 a、b 变量的值 习题 35(填空题)[知识点:顺序结构] 有一输入函数 scanf("%d",k);则不能使 float 类型变量 k 得到正确数值的原因是______。 习题 35-参考答案 格式字符不正确, 缺少&符号 习题 36(填空题)[知识点:顺序结构] 若有以下定义和语句,为使变量 c1 得到字符'A',变量 c2 得到字符'B',正确的格式输入形式是______。 char c1,c2; scanf("%4c%4c",&c1,&c2); 习题 36-参考答案 A□□□B□□□ 习题 37(填空题)[知识点:顺序结构] 执行以下程序时,若从第一列开始输入数据,为使变量 a=3,b=7,x=8.5, y=71.82, c1='A',c2='a',正确的数据输入形式是 ______。 int a,b;float x,y;char c1,c2; scanf("a=%d b=%d",&a,&b); scanf("x=%f y=%f",&x,&y; scanf("c1=%c c2=%c",&c1,&c2); 习题 37-参考答案 a=3□b=7x=8.5□y=71.82c1=A□c2=a<CR> 习题 38(选择题)[知识点:表达式] 若 int a=3,b=2,c=1,f;表达式 f=a>b>c 的值是______。 习题 38-参考答案 0 习题 39(填空题)[知识点:顺序结构] 以下程序的运行结果是______。 #include <stdio.h> main() {int x=1,y,z; x*=3+2; printf("%d\t",x); x*=y=z=5; printf("%d\t",x); x=y==z; printf("%d\n",x); } 习题 39-参考答案 5□□□□□□□25□□□□□□1(制表符为 7 个) 习题 40(填空题)[知识点:表达式] 设 y 为 int 型变量,请写出描述“y 是奇数”的表达式______。 习题 40-参考答案 y%2==1、y%2!=0、y%2、(y-1)%2==0、!(y%2==0) 4 / 25
C语言程序设计考试试题(附答案)

C语言程序设计考试试题(附答案)一、单项选择题若以下各题所有库函数都可以合法使用,且变量定义如下:int m=5, i=3,j=2,*p, a=8,b=0;int arr[10]={0,1,2,3,4,5,6,7,8,9},td[ ][3]={1,2,3,4,5,6};float x=2.5,y=3.0;double z=0; long n=1;char c=’A’,ch[20]={’a’,’b’,’c’,’\0’,’d’,’\0’};struct student{ int num;char name[20];float score;struct student *next;}st1,st2,*ps;FILE *fp;1.若将3和10从键盘输入给变量a、x,输入语句为scanf(“a=%d,x=%f”,&a,&x);正确的键盘输入是(↙表回车):A a=3,x=10↙B 3,10↙C 3 10↙D 3,10.0↙2. 以下不是死循环的语句是:A for ( ;;y+=i++);B while(a) y+=i++ ;C do{ y+=i++}while (a>0);D for (b=0;(c=getchar()!=’\n’);)b++;3.若p=arr;正确的语句是:A *p=arr[10];B *p=arr[2*a];C p=arr[5];D p[i]=arr[0];4.若ps=&st1;则下面描述正确的是:A ps->num与st1->num等价。
B ps.num与st1.num等价。
C ps->num与num等价。
D ps->num与st1.num等价。
5.语句printf(“%d",a<i>j);的输出结果是:A 1B 0C 8 D都不对6.表达式 j/i+a%i+x 的值是:A 6B 4.5C 6.0D 5.57.表达式 b||a+i&&i<j 的值是:A 不确定B 0.0C 1D 08.若执行语句 a=b+=3*j+(int)x;则b的值为:A 1B 8C 0D 8.59. 若执行语句 a=b>j ?++i : i++;则a与i的值分别为:A 4 ,4B 3 ,4C 4 ,3D 3 ,310.if (a<b) if (c==d) x=8;else x=1;表示的逻辑关系是:8 a<b 且c=d 8 a<b 且c=dA x=B x=1 a<b 且c≠d 1 a≥b且c=d8 a<b 且c=d 8 a<b 且c=dC x=D x=1a≥b 1 a<b11.将字符串“Wan Ming”输入数组ch中,正确的是:A、scanf(“%s”,ch)B、scanf(“%s”,&ch)C、ch=“Wan Ming”D、gets(ch)12. 执行语句printf(“%c”,td[1][0]+’A’)的结果是:A、AB、BC、DD、E13.下列关于main()函数说法正确的是A、C语言程序总是从main()开始执行B、C语言程序可以没有main()函数C、C语言程序可以包含多个main()函数,但必须在不同的模块中D、C语言程序中main()函数不能有形式参数14.下列关于函数说法正确的是A、C语言程序的函数内还可定义其他的函数B、C语言程序的函数内不可再定义其他的函数C、C语言程序的函数不能自己调用自己D、C语言程序中只有同一源文件中的函数才能有调用与被调用关系15.若#define squ(x) x*x 执行语句printf(“result=%d”,squ(i+j));结果为:A、result=36B、36C、result=11D、1116. 若#define squ(x) (x)*(x) 执行语句printf(“result=%d”,squ(i+j));结果为:A、result=36B、result=17C、result=11D、result=25 17.C语言对宏命令叙述正确的是A、宏替换占用运行时间B、编译程序对宏命令的处理是在对源程序中其它成分编译之前进行的C、宏命令的处理是在程序执行时进行的D、宏命令的处理是在程序连接时进行的18. 若执行语句a- =a+=a*=10;a的值为:A、0B、-10C、-100D、10019.若执行语句p=arr; printf(“%d”,*(p+i));输出结果为A、0B、2C、3D、120.若执行printf(“%s”,ch);结果为:A、’abc’B、abcC、abcdD、abc\0d21.若对数组进行初始化:char carr[ ]={’s’,’t’,’u’,’d’,’e’,’n’,’t’},barr[ ]=”student”;则正确的是A、carr与barr长度相同B、carr比barr长C、carr与barr相同D、carr比barr短22.若有说明语句int (*p)[N];则p是A、N个指向整型变量的指针B、可指向有N个整型元素的一维数组的指针C、指向N个整型变量的函数指针D、有N个指针元素的一维指针数组23.若有说明语句int *f( );则函数f是A、f是一个指向整型变量的数组指针B、f返回一个整型数据C、f是一个指向整型变量的函数指针D、f返回一个整型指针,指向函数本身24.若函数f定义如下:void f(char *d, char *s){ while ( *d++=*s++);}函数f的功能是:A、串比较B、串复制C、求串长D、串反向25.表达式100+a+’a’+x*z的值的数据类型为A、intB、floatC、doubleD、char26.若要动态申请一个double型内存单元,正确的语句是A、pd=double malloc(sizeof(double))B、pd=( * double)malloc(sizeof(double))C、pd=double * malloc(sizeof(double))D、pd=(double *)malloc(sizeof(double)) 27.若要从键盘上输入67892到变量n中,正确的语句是A、scanf(“%lf”,&n);B、scanf(“%ld ”,&n);C、scanf(“%lf ”,n);D、scanf(“%d ”,&n);28.判断字符变量c是否不为小写英文字母的正确表达式是A、’a’<=c <=’z’B、c>= ‘a’ && c<=’z’C、’a’≤c ≤’z’D、c<’a’ || c>’z’29.下列每组表达式被执行后,结果完全等价的是A、!(b= =0)与!(!b )B、b=(a=4,4*5) 与b=a=4,4*5C、float(i/j) 与float i/jD、0<x<100 与x>0 && x<10030.表达式(m&1)==(m%2)的值是A、0B、无法确定C、1D、以上都不对31.数学式ln2x+asin(60°)的C语言表达式是A、log(2*x)+a*sin(60)B、ln(2*x) +a*sin(60/180*3.14)C、ln(2*x) +a*sin(60)D、log(2*x)+a*sin(3.14*60/180)32. 要打开一个已经存在的非空文件file用于修改,则正确的语句是A、fopen(“file”,”r+”)B、fopen(“file”,”w”)C、fopen(“file”,”a+”)D、fopen(“file”,”r”)33. 若打开文件时发生错误,则f open()函数的返回值是A、1B、0C、不确定D、没有返回值34. 调用函数fseek(fp,-25L,2),其操作结果是A、文件位置指针从文件开始处前移25字节B、文件位置指针从文件结尾处后移25字节C、文件位置指针从文件当前位置处前移25字节D、文件位置指针从文件当前位置处后移25字节35. 能正确表示a和b同时为正或同时为负的逻辑表达式是A、(a>=0||b>=0)&&(a<0||b<0)B、(a>=0&&b>=0)&&(a<0&&b<0)C、(a*b>0&&(a*b<=0)D、a*b>036. 若x=y=z=1;表达式(x--||++y)&&(z++)执行后,x,y,z的值分别为:A. 0,1,1B. 0,1,2C. 0,2,1D. 0,2,237.下列变量的初始化,不正确的是:A. int x,y=5;B. float x=y=3.5;C. char s[]=”a”;D. int a[][3]={{1},{},{0,9}};38. 可以代替while(x!=0)中的条件x!=0的是:A. xB. !xC. x==1D. x!=139.有关函数参数,下列说法不正确的是:A. 实参和形参是不同的变量;B. 实参可以将数据传给形参;C. 形参可以将数据传给实参;D. 实参和形参必须个数相等,类型一致。
《c语言程序设计》试题库及答案

《c语言程序设计》试题库及答案一、选择题1. 下列哪个选项是C语言的标准库函数?A. printfB. scanfC. mainD. All of the above答案:D2. C语言中,用于定义字符串的字符数组的语法是什么?A. char str[] = "Hello";B. char str[] = {"Hello"};C. char str = "Hello";D. char str[] = 'Hello';答案:A3. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. functionC. defD. void答案:A二、填空题1. 在C语言中,定义一个整型变量的正确方式是:________。
答案:int variable_name;2. C语言中,用于计算两个数的和的运算符是:______。
答案:+3. 如果要在C语言中声明一个指向整型的指针,应该使用:________。
答案:int *pointer_name;三、简答题1. 请简述C语言中数组和指针的区别。
答案:数组是一组相同类型的元素的集合,可以通过索引访问每个元素。
指针是一个变量,它存储了另一个变量的内存地址。
数组名可以被用作指向数组首元素的指针,但数组本身是一个固定大小的实体,而指针可以被重新赋值为其他地址。
2. 解释C语言中的结构体(struct)是什么?答案:结构体是一种用户定义的数据类型,它允许将不同的数据类型组合成一个单一的数据结构。
它使得可以创建包含多种数据类型的复杂数据结构。
四、编程题1. 编写一个C语言程序,实现计算两个整数的和,并输出结果。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("The sum is: %d\n", sum);return 0;}```2. 编写一个C语言程序,实现将一个字符串反转,并输出结果。
c程序设计考试题目及答案

c程序设计考试题目及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义函数?A. structB. intC. voidD. return答案:C2. 在C语言中,哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A3. 若有定义`int a = 5;`,则执行`a += 3;`后,变量a的值是多少?A. 3B. 5C. 8D. 无法确定答案:C4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. $variableD. variable!答案:B5. 在C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World'D. 'Hello, World'答案:A6. C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][];B. int array[][3];C. int array[3][3];D. int array[][];答案:C7. 在C语言中,以下哪个选项是正确的条件语句?A. if (x > y)B. if x > yC. if (x > y) elseD. if (x > y) else if答案:A8. 在C语言中,以下哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++)B. for i = 0; i < 10; i++C. for (int i = 0; i < 10;)D. for (i = 0; i < 10; i++)答案:A9. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int, int);B. int add(int a, int b)C. int add(int, int) {}D. int add(a, b)答案:A10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr[10];D. int ptr(int);答案:A二、填空题(每题2分,共20分)1. 在C语言中,`printf`函数用于__输出__。
C语言程序设计填空题及答案复习用

导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能;这类习题的设计就是要引导读者逐步掌握编程的方法;本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力;在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率; 下面程序的功能是不用第三个变量,实现两个数的对调操作; include <>main{ int a,b;scanf"%d%d",&a,&b;printf"a=%d,b=%d\n",a,b;a= ①;b= ②;a= ③;printf"a=%d,b=%d\n",a,b;}下面程序的功能是根据近似公式:π2/6≈1/12+1/22+1/32+ ……+1/n2,求π值; include <>double pilong n{ double s=;long i;fori=1;i<=n;i++s=s+ ①;return ②;}下面的程序的功能是求一维数组中的最小元素;findminint s,int t,int k{ int p;forp=0,k=p;p<t;p++ifsp<sk①;}main{ int a10,i,k=&i;fori=0;i<10;i++scanf"%d",&ai;findmina,10,k;printf"%d,%d\n",k,ak;}下面程序的功能是计算1-3+5-7+ …… -99+101的值;main{ int i,t=1,s=0;fori=1;i<=101;i+=2{ ①t=t i;s=s+t;②;t>0t=-1:1;}printf"%d\n",s;}有以下程序段:s=;fork=1;k<=n;k++s=s+kk+1;printf"%f\n",s;填空完成下述程序,使之与上述程序的功能完全相同;s=;①;k=0;do{ s=s+d;②;d=kk+1;}while ③;printf"%f\n",s;下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入;main{ float x,amax,amin;scanf"%f",&x;amax=x;amin=x;while ①{ ifx>amax amax=x;if ②amin=x;scanf"%f",&x;}printf"\namax=%f\namin= %f\n",amax,amin;}下面程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中;funint x,int b{ int k=0,r;do{ r=x% ①;bk++=r;x/= ②;}whilex;}下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数;例如数字26,数位上数字的乘积12大于数字之和8;main{ int n,k=1,s=0,m;forn=1;n<=100;n++{ k=1;s=0;①;while ②{ k=m%10;s+=m%10;③;}ifk>sprintf"%d",n;}}下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数;main{ int i,j,k,count=0;fori=1;i<=9;i++forj=0;j<=9;j++if ①continue;else fork=0;k<=9;k++if ②count++;printf"%d",count;}下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数;main{ int i,j;fori=0;①;i++{ j=i10+6;if ②countinue;printf"%d",j;}}下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数;hcfint m,int n{ int r;ifm<n{ r=m;①;n=r;}r=m%n;while ②{ m=n;n=r;r=m%n;}③;}下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序;排好序的10个数分两行输出;程序如下:include <>main{ ①;int i,j;printf"Input 10 numbers please\n";fori=0;②;i++scanf"%f", &ai;printf"\n";fori=2;③;i++forj=0;④;j++ if ⑤{ x=aj;⑥;aj+1=x;}printf"The sorted 10numbers;\n";fori=0;⑦;i++{ if ⑧printf"\n";printf"%f\t",ai;}printf"\n";}下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和;include ""main{ int i,a20,s,count;s=count=0;fori=0;i<20;i++scanf"%d", ①;fori=0;i<20;i++{ ifai<0②;s+=ai;count++;}printf"s=%d\tcount=%d\n",s,count;}下面程序的功能是删除字符串s中的空格;include <>main{ char s="Beijing ligongdaxue";int i,j;fori=j=0;si='\0';i++ifsi= ' ' ①;else ②;sj= '\0';printf"%s",s;}下面程序的功能是将字符串s中所有的字符'c'删除;请选择填空;include<>main{ char s80;int i,j;getss;fori=j=0;si= '\0';i++ifsi= 'c' ①;sj= '\0';putss;}下面程序的功能是输出两个字符串中对应相等的字符;请选择填空;include <>char x="programming";char y="Fortran";main{ int i=0;whilexi= '\0' && yi= '\0' ifxi==yiprintf"%c", ①;elsei++;}下面程序的功能是将字符串s 中的每个字符按升序的规则插到数组a中, 字符串a已排好序;include <> main{ char a20="cehiknqtw";char s="fbla";int i,k,j;fork=0;sk= '\0';k++{ j=0;whilesk>=aj && aj= '\0'j++;for ①②;aj=sk;}putsa;}下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差;例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1;include <>main{ char str1100,str2100,c;int i,s;printf"Enter string 1: ";getsstr1;printf"Enter string 2: ";getsstr2;i=0;whilestr1i == str2i &&str1i= ①i++;s= ②;printf"%d\n", s;}下面的函数expand在将字符串s复制到字符串t时, 将其中的换行符和制表符转换为可见的转义字符表示,即用'\n'表示换行符,用'\t'表示制表符;expandchar s,char t{ int i,j;fori=j=0;si= '\0';i++switch si{ case '\n': t ①= ②;tj++ = 'n';break;case '\t': t ③= ④;tj++ = 't';break;default: t ⑤= si;break;}tj = ⑥;}下面的函数indexchar s, char t检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置下标值,否则送回-1;indexchar s, char t{ int i,j,k;fori=0;si= '\0';i++{ forj=i,k=0;①&& sj==tk;j++,k++ ;if ②return i;}return-1;}n下面程序的功能是计算S= k ;k=0long funint n{ int i;long s;fori=1;i ①;i++s=i;return ②;} main{ int k,n;long s;scanf"%d",&n;s= ③;fork=0;k<=n;k++s+= ④;printf"%ld\n",s;}下面程序的功能是显示具有n个元素的数组s中的最大元素;define N 20main{ int i,aN;fori=0;i<N;i++scanf"%d",&ai;printf"%d\n", ①;}fmaxint s,int n{ int k,p;forp=0,k=p;p<n;p++ifsp>sk ②;returnk;}下面程序的功能是由键盘输入n,求满足下述条件的x、y:nx和ny的末3位数字相同,且x≠y,x、y、n均为自然数,并使x+y为最小;include <>pow3int n,int x{ int i, last;forlast=1,i=1;i<=x;i++last= ①;returnlast;}main{ int x,n,min,flag=1;scanf"%d", &n;formin=2;flag;min++forx=1;x<min && flag;x++if ②&&pow3n,x==pow3n,min-x{ printf"x=%d,y=%d\n", x,min-x ;③;}}下面的程序是用递归算法求a的平方根;求平方根的迭代公式如下:include <>double mysqrt double a, double x0{ double x1, y;x1 = ①;if fabsx1-x0>y = mysqrt ②;else y = x1;return y ;}main{ double x;printf"Enter x: ";scanf"%lf", &x;printf"The sqrtof %lf=%lf\n", x, mysqrt x, ;}以下程序是计算学生的年龄;已知第一位最小的学生年龄为10岁,其余学生的年龄一个比一个大2岁,求第5个学生的年龄;include <>age int n{ int c;if n==1 c=10;else c= ①;returnc;}main{ int n=5;printf"age:%d\n", ②;}下面的函数sumint n完成计算1~n的累加和;sumint n{ ifn<=0printf"data error\n";ifn==1 ①;else ②;}下面的函数是一个求阶乘的递归调用函数;factoint n{ if n == 1 ①;else return ②;}组合问题,由组合的基本性质可知:1 Cm,n=Cn-m,n2 Cm,n+1=Cm,n+Cm-1,n公式2是一个递归公式,一直到满足C1,n=n为止;当n<2m时,可先用公式1 进行简化,填写程序中的空白,使程序可以正确运行;include""main{ int m,n;printf"Input m,n=";scanf"%d%d", &m, &n;printf"The combinationnumbeers is %d\n",combinm,n;}combin int m, int n{ int com;if n<2m m=n-m;if m==0 com=1;else ifm==1 ①;else ②;returncom;}下列函数是求一个字符串str的长度;•••••• int strlen char str••••••{ if ①return 0;•• •••• else return ②;}用递归实现将输入小于32768的整数按逆序输出;如输入12345,则输出54321;include""main{ int n;printf"Input n : ";scanf"%d", ①;rn;printf"\n";}r int m{ printf"%d", ②;m = ③;if ④⑤;}输入n值,输出高度为n的等边三角形;例如当n=4时的图形如下:include <>void prt char c, int n{ if n>0{ printf "%c", c ;①;}}main{ int i, n;scanf"%d", &n;for i=1;i<=n;i++{ ②;③;printf"\n";}}下面的函数实现N层嵌套平方根的计算;double ydouble x, int n{ if n==0return0;else return sqrtx+ ①;}函数revstrs将字符串s置逆,如输入的实参s为字符串"abcde", 则返回时s 为字符串"edcba";递归程序如下:revstr char s{ char p=s, c;whilep p++;①;ifs<p{ c=s;s=p;②;revstrs+1;③;}}如下是由非递归实现的revstrs函数:revstr schar s;{ char p=s, c;while p p++;④;while s<p{ c=s;⑤= p;p-- = c;}}下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA";void inventchar str,int n{ char t;t=str;str=str+n-1;str+n-1=t;if n>2 invent ①,n-2;else ②;}从键盘上输入10个整数,程序按降序完成从大到小的排序; include <>int array10;sort int p, int q{ int max, s;if ①return;max=p;for s=p+1;s<=q;s++if s > max②;swap ③;sort ④;}swap int x, int y { int temp;temp=x;x=y;y=temp;}main{ int i;printf"Enterdata :\n";for i=0;i<10;i++scanf"%d", &arrayi;sort⑤;printf"Output:";for i=0;i<10;i++printf"%d ", arrayi;}下面函数的功能是将一个整数存放到一个数组中;存放时按逆序存放;例如:483存放成"384";include <>void convertchar a, int n{ int i;ifi=n/10 =0convert ①, i ;a = ②;}char str10= " ";main{ int number;scanf"%d", &number;convert str, number ;putsstr;}下面程序的功能是实现数组元素中值的逆转;include <>main{ inti,n=10,a10={1,2,3,4,5,6,7,8,9,10};inverta,n-1;fori=0;i<10;i++printf"%4d",ai;printf"\n";}invertint s,int num{ int t,k;t=s+num;while ①{ k=s;s=t;t=k;②;③;}}下面程序通过指向整型的指针将数组a34 的内容按3行×4列的格式输出,请给printf 填入适当的参数,使之通过指针p将数组元素按要求输出;include <>inta34={{1,2,3,4},{5,6,7,8},{9,1 0,11,12}}, p=a;main{ int i,j;fori=0;i<3;i++{ forj=0;j<4;j++printf"%4d ", ①;}}下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串; include <>main{ char str81, sptr;int i;fori=0;i<80;i++{ stri=getchar ;ifstri== '\n' break;}stri= ①;sptr=str;while sptrputchar sptr ②;}下面函数的功能是将字符变量的值插入已经按ASCII码值从小到大排好序的字符串中;void funchar w,char x,int n{ int i,p=0;whilex>wp ①;fori=n;i>=p;i-- ②;wp=x;++n;}下面程序的功能是从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符;include <>strmergea,b,c / 将已排好序的字符串a、b合并到c /char a,b,c;{ char t,w;w=c;while a= '\0' ①b='\0'{ t= ②a++:b<a b++ :③;/ 将a、b的小者存入t /if w ④'\0' w=t;else if t ⑤w ++w=t;/ 将与w不相同的t存入w /}while a = '\0' / 以下将a或b中剩下的字符存入w /if a = w ++w=a++;else a++;while b = '\0'if b = w ++w=b++;else b++;++w = ⑥;}strsort char s / 将字符串s中的字符排序/{ int i,j,n;char t,w;⑦;for n=0;w = '\0';⑧w++;for i=0;i<n-1;i++for j=i+1;j<n;j++if si>sj{ ⑨}}main{ char s1100,s2100,s3200;printf"\nPlease Input First String:";scanf"%s",s1;printf"\nPlease Input Second String:";scanf"%s",s2;strsorts1;strsorts2;⑩= '\0';strmerges1,s2,s3;printf"\nResult:%s",s3;}已知某数列前两项为2和3,其后继项根据前面最后两项的乘积,按下列规则生成:①若乘积为一位数,则该乘积即为数列的后继项;②若乘积为二位数,则该乘积的十位上的数字和个位上的数字依次作为数列的两个后继项; 下面的程序输出该数列的前N项及它们的和,其中,函数sumn,pa 返回数列的前N项和,并将生成的前N项存入首指针为pa的数组中,程序中规定输入的N值必须大于2,且不超过给定的常数值MAXNUM;例如:若输入N的值为10,则程序输出如下内容:sum10=442 3 6 1 8 8 6 4 2 4include ""define MAXNUM 100int sumn, paint n, pa;{ int count, total, temp;pa = 2;①=3;total=5;count=2;while count++<n{ temp = pa-1 pa;if temp<10{ total += temp;++pa = temp;}else{ ②= temp/10;total += pa;if count<n{ count ++;pa++;③= temp%10;total += pa;}}}④;}main{ int n, p, q, numMAXNUM;do{ printf"Input N= 2<N<%d:",MAXNUM+1;scanf"%d", &n;}while ⑤;printf"\nsum%d=%d\n", n,sumn, num;for p=num, q = ⑥;p<q;p++printf"%4d", p;printf"\n";}下面程序的功能是输入学生的姓名和成绩,然后输出;include <>struct stuinf{ char name20;/ 学生姓名/int score;/ 学生成绩/} stu, p;main{ p=&stu;printf"Enter name:";gets ①;printf"Enter score: ";scanf"%d", ②;printf"Output: %s, %d\n", ③, ④;}下面程序的功能是按学生的姓名查询其成绩排名和平均成绩;查询时可连续进行,直到输入0时才结束;•• include <>include <>define NUM 4• struct student• { int rank;char name;float score;••••••••};•••••••• ①stu={ 3,"liming",,•••••••• 4,"zhanghua",,•••••••• 1,"anli",,•••••••• 2,"wangqi",};••••••••main••••••••{ char str10;•••••••• int i;•••••••• do{ printf"Enter a name";•••••••• scanf"%s",str;•••••••• for i=0;i<NUM;i++ •••••••• if ②••••••••{ printf"Name :%8s\n",stui.name;••••••••printf"Rank :%3d\n",stui.rank;••••••••printf"Average :%\n",stui.score;•••••••• ③;•••••••• }•••••••• if i>=NUMprintf"Not found\n";•••••••• }whilestrcmpstr,"0"=0 ;••••••••}下面程序的功能是从终端上输入5个人的年龄、性别和姓名,然后输出;include""structman{ charname20;unsigned age;charsex7;};main{ structmanperson5;data_inperson,5;data_o utperso n,5;}data_in struct man p, int n{ struct man q = ①;for ;p<q;p++{ printf "age:se x:name " ;scanf" %u%s", &p->ag e,p->sex;②;}}data_o ut struct man p, int n { struct man q = __③__;for ;p<q;p++printf"%s;%u;%s\n",p->name,p->age,p->sex;}输入N个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序进行排列;要求:当两个整数相等时,整数的排列顺序由输入的先后次序决定;例如:输入的第3个整数为5,第7个整数也为5,则将先输入的整数5排在后输入的整数5的前面;程序如下:include ""define N 10struct{ int no;int num;} arrayN;main{ int i,j,num;for i=0;i<N;i++{ printf"enter No. %d:",i;scanf"%d",&num;for ①;j>=0&&arrayj.num②num;③arrayj+1=arrayj;array ④ .num=num;array ⑤ .no=i;}for i=0;i<N;i++printf"%d=%d,%d\n",i,arrayi.num,arrayi.no;}以下程序的功能是:读入一行字符如:a、...y、z,按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾如下图,然后再按输入的相反顺序输出,并释放全部结点;include <>main{ struct node{ char info;struct node link;} top,p;char c;top=NULL;whilec= getchar ①{ p=struct nodemallocsizeofstruct node;p->info=c;p->link=top;top=p;}while top{ ②;top=top->link;putcharp->info;freep;}}下面函数将指针p2所指向的线性链表,串接到p1所指向的链表的末端;假定p1所指向的链表非空;define NULL 0struct link{ float a;struct link next;};concatenate p1,p2struct list p1,p2;{ if p1->next==NULLp1->next=p2;else concatenate ①,p2;}下面程序的功能是从键盘输入一个字符串,然后反序输出输入的字符串;include <>struct node{ char data;struct node link;}head;main{ char ch;struct node p;head = NULL;while ch=getchar='\n'{ p = struct nodemallocsizeofstruct node;p->data = ch;p->link = ①;head = ②;}③;while p=NULL{ printf"%c ", p->data;p = p->link;}}下面程序的功能是从键盘上顺序输入整数,直到输入的整数小于0时才停止输入;然后反序输出这些整数;include <>struct data{ int x;struct data link;}p;input{ int num;struct data q;printf"Enter data:";scanf"%d", &num;if num<0①;q = ②;q->x = num;q->link = p;p=q;③;}main{ printf"Enter data until data<0:\n";p=NULL;input;printf"Output:";while ④{ printf"%d\n", p->x;⑤;}}下面函数的功能是创建一个带有头结点的链表,将头结点返回给主调函数;链表用于储存学生的学号和成绩;新产生的结点总是位于链表的尾部;struct student{ long num;int score;struct student next;};struct student creat{ struct studenthead=NULL,tail;long num;int a;tail= ①mallocLEN;do{ scanf"%ld,%d",&num,&a;ifnum=0{ ifhead==NULL head=tail;else ②;tail->num=num;tail->score=a;tail->next=struct studentmallocLEN;}else tail->next=NULL;}whilenum=0;return ③;}下面create函数的功能是建立一个带头结点的单向链表,新产生的结点总是插入在链表的末尾;单向链表的头指针作为函数值返回;include <>define LEN sizeofstructstudentstruct student{ long num;int score;struct student next;};struct student creat{ struct studenthead=NULL,tail;long num;int a;tail= ①mallocLEN;do{ scanf"%ld,%d",&num,&a;ifnum=0{ ifhead==NULL head=tail;else tail=tail->next;tail->num=num;tail->score=a;tail->next= ②mallocLEN;}else tail->next=NULL;}whilenum=0;③;}下面程序的功能是统计文件中的字符的个数;include <>main{ long num=0;①fp;iffp=fopen"", "r"==NULL{ printf"Can't open the file ";exit0;}while ②{ fgetcfp;num++;}printf"num=%d\n",num;fclosefp;}下面程序的功能是把从键盘输入的文件用作为文件结束标志复制到一个名为的新文件中;include <>FILE fp;main{ char ch;iffp=fopen ①==NULLexit0;whilech=getchar=''fputcch,fp;②;}下面程序的功能是将磁盘上的一个文件复制到另一个文件中,两个文件名在命令行中给出假定给定的文件名无误; include <>mainint argc,char argv{ FILE &f1,f2;ifargc< ①{ printf"The command lineerror ";exit0;}f1=fopenargv1, "r";f2=fopenarhv2, "w";while ②fputsfgetcf1, ③;④;⑤;}下面程序的功能是根据命令行参数分别实现一个正整数的累加或阶乘;例如:如果可执行文件的文件名是sm,则执行该程序时输入:"sm + 10",可以实现10的累加;输入:"sm - 10",可以实现求10的阶乘;include <>include <>main int argc,char argv{ int n;void sum,mult;void funcp;n=atoiargv2;ifargc=3 || n<=0dispform ;switch ①{ case '+': funcp=sum;break;case '-': funcp=mult;break;default: dispform ;}②;}void sumint m{ int i,s=0;fori=1;i<m;i++③;printf"sum=%d\n",s;}void multint m{ long int i, s=1;fori=1;i<=m;i++s = i;printf"mult= %ld\n";s;}dispform{ printf "usage:sm n+/n>0\n";exit 0;}下面程序的功能是键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件中,然后从该文件读出字符串并显示出来;include <>main{ char str100;int i=0;FILE fp;iffp=fopen"", ①==NULL { printf"Can't open the file.\n";exit0;}printf"Input a string:\n";getsstr;whilestri{ ifstri>= 'a'&&stri<= 'z' stri= ②;fputcstri,fp;i++;}fclosefp;fp=fopen"", ③;fgetsstr,strlenstr+1,fp;printf"%s\n",str;fclosefp;}下面程序的功能是将从终端上读入的10个整数以二进制方式写入名为""的新文件中;include <>FILE fp;main{ int i, j;if fp=fopen ①, "wb" ==NULLexit 0;for i=0;i<10;i++{ scanf"%d", &j ;fwrite ②, sizeofint, 1, ③;}fclose fp;}以字符流形式读入一个文件,从文件中检索出六种C语言的关键字,并统计、输出每种关键字在文件中出现的次数;本程序中规定:单词是一个以空格或'\t'、'\n'结束的字符串;include <>include <>FILE cp;char fname20, buf100;int num;struct key{ char word10;int count;}keyword={ "if", 0, "char", 0,"int", 0,"else", 0, "while", 0, "return",0};char getword FILE fp{ int i=0;char c;whilec=getcfp = EOF &&c==' '||c=='\t'||c=='\n' ;if c==EOF return NULL ;else bufi++=c;whilec = ①&& c= ' ' && c='\t' && c= '\n'bufi++ = c;bufi= '\0';returnbuf;}lookupchar p{ int i;char q, s;fori=0;i<num;i++ { q = ②;s=p;while s && s==q{ ③}if ④{ keywordi.count++;break;}}return;}main{ int i;char word;printf"Input file name:";scanf"%s", fname;ifcp=fopenfname, "r"==NULL{ printf"File openerror: %s\n", fname;exit0;}num = sizeofkeyword /sizeofstruct key;while ⑤lookupword;fclosecp;fori=0;i<num;i++printf"keyword:%-20scount=%d\n",keywordi.word,keywordi.count;}下面程序的功能是从键盘接受姓名例如:输入"ZHANG SAN",在文件""中查找,若文件中已经存入了刚输入的姓名,则显示提示信息;若文件中没有刚输入的姓名,则将该姓名存入文件;要求:⑴若磁盘文件"",已存在,则要保留文件中原来的信息;若文件""不存在,则在磁盘上建立一个新文件;⑵当输入的姓名为空时长度为0,结束程序;include <>main{ FILE fp;int flag;char name30, data30;iffp=fopen"", ①==NULL{ printf"Open file error\n";exit0;}do{ printf"Enter name:";getsname;if strlenname==0break;strcatname, "\n";②;flag=1;while flag && fgetsdata, 30,fp ③if strcmpdata, name == 0④;if flagfputsname, fp;elseprintf"\tData enter error\n";} while ⑤;fclosefp;}。
C语言程序设计题目及解答-01

一、判断题 (20分)1. 计算机是信息处理的工具,任何信息必须被转换成二进制形式数据后才能由计算机进行处理、存储和传输。
2分2. C语言采用解释方式将源程序转换为二进制的目标代码。
2分3. 在C源程序中,/*与*/之间的注释信息也被编译,但对程序运行运果不发生影响。
2分4. 在C语言中,字母的大小写不被区分。
2分5. 对C语言中用到的任何一个变量都要规定其类型。
2分6. 字符型数据和整数之间是不可以通用的。
2分7. 转义字符是一种常量。
2分8. C程序中的一个变量可以被定义为两个或多个不同的类型。
2分9. 字符常量是用单撇号括来的一个字符,这个字符可以是任意的。
2分10. C语言中的标识符以字母或下划线开头,可跟任何字符。
2分二、选择题 (60分)1.目前,在微型计算机中普遍采用的符号编码是() [A] 2分A. ASCII码B. EBCDIC码C. GB2312-80 码D. UNICODE码2.下列一组数据表示方式中的最大数是() [D] 2分A. 1234OB. 1FFHC. 1010001BD. 789D3.ASCII码采用的是()位编码方案,在计算机中的表示方式为()。
[C] 2分A. 8,最高位为“0”的2BB. 8,最高位为“1”的2BC. 7,最高位为“0”的1BD. 7,最高位为“1”的1B4.下列字符中,其 ASCII码值最大的是()。
[B] 2分A. AB. aC. 0D. 95.若在一个非零无符号二进制整数右边加两个零形成一个新的数,则新数的值是原数值的()倍。
[A] 2分A. 4B. 2C. 1/4D. 1/26.计算机中,一个浮点数由两部分组成,它们是()。
[C] 2分A. 阶码和基数B. 基数和尾数C. 阶码和尾数D. 整数和小数7.汉字编码与ASCII码在计算机内部的区分方法是()。
[C] 2分A. 两个字节的高八位都为“0”为两个ASCII码B. 两个字节的高八位都为“1”为两个ASCII码C. 两个字节的高八位都为“1”为一个汉字编码D. 两个字节的高八位都为“0”为一个汉字编码8.常用字符的ASCII码值从小到大的排列顺序为()。
程序设计基础(C)第1——5章复习题答案

程序设计基础(C)第1——5章复习题及参考答案一、单选题1.可以在C语言中使用的一组用户标识符是(C)。
A. 3BB. KEYC. _123D. voidsizeof cl_c2 T3_al_ CHA TDO -for scanf 6B2.while(!x)中的!x与下面条件(A)等价。
A. x==0B. x==1C. x!=5D. x!=03.增1减1运算只能作用于(B)。
A. 常量B. 变量C. 表达式D. 函数4.下面四个选项中,均是字符常量或数值常量的选项是(A)。
A. 0.0B. “A”C. …3‟D. +0010f 3.9E-2.5 011 0xabcd8.9e 1e1 0xff00 2e3…&‟ …\”‟ 0a 50.5.下选项中正确的实型常量是(D)。
A. 0B. 0.618*10^2C. .871D. 3.1415 6.C语言中运算对象必须是整型的运算符是(D)。
A. %= 与/B. = 与&C. * 与^D. % 与|7.设a=2,b=2;则++a+b的结果是( D),a的结果是( B ),b的结果是( A)。
A. 2B. 3C. 4D. 59.下列运算符中优先级最低的是(B)。
A. +B. &&C. <=D. sizeof10.设int a=2;则表达式(a++*1/3)的值是(A),a的值是(D)。
A. 0B. 1C. 2D. 311.字符数据在内存中的存储采用的是(D)。
A. 反码B. 补码C. EBCDIC码D. ASCII码12.在C语言类型说明中,int、char、short等类型数据的长度是(D)。
A. 固定的B. 由用户自己定义的C. 任意的D. 与机器字的长度有关的13.在C语言中,不同类型的两个数据混合运算时,要先转换成相同类型再进行运算,设有int,long,unsigned和char类型的变量和数据,则它们的转换规律是(C),表达式最后的运算结果是(D)类型的数据。
C语言程序设计复习参考答案

《C语言程序设计》复习参考答案(总21页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第一章【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。
答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。
答:函数首部: void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。
3.标识符是用来标识程序中的某个对象名字的字符序列。
C语言把标识符分为三类,即关键字、预定义标识符、用户自定义标识符。
对于用户自定义标识符的命名C语言规定:(1)所有的用户标识符必须先定义后使用;(2)用户标识符由字母(A~Z,a~z)、数字(0~9)、下划线“_”组成,并且首字符不能是数字;(3)区分大小写;(4)不能用关键字作为用户自定义标识符,通常不使用预定义标识符作为用户自定义标识符。
4.理论上讲,程序开发过程分为四个步骤,分别为:(1)编辑源程序(2)编译源程序,生成目标程序(3)连接目标程序及其相关模块,生成可执行文件(4)运行可执行文件一.单元练习一.选择题1.构成C语言程序的基本单位是()。
A.框架B.预处理 C.函数D.语句2.在程序开发过程中,把文本文件格式源程序转化为二进制格式的目标程序的过程称之为()。
A.编辑 B.编译 C.连接 D.运行3.关于主函数,下列说法不正确的是()。
《C语言程序设计》题库及答案

《C语言程序设计》题库及答案《C语言程序设计》复习题库1、计算下面公式的值。
T=1/1!+1/2!+1/3!+……+1/m! 当m=5时的结果(按四舍五入保留3位小数)。
(注:所有变量用float数据类型定义!)答案:1.7172、程序填空:用_号输出字母C的图案。
_include \_include \main() {_____________ printf(\ _____________ _____________ getch(); } 3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。
编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。
(注:所有变量用long数据类型定义!) 答案:15334594、 /_下面程序的功能是:计算并输出700以内的最大的10个能被13或者17整除的自然数之和。
请改正程序中的错误,并运行,最后给出程序运行的正确结果。
(注:只有一处错误!)_/ 答案:6591 _include void main() {int total=0, mc=1, k=700; int pm[10],count=0;while( (k>=2) __ mc if ((k ==0) || (k ==0)) {pm[mc] = k; mc++; } k--; }for( k=1;k5、求_ = 1+1/5+1/7+1/9+…的近似值,直到最后一项的绝对值小于10-5为止。
6、计算如下公式的A20值。
A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ......(按四舍五入保留10位小数)。
答案:0.61803398507、求[10,1600]之间能被7整除的奇数之和。
答案:909658、函数mystrlen(char _s)的功能是求字符串s的长度。
请填空。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。
这类习题的设计就是要引导读者逐步掌握编程的方法。
本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。
在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。
【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。
#include <stdio.h>main(){ int a,b;scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);a= ①;b= ②;a= ③;printf("a=%d,b=%d\n",a,b);}【3.2】下面程序的功能是根据近似公式:π2/6≈1/12+1/22+1/32+ …… +1/n2,求π值。
#include <math.h>double pi(long n){ double s=0.0;long i;for(i=1;i<=n;i++)s=s+ ①;return( ②);}【3.3】下面的程序的功能是求一维数组中的最小元素。
findmin(int *s,int t,int *k){ int p;for(p=0,*k=p;p<t;p++) if(s[p]<s[*k])①;}main(){ int a[10],i,*k=&i;for(i=0;i<10;i++)scanf("%d",&a[i]);findmin(a,10,k);printf("%d,%d\n",*k,a[*k]);}【3.4】下面程序的功能是计算1-3+5-7+ …… -99+101的值。
main(){ int i,t=1,s=0;for(i=1;i<=101;i+=2){ ①t=t* i;s=s+t;②;t>0?t=-1:1;}printf("%d\n",s);}【3.5】有以下程序段:s=1.0;for(k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("%f\n",s);填空完成下述程序,使之与上述程序的功能完全相同。
s=0.0;①;k=0;do{ s=s+d;②;d=1.0/(k*(k+1));}while( ③);printf("%f\n",s);【3.6】下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。
main(){ float x,amax,amin;scanf("%f",&x);amax=x;amin=x;while( ①){ if(x>amax) amax=x;if( ②) amin=x;scanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin);}【3.7】下面程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。
fun(int x,int b[]){ int k=0,r;do{ r=x% ①;b[k++]=r;x/= ②;}while(x);}【3.8】下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。
例如数字26,数位上数字的乘积12大于数字之和8。
main().{ int n,k=1,s=0,m;for(n=1;n<=100;n++){ k=1;s=0;①;while( ②){ k*=m%10;s+=m%10;③;}if(k>s)printf("%d",n);}}【3.9】下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。
main(){ int i,j,k,count=0;for(i=1;i<=9;i++)for(j=0;j<=9;j++)if( ①) continue;else for(k=0;k<=9;k++)if( ②) count++;printf("%d",count);}【3.10】下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。
main(){ int i,j;for(i=0;①;i++){ j=i*10+6;if( ②) countinue;printf("%d",j);}}【3.11】下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。
hcf(int m,int n){ int r;if(m<n){ r=m;①;n=r;}r=m%n;while( ②){ m=n;n=r;r=m%n;}③;}【3.12】下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。
排好序的10个数分两行输出。
程序如下:#include <stdio.h>main(){ ①;int i,j;printf("Input 10 numbers please\n");for(i=0;②;i++ )scanf("%f", &a[i]);printf("\n");for(i=2;③;i++ )for(j=0;④;j++ )if( ⑤){ x=a[j];⑥;a[j+1]=x;}printf("The sorted 10 numbers;\n");for(i=0;⑦;i++ ){ if( ⑧)printf("\n");printf("%f\t",a[i]);}printf("\n");}【3.13】下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。
#include "stdio.h"main(){ int i,a[20],s,count;s=count=0;for(i=0;i<20;i++ )scanf("%d", ①);for(i=0;i<20;i++){ if(a[i]<0)②;s+=a[i];count++;}printf("s=%d\t count=%d\n",s,count);}【3.14】下面程序的功能是删除字符串s中的空格。
#include <stdio.h>main(){ char *s="Beijing ligong daxue";int i,j;.for(i=j=0;s[i]!='\0';i++)if(s[i]!= ' ') ①;else ②;s[j]= '\0';printf("%s",s);}【3.15】下面程序的功能是将字符串s中所有的字符'c'删除。
请选择填空。
#include<stdio.h>main( ){ char s[80];int i,j;gets(s);for(i=j=0;s[i]!= '\0';i++ )if(s[i]!= 'c') ①;s[j]= '\0';puts(s);}【3.16】下面程序的功能是输出两个字符串中对应相等的字符。
请选择填空。
#include <stdio.h>char x[]="programming";char y[]="Fortran";main(){ int i=0;while(x[i]!= '\0' && y[i]!= '\0')if(x[i]==y[i])printf("%c", ①);elsei++;}【3.17】下面程序的功能是将字符串s中的每个字符按升序的规则插到数组a中, 字符串a已排好序。
#include <string.h>main(){ char a[20]="cehiknqtw";char s[]="fbla";int i,k,j;for(k=0;s[k]!= '\0';k++ ){ j=0;while(s[k]>=a[j] && a[j]!= '\0' )j++;for( ①)②;a[j]=s[k];}puts(a);}【3.18】下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。
例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。
#include <stdio.h>main(){ char str1[100],str2[100],c;int i,s;printf("Enter string 1: ");gets(str1);printf("Enter string 2: ");gets(str2);i=0;while((str1[i] == str2[i] && str1[i]!= ①))i++;s= ②;printf("%d\n", s);}【3.19】下面的函数expand在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符表示,即用'\n'表示换行符,用'\t'表示制表符。
expand(char s[],char t[]){ int i,j;for(i=j=0;s[i]!= '\0';i++ )switch (s[i]){ case '\n': t[ ①] = ②;t[j++] = 'n';break;case '\t': t[ ③] = ④;t[j++] = 't';break;default: t[ ⑤] = s[i];break;}t[j] = ⑥;}【3.20】下面的函数index(char s[], char t[])检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则送回-1。