C语言程序设计项目教程习题答案资料

C语言程序设计项目教程习题答案资料
C语言程序设计项目教程习题答案资料

C语言程序设计项目教程—

习题答案

说明:本文档在“文档结构图”视图方式下应用比较方便。

第1章第2章第3章第4章第5章第6章第7章第8章第9章

第1章

1. 什么是软件?软件有哪些特点?

答:软件是程序、数据及其相关文档的完整集合。

软件具有以下特点:

①软件是一种逻辑产品,它以程序和文档的形式出现,保存在计算机的存储器中(磁盘或光盘),通过计算机的运行才能体现它的功能和作用。

②软件产品的生产主要是研制。

③软件产品不会用坏,不存在磨损、消耗的问题,但是软件在使用过程中,往往需要根据用户需求变化或软硬件环境的变化对软件进行修改,这种修改被称为软件维护。

④软件产品的生产主要是脑力劳动。

⑤软件的费用是不断增加的,软件成本相当昂贵。

2. 什么是软件工程?

答:软件工程是一门用工程化方法,指导计算机软件开发和维护的学科,它采用工程的概念、原理、技术和方法来开发、维护以及管理软件。

3. 什么是软件生命周期?软件生命周期包括哪些阶段?

答:软件生命周期是指从开发软件概念的提出起,直到该软件的使用、失去使用价值而被废弃的整个过程,也可以称作软件生存周期。

软件生命周期包括可行性研究与计划制订、需求分析、软件设计、软件实现、软件测试、运行与维护。

4. 什么是软件开发模型?

答:软件开发模型是软件开发全部过程、活动和任务的结构框架。

5. 写出数据结构的概念。

答:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,是计算机存储、组织数据的方式。数据结构主要研究和讨论数据的逻辑结构、存储结构和数据的运算。

6. 填空:

⑴数据结构包括逻辑结构、存储结构和数据的运算三个方面。

⑵据结构的逻辑结构包括线性结构和非线性结构两大类。

⑶据结构的存储结构包括顺序存储结构、链式存储结构、索引存储结构和散列存

储结构四类。

⑷表是一种采用链式存储结构的线性表。

7. 什么是算法?算法有哪些特性?

答:算法是解决问题所采取的步骤和方法。算法具有以下特性:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。

8. 什么是算法的时间复杂度?什么是算法的空间复杂度?

答:时间复杂度是指执行算法所耗费的时间。空间复杂度是指算法在计算机内执行时所占用的内存开销规模。

9~12. DCDA

13. 分别用流程图、N-S图描述以下问题的算法。

(1)输入一个年份,判断是否为闰年。

提示:闰年的判断条件为:①能被4整除,但不能被100整除;②能被400整除。满足两个条件之一,即为闰年。

(2)从键盘输入三个不等的整数,输出最大值。

(3)计算并输出5!。一.选择题

返回

第2章

1.什么是程序?什么是程序设计?

答:程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。程序设计是指设计、编制、调试程序的方法和过程。

2.程序设计包括哪三个部分?

答:程序设计包括三个部分:输出结果、计算方法、原始数据。

3.结构化程序设计的原则有哪些?

答:结构化程序设计的原则是自顶向下、逐步求精、模块化,以及避免使用goto语句。4~8.BBDBD

返回

第3章

一.选择题

1~20 ADCAB CADAC DCBAA DCDBA

二.填空题

21 a=a+(a+b)

22 3

23 printf("a=%d\nb=%d\n",a,b);

24 201632

25 1B

26 1217

27 abc

28 11

29 for(i=10;i<100;i++)printf(“*”);

30 20

三、编程

1.输入圆柱体的底面半径和高,求圆柱体的体积。

#include "stdio.h"

main()

{

float r,h,v;

printf("输入圆柱体的底面半径和高(用空格隔开):");

scanf("%f%f",&r,&h);

v=3.14*r*r*h;

printf("圆柱体体积为:%.2f",v);

}

2.如果一个数恰好等于它的因子之和,则称该数为“完全数”。注意:一个数的因子不包括它自身,如6的因子为1,2,3,6就是一个完全数。求1~100之间的“完全数”。

#include "stdio.h"

main()

