C语言习题课
c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析1. 习题一:编写一个C程序,输出“Hello World!”。
解析:这是一个非常简单的C程序,只需要使用printf函数输出所需的字符串即可。
```c#include <stdio.h>int main() {printf("Hello World!");return 0;}```2. 习题二:编写一个C程序,计算两个整数的和并输出结果。
解析:这个程序需要使用scanf函数从用户输入中读取两个整数,并使用printf函数输出它们的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```3. 习题三:编写一个C程序,判断一个数是奇数还是偶数并输出结果。
解析:这个程序需要使用scanf函数读取用户输入的整数,并使用if-else语句判断该数的奇偶性,然后使用printf函数输出结果。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数");} else {printf("该数是奇数");}return 0;}```4. 习题四:编写一个C程序,判断一个年份是否为闰年并输出结果。
c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。
b) 一个C程序中至少应包括一个 main函数。
c) 在C语言中,输出操作是有库函数 printf( )函数完成。
二、单选题1、A2、C3、B解析:第1题答案:A 。
因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。
且到main函数结束。
第2题答案:C 。
因为 main函数没有限制必须位于程序的最前面。
C程序书写自由,一行内可写几个语句。
在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。
不过C语言本身并没有输入输出语句,输入输出是由函数完成的。
第3题答案:B。
因为一个C语言程序是由若干个函数组成的。
但至少包含一个main 函数,且main函数的位置不限。
三、编程题1、编写一个输出“Welcome to C!”信息的小程序。
解:程序如下#include “stdio.h”main( ){1printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。
海伦公式为:S?= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。
*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。
*/printf(“area=%f\n”,s1);}2第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。
c语言程序设计课后习题及答案

c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。
课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。
习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。
```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。
```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。
C语言课后习题参考答案(前5章)

《C语言程序设计基础》书后习题参考答案(无编程题答案,红色为书上错误)第二章习题一、选择题。
1、在C语言中,要求参加运算的数必须是整数的运算符是()A)% B)/ C)!D)*2、若已定义x和y为double类型,则表达式“x=1.0,y=x+3/2”的值是()A)1 B)2 C)2.0 D) 2.53、若变量已正确定义并赋值,符合C语言语法的表达式是()A)a=a+7; B) a=7+b+c,a++ C) int (12.3/4 ) D) a=a+7=c+b4、若有定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为()A)1.0 B)1 C) 2.0 D)25、若x和n均是int型变量,且x的初值为12,n的初值为5 ,则执行表达式x%=(n%=2) 后x 的值为()A) 0 B)1 C) 2 D)36、假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()A)7 B)8 C)9 D)107、指出下列哪一个选项的程序是错误的()A)#include<stdio.h> B) #include<stdio.h>void main( ) void main( ){int x,y,z; {int x,y,z;x=0;y=x+1; x=0,y=x+1;z=x+y; z=x+y;} }C) #include<stdio.h> D) #include<stdio.h>void main( ) void main( ){int x,y,z; {int x,y,z;x=0;y=x+1, x=0,y=x+1;z=x+y; z=x+y,} }8、若a为整型变量,则以下语句( )a=-2L;printf(“%d\n”,a);A)赋值不合法B)输出值为-2 C)输出为不确定值D)输出值为29、若变量a,i已经正确定义,且i已正确赋值,则合法的语句是()A)i=int(a) B) ++i; C)a=a++=5; D) a=int(i);10、若执行以下程序段后,c3的值为()int c1=1,c2=2,c3;c3=1.0/c2*c1;A)0 B)0.5 C)1 D)211、如下程序的运行结果是()#include<stdio.h>void main( ){ int y=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}A) 3 4 B) 4 2 C) 4 3 D) 3 312、以下程序的输入结果为()#include<stdio.h>void main( ){int i=4,a;a=i++;printf(“a=%d,i=%d’,a,i);}A)a=4,i=4 B)a=5,i=4 C)a=4,i=5 D)a=5,i=513、以下程序的输出结果是()#include <stdio.h>void main( ){ int a=5,b=4,c=6,d;printf(“%d\n”,d=a>b?(a>c?a:c):( b); //多了(}A) 5 B) 4 C) 6 D) 不确定14、在C语言中,如果下面的变量都是int类型,则输出的结果是()sum=pad=5;pad=sum++,pad++,++pad;printf(“%d\n”,pad);A)7 B)6 C)5 D)415、已知int i;float f;,正确的语句是()A)(int f)%i; B)int(f)%i; C) int(f%i); D)(int)f%i;16、已知int j,i=1;执行语句j=-i++;后,j的值是()A)1 B)2 C)-1 D)-217、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是()A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=a*(a=3)18、C语言中运算对象必须是整型的运算符是( )A) %= B) / C) = D)<=19、有以下程序main(){ int m=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是( )A)12353514 B)12353513 C)12343514 D)1234351320、下面程序的输出结果是()#include<stdio.h>main( ){int x=5,y=3;printf(“%d\n”,y=x/y); }A)0 B)1 C)3 D)不确定的值21、执行下列程序中的输出语句后,a的值是()#include<stdio.h>void main( ){int a;printf(“%d\n”,(a=3*5,a*4,a+5)); }A) 65 B)20 C)15 D)1022、执行下列程序时输入1234567,程序的运行结果为()#include<stdio.h>main( ){int x,y;scanf (“%2d%2ld”,&x,&y);printf(“%d\n”,x+y); }A)17 B)46 C)15 D)923 、已知char a;int b;float c;double d; 则表达式a*b+c-d结果类型为()A) double B)int C)float D) char二、填空题1、若i为int整型变量且赋值为6,则运算i++后的表达式的值是__6__,变量i的值是___7___。
C语言课后习题的答案

