C程序设计练习一
- 格式:doc
- 大小:17.00 KB
- 文档页数:2
第1次作业一、单项选择题(本大题共60分,共20小题,每小题3分)1. #inl ucde <mycode.h> 是一条()。
A. 文件包含预处理命令B. 宏定义预处理语句C. 条件编译预处理命令D. C语句2.在C程序中,实型常数10-5的指数书写形式是()。
A.10A-5B.10E-5C.1E-5D.E-52. 下面关于结构体指针变量的描述中,正确的是()。
A. 定义一个结构体类型指针变量,可以用于存放同类型结构体变量在内存中的起始地址B. 定义一个结构体类型指针变量,可以存放同一程序中任意结构体类型变量地址C. 在函数的形式参数表中,不能有结构体类型指针变量作为形式参数D. 表示结构体变量的地址时,不需要使用取地址运算符,而是用结构体变量名直接表示3. 关于语句:int (*ptr)(); ,以下说法错误的是()。
A. ptr是指向函数的指针B. ptr可以指向定义为类似int a()的函数C. ptr是一个函数名,该函数返回值是指向整型数据的指针D. ptr是C语言的标识符合,命名要符合C语言的规定4. 下面关于结构体变量的描述中,错误的是()。
A. 结构体变量也遵循先定义、后使用的原则B. 结构体变量可以初始化C. 结构体变量不能作为整体实现数据的输入D. 结构体变量虽然不能整体输入,但可以整体实现数据输出5. 下面关于一维动态数组的描述中,错误的是( )。
A. 创建一维动态数组需要一个一级指针变量作为数组名使用B. malloc函数的返回值直接赋值给指针变量C. malloc函数的返回值需按要求强制转换后赋值给指针变量D. 动态一维数组的长度也不能是任意的长度6. 设有C语句序列:int arr[5],*p1; p1=arr; ,那么能够输入数组3号元素值的是()。
A. sca nf("%d",p1+3);B. sca nf("%d",arr[3]);C. sca nf("%d",p1*3);D. sca nf("%d",&p1[3]);7. 下面与结构体数组做函数参数相关描述中,错误的是( )。
C语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参考使用)1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
#include <stdio.h>int fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。
#include <stdio.h>void fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。
国家开放大学《C语言程序设计》章节测试参考答案第一章C语言概述自测练习一:C语言字符集自测练习1.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。
(√)2.在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符。
(√)3.在C语言程序中,ABC和abc被作为同一标识符使用。
(×)自测练习二:C语言字符集自测练习1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。
(√)2.在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字字符。
(√)3.C语言中使用的字符常量,其起止标记符是()。
a. 双引号b. 尖括号c. 单引号d. 中括号4.C语言中使用的字符串常量,其起止标记符是()。
a. 双引号b. 中括号c. 尖括号d. 单引号自测练习三:C语句分类自测练习1.在C语言中,一条简单语句的结束符是()。
a. 分号b. 空格c. 冒号d. 逗号2.在C语言中,每条复合语句的开始标记字符为()。
a. <b. [c. (d. {3.不符合C语言规定的复合语句是()。
a. {x=0;}b. {}c. {;}d. {y=10}4.C语言中的选择类语句有两条,它们是()。
a. else和caseb. if和switchc. if和elsed. switch和case自测练习四:函数分类与使用自测练习1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。
a. nameb. mainc. MAINd. function2.C语言程序中的基本功能模块为()。
a. 标识符b. 函数c. 表达式d. 语句3.一个函数定义所包含的两个部分是()。
a. 函数头和函数体b. 函数原型和函数体c. 函数名和参数表d. 函数头和函数尾4.一个程序文件开始使用的每条预处理命令,其首字符必须是()。
a. #b. @c. %d. $5.在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件所使用的起止定界符为一对()。
《C语言程序设计》模拟试卷一一、单项选择题(每题2分,共30分)1、下列有关C语言的叙述中错误的是(D)。
A) C语句必须以分号结束B) 任何一个C程序中有且只有一个主函数C) 复合语句在语法上可被看作一条语句D) C程序中对数据的任何操作都可由运算符实现2、以下不能定义为用户标识符的是(C)。
A) MAIN B) _HJ C) 2ong D) LINE13、下列符号中用来表示C语言中的回车换行的是(B)。
A) \r B) \n C) \b D) \t4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为(B)。
A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 15、已知ch为字符型变量,下面表达式中正确的是(A)。
A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ”6、以下能正确定义一维数组的是(C)。
A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”;C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5};7、以下语句中能正确定义变量并赋初值的是(A)。
A) char c=65; B) float f=f+1.1;C) double x=12.3e3.6; D) int m=n=2.0;8、在执行下列程序时输入:1357924,则程序的运行结果为(D)。
main( ){ int x, y;scanf(“%2d%2d”,&x,&y);printf(“%2d”,x*y); }A) 13 B) 1357 C) 74 D) 7419、执行下列程序段后输出的结果是(C)。
x = 9;while (x > 7){ printf(“*”); x- -; }A) **** B) *** C) ** D) *10、设char str1[10] = “ABCDE”, str2[10] = “xyz”;则执行语句printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果是(D)A) 9 B) 8 C) 5 D) 311、若用数组名作为函数调用的实参,则传递给形参的是(A)A) 数组的首地址 B) 数组第一个元素的值C) 数组中全部元素的值 D) 数组元素的个数12、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为( A )A)void B)double C)int D)char13、下面不能正确进行字符串赋值操作的语句是(A)A) char s[5]={"ABCD"}; B) char s[5]; s="ABCD";C) char *s;s="ABCDEF"; D) char *s="ABCD";14、设有说明int s[5]={1,3,5,7,9}; int *p=s; 则下列表达式中值为3的是 (B )A)++p B)++(*p) C) *(++p) D) *(p+=2)15、下面程序的输出结果是(B)int m=13;{ int m=3;return( x*y-m); }main( ){ int a=7,b=5;printf(“%d\n”, fun(a,b)/m); }A) 1 B) 2 C) 3 D) 10二、判断(每空1分,共10分)1、C语言有三种结构化程序设计方法,分别为顺序结构、选择结构和循环结构。
C程序设计课后习题第一章习题1.选择题(1)C语言程序的执行总是从(A)开始。
A.main函数的入口 B.编译预处理命令C.源程序的第一个函数D.源程序的第一行语句(2)在C语言的源程序中,主函数的位置(C)。
A.必须在编译预处理命令的后面B.必须在源程序的最后C.任意D.必须在源程序的开头(3)下列变量名中合法的是(C)。
A. B.C.Tom B.3a6bC._6a7bD.$ABC(4)下面两对用户定义标识符哪个可读性更强:(C)A.checkqualityB.salarytotalC.check_quality C.sal_ary_tot_al(5)C程序是由(D)组成。
A.若干个过程B.若干子程序C.一个主程序和若干子程序D.若干函数2.填空题(1)一个函数一般由两部分组成,它们分别是_函数首部______和__函数体____。
(2)编译预处理命令___是_____(填“是”或“不是”)C语言文本的一部分。
(3)一个C语言程序至少应包含一个__主函数或main()__。
(4)C语言的标准输入函数是_scanf()__,标准输出函数是___printf()____。
(5)函数体用___{______符号开始,用_____}______符号结束。
(6)注释的开始和结束标志分别为__/*____和____*/____。
为增强程序的__可读性___,应该为程序写上清晰的注释。
3.编程题:参考本章例题,编写一个C程序,输出以下信息。
***********************The data is ** 2005-03-23 ***********************程序如下:#include <stdio.h>Void main(){printf(“**********************\n”);printf(“*The data is *\n”);printf(“* 2005-03-23 *\n”);printf(“**********************\n”);}第二章习题1.选择题(1)设int m=10 ,则下列表达式的值不等于零的有(A F)。
《C语言程序设计》综合练习试卷(一)试题一判断题 (每题1分,共10 分)(用T表示正确、F表示不正确) 1.C的任何类型数据在计算机内部都是以二进制形式存储的。
2.按格式符“%d”输出float类型变量时,截断小数位后取整输出。
3.字符数组中字符串可以整体输入输出。
4.传值调用的形参只有在被调用时,才被创建(分配存储单元)。
5.C语言中数组名是指针常量。
6.结构体类型中的各成员项数据类型可以不相同。
7.函数必须有返回值,否则不能使用函数。
8.C程序执行总是从第一个函数开始。
9.可以用关系运算符对字符串进行大小比较。
10.For循环只能用于循环次数已确定的场合。
试题二单选题(每题1分共15分)从A)、B)、C)、D)四个选项中,选出正确的一项。
1.以下程序运行后,输出结果是#include"stdio.h"void main( ){ char s[10]="abcde",*p;p=s+2;printf("%s \n",p);}A) cde B)字符c的ASCII码值 C)字符c的地址 D)出错2.对下面函数f,写出f(f(3))的值。
int f(int x){ static int k=0;x+=k--;return x;}A) 5 B) 3 C) 2 D) 43.以下程序运行后,输出结果是#define PT 5#define S(x) PT*x#include"stdio.h"void main( ){ int a=1,b=2;printf ("%d\n",S(a+b));}A) 15 B) 7 C) 8 D) 无正确答案4. 若有 float a[3][4]; 正确的引用第3行第1列的元素是A) **(a+2) B) *(*a+2) C) a[3][1] D) a[3][0]printf("%.1f,%d\n",10./4,10/8);的输出是A) 2.5, 1.25 B) 2.5, 1 CA) int a[ ]; B)int n=5,a[n];C) int n, a[n]={1,2,3,4,5}; D) int a[10/2];7.若有定义:struct person { char name[9]; int age; } ;person st[10]={{"john",17},{"paul",19},{"Mary",18}};能输出字母M的语句是A) printf("%c",st[2].name);B) printf("%c",st[3].name[1]);C) printf("%c",st[2].name[1]);D) printf("%c",st[2].name[0]);8.不能把字符串:“Hello!”赋给数组b的语句是A) char b[10]={'H','e','l','l','o','!','\0'};B) char b[10];b="Hello!";C) char b[10];strcpy(b,"Hello!");D) char b[10]="Hello!";9.若有 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则表达式值为6的是A)*p+6 B)*(p+6) C)*p+=5 D)p+510. 已知:int *p,m=5, n; 正确的程序段是A) p=&n; scanf(" %d",&p); B) p=&n; scanf(" %d", *p);C) scanf("%d",&n); *p=n; D) p=&n; *p=m;11. 下面程序的运行结果是:#include"stdio.h"void main( ){ int x[4]={ 2,4,6,8},*p, **pp;p=x;pp=&p;printf("%d",*p);printf("%3d",**pp);}A) 4 4 B) 2 4 C) 2 2 D) 4 612.下面程序执行后a的值是#include"stdio.h"void main( ){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1!=&m;printf("%d\n",a);}A)4 B)1 C)0 D)运行时出错,a无定值13.下列语句序列中,能够将变量u、s中最大值赋给变量t的是A) if (u>s) t=u; t=s; B) t=s; if (u>s) t=u;C) if (u>s) t=s; else t=u; D) t=u; if (u>s) t=s;14. 若有 int a=7,b=12;则语句printf("%d",a&b);输出结果A) 19 B) 9 C) 5 D) 415.若有 FILE *fp; 以“只读”方式打开文本文件a:\aa.dat,下列语句中正确的是A) fp=fopen("a:\aa.dat","w");B) fp=fopen("a:\aa.dat","r");C) fp=fopen("a:\\aa.dat","w");D) fp=fopen("a:\\aa.dat","r");试题三阅读程序题( 每题4分,共24分)写出读下列程序的输出结果1. #include<stdio.h>void main(){ char ch;for(ch='a';ch<'f'; ch++){ putchar(ch-32);putchar(ch);}}2. #include"stdio.h"void main(){ int i;for( i=1;i<=4;i++){ if ((i%3)==0) { printf("$"); continue;} else printf("*");printf("#");}}3. #include "stdio.h"void main(){ int i;for(i=1;i<5;i++)switch(i%5){ case 5: printf(" 5");case 3: printf(" 3");case 1: printf(" 1");default: printf("%2d",i);}}4. #include"stdio.h"void main(){ int x[10];int t,i,j,m=1;for(i=0;i<10;i++){ m=-m;x[i]=m*i;}for(i=1;i<10;i++){ t=x[i];for(j=i-1; j>=0; j--)if(t>x[j]) break;else x[j+1]=x[j];x[j+1]=t;}for(i=0;i<10;i++) printf("%3d",x[i]);}5. #include<stdio.h>void main(){ void swap1(int x ,int y );void swap2(int *x,int *y);void swap3(int &x,int &y);int a1,b1,a2,b2,a3,b3;a1=a2=a3=10;b1=b2=b3=5;swap1(a1,b1);swap2(&a2,&b2);swap3(a3,b3);printf("a1=%d b1=%d\n",a1,b1);printf("a2=%d b2=%d\n",a2,b2);printf("a3=%d b3=%d\n",a3,b3);}void swap1(int x,int y){ int t;t=x;x=y;y=t; }void swap2(int *x,int *y){ int t;t=*x; *x=*y; *y=t; }void swap3(int &x,int &y){ int t;t=x; x=y; y=t; }6.struct node{int num;node *next;};int fun( node *h){ int s,n=0,i;node *p=h ;while(p!=NULL){ for(s=0,i=1;i<p->num;i++)if ((p->num)%i==0) s+=i;if (s==p->num) n++;p=p->next;}return n;}写出执行语句“printf(“%d\n”,fun(head));”的输出结果。
《C语言程序设计》模拟试卷一一、单项选择题(每题2分,共30分)1、下列有关C语言的叙述中错误的是(D)。
A) C语句必须以分号结束B) 任何一个C程序中有且只有一个主函数C) 复合语句在语法上可被看作一条语句D) C程序中对数据的任何操作都可由运算符实现2、以下不能定义为用户标识符的是(C)。
A) MAIN B) _HJ C)2ong D) LINE13、下列符号中用来表示C语言中的回车换行的是(B)。
A) \r B) \n C)\b D) \t4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为(B)。
A) 1, 1 B) 1, 2 C) 2, 2 D)2, 15、已知ch为字符型变量,下面表达式中正确的是(A)。
A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ”6、以下能正确定义一维数组的是(C)。
A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”;C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5};7、以下语句中能正确定义变量并赋初值的是(A)。
A) char c=65; B) float f=f+1.1;C) double x=12.3e3.6; D) int m=n=2.0;8、在执行下列程序时输入:1357924,则程序的运行结果为(D)。
main( ){ int x, y;scanf(“%2d%2d”,&x,&y);printf(“%2d”,x*y); }A) 13 B) 1357 C) 74 D) 7419、执行下列程序段后输出的结果是(C)。
x = 9;while (x > 7){ printf(“*”); x- -; }A) **** B) *** C) ** D) *10、设char str1[10] = “ABCDE”, str2[10] = “xyz”;则执行语句printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果是(D)A) 9 B) 8 C) 5 D) 311、若用数组名作为函数调用的实参,则传递给形参的是(A)A) 数组的首地址B) 数组第一个元素的值C) 数组中全部元素的值 D) 数组元素的个数12、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为( A ) A)void B)double C)int D)char13、下面不能正确进行字符串赋值操作的语句是(A)A) char s[5]={"ABCD"};B) char s[5]; s="ABCD";C) char *s;s="ABCDEF"; D) char *s="ABCD";14、设有说明int s[5]={1,3,5,7,9}; int *p=s; 则下列表达式中值为3的是(B )A)++p B)++(*p) C) *(++p) D) *(p+=2)15、下面程序的输出结果是(B)int m=13;int fun( int x, int y){ int m=3;return( x*y-m); }main( ){ int a=7,b=5;printf(“%d\n”, fun(a,b)/m); }A) 1 B) 2 C) 3 D) 10二、判断(每空1分,共10分)1、C语言有三种结构化程序设计方法,分别为顺序结构、选择结构和循环结构。
C语言程序设计模拟试题一(含答案)1、下列述叙中正确的是A) 显示器和打印机都是输出设备B) 显示器只能显示字符C) 通常的彩色显示器都有7种颜色D) 打印机只能打印字符和表格2、微型计算机中运算器的主要功能是进行A) 算术运算B) 逻辑运算C) 算术和逻辑运算D) 初等函数运算3、是DOS系统的最外层模块,通常称之为A) 引导程序B) 输入输出系统C) 命令处理系统D) 文件管理系统4、电子邮件是A) 网络信息检索服务B) 通过Web网页发布的公告信息C) 通过网络实时交互的信息传递方式D) 一种利用网络交换信息的非交互式服务5、和十进制数225相等的二进制数是A) 11101110 B) 11111110C) 10000000 D) 111111116、下列叙述中正确的是A) 指令由操作数和操作码两部分组成\B) 常用参数xxMB表示计算机的速度C) 计算机的一个字长总是等于两个字节D) 计算机语言是完成某一任务的指令集7、计算机的内存储器比外存储器A) 价格便宜B) 存储容量大C) 读写速度快D) 读写速度慢8、设当前盘为C盘,执行DOS命令"COPY B:\A.TXT PRN"之后,结果是A) B盘上的A.TXT文件被复制到C盘的PRN文件B) 屏幕上显示B盘上的A.TXT文件内容C) B盘上的A.TXT文件内容在打印机上输出D) B盘上的A.TXT文件被复制到B盘上的PRN文件9、要将当前盘当前目录下的两个文件X1.TXT和B1.TXT连接起来之后存入B盘当前目录下并且命名为Z.TXT,无论B 盘当前目录是什么,完成这件任务可以使用的命令是A) COPY A:X1.TXT+C:B1.TXT Z.TXTB) COPY X1.TXT+C:\\WS\\B1.TXT B:\\Z.TXTC) COPY A:X1.TXT+C:\\WS\\B1.TXTD) COPY X1.TXT+B1.TXT B:Z.TXT10、下列四组DOS命令中,功能等价的一组是A) COPY A:*.* B:与DISKCOPY A: B:B) COPY ABC.TXT+XYZ.TXT 与TYPE XYZ.TXT>>ABC.TXTC) COPY ABC.TXT+XYZ.TXT与COPY XYZ.TXT+ABC.TXTD) TYPE *.FOR>CON与COPY *.FOR CON11、设当前目录为D:\BB,现要把D:\AA目录下首字符是A的文本文件全部删除,应该使用命令A) DEL A*.TXT B) DEL \\AA\\A.TXTC) DEL \\AA\\A*.TXT D) DEL \\AA\\A?.TXT12、在Windows中,启动应用程序的正确方法是A) 用鼠标指向该应用程序图标B) 将该应用程序窗口最小化成图标C) 将该应用程序窗口还原D) 用鼠标双击该应用程序图标13、在Windows中,终止应用程序执行的正确方法是A) 将该应用程序窗口最小化成图标B) 用鼠标双击应用程序窗口右上角的还原按钮C) 用鼠标双击应用程序窗口中的标题栏D) 用鼠标双击应用程序窗口左上角的控制菜单框14、在微机系统中,对输入输出设备进行管理的基本程序模块(BIOS)存放在A) RAM中B) ROM中C) 硬盘中D) 寄存器中15、使计算机病毒传播范围最广的媒介是A) 硬磁盘B) 软磁盘C) 内部存储器D) 互联网16、设有int x=11; 则表达式(x++ * 1/3) 的值是A) 3 B) 4C) 11 D) 1217、下列程序的输出结果是main(){ double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf("%d \n", d*y);}A) 3 B) 3.2C) 0 D) 3.0718、下列程序执行后的输出结果是(小数点后只写一位)main(){ double d; float f; ling l; int i;i=f=1=d=20/3;printf("%d %ld %f %f \n", i,l,f,d);}A) 6 6 6.0 6.0 B) 6 6 6.7 6.7C) 6 6 6.0 6.7 D) 6 6 6.7 6.019、下列变量定义中合法的是A) short _a=1-.le-1; B) double b=1+5e2.5;C) long do=0xfdaL; D) float 2_and=1-e-3;20、设int x=1, y=1; 表达式(!x||y--)的值是A) 0 B) 1C) 2 D) -121. 与y=(x>0?1:x<0?-1:0);的功能相同的if语句是A) if (x>0) y=1;else if(x<0)y=-1;else y=0;B) if(x)if(x>0)y=1;else if(x<0)y=-1;else y=0;C) y=-1if(x)if(x>0)y=1;else if(x==0)y=0;else y=-1;D) y=0;if(x>=0)if(x>0)y=1;else y=-1;22. 以下循环体的执行次数是main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i);}A) 3 B) 2C) 1 D) 023. 以下叙述正确的是A) do-while语句构成的循环不能用其它语句构成的循环来代替B) do-while语句构成的循环只能用break语句退出C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环D) 用do-while语句构成的循环,在while后的表达式为零时结束循环24. 下列程序执行后的输出结果是main(){ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }A) G B) HC) I D) J25. 执行下面的程序段后,变量k中的值为int k=3, s[2];s[0]=k; k=s[1]*10;A) 不定值B) 33C) 30 D) 1026. 若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a,i; 其中0≤i≤9, 则对a数组元素不正确的引用上A} a[p-a] B} *(&a[i])C} p[i] D} a[10]27、下列程序执行后的输出结果是void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5];a=0; b[0]=3;func(&a,b); printf("%d \n,b[0]);}A) 6 B) 7C) 8 D) 928、下列程序的运行结果是#include <stdio.h>main(){ int a=2,c=5;printf("a=%d,b=%d\n",a,c); }A) a=%2,b=%5 B) a=2,b=5C) a=d, b=d D) a=%d,b=%d29、下列程序执行后的输出结果是main(){ int a[3][3], *p,i;p=&a[0][0];for(i=p; i<9; i++) p[i]=i+1;printf("%d \n",a[1][2]);}A) 3 B) 6C) 9 D) 随机数30、设有数组定义: char array [ ]="China"; 则数组array所占的空间为A) 4个字节B) 5个字节C) 6个字节D) 7个字节31、下列程序的输出结果是int b=2;int func(int *a){ b += *a; return(b);}main(){ int a=2, res=2;res += func(&a);printf("%d \n",res);}A) 4 B) 6C) 8 D) 1032、在以下四组中,每组有两个分别运算的函数,运算结果相同的是main(){ int i, j, m=0, n=0;for(i=p; i<2; i++)for(j=0; j<2; j++)if(j>=i) m=1; n++;printf("%d \n",n);}A) 4 B) 2C) 2 D) 033、下列程序的输出结果是struct abc{ int a, b, c; };main(){ struct abc s[2]={{1,2,3},{4,5,6}}; int t;t=s[0],a+s[1],b;printf("%d \n",t);}A) 5 B) 6C) 7 D) 834、设int b=2;表达式(b>>2)/(b>>1)的值是A) 0 B) 2C) 4 D) 835、在C程序中,可把整型数以二进制形式存放到文件中的函数是A) fprintf函数B) fread函数C) fwrite函数D) fputc函数36、下列程序执行后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); } A) -32767 B) FFFEC) -1 D) -3276837、若有定义: float w;int a, b;则合法的switch语句是A) switch(w){ case 1.0: printf("*\\n");case 2.0: printf("**\\n");}B) switch(a);{ case 1 printf("*\\n");case 2 printf("**\\n");}C) switch(b){ case 1: printf("*\\n");default: printf("\\n");case 1+2: printf("**\\n");}D) switch(a+b);{ case 1: printf("*\\n");case 2: printf("**\\n");default: printf("\\n");}38、以下程序段的执行结果是int a, y;a=10; y=0;do{ a+=2; y+=a;printf("a=%d y=%d\n",a,y);if(y>20) break;{ while(a=14);A} a=12 y=12a=14 y=16a=16 y=20a=18 y=24B} a=12 y=12a=16 y=28C} a=12 y=12D} a=12 y=12a=14 y=26a=14 y=4439、若有以下调用语句,则不正确的fun函数的首部是main(){ …int a[50],n;…fun(n, &a[9]);…A} void fun(int m, int x[]) B} void fun(int s, int h[41])C} void fun(int p, int *s) D} void fun(int n, int a)40、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(说明:'\b'是退格符)A) a\\bre\\'hi\\'y\\\\\\bou B) a\\bre\\'hi\\'y\\bouC) re'hi'you D) abre'hi'y\\bou41、请选出正确的程序段A) int *p;scanf("%d",p);…B) int *s, k;*s=100;…C) int *s, k;char *p, c;s=&k;p=&c;*p='a';…D) int *s, k;char *p, e;s=&k;p=&c;s=p;*s=1;42、已知指针p的指向如下图所示,则执行语句*--p;后*p的值是A) 30 B) 20C) 19 D) 2943、设已有定义:char *st="how are you";下列程序段中正确的是A) char a[11], *p; strcpy(p=a+1,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11];strcpy(a, st);D) char a[], *p;strcpy(p=&a[1],st+2);44、下列程序执行后的输出结果是mai(){ char arr[2][4];strcpy(arr,"you"); strcpy(arr[1],"me");arr[0][3]='&';printf("%s \n",arr);}A) you&ne B) youC) me D) err45、下列程序执行后的输出结果是void func1(int i);void func2(int i);char st[]="hello,friend!";void func1(int i){ printf("%c",st[i]);if(i<3){i+=2;func2(i);}}void func2(int i){ printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){ int i=0; func1(i); printf("\n");}A) hello B) helC) hlo D) hlm46、假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行: prg hello good<回车>后,程序的输出结果是main()int argc, char *argv[]){int i;if(argc<-0)return;for(i=1;i<argc;i++)printf("%c", *argv[i]);}A) hello good B) hgC) hel D) hellogood47、下列程序执行后的输出结果是#define MA(x) x*(x-1)main(){ int a=1,b=2;printf("%d \n",MA(1+a+b));}A) 6 B) 8C) 10 D) 1248、变量a所占内存字节数是union U{ char st[4];int i;long l;};struct A{ int c;union U u;}a;A) 4 B) 5C) 6 D) 849、执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是main(){char s[100];int c, i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s \n",c,i,s);}A) 123,456,789 B) 1,456,789C) 1,23,456,789 D) 1,23,45650、执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是main(){char s[100];int c, i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s \n",c,i,s); }A) 123,456,789 B) 1,456,789 C) 1,23,456,789 D) 1,23,456答案:ACCDD ACCDBCDDBD ACAABACDAA DABBCBABDA CDBCCCBABC BBCDD。
C程序设计课后习题第一章习题1.选择题(1)C语言程序的执行总是从(A)开始。
A.main函数的入口 B.编译预处理命令C.源程序的第一个函数D.源程序的第一行语句(2)在C语言的源程序中,主函数的位置(C)。
A.必须在编译预处理命令的后面B.必须在源程序的最后C.任意D.必须在源程序的开头(3)下列变量名中合法的是(C)。
A. B.C.Tom B.3a6bC._6a7bD.$ABC(4)下面两对用户定义标识符哪个可读性更强:(C)A.checkqualityB.salarytotalC.check_quality C.sal_ary_tot_al(5)C程序是由(D)组成。
A.若干个过程B.若干子程序C.一个主程序和若干子程序D.若干函数2.填空题(1)一个函数一般由两部分组成,它们分别是_函数首部______和__函数体____。
(2)编译预处理命令___是_____(填“是”或“不是”)C语言文本的一部分。
(3)一个C语言程序至少应包含一个__主函数或main()__。
(4)C语言的标准输入函数是_scanf()__,标准输出函数是___printf()____。
(5)函数体用___{______符号开始,用_____}______符号结束。
(6)注释的开始和结束标志分别为__/*____和____*/____。
为增强程序的__可读性___,应该为程序写上清晰的注释。
3.编程题:参考本章例题,编写一个C程序,输出以下信息。
***********************The data is ** 2005-03-23 ***********************程序如下:#include <stdio.h>Void main(){printf(“**********************\n”);printf(“*The data is *\n”);printf(“* 2005-03-23 *\n”);printf(“**********************\n”);}第二章习题1.选择题(1)设int m=10 ,则下列表达式的值不等于零的有(A F)。
C语言程序设计课后习题1-8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。
运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。
数据运算包括算术运算和逻辑运算。
控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的。
存储器是计算机中具有记忆能力的部件,用来存放程序和数据。
输入设备是用来输入程序和数据的部件。
输出设备正好与输入设备相反,是用来输出结果的部件。
2、简述计算机的工作原理。
答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。
整个过程由控制器进行控制。
3、计算机软件系统分为哪几类答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。
系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。
这类软件一般与具体应用无关,是在系统一级上提供的服务。
系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。
另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。
应用程序是指某特定领域中的某种具体应用,供最终用户使用的软件,它必须在操作系统的基础上运行。
4、什么叫软件说明软件与硬件之间的相互关系。
答:软件是指计算机程序及有关程序的技术文档资料。
两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。
在不太严格的情况下,认为程序就是软件。
硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作。
在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。
《C语言程序设计》练习一一、单项选择题1.下面转义字符中,表示字符串结束的是()A.\ rB.\ nC.\ 0D.\ f2.在Turbo C2.0中,若定义unsigned int a;则变量a在内存中分配的字节数是()A.1个B.2个C.4个D.8个3.设有int x=2,y,z;执行z=y=x--;后,变量z的值是()A.0B.1C.2D.34.以十六进制形式输出整数的格式说明符是()A.%uB.%ldC.%xD.%o5.下面合法的if语句是()A.if(a=b) c++;B.if(a=<b) c++;C.ifi(a< >b) c++;D.if(a=>b) c++;6.结束while(表达式)循环的条件是()A.当表达式的值为0时B.当表达式的值不为0时C.当表达式的值为1时D.当表达式的值为非1时7.若有定义int a[3][5];则数组a在内存中占用的字节数是()A.8B.15C.16D.308.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是()A.charB.floatC.longD.int9.若有说明:int *p,m=5,n;以下正确的程序段是()A.p=&n;B.p=&n;scanf(〃%d〃,n); scanf(〃%d〃,*p);C.scanf(〃%d〃,&n);D.p=&n;p=n; *p=m;10.变量的指针,其含义是指该变量的()A.值B.地址C.名D.一个标志116.结构体是C提供的一种专门处理彼此相互有联系,数据类型()A.不一致的多个数据的数据结构B.不一致的单个数据的数据结构C.一致的多个数据的数据结构D.一致的单个数据的数据结构11.下面列出的位运算符中,表示按位与操作的是()A.~B.&C.^D.|12.设有说明:int x=0x03,y=3;表达式x&~y的值是()A.0B.1C.2D.319.设有说明:int u=1,v=3,w=2;表达式(v>>1|u<<2)&w的值是()A.0B.1C.3D.513.设有说明:FILE *fp;char *filename=〃paper〃;对于fp=fopen(filename,〃rb+〃);语句,下面说法正确的是()A.打开名为filename的文件读写B.打开名为paper的文件读写C.打开名为filename的文件只读D.打开名为paper的文件只读14. 设有int a=3, b=-4, c=5;表达式(a<b)? a+b:(a-b,b+4,a-=b+4)的值是()A. –1B. 0C. 3D. 715. 若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是()(其中<CR>表示换行)int a, b;scanf(″a=%d b=%d″,&a, &b);A. 2<CR>B. a=2 b=3<CR>C. a=2, b=3<CR>D. 2,3<CR>3<CR>16. 下面程序段的输出结果是()main(){ int s, p;s=p=5;p=++s;p++; ++p;2}A. 5B. 6C. 7D. 8的是()17. 下列if语句中,有语法错误..A. if(x>y);B. if(x=y) x+y;C. if(x!=y) scanf(″%d″, &x) else scanf(″%d″,&y)D. if(x<y) {x++; y++;}18. 下面程序段执行后的输出结果是()int i=-1;if(i<=0) printf(″* * * * \n″);else printf(″%%%%\n″);A. ****B.%%%%C. %%%%cD. ****c19. 下面程序段的循环次数是()int k=2;while(k==0) printf(″%d″,k);k--; printf(″\n″);A. 0次B. 1次C. 2次D. 无限次20. 下面程序段的输出结果是()a=100;while(a>120);a=a+1;printf(″%d″,a);A. 100B. 101C. 120D. 12121. 下面程序执行后,i的值是()main( ){ int a [5]={1,2,3,4,5},i=23}A. 1B. 2C. 3D. 422. 下面程序的输出结果是()main( ){ int i, x[3][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<4;i+=2) printf(″%d″, x[i][1]);}A. 5 1B. 5 2C. 8 2D. 9 323. 在C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是()A. 由系统自动指定对应实参和形参是否共用存储单元B. 对应实参和形参各占一个独立的存储单元C. 对应实参和形参共用一个存储单元D. 可以由用户指定对应实参和形参是否共用存储单元24. 下面叙述中不.正确的是()A. 不同函数中可以使用相同名字的变量B. 形式参数是局部变量C. 在一个函数内部定义的变量只能在本函数范围内有效D. 在一个函数内部的复合语句中定义的变量在本函数范围内有效25. 设有语句int a[4][10],*p=*a;则下面表达式中属于地址表达式的是()A. a[1][2]B. a[1]C. *(p+1*10+2)D. *(a[1]+2)的是()26. 下面定义不正确...A. struct starB. struct star{ {int id int id;char *name; char *name;4} star1={1001, ″Moon″}; }; star1={1001, ″Moon″};C. structD. struct star{ {int id; int id;char *name; char *name;} star1={123, ″Sun″}; } star1;27. 下面各个位运算符的优先级从左到右依次升高的是()A. | ^ & >>B. ^ >> & ~C. << | ^ ~D. ~ | & >>28. 设有说明:int u=1, v=14;表达式u+v>>2的值是()A. 0B. 3C. 5D. 729. 如果将文件指针fp指向文件末尾,正确的语句是()A. feof(fp);B. rewind(fp);C. fseek(fp,0L,0);D. fseek(fp,0L,2);完成的功能是()30. 下面程序段中,不能..FILE *fp;char ch =′v′;fp=fopen(″boy″, ″rb+″);fputc(ch,fp);A. 建立文件指针fp与文件boy的联系B. 从boy文件中读取一个字符C. 向boy文件中写一个字符D. 打开名为boy的二进制文件31.设有int a =3, b=-4, c=0;表达式((a>b)?a:b)&&c<0的值是()A.-4B.0C.1D.332.若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是()(其中<CR>表示换行)int a, b;scanf(″a=%d, b=%d″,&a,&b);A.2<CR>B.a=2 b=3<CR>C.a=2, b=3<CR>D.2,3<CR>3<CR>533.下面程序段的输出结果是()main( ){ int s, p;s=p=5;p=--s;p++;++p;printf(″%d\n″,p);}A.5B.6C.7D.834.关于if语句下面叙述正确的是()A.只有当if语句中表达式的值等于1时,才执行if的内嵌语句B.只有当if语句中表达式的值为假时,才执行if的内嵌语句C.只有当if语句中表达式的值等于0时,才执行if的内嵌语句D.只要if语句中表达式的值非0时,就执行if的内嵌语句35.若执行下面程序时,从键盘输入数据3和4,则程序的输出结果是()main( ){ int a,b,s;scanf(″%d″, &a,&b);s=a;if(a<b) s=bs=s*s;printf(″%d″,s);}A.9B.12C.16D.2536.若int x=0; 则while(x==0); 的循环次数是()A.0B.1C.2D.无限次37.下面程序段的输出结果是()6for (i=1; i<3;i++){for (j=1;j<3;j++)printf(″%d ″, i+j);printf(″\n″);}A.2 3 3 4B.2 3 4C.2 3D.23 4 3 438.下面程序的输出结果是()mian ( ){ int a[5]={2,4,6,8,10},i;i=2;printf(″%d″,a[i++]);}A.2B.4C.6D.839.下面程序的输出结果是()main( ){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int i,j,k=0;for(i=0;i<3;i++)k=k+a[i][0];printf(″%d\n″,k);}A.27B.33C.39D.4540.以下正确的函数定义形式是()A. double fun(int x, int y)B. double fun(int x; int y)C. double fun(int x, int y);D. double fun(int x, y);的说法是()41.关于变量以下不正确...A.在不同函数中可以使用相同名字的变量B.形式参数是全局变量7C.在函数内定义的变量只在本函数范围内有效D.在函数内的复合语句中定义的变量是局部变量地址表达式的是()42.设有语句int a[4][10],*p=*a;则下列表达式中不是..A.&a[1][2]B.a[3]C.*(p+1*10+2)D.p+1*10+2的是()43.下面关于结构体类型变量定义不正确...A. struct scoreB. struct{ {int math; int math;int Chinese; int Chinese;}Li, Wang; }Li, Wang;C. struct scoreD. struct score{ {int math; int math;int Chinese; int Chinese;}; };Li, Wang;struct score Li, Wang;44.下面各个运算符的优先级从左到右依次降低的是()A.& >> | ^B.~ & >>|C.>> & ^ |D.~ >> & ^45.设有说明:int u=1, v=2;表达式:u+v<<2的值是()A.-1B.1C.9D.1246.下面程序段中,不.能完成的功能是()FILE *fp;char ch;fp=fopen(″file1″, ″rb+″);ch=fgetc(fp);A.建立文件指针fp与文件file1的联系B.从file1文件中读一个字符C.向file1文件中写一个字符D.打开名为file1的二进制文件的是()47.在格式:fread(stu,size,n,fp);中,下面说法不正确...89A.stu 是内存中存放数据的首地址B.n 表示读n 次C.size 是一个数据块的字节数D.fp 表示文件指针48.字符串常数“CHINA ”在内存中存储时占的字节数是( )A .5个B .6个C .7个D .8个49.如果a=1,b=2,c=3,d=4,则表达式a>b?a:c<d?c:d 的值是( )A .1B .2C .3D .450.输出字符串的格式说明符是( )A .%cB .%sC .%uD .%g 51.设有说明int x=0,y=0;则执行if(x++)y=1+x;else y=2+x ;后,变量y 的值是( )A .0B .1C .2D .3 52.以下程序段所表示的数学函数关系是( )y=-1if(x!=0) if(x>0) y=1;else y=0;A .⎪⎩⎪⎨⎧>=<-=)0(1)0(0)0(1x x x yB .⎪⎩⎪⎨⎧>=-<=)0(0)0(1)0(1x x x yC .⎪⎩⎪⎨⎧>=-<=)0(1)0(1)0(0x x x yD .⎪⎩⎪⎨⎧>=<-=)0(0)0(1)0(1x x x y 53.执行下面程序段后,输出字符A 的个数是( )for(i=0;i<=5;i+=2)printf(″A ″);A.0个B.3个C.5个D.6个54.若有定义char a[ ]= ″computer″;则存储字符m的数组元素是()A.a[1] B.a[2] C.a[3] D.a[4]55.若有定义int a [4]={1,2,3,4};则a[a[3]-a[1]*a[1]]的值是()A.1 B.2 C.3 D.412.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()A.自动(auto)B.静态(static)C.外部(extern) D.寄存器(register)56.如果一个C程序仅由一个源文件组成,则在一个源文件中定义的全局变量的作用域为()A.源文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量的位置开始至本文件末尾指针数组定义的是()57.下列定义中,不是..A.int*p[5];B.float*q[4];C.int(*r)[6];D.char*w[7];58.若有语句int*point,a=4;和point=&a;下面代表地址的一组选项是()A.a,point,*&a B.&*a,&a,*pointC.*&point,*point,&a D.&a,&*point,point59.下列程序的运行结果是()#difine N 9fun (char s[ ]){char*p=s+4,*q=s;int i;for(i=0;i<4;i+ +,p+ +,q + +){s[i]=*p;s[i+4]=*q}10}main( ){char ss[N]= ″ABCDEFGH″;fun(ss)printf(″%s\n″,ss);}A.EFGHABCD B.EFGHEFGH C.ABCDEFGH D.ABCDABCD60.设有结构体的定义如下:()struct cjd {long bh;int*q;char xm[9];};则sizeof(struct cjd)的值是A.14 B.15 C.16 D.1761.设有说明:int x=0x15,y=0x0f;则x&y的结果是()A.0x5 B.0x15 C.0xf0 D.0xf562.如果在程序中要使用系统提供的函数strlen,则需要书写的编译预处理命令是()A.#include<stdio.h> B.#include<math.h>C.#incLude<string.h> D.#incLude<malloc.h>63.由FILE*fp;fp=fopen(″a:\\abc.txt″,″r+″);可以推知fopen 函数的原型是()A.char *fopen(char,char);B.FILE*fopen(char*,char*);C.int fopen (char*,char*); D.FILF fopen(char* ,char*);64.整数-2在机器内存中的表示是()A.1000000000000010 B.1111111111111110 C.11111111111111101 D.111111111111111165.下列运算符中优先级最低的是()11A.> B.! C.% D.= =66.设有int a=3,b=-4,c=5;表达式+ +a-c+b+ +的值是()A.-6 B.-5 C.-4 D.-367.以十进制无符号形式输出整数的格式说明符是()A.%u B.%x C.%o D.%d69.下列程序段的输出结果是()void main(void){iny y=1,x=5;if(x<0)y=-1;if(x>=0)y=0;printf("%d\n",y);}A.-1 B.0 C.1 D.569.执行如下程序段后,x的值是()int x=1,y=-1;if(y<0)x-=y;else x+=y;A.-1 B.0 C.1 D.270.执行while(表达式)循环的条件是()A.当表达式的值为0时B.仅当表达式的值为1时C.当表达式的值非0时D.当表达式的值不为1时71.下列程序段输出的结果是()for(i=1;i<3;i+ +)for(j=1;j<3;j+ +)12printf("%d",i+j);A.2 3 3 4 B.2 3 4C.2 3 D.23 4 3 472.若有定义int s[4]={1,2,3,4};则a[a[2]-3*a[0]+1]的值是()A.1 B.2 C.3 D.473.下列关于C语言程序说法正确的是()A.C语言程序总是从有定义的函数起顺序执行B.在C语言程序中,被调用函数必须在main函数中定义C.C语言程序中的main函数必须放在程序的开始部分D.C语言程序总是从main函数起开始执行74.若有int a[ ]={1,2,3,4,5,6,7,8,9,10},且0≤i<10,则对数组元素地址正确表示的是()A.&a+1 B.&a+ + C.&a D.&a[i]75.下列关于结构体类型定义正确的是()A.struct ABC B.struct ABC{ {int a int a;char b char b;char*p char * p;} }C.struct ABC D.struct ABC{ {int a; int a,char b; char b,char * p; char *p,13}; };76.下列位运算符中,表示按位异或操作的是()A.~ B.│C.^ D.&77.下列各个位运算符的优先级从左到右依次升高的是()A.>>│& ~B.│>> & ~C.│& >> ~D.~│& >> 78.设有说明:int u=1,v=3;则表达式u<<= v的值是()A.0 B.1C.3 D.879.如果文件存储的是数据在内存中存放的字节形式,则该文件是()A.ASCII文件B.文本文件C.二进制文件D.设备文件80.下列转义字符中,表示回车的是()A.\0 B.\n C.\r D.\f81.若定义double d;则d在内存中分配的字节数是()A.1个B.2个C.4个D.8个82.下列表达式中运算结果为3的表达式是()A.(-7)%4 B.7/4+2 C.7/4*4-4 D.8/3+8/3 83.设有int a=3,b=-4,c=5;表达式a++-c+b++的值是()A.-6 B.-5 C.-4 D.-384.在printf语句中,格式说明符u表示()A.以十进制带符号形式输出整数B.以十六进制带符号形式输出整数C.以十进制无符号形式输出整数D.以十六进制无符号形式输出整数1485.若有int a=3,b=4,c=5,d=6,x=4;执行下列程序段后x的值是()if(a<b){if(c= =d)x=c;}elsex=d++A.4 B.5 C.6 D.786.关于switch中的表达式,正确的说法是()A.它必须是算术表达式B.它必须是关系表达式C.它必须是逻辑表达式D.它可以是任意类型的表达式87.对do语句while(表达式);结构的循环,下列说法正确的是()A.当表达式的值为非零时不执行循环体B.循环体至少被执行一次C.当表达式的值为零时循环体一次也不执行D.循环体仅被执行一次88.只能在循环语句中用于结束本轮循环的语句是()A.break; B.continue; C.goto D.if89.若有定义int a[3][5];则数组a在内存中分配的字节数是()A.8 B.15 C.24 D.3090.已知strl和str2是字符串数组,下列哪一个函数能正确的完成字符串的输入?()A.gets(strl) B.gets(strl,str2) C.getchar(strl) D.getchar(strl,str2) 91.下列关于函数的描述中正确的是()15A.C程序中有调用关系的所有模块必须放在同一个源文件中B.函数必须有返回值,否则不能使用函数C.C程序必须由一个或一个以上函数构成D.C函数既可以嵌套定义又可以嵌套调用92.设有下列程序,则()int d=10;main(){int a=3;printf(“%d,%d\n”,a,d);}A.a是全局变量,d是全局变量B.a是局部变量,d是全局变量C.a是全局变量,d是局部变量D.a是局部变量,d是局部变量93.若有说明:int*p1,*p2,m=5,n;以下进行赋值的语句中合理的是()A.p1=m; B.&p2=n; C.pl=&m;p2=p1; D.*p1=&m;94.下列为指针数组定义的是()A.float(*)[6]; B.float p[6]; C.float(*)(); D.float *p[6];95.设有说明:FILE*fp;对于fp=fopen(″c:\\abc.dat″,″rb″);语句,下列说法中不正确的是()A.fp将指向abc.dat文件B.以只读方式打开二进制文件C.打开文件的文件名是abc.datD.以读写方式打开ASCII码文件96.ASCII码文件的结束可以用符号常量EOF表示。
《C程序设计》练习及答案选择题部分第一章c语言概述选择题1、一个c程序的继续执行从______。
a、本程序的main函数开始,到main函数的结束b、本程序文件的第一个函数已经开始,至本程序文件的最后一个函数的完结c、本程序文件的main已经开始,至本程序文件的最后一个函数的完结d、本程序文件的第一个函数已经开始,至本程序文件的main函数的完结2、以下描述恰当的就是______。
a、在c程序中main函数必须位于程序的最前面b、c程序的每行中只能写一条语句c、c语言本身没有输入输出语句d、在对一个c程序展开编程的过程中,可以辨认出注解中的错误3、以下描述不恰当的就是______。
a、一个c源程序可由一个或多个函数组成b、一个c源程序必须包含一个main函数c、c程序的基本组成单位是函数d、在c程序中,注解表明就可以坐落于一条语句的后面4、c语言规定,在一个源程序中,main函数的位置______。
a、必须在最为已经开始b、必须在系统调用的库函数的后面c、可以任一必须在最后5、一个c语言程序是由______。
a、一个主程序和若干子程序共同组成b、函数共同组成c、若干过程共同组成d若干子程序共同组成、、d(acdcb)第三章数据类型、运算符与表达式(红色显示的部分为参考答案)1、如果x、i、j和k都就是int型变量,则排序下面表达式后,x的值______。
x=(i=4,j=16,k=32)a.4b.16c.32d.522、设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是______。
a.7b.8c.6d.23、以下四组选项中,均不是c语言关键字的选项就是______。
a.defineiftypeb.getccharprintfc.includescanfcased.whilegopow4、下列四组选项中,均是c语言关键字的选项是______。
a.autoenumincludeb.switchtypedefcontinuec.signedunionscanfd.ifstructtype5、下列四组选项中,均是不合法的用户标识符的选项是______。
练习一1.1写出最简单的C程序。
答:void main( ){}1.2用一条C语句完成下述要求。
a)把变量x,y,z和result定义为int类型。
b)提示用户输入三个整数。
c)从键盘读取三个整数并把它们存储在变量x,y,z中。
d)计算变量x,y和z所存储的整数的和,并把计算结果赋给变量result.e)打印出“The sum is ”并紧接着打印出变量result的值。
答:a)int x, y, z, result;b)printf(〞请输入三个整数\n〞);c)scanf(〞%d%d%d〞, &x, &y, &z);d)result = x + y + z;e)printf(〞The sum is %d〞, result);1.3用练习1.2中的语句写出计算三个整数和的完整的程序。
答:void main( ){int x, y, z, result;printf(〞请输入三个整数\n〞);scanf(〞%d%d%d〞, &x, &y, &z);result = x + y + z;printf(〞The sum is %d〞, result);}1.4指出并改正下列语句中的错误(每条语句可能不止一个错误)。
a)scanf(〞%d,value〞);b)printf(〞The sum of %d and %d is %d〞\n,x,y);c)*/Program to determine the largest of three in integers/*d)p r intf(〞The value you entered is %d〞\n,&value);e)int return=10;答:a)scanf(〞%d〞, &value);b)printf(〞The sum of %d and %d is %d\n〞, x, y, x + y);c)/* Program to determine the largest of three in integers*/d)p r intf(〞The value you entered is %d\n〞, value);e)int ret=10;//关键字不能作变量名1.5 在VC6.0中编译运行程序1-1,1-4和练习1.3所写的程序。
C程序设计练习一
组题人:张仲曦注:提交作业前,请将程序名设置为题目名称后面的英文名,如totnum.c。
1.鸡兔同笼问题(totnum.c)
【问题描述】
已知鸡和兔的总数量为n,鸡腿和兔腿的总数为m,求鸡和兔各有多少只。
【输入格式】
两个整数n和m。
【输出格式】
两个整数,分别表示鸡和兔的个数。
两数之间用一个空格隔开。
【输入样例】
10 24
【输出样例】
8 2
2.求三角形面积(square.c)
【问题描述】
已知三角形的三条边长a,b,c,求三角形的面积。
若数据不构成三角形,请输出“Error!”。
【输入格式】
一行,为三个整数a,b,c。
【输出格式】
一个浮点数,为三角形的面积。
结果保留三位小数。
【输入样例1】
3 7 9
【输出样例1】
8.786
【输入样例2】
2 4 6
【输出样例2】
Error!
3.机器运算(calculation.c)
【问题描述】
编写一个根据用户键入的两个整型操作数和一个操作符(+、-、*、/),由计算机输出运算结果的程序。
结果保留两位小数。
当除数为0时,输出“Error!”。
【输入样例1】
15 3 +
【输出样例1】
18.00
【输入样例2】
5 0 /
【输出样例2】
Error!
4.最大值(maximum.c)
【问题描述】
输入三个整数,按从大到小的顺序输出。
【输入样例】
4 1 9
【输出样例】
9 4 1
5.分段函数(function.c)
【问题描述】
函数的表达式如下:
编写程序,输入x后输出y的值。
结果保留1位小数。
【输入样例1】
-1
【输出样例1】
0.0
【输入样例2】
5.6
【输出样例2】
5.6
6.平均分(average.c)
【问题描述】
编写一个评分程序,接受评委输入某选手的10个得分(0~10之间的整数),然后去掉一个最高分和一个最低分,求出该选手的最后得分(平均分)。
结果保留2位小数。
【输入样例】
5 0 10 9 4 2 7
6 8 9
【输出样例】
6.25。