{

int x,i,s;

for(x=1;x<=100;x++)

{

s=0;

for(i=1;i

if(x%i==0)s+=i;

if(x==s)printf("%d\n",x);

}

}

3.编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:

操作数1 运算符op 操作数2

然后,计算表达式的值并输出结果。比如,运行程序时输入2+3后,能够输出其结果5。指定的运算符为加(+)、减(-)、乘(*)、除(/)。

#include "stdio.h"

main()

{

float a,b;

char op;

printf("输入如\"1.5+2.4\"的算式:\n");

scanf("%f%c%f",&a,&op,&b);

switch(op)

{

case '+':printf("=%.2f\n",a+b);break;

case '-':printf("=%.2f\n",a+b);break;

case '*':printf("=%.2f\n",a+b);break;

case '/':printf("=%.2f\n",a+b);break;

default:printf("本计算器只能执行加减乘除运算");

}

}

4.趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,编程求解男人、女人和小孩各可能有几人?

#include "stdio.h"

main()

{

int x,y,z;

for(x=1;x<=16;x++)

for(y=1;y<=25;y++)

{

z=30-x-y;

if(x*3+y*2+z==50)

printf("man:%d,woman:%d,child:%d\n",x,y,z);

}

}

5.求序列1,5,6,11,17,28,45,73……的第10项的值。

#include "stdio.h"

main()

{

int i,x1=1,x2=5;

printf("序列1,5,6,11,17,28,45,73......第十项是:");

for(i=1;i<5;i++)

{

x1=x1+x2;

x2=x1+x2;

}

printf("%d\n",x2);

}

6.如果一个正整数等于其各位数字的立方和,则称该数为阿姆斯特朗数。如407=43+03+73就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。

#include "stdio.h"

main()

{

int i,j,k,x;

printf("1000以内的阿姆斯特朗数如下:");

for(x=1;x<1000;x++)

{

i=x%10;

j=x/10%10;

k=x/100;

if(i*i*i+j*j*j+k*k*k==x)printf("%d\n",x);

}

}

返回

第4章

1.在“校园歌手大奖赛”中有10位评委为选手打分,某位选手的最终得分是去掉一个最高分、去掉一个最低分后的平均分,编写程序实现这一功能。

#include "stdio.h"

#define N 10 /*评委人数*/

#define MAX 10 /*打分分数上限*/

#define MIN 0 /*打分分数下限*/

int main( )

{

float s[N]; /*存储10位评委的打分*/

float sum=0; /*sum用于存储10个分数之和*/

float aver; /*aver用于存储最终得分*/

float min= MAX, max= MIN;

int i; /*循环控制变量*/

for( i=0; i

{

printf("请输入第[%d]个评委的打分:", i+1);

scanf("%f", &s[i]);

sum += s[i];

if(min>s[i]) min = s[i]; /*min得到最低分*/

if(max

}

aver = (sum-max-min)/(N-2); /*计算除最高分和最低分的平均分*/

printf("该选手最终得分为:%.2f\n", aver);

return 0;

}

2.成绩分析是“成绩管理系统”的一个模块,包括统计各分数段人数及比例,计算平均分数、标准差等。编程实现成绩分析的以上功能。

#include "stdio.h"

#include "math.h" /*平方根函数sqrt()的头文件*/

#define N 10 /*人数*/

void main( )

{

int i; /*循环控制变量*/

float score[N] = {55,86,79,93,66,71,95,72,88,65}; /*准备数据*/

int s[5]={0}; /*数组s存放个分数段人数*/

float sum = 0, aver; /*sum存储总分,aver存储平均分*/

float var, stdev; /*var存储方差,stdev存储标准差*/

for(i=0;i

{

sum+= score[i];

if(score[i]<60) s[0]++;

if(score[i]>=60 && score[i]<70) s[1]++;

if(score[i]>=70 && score[i]<80) s[2]++;

if(score[i]>=80 && score[i]<90) s[3]++;

if(score[i]>=90 && score[i]<=100) s[4]++;

}

aver = sum/N;

var=0;

for(i=0;i

var+=(aver-score[i])* (aver-score[i]);

var/=N-1; /*计算方差*/

stdev=sqrt(var); /*计算标准差*/

printf(" 总分:%.2f\n", sum);

printf(" 平均分:%.2f\n", aver);

printf("不及格人数:%d\n", s[0]);

printf(" 60~69人数:%d\n", s[1]);

printf(" 70~79人数:%d\n", s[2]);

printf(" 80~89人数:%d\n", s[3]);

printf("90~100人数:%d\n", s[4]);

printf(" 标准差:%.2f\n", stdev);

}

3.利用数组存放斐波那契(Fibonacci)数列的前20项并输出。

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,……,即前两个数均为1,从第三个数开始,当前数为前两个数之和。

#include "stdio.h"

#define N 20 /*项数*/

void main( )

{

int i; /*循环控制变量*/

int F[N]={1,1}; /*数组F用于存储前N项数*/

printf("斐波那契数列:\n");

printf("第%d项:%d\n",1,F[0]); /*输出第一项*/

printf("第%d项:%d\n",2,F[1]); /*输出第二项*/

for(i=2;i

{

F[i]=F[i-2]+F[i-1];

printf("第%d项:%d\n",i+1,F[i]);

}

}

4.使用数组精确计算M/N(0

循环节:如果无限小数的小数点后,从某一位起向右进行到某一位止的一节数字循环出现,首尾衔接,称这种小数为循环小数,这一节数字称为循环节。

#include"stdio.h"

#define MAX 100 /*最大计算精度*/

void main()

{

int m, n; /*被除数和除数*/

int i, j; /*循环控制变量*/

int flag = 0; /*数据性质标志,0:表示非无限循环小数;1:表示无限循环小数*/

int remainder[MAX]; /*存放每次除法的余数*/

int quotient[MAX]; /*存放每次除法的商数*/

int start; /*循环节起始位*/

int end; /*循环节终止位*/

printf("请输入被除数M:");

scanf("%d",&m);

printf("请输入除数N(N>M):");

scanf("%d",&n);

printf("%d/%d=%d.",m,n,m/n); /*输出"0"和小数点*/

m = m%n; /*第一次余数再存入m中*/

for(i=0; i

{

remainder[i] = m; /*保存当前余数*/

m *= 10; /*余数扩大10倍,作为下一个被除数*/

quotient[i] = m/n; /*保存本次商*/

printf("%d",quotient[i]); /*输出小数点后各位*/

m = m%n; /*余数再次放入变量m中*/

if(m == 0) break; /*当前余数为0,结束循环*/

for(j=0; j<=i; j++)/*本循环查找当前余数是否已经存在*/

{

if(m==remainder[j]) /*若当前余数在前面已经出现过*/

{

flag = 1; /*标志置1*/

start = j+1; /*记录循环数列开始位置,下标标号加1*/

end = i+1; /*记录循环数列结束位置,下标标号加1*/

break;

}

}

if(flag == 1)break; /*如果是循环小数,则不用再继续除*/

}

printf("\n");

if(flag==1)

printf("结果为有限循环小数,循环节从第%d位开始,共%d位。\n",start,end-start+1);

else

printf("结果为无限不循环小数,这里只输出%d位小数。\n",MAX);

}

5.已有一个排好序的数组,从键盘输入一个数,按原顺序插入到该数组中。

#include"stdio.h"

#define N 5 /*数组长度*/

void main()

{

int i,j; /*循环控制变量*/

int x; /*x用于存储用户输入的数据*/

int a[N+1] = {6,12,35,64,78}; /*定义数组a、准备数据*/

printf("原数据序列:");

for(i=0;i

printf("%d\t",a[i]);

printf("\n");

printf("请输入一个整数:");

scanf("%d", &x);

for(i=0;i

{

/*如果输入的数小于当前数,说明i为新数据的位置,则结束循环*/

if(x

}

for(j=N; j>i; j--) a[j] = a[j-1]; /*移动后面的数*/

a[i] = x; /*将新数放在i号位置上*/

printf("插入新数据后的数据序列:");

for(i=0;i

printf("%d\t",a[i]);

printf("\n");

}

6.输入一串字符,将其中小写字母全部转换为大写字母,其它字符保持不变。

#include"stdio.h"

#define MAX 80 /*字符串的最大字符数*/

void main()

{

int i=0; /*数组下标*/

char str[MAX];

printf("请输入原字符串:");

gets(str);

while(str[i])

{

if(str[i]>='a' && str[i]<='z')str[i]-=32; /*小写字母转为大写*/

i++;

}

printf("转换后的字符串:");

puts(str);

}

7.输入3×3的矩阵,输出两对角线数据之和。

#include"stdio.h"

#define M 3 /*矩阵规模*/

void main()

{

int i,j; /*循环控制变量*/

int a[M][M];

int sum=0;

printf("输入%d个数(空格或回车间隔),构成%d×%d的矩阵\n",M*M,M,M);

for(i=0;i

{

for(j=0;j

{

scanf("%d",&a[i][j]);

if(i==j)sum+=a[i][j]; /*将对角线上的数据累加到sum*/

}

}

printf("矩阵:\n");

for(i=0;i

{

for(j=0;j

printf("%d\t",a[i][j]);

printf("\n");

}

printf("对角线之和:");

printf("%d\n",sum);

}

8.编程:输入一段英文文章,统计并输出所有英文字母和空格出现的次数。

#include"stdio.h"

#define M 27 /*要统计的所有字符的数量*/

#define MAX 80 /*英文文章的最大字符数*/

void main()

{

int i=0; /*数组下标*/

int k;/*循环控制变量*/

int count[M]={0};/*存储各字符个数*/

char str[MAX];/*存储英文文章*/

printf("请输入一段英文文章:\n");

gets(str);

while(str[i])

{

if(str[i]>='a' && str[i]<='z')

count[str[i]-96]++;

if(str[i]>='A' && str[i]<='Z')

count[str[i]-64]++;

if(str[i]==' ')

count[0]++;

i++;

}

printf("字符\t个数\n");

printf("空格\t%d\n",count[0]);

for(k=0;k

{

printf("%c\t%d\n",k+65,count[k+1]);

}

}

返回

第5章

1.ex/st/struct st均可

2.D

3.D

4.有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据并依次输出各门课的平均成绩。

#include

struct stu{

char xuehao[10];

char xingming[10];

float chengji[3]; //三门课成绩

}

main()

{

struct stu s[10];

int i,j;

float average[3]={0};

for(i=0;i<10;i++)

{

printf("请输入第%d名学生学号:",i+1);

scanf("%s",s[i].xuehao);

printf("请输入第%d名学生姓名:",i+1);

scanf("%s",s[i].xingming);

for(j=0;j<3;j++)

{

printf("请输入该名学生的第%d门课程成绩:",j+1);

scanf("%f",&s[i].chengji[j]);

}

printf("\n");

}

printf("10名学生信息输入完毕,各门课程平均成绩如下:\n");

for(i=0;i<10;i++)

{

average[0]+=s[i].chengji[0];

average[1]+=s[i].chengji[1];

average[2]+=s[i].chengji[2];

}

printf("该10名学生三门各平均成绩分别为:\n");

printf("%f\t%f\t%f\n",average[0]/10,average[1]/10,average[2]/10);

}

5.编写一个统计宿舍成员生活费情况的程序,完成以下功能:输入每个宿舍成员一个学期各个月的生活费,计算出该宿舍所有成员本学期的总月平均生活费,以及个人月平均生活费高于总月平均生活费的成员的数据(包括姓名、各月的生活费、平均生活费),并将结果输出。

#include

#define RENSHU 5//宿舍成员人数

struct stu{

char xingming[10];

float shenghuofei[5]; //5个月生活费

float pingjun; //个人月平均生活费

}

main()

{

struct stu s[RENSHU];

float zongpingjun; //总平均月生活费

int i,j;

zongpingjun=0; //初始化总成月平均生活费为0

for(i=0;i

{

printf("请输入宿舍第%d位成员姓名:",i+1);

fflush(stdin); //清除键盘缓冲区,避免对gets()有影响

gets(s[i].xingming);

s[i].pingjun=0; //初始化个人月平均生活费为0

for(j=0;j<5;j++)

{

printf("\t请输入该同学第%d个月生活费:",j+1);

scanf("%f",&s[i].shenghuofei[j]);

s[i].pingjun+=s[i].shenghuofei[j];//累加各月生活费

}

s[i].pingjun/=5; //计算个人月平均生活费

zongpingjun+=s[i].pingjun; //累加个人月平均生活费

}

zongpingjun/=RENSHU; //计算总平均生活费

printf("该宿舍成员平均生活费分别如下:\n");

for(i=0;i

printf("%d %s\t%.2f\n",i+1,s[i].xingming,s[i].pingjun);

printf("该宿舍成员总平均月生活费是%.2f\n",zongpingjun);

printf("该宿舍中个人平均月生活费高于总平均月生活费的成员是:\n");

for(i=0;i

if(s[i].pingjun>zongpingjun)

printf("%s\t%.2f\n",s[i].xingming,s[i].pingjun);

getch();

}

6.编程计算今天是今年的第几天,要求使用包含“年”、“月”、“日”的结构体类型实现。

/*闰年:1、能被4整除而不能被100整除;2、能被400整除*/

#include

struct date{

int year;

int month;

int day;

}

main()

{

struct date today;

int flag,day;

printf("请输入今天的日期(yyyy,mm,dd):");

scanf("%d,%d,%d",&today.year,&today.month,&today.day);

flag=today.year%4==0&&today.year%100!=0||today.year%400==0;

day=(today.month>1)*31+(today.month>2)*(flag+28)+(today.month>3)*31+

(today.month>4)*30+(today.month>5)*31+(today.month>6)*30+

(today.month>7)*31+(today.month>8)*31+(today.month>9)*30+

(today.month>10)*31+(today.month>11)*30+today.day;

printf("今天是今年的第%d天。\n",day);

}

7.中国有句俗语叫“三天打渔两天晒网”。某人从2000年1月1日起开始“三天打渔两天晒网”,编写程序计算这个人在以后的某一天中是在打渔还是在晒网。

/*闰年:1、能被4整除而不能被100整除;2、能被400整除*/

#include

struct date{

int year;

int month;

int day;

}

/*核心算法:计算出从2001.1.1至今的总天数,与5进行取余运算,余数为1、2、3为打鱼,余数为4、0为晒网*/

main()

{

struct date today;

int i,flag,totalday=0;//totalday为指定日期距2000.1.1总天数

printf("请输入2000年后的任意日期(yyyy,mm,dd):");

scanf("%d,%d,%d",&today.year,&today.month,&today.day);

for(i=2000;i<=today.year;i++)

{

/*如果当前today>i,则计算i年全年天数,否则计算当前日期之前天数*/

flag=i%4==0&&i%100!=0||i%400==0;

if(today.year>i)

{

totalday+=365+flag;

}

else

{

totalday+=(today.month>1)*31+(today.month>2)*(flag+28)+(today.month>3)*31+

(today.month>4)*30+(today.month>5)*31+(today.month>6)*30+

(today.month>7)*31+(today.month>8)*31+(today.month>9)*30+

(today.month>10)*31+(today.month>11)*30+today.day;

}

}

switch(totalday%5)

{

case 0:

case 4:printf("晒网");break;

default:printf("打鱼");

}

}

8.编写程序,定义一个结构体变量,存放一个人的名字和他的电话号码(可能包括手机,办公电话,宅电等多个)。该程序允许输入多个人的名字和对应的电话号码,提示:通过结构数组实现。当输入名字已经存在时,直接输出与这个名字对应的所有号码。最后输出所有的名字以及他们对应的号码。

#include

#include

#include

struct tongxunlu{

char xingming[10];

char shouji[15];

char jiating[15];

};

main()

{

struct tongxunlu xinxi[50];

char go;

int i=0,j,k;

while(1)

{

printf("\n请输入新朋友的姓名手机号码家庭电话:");

scanf("%s %s %s",&xinxi[i].xingming,&xinxi[i].shouji,&xinxi[i].shouji);

k=0;

for(j=0;j

{

if(strcmp(xinxi[j].xingming,xinxi[i].xingming)==0)

{

printf("该朋友信息已经存在,内容如下:\n");

printf("朋友姓名:%s\t手机号码:%s\t家庭电话:%s\n",xinxi[i].xingming,xinxi[i].shouji,xinxi[i].shouji);

k=1;

break;

}

}

printf("是否继续输入朋友信息(y/n)?");

go=getche();

if(k==1&&(go=='n'||go=='N'))break;

if(k==1&&(go=='y'||go=='Y'))continue;

i++; //记录数组中数量

if((go=='n'||go=='N'))break;

}

printf("\n\n输入结束,你现有朋友通讯信息如下:\n");

printf("朋友姓名\t手机号码\t家庭电话\n");

for(j=0;j

printf("%s\t%s\t%s\n",xinxi[j].xingming,xinxi[j].shouji,xinxi[j].shouji);

}

9.做一个学籍管理系统的小项目。

〖项目要求〗假设一个学生的信息包括学号、姓名、性别、出生日期和3门课的成绩,其中姓名为字符串,学号为整型,性别为字符型,出生日期为结构体类型(成员为年、月、日),成绩为实型数组。用结构体类型编写学籍管理程序。

#include

#include

#include

struct date{

int year;

int month;

int day;

};

struct stuinfo{

int xuehao;

char xingming[10];

char xingbie;

struct date chushengriqi;

float chengji[3];

};

main()

{

struct stuinfo stu[30];

char c;

while(1)

{

system("cls"); /*清屏命令*/

printf("\n\n\t\t\t ☆★欢迎使用学籍管理系统★☆\n\n\n");

printf("\t\t请选择(1-7) :\n");

printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

printf("\t\t\t 1.查询学生学籍信息\n");

printf("\t\t\t 2.修改学生学籍信息\n");

printf("\t\t\t 3.输入学生学籍信息\n");

printf("\t\t\t 4.删除学生学籍信息\n");

printf("\t\t\t 5.保存数据到文件\n");

printf("\t\t\t 6.浏览学生学籍信息\n");

printf("\t\t\t 7.退出\n");

printf("\t\t**********************************************\n");

printf("\n\t\t你的选择是:");

c=getche();

printf("\n\n\t\t你选择的是--");

switch(c)

{

case '1':printf("查询学生学籍信息");break; /*查询*/

case '2':printf("修改学生学籍信息");break;/*修改*/

case '3':printf("输入学生学籍信息");break; /*添加*/

case '4':printf("删除学生学籍信息");break; /*删除*/

case '5':printf("保存数据到文件");break; /*保存*/

case '6':printf("浏览学生学籍信息");break; /*浏览*/

case '7':return; /*退出*/

default:printf("错误!");

}

printf("\n\n\t\t按任意键返回主菜单\n");

getch();

}

getch();

}

返回

第6章

1.在C语言中,函数定义和函数声明分别指什么?

(1)函数的定义:在C程序设计中,将完成指定功能的C代码定义成函数,变成逻辑上一个相对独立的程序单位。函数定义需要指明函数返回值的类型、函数名、函数的形式参数(常简称形参)和函数体(包括说明和定义及语句序列)。

函数定义的格式如下:

无参函数的定义格式有参函数的定义格式

(2)函数的声明:C语言编译系统是由上往下编译的.一般被调函数放在主调函数后面的话,前面就该有声明.不然C由上往下的编译系统将无法识别。正如变量必须先声明后使用一样,函数也必须在被调用之前先声明,否则无法调用。函数声明是一个语句,由函数返回类型、函数名和形参列表组成。

函数声明语句的格式为:

类型函数名( ); ——无参函数声明格式

类型函数名(参数类型说明列表); ——有参函数声明格式

2.在C语言中,函数是否允许嵌套定义?是否允许嵌套调用?

在C语言中,函数不允许嵌套定义,但允许嵌套调用。

3.下面定义了一个函数f,分析函数功能并编写完整的主函数,定义恰当的变量,调用函数f,输出函数的返回值。

double f(double r)

{

return 3.141592*r*r;

}

#include

double f(double r);

main( )

{

double s,r;

scanf("%lf",&r);

s=f(r);

printf("%lf\n",s);

}

double f(double r)

{

return 3.141592*r*r;

}

4.分析下面定义的函数f的功能,编写完整的主函数,定义恰当的变量并调用函数f。

void f(int n)

{

int i;

double s=1;

for(i=1;i<=n;i++)

s=s*i;

printf("%d!=%.2lf",n,s);

}

#include

void f(int n);

main( )

{

int n;

scanf("%d",&n);

f(n);

}

void f(int n)

{

int i;

double s=1;

for(i=1;i<=n;i++)

s=s*i;

printf("%d!=%.lf\n",n,s);

}

5.定义一个函数,返回两个数中较大的数,在主函数中通过调用该函数求三个数之中最大的数,并输出。

#include

int max(int x,int y);

main( )

{

int x,y,z;

scanf("%d,%d,%d",&x,&y,&z);

printf("%d\n",max(max(x,y),z));

}

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

C语言程序设计习题集

目录 第一章C语言基础知识 (1) 第二章C语言程序设计的初步知识 (3) 第三章顺序结构程序设计 (5) 第四章选择结构程序设计 (9) 第五章循环结构程序设计 (12) 第六章数组 (16) 第七章函数 (19) 第八章指针 (23) 第九章结构体与共用体 (27) 第十章文件 (30) 模拟试题一 (33) 第一章答案 (39) 第二章答案 (40) 第三章答案 (40) 第四章答案 (41) 第五章答案 (42) 第六章答案 (44) 第七章答案 (45) 第八章答案 (47) 第九章答案 (48) 第十章答案 (49) 模拟试题一答案 (52)

第一章C语言基础知识 一、选择题 1.C语言规定,必须用作为主函数名。 A)Function B)include C)main D)stdio 2.是C程序的基本构成单位。 A)函数B) 函数和过程C) 超文本过程D) 子程序3.下列说法正确的是。 A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可 B)一个函数的函数体必须要有执行部分,可以没有变量定义 C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数 D)以上都不对 4.下列说法正确的是。 A)main函数必须放在C程序的开头 B)main函数必须放在C程序的最后 C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执 行的 D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数 开始的 5.下列说法正确的是。 A)在执行C程序时不是从mian函数开始的 B)C程序书写格式严格限制,一行内必须写一个语句 C)C程序书写格式自由,一个语句可以分写在多行上 D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号 6.在C语言中,每个语句和数据定义是用结束。 A)句号B)逗号C)分号D)括号 7.下列字符串是标识符的是。 A)_HJ B)9_student C)long D)LINE 1 8.以下说法正确的是。 A)C语言程序总是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分 9.不是C语言提供的合法关键字。 A)switch B)print C)case D)default

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

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 pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序设计习题集3