(2)
#include "math.h"
int isPrime(int n)
{
int i,rtn=1;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
rtn=0;
break;
}
}
return rtn;
}
int main(int argc, char* argv[])
n++;
else if((c>='A' && c<='Z') || (c>='a' && c<='z'))
m++;
else
other++;
c=getchar();
}
printf("字母的个数:%d\n数字的个数:%d\n其他字符的个数:%d",m,n,other);
{
int max,min,n,i;
scanf("%d",&n);
max=min=n;
for(i=1;i<=9;i++)
{
scanf("%d",&n);
if(n>max)max=n;
if(n<min)min=n;
}
printf("最大数为:%d\n最小数为:%d\n",max,min);
x=1;
y=n/2+1;
c语言基础习题课

main()
{ int i,j;
static float score[NUM_std+1][NUM_course+1]={{78,85,83,65},
{88,91,89,93}, {72,65,54,75},
{86,88,75,60}, {69,60,50,72}};
for(i=0;i<NUM_std;i++)
}
பைடு நூலகம்
for(j=0;j<NUM_course;j++)
score[NUM_std][j] /= NUM_std;
/*求第j门课的平均成绩*/
/*输出表头*/
printf("学生编号 课程1 课程2 课程3 课程4 个人平均\n");
/*输出每个学生的各科成绩和平均成绩*/
资料仅供参考 C 语 言 程 序 设 计
while(con_key=='\x20')
{ clrscr();
printf("输入第%2d个学生的成绩\n", i++);
printf("平时 实习 测验 期末成绩\n");
score[4]=0;
/* score[4]:存储总评成绩*/
for(j=0; j<4; j++)
{ scanf("%f",&score[j]);
{for(j=0;j<NUM_course;j++)
{ score[i][NUM_course] += score[i][j];/*求第i个人的总成绩*/
score[NUM_std][j] += score[i][j];/*求第j门课的总成绩*/
C语言章节习题集(全).docx

C语言程序设计第一、二章单项选择题1.将汇编语言编写的程序翻译成目标程序的程序是()A)解释 B)编译 C)汇编 D)目标2.不属于面向机器语言的是()A)符号语言 B)二进制语言 C)汇编语言 D)C 语言3.将高级语言编写的程序翻译成目标程序的程序是()。
A)解释 B)编译 C)汇编 D)二进制4.不属于高级语言的是()。
A)BASICB)CC)ALGOLD)符号语言5.程序段的基本结构中,不包含()。
A)函数结构 B)循环结构 C)顺序结构 D)分支结构6、C语言源程序的最小单位是()。
A、程序行B、语句C、函数D、字符7、以下说法正确的是()。
A、在C语言中,要调用的函数必须在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、从 main 函数开始执行,到源程序的最后一个函数结束D、从第一个函数开始执行,到 main 函数结束。
填空题1.能完成某个任务的、有始有终的 C语言 ___称为 C 程序。
2.用来编写程序的计算机语言称为 ____。
3.高级语言编写的程序称为 ____。
4.用C语言编写的源程序简称为“C程序”,扩展名规定为“____”。
5.C 程序经过“编译”后将获得扩展名为“OBJ”的 ____。
6.C 程序经过编译后获得的中间代码文件还需要经过____,才能成为可执行的“程序”,目标程序的扩展名规定为"EXE"。
C语言程序设计(习题课)

