C语言习题(6)
C语言第六章复习题(含答案)
1.t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( B )(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1(C) 循环控制表达式不合法(D) 以上说法都不对2.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是( D )。
(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和(D) 自然数1~10中的偶数之和3.以下程序段的输出结果是( C )。
int x=3;do{ printf("%3d",x-=2); }while(!(- -x));(A)1 (B)30 (C)1 -2 (D)死循环4.以下程序中,while循环的循环次数是( D)。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}(A) 1 (B) 10(C) 6 (D) 死循环,不能确定次数5.下面程序的输出是( B )。
(A)741 (B)852 (C)963 (D)main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}}6.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A )。
for (i=5;i;i--)for(j=0;j<4;j++){...}(A)20 (B)25 (C)24 (D)307.执行语句: for(i=l;i++<4;;);后,变量i的值是(C)。
(A) 3 (B) 4 (C) 5 (D) 不定8.假定a和b为int型变量,则执行以下语句后b的值为( D )。
C语言第6章习题解答
第6章函数和模块设计【习题6-1】更正下面函数中的错误。
(1)返回求x和y平方和的函数。
(2)返回求x和y为直角边的斜边的函数。
sum_of_sq(x,y) hypot(double x,double y){ {double x,y; h=sqrt(x*x+y*y);return(x*x+y*y); return(h);} }程序如下:/*c6_1(1).c*/ /*c6_1(2).c*/(1) (2)double sum_of_sq(double x,double y) double hypot(double x,double y) { {return(x*x+y*y); double h;} h=sqrt(x*x+y*y);return(h);}【习题6-2】说明下面函数的功能。
(1)itoa(int n,char s[ ])(2)int htod(char hex [ ]){ { int i,dec=0;static int i=0,j=0; for(i=0;hex[i]!='\0';i++)int c; { if(hex[i]>='0'&&hex[i]<='9') if(n!=0) dec=dec*16+hex[i]-'0';{ if(hex[i]>='A'&&hex[i]<='F') j++; dec=dec*16+hex[i]-'A'+10;c=n%10+'0'; if(hex[i]>='a'&&hex[i]<='f') itoa(n/10,s); dec=dec*16+hex[i]-'a'+10;s[i++]=c; }} return(dec);else }{ (3)void stod(int n)if(j==0) s[j++]='0'; { int i;s[j]='\0'; if(n<0){ putchar('-');n=-n;} i=j=0; if((i=n/10)!=0) stod(i);} putchar(n%10+'0');} }功能:(1)(略)(2)(略)【习题6-3】编写已知三角形三边求面积的函数,对于给定的3个量(正值),按两边之和大于第三边的规定,判别其能否构成三角形,若能构成三角形,输出对应的三角形面积。
C语言程序设计第六章数组习题及答案
1.以下对一维整型数组a的定义,正确的是_。
(2分)A.int a(10) ;B.int n = 10 , a[n] ;C.int n ;scanf( "%d" , &n ) ;int a[n] ;D.int a[10] ;2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。
(2分)A.a[10]B.a[3.5]C.a(5)D.a[10-10]3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。
(2分)A.将5个初值依次赋给a[1]--a[5]B.将5个初值依次赋给a[0]--a[4]C.将5个初值依次赋给a[6]--a[10]D.因为数组长度与初值个数不相同,所以此语句不正确4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。
(2分)A.a[3][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)5.以下对二维数组a初始化正确的语句是_。
(2分)A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}};B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}};C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}};D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}};6.对二维数组a进行如下初始化:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5};则a[1][1]的值是_。
(2分)A.0B.3C.4D.17.下面程序段的运行结果是_。
(2分)#include<stdio.h>int main( ){int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;for( i = 0 ; i < 3 ; i++ )printf( "%2d" , x[i][2-i] ) ;return 0 ;}A.1 5 9B.1 4 7C.3 5 7D.3 6 98.以下对数组s的初始化,错误的是_。
C语言单元复习题 第06部份 循环
C.用do...while语句构成循环时,在while后的表达式为零时不一定结束循环
D.用do...while语句构成循环时,在while后的表达式为零时结束循环
(知识点:do...while语句; 难度系数:1; 答案:D )
10.以下关于do...while语句的叙述中,正确的是:( )。
(知识点:循环的基本概念; 难度系数:1; 答案:D )
2.以下关于循环的描述中,错误的是:( )。
A.while、do...while和for语句的循环体都可以是空语句
B.for和do...while语句都是先执行循环体,后进行循环条件判断
C.while语句是先进行循环条件判断,后执行循环体的
D.使用while和do...while语句时,循环变量初始化的操作应在循环语句之前完成
A.break语句和continue语句都只能用于循环结构
B.break语句和continue语句都只能用于switch结构
C.break语句用于跳出循环体,continue语句用于跳出当次循环
D.continue语句用于跳出循环体,break语句用于跳出当次循环
(知识点:continue语句; 难度系数:1; 答案:C )
A.x==0B.x==1C.x!=lD.x!=0
(知识点:while语句; 难度系数:1; 答案:D )
5.在C语言中,当while语句构成的循环中的条件为( )时,结束循环。
A.0B.1C.真D.非0
(知识点:while语句; 难度系数:1; 答案:A )
6.有以下程序段:
int k=0;
while(k=1) k++;
C语言练习题(带详解答案)
C语言练习题(带详解答案)一单项选择题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数D)包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。
C)C程序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.intt5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的-,选项B中[与]不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3a某B)某C)caeD)-e2E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的-不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%某B)a+bC)a123D)123选项A中的%,选项B中+不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print_3ddb8aBcB、I\\amone_halftart$it3paiC、tr_1CpppowwhileD、P某qMy->bookline#Hi.age选项B中的\\,$,选项D中>,#,.,-不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
C语言程序设计习题答案(6-13)
C语言程序设计习题答案习题六数组一、选择题1~10:BDBCD CDBAB11~20:BCDCC DABBC21~30:CCADC ABBCB31~41:BDDDD CDCCB A二、填空题1.9 、02.先行后列3.连续的存储空间中4.QuickC5。
(c=getchar( )) 、‘A’+i或65+i6. ‘\0’、str1[i]—str2[i]7.CDABC8.10 149. 610. 1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 111.60012.AzyD13 4 some string *test三、编程题1。
定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。
答:程序参见文件Cprogram\xt6_3_01.c#include "stdio。
h"#include "math.h"main(){int i,s0=0,s1=0,a[20];for(i=0;i<20;i++)a[i]=rand()%100;for(i=0;i〈20;i+=2){printf(”%3d”,a[i]);s0=s0+a[i];}printf(” sum is:%d ave=%f\n",s0,s0/10。
0);for(i=1;i〈20;i+=2){printf("%3d”,a[i]);s1=s1+a[i];}printf(" sum is:%d ave=%f\n”,s1,s1/10。
0);}2. 设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。
答:程序参见文件Cprogram\xt6_3_02.c#include ”stdio。
h”#include "math.h"main(){int i,s,a[20];for(i=0;i<20;i++)a[i]=rand()%100;scanf(”%d”,&s);for(i=0;i<20;i++)if(a[i]==s){printf(”found:a[%d]=%d\n”,i,a[i]);break;}if(i==20)printf(”no found\n”);for(i=0;i<20;i++)printf("%3d",a[i]);printf("\n");}3. 设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。
《C语言程序设计教程》习题参考答案
《C语言程序设计教程》习题参考答案默认分类2007-09-10 12:38:44 阅读6618 评论13 字号:大中小订阅【习题1】一、简答题(在课本中寻找答案,略)1.1 C程序的基本结构包括哪些内容?1.2 如何定义标识符?1.3 输入格式、输出格式的组成包括哪些内容?1.4 C语言函数分为哪两类?1.5 计算表达式的值应该考虑哪些方面?1.6 上机调试程序的步骤如何?二、判断并改错1.7 C程序执行的入口是main()函数,所以main函数必须放在程序的开头。
错误:main函数可以放在程序的任何位置。
并不限定在程序的开头。
1.8 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。
错误:不可以交叉出现,数据说明部分在执行语句部分的前面。
1.9 编辑与编译不是一回事。
错误:不是一回事。
编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。
1.10 scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。
正确1.11 注释内容太多会影响程序的执行效率。
错误:不会影响程序的执行效率。
因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。
1.12 所有的数学公式可以直接出现在源程序中。
错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。
三、编程题1.13 在屏幕上输出自己名字的拼音。
提示:中文名字叫“张三”,对应的拼音为“Zhang San”,输出用printf()函数。
1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。
提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f1.15 输入两个整数,输出其中最大者。
提示:模仿例1.31.16 输入三个整数,输出其中最小者。
提示: min(min(a,b),c);【习题2】一、简答题(在课本中寻找答案,略)2.1 常量与变量的区别?2.2 C语言中的标识符的定义规则?2.3 变量为什么要“先定义,后使用”?2.4 字符常量'a'与字符串常量"a"有何区别?2.5 大小写字母转换的规则是什么?2.6 变量的具有哪三种属性?二、单项选择题2.7C语言中,int型数据在内存中的存储形式是(D)。
大学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语言程序设计 – 第 06 章课后习题
C语言程序设计– 第六章课后习题电子13-02班王双喜一、选择题1. C语言中一维数组的定义方式为:类型说明符数组名(C)A. [整型常量]B. [整型表达式]C. [整型常量]或[整型常量表达式]D. [常量表达式]2. C语言中引用数组元素时,下标表达式的类型为(C)A. 单精度型B. 双精度型C. 整型D. 指针型3. 若有定义:int a[3][4];,则对a数组元素的非法引用是(D)A. a[0][3*1]B. a[2][3]C. a[1+1][0]D. a[0][4](解释:A、B、C均正确,D看起来引用不太妥当,但其亦有其意义(a[0][4]等价于a[1][0]))4. 若有定义:int a[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};,则a数组的第一维大小是(C)A. 1B. 2C. 3D. 4(解释:共9个元素,除以3即可得第一维大小是3;若有余数,则应加1)5. 若有定义:int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,则值为5的表达式是(C)A. a[5]B. a[a[4]]C. a[a[3]]D. a[a[5]]6. 要求定义包含8个int类型元素的一维数组,以下错误的定义语句是(A)A. int N = 8;int a[N]; B. #define N 3while (a[2*N+2];C. int a[] = {0, 1, 2, 3, 4, 5, 6, 7};D. int a[1+7] = {0};(解释:数组的大小必须是整型常量或整型常量表达式)7. 若二维数组a有m列,则在a[i][j]前的元素个数为(A)A. i * m + jB. j * m + iC. i * m + i - 1D. i * m + j - 18. 下面是对数组s的初始化,其中不正确的是(D)A. char s[5] = {"abc"};B. char s[5] = {'a', 'b', 'c'};C. char s[5] = "";D. char s[5] = "abcdef";(解释:D中元素个数太多,算上'\0'共六个,非法)9. 下面程序段的运行结果是(B)char c[] = "\t\v\\\0will\n";printf("%d", strlen(c));A. 14B. 3C. 9D. 字符串中有非法字符,输出值不确定(解释:字符串中第四个是'\0'即结束标志,因此字符串长度是3)10. 判断字符串s1是否等于s2,应当使用(D)A. if (s1 == s2)B. if (s1 = s2)C. if (strcpy(s1, s2))D. if (strcmp(s1, s2) == 0)(解释:对于字符串来讲,其名字的内容是该字符串的起始地址,不能通过比较名字来比较相等,而应该用专用的函数进行逐字符匹配)二、写出程序的执行结果1. 程序一:# include <stdio.h>main(){int a[3][3] = {1, 3, 5, 7, 9, 11, 13, 15, 17};int sum = 0, i, j;for (i = 0; i < 3; i++)for (j = 0; j < 3; j++){a[i][j] = i + j;if (i == j) sum = sum + a[i][j];}printf("sum = %d", sum);}执行结果:打印sum = 6.(解释:a中各个元素的值是其行和列数字之和,sum内保存a中对角线元素之和,即sum = 0 + 2 + 4)2. 程序二:# include <stdio.h>main(){int i, j, row, col, max;int a[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {-1, -2, 0, 5}};max = a[0][0]; row = 0; col = 0;for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)if (a[i][j] > max){max = a[i][j];row = i;col = j;}printf("max = %d, row = %d, col = %d\n", max, row, col);}执行结果:打印max = 9, row = 1, col = 0.(解释:此程序的功能是逐行逐列扫描元素,总是将最大的元素赋给max,并保存该元素的行数和列数;因此执行完毕后,max是最大的元素(9),row是其行数(1),col是其列数(0))3. 程序三:# include <stdio.h>main(){int a[4][4], i, j, k;for (i = 0; i < 4; i++)for (j = 0; j < 4; j++)a[i][j] = i - j;for (i = 0; i < 4; i++){for (j = 0; j <= i; j++)printf("%4d", a[i][j]);printf("\n");}}执行结果:第一行打印0;第二行打印1 0;第三行打印2 1 0;第四行打印3 2 1 0。
C语言程序设计教程第六章课后习题参考答案
C语⾔程序设计教程第六章课后习题参考答案P158 1求三个实数最⼤值#includefloat max(float,float,float);int main(){float a,b,c,m;printf("请输⼊三个实数:");scanf("%f %f %f",&a,&b,&c);printf("最⼤数为%f\n",max(a,b,c));return 0;}float max(float a,float b,float c){float t;if(a>b&&a>c)t=a;else if(b>a&&b>c)t=b;elset=c;return t;}P158 2求最⼤公约数最⼩公倍数#includeint fun1(int a,int b);int fun2(int a,int b);int main(){int a,b;printf("请输⼊两个整数:");scanf("%d %d",&a,&b);printf("最⼤公约数为:%d\n",fun1(a,b));int t,r;if(a{t=a;a=b;b=t;}while((r=(a%b))!=0) {a=b;b=r;}return b;}int fun2(int a,int b) {int n;n=(a*b)/fun1(a,b); return n;}P158 3求完全数#includevoid wan(int n); void main(){int n;for(n=1;n<1000;n++) wan(n);printf("\n");}void wan(int n){if(n%i==0)s=s+i;}if(n==s)printf("%d\t",n); }P158 4⽆暇素数#include#includeint nixvshu(int n);int isPrime(int n);int main(){int n,t;printf("⽆暇素数:\n");for(n=100;n<=999;n++) {t=nixvshu(n);if(isPrime(n)&&isPrime(t)) printf("%d\t",n);}printf("\n");return 0;}int nixvshu(int n){int x=0;while(n){x=x*10+n%10;n=n/10;}return x;int i;for(i=2;i<=sqrt(n);i++)if(n%i==0) return 0;return n;}P158 7递归函数#includeint Y(int n){if(n==0)return 0;if(n==1)return 1;if(n==2)return 2;elsereturn (Y(n-1)+Y(n-2)+Y(n-3)); } int main(){int n,k=0;for(n=0;n<=19;n++){printf("%d\t",Y(n));k++;if(k%5==0)printf("\n");}return 0;}P124 6分解质因数#include#includevoid fenjie(int );int main(){int n;printf("请输⼊⼀个正整数:"); scanf("%d",&n);if(isPrime(n)){printf("%d=1*%d\n",n,n);}else{fenjie(n);printf("\n");}return 0;}int isPrime(int n){int i;for(i=2;i<=sqrt(n);i++){if(n%i==0) return 0;}return 1;}int zhi(int n){int m;for(m=2;m<=n;m++){if(isPrime(m)&&(n%m==0)) break;void fenjie(int n){int m;printf("%d=%d",n,zhi(n));while(n>zhi(n)){m=zhi(n);n=n/m;printf("*%d",zhi(n));}}P47 1输出闰年#includeint f(int year);int main(){int year,k=0;for(year=1900;year<=2000;year++){if(f(year)){printf("%d\t",year);k++;if(k%5==0)printf("\n");}}return 0;}int f(int year){if((year%4==0&&year%100!=0)||(year%400==0)) return year;P47 2输出回⽂数#includeint fun(int n);int main(){int n,k=0;for(n=10;n<=2000;n++) {if(n == fun(n)){printf("%d\t",n);k++;if(k%5==0)printf("\n");}}return 0;}int fun(int n){int i=0;while(n>0){i=i*10+n%10;n=n/10;}return i;}P47 3进制转换#includevoid trans(int n,int base); int main()printf("请输⼊要转换的⼗进制数:"); scanf("%d",&n);printf("请输⼊转换的进制:"); scanf("%d",&base);trans(n,base);printf("\n");return 0;}(⽅法⼀)void trans(int n,int base){if(n){trans(n/base,base);if(n%base>=10)switch(n%base){case 10:printf("A");break;case 11:printf("B");break;case 12:printf("C");break;case 13:printf("D");break;case 14:printf("E");break;case 15:printf("F");break;}elseprintf("%d",n%base);}}(⽅法⼆)void trans(int n,int base){int r;char c;trans(n/base,base); r=n%base;if(r>=10)c='A'+r-10;elsec='0'+r;printf("%c",c);}}。
C语言章节习题集(全)
C语言程序设计第一、二章单项选择题1.将汇编语言编写的程序翻译成目标程序的程序是()A)解释B)编译C)汇编D)目标2.不属于面向机器语言的是()A)符号语言B)二进制语言C)3.A)解释B)编译C)汇编D)二进制4.不属于高级语言的是()。
5.A)D)分支结构6、CA7A、在main()函数中定义B、C语言程序总是从第一个定义的函数开始执行C、C语言程序中,main()函数必须放在程序的开始部分D、C语言程序总是从main()函数开始执行8、以下对C语言描述中正确的是()。
A、C语言源程序中可以有重名的函数B、C语言源程序中要求每行只能书写一条语句C、C语言源程序中,注释可以出现在任何位置D、最小的C源程序中没有任何内容9、对C语言源程序执行过程描述正确的是()。
A、从main()函数开始执行,到main()函数结束B、从程序的第一个函数开始执行,到最后一个函数结束C、从mainD、填空题1.2.3.4.用C C程序”,扩展名规定为“____”。
5.C OBJ”的____。
6.C____,才能"EXE"。
7、89.选择结构是____选择某个操作来执行的—种程序结构。
10.选择结构可以分为____、双分支结构和多分支结构。
11.循环结构又可分为当型循环、____及次数型循环。
第三章数据类型、运算符与表达式单项选择题1.以下程序的输出结果是。
main(){inta=10,b=10;printf("%d,%d",a--,++b);}A)10,11B)10,10 C)9,9D)9,112.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是A)'a'&&'b'B)a<=b3.设ch是char型变量,其值为4.main();}A)003B)012 C)103D)1125.字符串“\t\n\\\045\’”的长度为。
C语言程序设计练习题6
练习题61.输入一个字符,判断该字符是数字、字母、空格还是其他字符。
main( ){ char ch;ch=getchar();if( ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’)printf("It is an English character\n");else if( ch>=’0’&&ch<=’9’)printf("It is a digit character\n");else if( ch== ‘ ’)printf("It is a space character\n");elseprintf("It is other character\n"); }2.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。
用输入0来结束输入,用i,j来放统计数,请填空完成程序。
void main(){ int n,i=0,j=0;printf(“input a integer,0 for end\n”);scanf(“%d”,&n);while (n或n!=0 ) {if(n>0) i=i+1 ;else j=j+1;}printf(“i=%4d,j=%4d\n”,i,j);}3.编程计算1+3+5+……+101的值#include <stdio.h>void main(){int i, sum = 0;for (i = 1;i<=101 ; i++ )sum = sum + i;printf("sum=%d\n", sum); }4.编程计算1+3+5…+99的值main(){int i, sum = 0;i=1;while (i<100 ){sum = sum + i;i++ ; }printf("sum=%d\n", sum);}5.从键盘输入一个字符,判断它是否是英文字母。
C语言习题第六章下
/**********ERROR**********/ if( *a>*c ) { k=*c; *c=*a; *a=k; } if( *b<*c ) { k=*b; *b=*c; *c=k; }
t=b;b=a;a=t; } void main() {int a,b;
printf("Enter a, b: "); scanf("%d%d",&a,&b); fun(&a, &b); printf("a=%d b=%d\n ", a,b); } 【改错1】 错误 【学生答案】 void fun(int a,b)
} int main() { float a,b,c;
printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); fun(&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); return 0; }
/*下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65, 输出为:a=65 b=60 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/
大学生课程C语言期末客观题——期末客观题练习题6
A.4,3,7 B.3,4,7 .标准答案:A
C.5,2,7
D.2,5,7
12. 执行下述程序的运行结果是()
#include “stdio.h”
4
long fib(int n)
{
long res;
switch (n){
case 0:res=0;break;
case 1:res=1;break;
default:res=fib(n-1)+fib(n-2);
int i,s;
s=0;
3
for(i=1;i<101;i++)
{
s+=i;
if(s>5) break;
}
printf("s=%d\n",s); (2 分)
A.5050 B.6
C.5
D.0
.标准答案:B
11. 有以下程序
int f1(int x,int y)
{
return x>y?x:y;
}
int f2(int x,int y)
D.14
9. 以下程序段的输出是()
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0) break;
else i--;
}
i+=11;a+=i;
}
printf("%d\n",a); (2 分)
A.21
B.32
C.33
D.11
.标准答案:B
10. 下面程序段的输出结果为()
.标准答案:错误
4. 判断两个 float 类型变量 a 和 b 是否相等的表达式为 a==b (1 分) ( )
河南理工大学C语言课后习题答案精解第六章
a[1][1] a[1][2] a[1][3] 1 0 -1
a[2][1] a[2][2] a[2][3] 2 1 0
a[3][1] a[3][2] a[3][3]
0 1 2
0 1
0
第六章 数组
2. 写出程序的运行结果
(4) 程序四:
#include <stdio.h> main( ) { int i, s; i的ASCII码为105 char s1[100], s2[100]; printf(“input string1:\n”); n的ASCII码为110 gets(s1); printf(“input string2:\n”); gets(s2); s=-5 i=0; while((s1[i]==s2[i]) && (s1[i]!=„\0‟)) i++; if((s1[i] ==„\0‟) && (s2[i]==„\0‟)) s=0; 输入数据: aid else s=s1[i]-s2[i]; printf(“%d\n”,s); and }
B.a[a[4]]
C. a[a[3]]
D. a[a[5]]
第六章 数组
1. 选择题 (6) 要求定义包含8个int类型元素的一维数组,以下错误的定义 语句是 A A. int N=8; B. #define N 3 int a[N]; int a[2*N+2]; C. int a[ ]={0,1,2,3,4,5,6,7} D. int a[1+7]={0}
第六章 数组
3. 程序填空 (3)把一个整数转换成 #include <stdio.h> #define M 80 void main() { long int n=1234567; char s[M]; int j=0; while ( n!=0 ) { s[j]= n%10+’0’; n/=10; j++; } s[j]='\0' ; printf("\n%s",s); }
《C语言程序设计》第6章习题答案
1、选择题(1)A(2)C(3)A(4)B(5)B(6)D(7)D(8)B(9)D(10)B2、填空题(1)a=10,b=20a=20,b=10(2)**pp=603、程序设计题(1)#include<stdio.h>char *month_name(int n);void main(){int n;printf("\nPlease enter 1 integer:");scanf("%d",&n);printf("%d month :%s\n",n,month_name(n));}char *month_name(int n){static char*name[]={"illegal month","Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sept","Oct","Nov","Dec"};return ((n<1||n>12)?name[0]:name[n]);}(2)#include<stdio.h>#define N 10sort(int data[]){int i,j,min_a,temp;for(i=0;i<N;i++){min_a=i;for(j=i+1;j<N;j++)if(*(data+j)<*(data+min_a))min_a=j;if(min_a!=i){temp=*(data+min_a);*(data+min_a)=*(data+i);*(data+i)=temp;}}}main(){int i,j,data[N],temp;int min_a;printf("\nPlease input %d int:\n",N);for(i=0;i<N;i++)scanf("%d",&data[i]);sort(data);printf("After sorted:\n");for(i=0;i<N;i++)printf(" %d",data[i]);}(3)#include <stdlib.h>void reverse(char *c);void main(){char str[80];puts("Please enter 1 string\n");gets(str);reverse(str) ;puts("After reversed\n");puts(str);}void reverse(char *c){char *p,*q,temp;int size=0;for(p=c;*p!='\0';p++)size++;size=size/2;for(q=c,p--;q<c+size;q++,p--){temp=*q;*q=*p;*p=temp;}}(4)#include<stdio.h>#include<string.h>void sort(char *keyword[],int size);void print(char *keyword[],int size)void main(){char *keyword[]={"if","else","case","switch","do","whlie","for","break","continue"};sort(keyword,9);print(keyword,9);}void sort(char *keyword[],int size){int i,j,min_location;char *temp;for(i=0;i<size-1;i++){min_location=i;for(j=i+1;j<size;j++)if(strcmp(keyword[min_location],keyword[j])>0) min_location=j;if(min_location!=i){temp=keyword[i];keyword[i]=keyword[min_location];keyword[min_location]=temp;}}}void print(char *keyword[],int size){int i;for(i=0;i<size;i++)printf("\n%s",*(keyword+i));}(5)#include<stdio.h>void fun_char(char str1[],char str2[],char str3[]);void main(){char str1[80],str2[80],str3[80],c,i;printf("\nPlease enter 2 string:");scanf("%s%s",str1,str2);fun_char(str1,str2,str3);printf("Third string is %s.",str3);}void fun_char(char *str1,char *str2,char *str3){int i,j,k,flag;i=0,k=0;while(*(str1+i)!='\0'){j=0;flag=1;while(*(str2+j)!='\0'&&flag==1){if(*(str2+j)==*(str1+i)) flag=0;j++;}if(flag){*(str3+k)=*(str1+i); k++;}i++;}*(str3+k)='\0';}(6)#include<stdio.h>int count_word(char *str);void main(){char str1[80],c,res;puts("\nPlease enter a string:");gets(str1);printf("There are %d words in this sentence",count_word(str1)); }int count_word(char *str){int count ,flag;char *p;count=0;flag=0;p=str;while(*p!='\0'){if(*p==' ')flag=0;else if(flag==0){flag=1;count++;}p++;}return count;}(7)#include<stdio.h>#include<string.h>char *encrypt(char *string);char *decrypt(char *string);main(){char item[80];char *point;char *pEncrypted;char *pDecrype;printf("Please enter the string need to encrypt:\n");gets(item);point=item;pEncrypted=encrypt(point);printf("\nThe string after encrypted is:\n%s\n",pEncrypted); pDecrype=decrypt(pEncrypted);printf("\nThe string after decrypted is:\n%s\n",pDecrype);free(pEncrypted);free(pDecrype);}char *encrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80);if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string-2;string++;q++;}*q='\0';return t;}char *decrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80); if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string+2;string++;q++;}*q='\0';return t;}。
C语言程序设计第6章 练习题
一、单项选择题题目1在下面的函数声明语句中存在着语法错误的就是( )。
a、AA(int, int)b、AA(int a; int b)c、AA(int a, int)d、AA(int a, int b)题目2如果一个函数定义仅允许为所在的程序文件调用,则应在该函数定义的最前面添加的关键字为( )。
a、externb、staticc、defaultd、auto题目3假定一个函数定义为“extern char* f1(char*x){return x;}”,表示该函数作用域的关键字为( )。
a、externb、charc、intd、char*题目4假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的就是( )。
a、ff(a)b、ff(a[0])c、ff(&a[0])d、ff(a+3)题目5假定一个函数原型语句为“int f1(int a[],int n);”,与数组参数等价的表示为( )。
a、int** ab、int& ac、int* ad、int a题目6假定一个函数的参数说明为const int a,则在函数体中不能进行的操作就是( )。
a、a==0b、a=10c、printf("%d",a)d、intx=a题目7在函数体中定义的变量具有( )。
a、文件作用域b、局部作用域c、函数作用域d、全局作用域题目8在函数外定义的变量,若带有作用域关键字static,则它具有( )。
a、全局作用域b、文件作用域c、函数作用域d、局部作用域题目9在函数体中定义一个静态变量时,选用的存储属性关键字为( )。
a、staticb、registerc、externd、auto题目10假定一个函数原型为“void ff(int a[],int n)”,则对应的函数指针类型为( )。
a、*ff(int[],int)b、void(*ff)(int*a,int)c、void*ff(int*a,int)d、int (*ff)(int*a,int)二、判断题题目11函数定义格式中的参数表被称为实参表。
算法与数据结构C语言习题参考答案6-9章
1. 现在有一个已排序的字典,请改写二分法检索算法,使之当排序码key在字典中重复出现时算法能找出第一个key出现的元素下标(用*position来保存)。
保持算法时间代价为O(log n)。
【答】思路一般的二分法检索算法只要找出关键码key在字典中的一个下标。
在比较的过程中,一旦发现相等,记录下当前下标mid就符合要求。
程序如下:数据结构字典采用6.1.4节中的顺序表示法。
typedef int KeyType;typedef int DataType;二分法检索算法int binarySearch(SeqDictionary * pdic, KeyType key, int * position) {int low, mid, high;low = 0;high = pdic->n - 1;while (low <= high){mid = (low + high) / 2;if (pdic->element[mid].key = = key) {*position = mid;return TRUE;}elseif (pdic->element[mid].key > key)high = mid - 1;elselow = mid + 1;}*position = low;return FALSE;}改写后的算法想要找出关键码key在字典中第一次出现的下标。
在比较中,如果遇到相等(key与pdic->element[mid].key相等),则需要分情形讨论。
(1)如果当前下标mid等于0,或者key与pdic->element[mid-1].key不等,那么mid 一定是key第一次出现的下标,返回mid即可。
(2)如果情形(1)不成立,那么mid一定大于等于key第一次出现的下标,需要在low 和mid-1之间继续进行搜索,找出key第一次出现的下标。
C语言习题(6)
C语言习题(6)第六章数组一.填空题1.C语言数组的下标总是从开始,不可以为负数;构成数组各个元素具有相同的。
2.在C语言中,二维数组的元素在内存中的存放顺序是。
3.若有定义:double x[3][5],则x数组中行下标的下限为,列下标的上限为。
4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为,a[2][1]得到的值为。
5.若有定义int a[][4]={1,2,3,4,5,6,7,8,9},则数组a第一维的大小为。
6.设char str[100]=”Hangzhou”;则数组str所在内存空间应为字节。
7.下列程序的输出结果是。
char str[ ][10]={”abcd”,”1234”,”efgh”,”5678”};int k=1;printf(“%s”,str[k++]);8.欲将字符串S1复制到字符串S2中,其语句是。
9.如果在程序中调用了strcat函数,则需要预处理命令;如果调用了gets函数,则需要预处理命令。
10.字符串是以为结束标志的一维字符数组。
有定义:char a[]=”China”;则a数组的长度是。
11.数组在内存中占用一段连续的存储空间,该存储空间的首地址用表示。
12.调用strlen(“abcd\0ef\0g”)的返回值为。
二.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。
A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是。
A)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.若有定义:int a[3][4],则对数组a元素的正确引用是。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);
A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
14.下面是对s的初始化,其中不正确的是 。
printf(“%d”,strlen(c));
A)14 B)3 C) 9 D)6
20.判断字符串a和b是否相等,应当使用 。
A)if (a==b) B)if (a=b)
C)if (strcpy(a,b)) D) if (strcmp(a,b))
21.判断字符串a是否大于b,应当使用 。
case ‘L’: continue;
default : putchar(c) ; continue ;
}
putchar(‘*’);
}
}
A)SSW B)SW* C)SW*A D)SW
main ( )
{ char ch[7]=”12ab56”;
int i,s=0;
for (i=0;ch[i]>’0’&&ch[i]<=’9’;i+=2)
s=10*s+ch[i]-‘0’;
printf(“%d\n”,s);
}
A)1 B)1256 C)12ab56 D)ab
C)字符串”STOP ”与”STOP”相等
D)字符串”That”小于字符串”The”
23.下面有关字符数组的描述中错误的是 。
A)字符数组可以存放字符串
B)字符串可以整体输入,输出
C)可以在赋值语句中通过赋值运算对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
24.下面程序的输出结果是 。
18.下面程序段的输出结果是 。
char a[7]=”abcdef”;
char b[4]=”ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
A) B)\0 C)e D)f
19.下面程序段的输出结果是 。
char c[ ]=”\t\v\\\0will\n”;
7.以下不能对二维数组a进行正确初始化的语句是 。
A)int a[2][3]={0} ;
B)int a[][3]={{1,2},{0}} ;
C)int a[2][3]={{1,2},{3,4},{5,6}} ;
D)int a[][3]={1,2,3,4,5,6} ;
8.若有说明:int a[3][4]={0};则下面正确的叙述是 。
puts(s);
}
4.写出下面程序的运行结果。
main ( )
{ int i,c;
char s[2][5]={“8980”,”9198”};
for (i=3; i>=0 ; i--) {
c=s[0][i]+s[1][i]-2*’0’;
A)只有元素a[0][0]可得到初值0
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
9.若有说明:int a[][4]={0,0};则下面不正确的叙述是 。
A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
二.填空题
1.在C语言中,二维数组的元素在内存中的存放顺序是 。
2.若有定义:double x[3][5],则x数组中行下标的下限为 ,列下标的下限为 。
3.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为 ,a[2][1]得到的值为 。
6.欲为字符串S1输入”Hello World!”,其语句是 。
7.欲将字符串S1复制到字符串S2中,其语句是 。
8.如果在程序中调用了strcat函数,则需要预处理命令 。如果调用了gets函数,则需要预处理命令 。
A)2 B)3 C)4 D)无确定值
12.以下不正确的定义语句是 。
A)double x[5]={2.0,4.0,6.0,8.0,10.0};
B)int y[5]={0,1,3,5,7,9} ;
C)char c1[ ]={‘1’,’2’,’3’,’4’,’5Байду номын сангаас} ;
D)char c2[ ]={‘\x10’,’\xa’,’\x8’} ;
25.下面程序的输出结果是 。
main ( )
{
char str[ ]=”SSWLIA” , C;
int k;
for (k=2;(c=str[k])!=’\0’;k++) {
switch (c) {
case ‘I’ : ++k; break ;
9.C语言数组的下标总是从 开始,不可以为负数;构成数组各个元素具有相同的 。
10.字符串是以 为结束标志的一维字符数组。有定义:char a[]=””;则a数组的长度是 。
三.程序阅读题
1.写出下面程序的运行结果。
main ( )
A)if (a>b) B)if (strcmp(a,b))
C)if (strcmp(b,a)>0) D)if (strcmp(a,b)>0)
22.下面叙述正确的是 。
A)两个字符串所包含的字符个数相同时,才能比较字符串
B)字符个数多的字符串比字符个数少的字符串大
C)a和b中都存放字符串 D)a数组比b数组长度长
17.有两个字符数组a,b,则以下正确的输入语句是 。
A)gets(a,b); B)scanf(“%s%s”,a,b);
C)scanf(“%s%s”,&a,&b); D)gets(“a”),gets(“b”);
4.字符串”ab\n\\012\\”的长度是 。
5.下面程序段的运行结果是 。
char x[ ]=”the teacher”;
int i=0;
while (x[++i]!=’\0’)
if (x[i-1]==’t’) printf(“%c”,x[i]);
s[0][j] = c % 10 + ‘\0’ ;
}
for (i=0; i<=1; i++) puts(s[i]);
}
5.当运行下面程序时,从键盘上输入7 4 8 9 1 5↙,则写出下面程序的运行结果。
main ( )
char a[ ]=”abm”, b[ ]=”aqid”, c[10];
while (a[i]!=’\0’ && b[i]!=’\0’) {
if (a[i]>=b[i]) c[i]=a[i]-32 ;
else c[i]=b[i]-32 ;
A)int a[10]={0,0,0,0,0}; B)int a[10]={} ;
C)int a[ ] = {0} ; D)int a[10]={10*1} ;
5.若有定义:int a[3][4],则对数组a元素的正确引用是 。
A)a[2][4] B)a[1,3] C)a(5) D)a[10-10]
6.以下能对二维数组a进行正确初始化的语句是 。
A)int a[2][]={{1,0,1},{5,2,3}} ;
B)int a[][3]={{1,2,3},{4,5,6}} ;
C)int a[2][4]={{1,2,3},{4,5},{6}} ;
D)int a[][3]={{1,0,1},{},{1,1}} ;
scanf(“%d”,&n); int a[SIZE];int a[n];
3.若有定义:int a[10],则对数组a元素的正确引用是 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]
4.以下能对一维数组a进行正确初始化的语句是 。
A)’a’’b’ B)ab C)ab c D)abc
16.若有程序段:
int k,a[3][3]={1,2,3,4,5,6,7,8,9};
for (k=0;k<3;k++) printf(“%d”,a[k][2-k]);
则以下叙述正确的是 。
A)a与b数组完全相同 B)a与b长度相同
D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
10.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 。(设a[0][0]位于数组的第一个位置上)
A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1
11.若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维大小是 。
for (j=1 ; j<6 ; j++)
printf(“%2d”,a[i][j]) ;
printf(“\n”);
}
}
2.写出下面程序的运行结果。
main ( )
{ int i=0;
gets(s);
while (s[i]!=’\0’) {
if (s[i]<=’z’ && s[i]>=’a’)