指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的就是_B__。 A 在程序中凡就是以“#”开始的语句行都就是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX就是合法的宏定义命令行 D C程序对预处理命令行的处理就是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的就是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果就是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果就是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果就是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_就是对指针变量p的正确说明与初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值就是_A__。 A 6 B 2 C 4 D 8 8 下面就是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

C语言程序设计(第二版)习题参考答案

C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

桂林电子科技大学C语言程序设计习题集及答案

一 单项选择题(每题2分,共44分) 1 以下叙述正确的是__C _。 A C 程序基本组成单位是语句 B C 程序每一行只能写一个语句 C 简单C 语句必须以分号作为结束符 D 注释语句可以嵌套 2 一个C 语言程序是从_B __开始执行的。 A 程序中第一个函数 B 名为main 的函数 C 包含文件(头文件)的第一个函数 D 程序中的第一个语句 3 请选出合法的C 语言赋值语句_B __。 A a=b=58 B i++; C a=58,b=58 D k=int(a+b); 4 下面标识符中,合法的用户标识符是 _B __。 A 1abc B include C a-b-c123 D char 5 以下所列的C 语言整形常量中,正确的是_A __。 A 0x10 B 0976 C 076L D 01ff 6 C 语言中下列运算符的操作数必须为整型的是_A __。 A % B ++ C / D = 7 设a 和b 均为int 型变量,则执行以下语句后的输出为_B __。 int a=20; int b=3; printf("%d\n ",a+=(b%=2)); A 20 B 21 C 0 D 23 8 已知int i;,则执行语句 i=2.6;后,i 的值为_A __。 A 2 B 3 C 2.6 D 不确定 9 以下合法的字符常量为_D __。 A 'ab ' B '\482' C '\' D '\xaf ' 10 若y 为int 型变量,则执行以下语句后,y 的值是 _C __。 y=8; y+=y-=y*y; A 64 B –56 C –112 D –48 11 以下合法的浮点型常量是_D __。 A e-3 B 1.5e+2.4 C 3.14e+2L D 3.14 e +5 12 设int 数据占用两个字节,float 数据占用四个字节,double 数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为__A _。 printf("%d ",sizeof(a*b)+2/5); A 4 B 8 C 6 D 7 13 设int 型占2个字节,且int i=-2;,则语句printf("%u ",i);的输出结果为_C __。 A 0 B -2 C 65534 D 65535 14 若x 、y 、z 均为整型常量,且a=100,则执行下列语句后的z 值为_A _。 x=a++; y=--a; z=x+y-a--; A 100 B 400 C 200 D 300 15 若有以下定义和语句:int u=010,v=0x10,w=10,printf("%d,%d,%d\n ",u,v,w);,则输出结果是_A __。 A 8,16,10 B 10,10,10 C 8,8,10 D 8,10,10 16 设x 、y 为int 型变量,则执行下列语句后,y 的值是__A _。 x=5; y=x++*x++; y=--y*--y; A 529 B 2401 C 1209 D 625 17 假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式 abc 1 的表达式是__D __。

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

C语言程序设计习题答案

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

C语言程序设计复习题

《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main()

{ char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} }

C语言程序设计试题集及其答案

第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII)

相关文档
最新文档