结果:1
2013-7-10
20
结构化程序设计(续)
3) int x; for(x=10;x>3;x--) { if(x%3) x--;--x;--x; printf("%d" ,x);} 输出单精度、 双精度数据, 结果:7 4 隐含6位小数
4)执行语句for(i=1;i++<4;);后变量i的值 结果:5 5) 若x和y都是double型变量,且x的初值为3.0,y的初值为 2.0,则执行语句printf("%f",pow(y,fabs(x)))的结果
结果:8.000000
2013-7-10 21
结构化程序设计(续)
例26:按要求回答: 1)若输入字符'A',在以下while语句执行后ch的值为【 1 】 while(ch=getchar()=='A') ; 2)若float a,b,c;要通过语句: scanf("%f%f%f",&a,&b,&c);分别为a,b,c输入10,22,33, 以下 不正确的输入形式是【 】。 (1) 10.0 22 33 (2) 10.0,22.0,33.0
2013-7-10 25
结构化程序设计(续)
void main() { long s; int k,n; scanf("%d",&n); s= 【4】; for(k=1;k<=n;k++) s=s+【5】; printf("%ld\n",s); }
s=0; fun(k);
2013-7-10
26
பைடு நூலகம்
结构化程序设计(续)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AB↙ C)10 20 AB↙ D)10 20AB↙ 。 9.若定义 x 为 double 型变量,则能正确输入 x 值的语句是 A)scanf(“%f”,x); B)scanf(“%f”,&x); C)scanf(“ %lf”,&x); D)scanf(“%5.1f”,&x); 10.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 。 则下面描述中正确的是 A)while 循环执行 10 次 B)循环是无限循环 C)循环题语句一次也不执行 D)循环体语句执行一次 11.以下程序段的循环次数是 。 for (i=2; i= =0; ) printf(“%d”,i--) ; A)无限次 B)0 次 C)1 次 D)2 次 。 12.下面程序的输出结果是 #include<stdio.h> void main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { printf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421 。 13.下面程序的输出结果是 #include<stdio.h> void main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“ k=%d,m=%d”,k,m) ; } A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5 。 14.若运行以下程序时,输入 2473↙,则程序的运行结果是 #include<stdio.h> void main ( ) { int c; while ((c=getchar( )) !=’\n’)
。
5
language[2]的值是 。 A)一个字符 B)一个地址 C)一个字符串 D)一个不定值 。 38.以下正确的叙述是 A)C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定 B)C 语言允许 main 函数带形参,形参名只能是 argc 和 argv C)当 main 函数带有形参时,传给形参的值只能从命令行中得到 D)若有说明: int main(int argc,char **argv),则 argc 的值必须大于 1 。 39.如下说明语句,则下面叙述不正确的是 struct stu { int a ; float b ; } stutype ; A)struct 是结构体类型的关键字 B)struct stu 是用户定义的结构体类型 C)stutype 是用户定义的结构体类型名 D)a 和 b 都是结构体成员名 。 40.C 语言结构体类型变量在程序执行期间 A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 。 41.下面程序的运行结果是 #iunclude<stdio.h> void main ( ) { struct complx { int x; int y ; } cnum[2]={1,3,2,7} ; printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x) ; } A)0 B)1 C)2 D)6 。 42.若执行 fopen 函数时发生错误,则函数的返回值是 A)地址值 B)0 C)1 D)EOF 43.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是 。 A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C)文件打开时,原有文件内容被删除,只可作写操作 D)以上说法都不正确 44.利用 fseek 函数可实现的操作是 。 A)改变文件的位置指针 B)文件的顺序读写 C)文件的随机读写 D)以上答案均正确 45.函数调用语句:fseek(fp,-20L,2)的含义是 。 A)将文件位置指针移到距离文件头 20 个字节处 B)将文件位置指针从当前位置向后移动 20 个字节 C)将文件位置指针从文件末尾向后退 20 个字节 D)将文件位置指针移到当前位置 20 个字节处
。
3
B) a 与 b 数组长度相同 C) a 与 b 数组都存放字符串 D) 数组 a 比数组 b 长度长 21.已知下列程序段: char a[3], b[]="Hello"; a=b; printf("%s", a); 。 则 A) 运行后将输出 Hello B) 运行后将输出 He C) 运行后将输出 Hel D) 编译出错 21.下列程序段的运行结果为 。 char a[]="continue", *p; p=a; while(*p!='i'){ printf("%c", *p-32); p++; } A) continue B) CONTINUE C) CONT D) contINUE 22.若有下列定义: int x[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[3]=x; 。 则能够正确表示数组元素 a[1][2]的表达式为 A) *(*(p+1)+2) B) *((*p+1)[2]) C) *(*(p+5)) D) *((*p+1)+2) 23. 若有说明 int a[3][4];则 a 数组元素的非法引用是 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 24.若调用一个函数,且此函数中没有 return 语句,则正确的说法是 A)该函数没有返回值 B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值 。 25.以下不正确的说法是 A)实参可以是常量,变量或表达式 B)形参可以是常量,变量或表达式 C)实参可以为任意类型 D)如果形参和实参的类型不一致,以形参类型为准 26.C 语言规定,函数返回值的类型是由 决定的。 A)return 语句中的表达式类型 B)调用该函数时的主调函数类型 C)调用该函数时由系统临时 D)在定义函数时所指定的函数类型 27.以下正确的描述是 。 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套
8.已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10,20,A 和 B,当从第一列开 始输入数据时,正确的输入方式是 。 int a1,a2; char c1,c2; scanf(“ %d%d”,&a1,&a2); scanf(“ %c%c”,&c1,&c2); A)1020AB↙ B)10 20↙
C 语言习题课 一、选择题 1.以下叙述不正确的是( )
A.一个 C 源程序可由一个或多个函数组成 B.一个 C 源程序必须包含一个 main 函数 C.C 程序的基本组成单位是函数 D.在 C 程序中,注释说明只能位于一条语句的后面 2.C 语言规定:在一个源程序中,main 的位置( ) A.必须在最开始 C.可以任意 B.必须在系统调用的库函数后面 D.必须在最后
6.在 C 语言中,要求运算数#43; C.!= D.%
7.判断字符型变量 c1 是否为小写字母的正确表达式为( ) A.’a’<=c1<=’z’ C. (‘a’>=c1)||(‘z’<=c1) B.(c1>=a)&&(c1<=z) D. (c1>=’a’)&&(c1<=’z’)
3.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A.7 C.6 B.8 D.2
4.下面四个选项中,均是合法的用户标识符的选项的是:( ) A. A B. float C. b-a D. _123 p_o lao goto temp INT do _A int
5.表达式 18/4*sqrt(4.0)/8 值的数据类型为( ) A.float C.double B char D.不确定
。
4
D)函数的定义和函数的调用均可以嵌套 28.已知一个函数的定义如下: double fun(int x, double y) { …… } 则该函数正确的函数原型声明为: A)double fun (int x,double y) B)fun (int x,double y) C)double fun (int ,double ); D)fun(x,y) ; 。 29.以下程序的运行结果是 #include<stdio.h> #define ADD(x) x+x void main ( ) { int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf(“%d\n”,sum) ; A)9 B)10 C)12 D)18 。 30.下面能正确进行字符串赋值操作的是 A)char s[5]={“ ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 。 31.下面程序段的运行结果是 char *s=”abcde” ; s+=2 ; printf(“ %s”,s); A)cde B)字符’c’ C)字符’c’的地址 D)不确定 。 32.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是 A)s 和 p 完全相同 B)数组 s 中的内容和指针变量 p 中的内容相等 C)s 数组长度和 p 所指向的字符串长度相等 D)*p 与 s[0]相等 。 33.下面程序段的运行结果是 char a[ ]=”language” , *p ; p=a ; while (*p!=’u’) { printf(“%c”,*p-32); p++ ; } A)LANGUAGE B)language C)LANG D)langUAGE 34.若已定义 char s[10];则在下面表达式中不表示 s[1]的地址是 。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 35.若有定义:int a[5],*p=a;则对 a 数组元素的正确引用是 。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2) 36.若有定义: int a[2][3];则对 a 数组的第 i 行第 j 列元素值的正确引用是 A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j 37.若有说明:char *language[]={“ FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则