c语言课后习题答案

c语言课后习题答案
c语言课后习题答案

第一章概述

习题1.5

编写一个C语言程序,要求输出以下信息:

***************

How are you !

***************

#include

int main()

{

printf(“***************\n”);

printf(“How are you !\n”);

printf(“***************\n”);

return 0;

}

习题1.6

编写一个C语言程序,从键盘输入x,y,z三个变量,并输出其中的最小值。#include

int main()

{

/* 定义整型变量*/

int x,y,z,min;

/* 输入*/

printf(“请输入x,y,x:”);

scanf(“%d,%d,%d”,&x,&y,&z);

/* 判断最小值*/

min=x; if(y

if(z

/* 输出*/

printf(“最小的数:%d\n”,min);

return 0;

}

第三章算法和基本程序设计

习题3.4

编写程序,输入三角形的3个边长a,b,c,求三角形的面积area。其中,S=(a+b+c)/2。

#include

#include

int main()

{

float a,b,c,area,s;

printf("请输入a,b,c:");

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

s =(a+b+c)/2.0;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("面积:%f\n",area);

return 0;

}

习题3.5

编写程序,输入四个数,并求出它们的平均值。

#include

int main()

{

int a,b,c,d;

float average;

printf(“请输入a,b,c,d :”);

scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);

average =(a+b+c+d)/4.0;

printf(“平均值: %f\n”,average);

return 0;

}

习题3.6

从键盘上输入一个整数,分别输出它的个位数,十位数和百位数。#include

int main()

{

int x,y,z,num;

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

scanf("%d",&num);

/* 分离个位,十位,百位的方法*/

x=num%10;

y=(num/10)%10;

z=(num/100)%10;

printf("个:%d\n十:%d\n百:%d\n",x,y,z);

return 0;

}

习题3.7

从键盘上输入一个大写字母,并将其转换成小写字母并输出。

#include

int main()

{

char c;

printf("请输入一个字母:");

scanf("%c",&c);

printf("转换后:%c\n",c+32);

return 0;

}

第四章选择分支结构程序设计

习题4.2

输入四个数a、b、c、d,把这四个置由小到大输出。#include

int main()

{

int a,b,c,d;

int t; /* 临时变量*/

printf(“请输入a,b,c,d:”);

scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);

if(a>b) {t=a;a=b;b=t;} /*数据交换方法*/

if(a>c) {t=a;a=c;c=t;}

if(a>d) {t=a;a=d;d=t;}

if(b>c) {t=b;b=c;c=t;}

if(b>d) {t=b;b=d;d=t;}

if(c>d) {t=c;c=d;d=t;}

printf(“结果:%d,%d,%d,%d\n”,a,b,c,d);

return 0;

}

习题4.3

编程序按下式计算y的值,x的值由键盘输入。

#include

int main()

{

double x,y;

printf("请输入x:");

scanf("%lf",&x);

/* 多个if …else嵌套*/

if(x>=0&&x<20)

y=5*x+11;

else

if(x<40)

y=sin(x)+cos(x);

else

if(x<60)

exp(x)-1;

else

if(x<80)

y=log(x+1);

else y=0;

printf("y=%lf\n",y);

return 0;

}

习题4.4

用条件表达式的嵌套来完成此题:学习成绩≥90分的同学用A表示,70~89分之间的用B 表示,60~69分之间用C表示,60分以下的用D表示。

#include

int main()

{

int mark;

char res;

printf(“请输入成绩:”);

scanf(“%d”,&mark);

if(mark>=90) res=’A’;

else if(mark>=70) res=’B’;

else if(mark>=60) res=’C’;

else res=’D’;

printf(“结果: %c\n”,res);

return 0;

}

习题4.5

计算器程序。用户输入运算数和四则运算符,输出运算结果。

#include

int main()

{

int a,b;

float res;

char t;

printf(“请输入运算符(+ - * /):”);

scanf(“%c”,&t);

printf(“请输入a,b:”);

scanf(“%d,%d”,&a,&b);

switch (t)

{

case‘+’ : res=a+b;break;

case‘-‘ : res=a-b;break;

case‘*’ : res=a*b;break;

case‘/’ : res=(float)a/b;break;

}

printf(“结果:%f”,res);

return 0;

}

习题4.6

企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万的部分,可提成5%;40万到60万之间时,高于40万的部分,可提成3%;60万到100万之间时,高于60万的部分可提成1.5%,高于100万时,超过100万的部分按1%提成。从键盘输入当月的利润,求应发放的奖金总数。

#include

int main()

{

long i,sum;

printf("请输入利润I:");

scanf("%ld",&i);

if(i<100000)

sum=i*0.1;

else if(i<200000)

sum=10000+(i-100000)*0.075;

else if(i<400000)

sum=17500+(i-200000)*0.05;

else if(i<600000)

sum=27500+(i-400000)*0.03;

else if(i<1000000)

sum=33500+(i-600000)*0.015;

else sum=39500+(i-1000000)*0.01;

printf("奖金总数:%ld\n",sum);

return 0;

}

第五章循环结构程序设计

习题5.1

编写一个程序,计算-32768~+32768之间的任意整数(由键盘输入)中个位奇数的平方和。#include

int main()

{

int n,ge,shi,bai,qian,wan,sum=0;

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

scanf("%d",&n);

ge=n%10; /* 分离各位数*/

shi=n/10%10;

bai=n/100%10;

qian=n/1000%10;

wan=n/1000;

if(ge%2==1) sum+=ge*ge;

if(shi%2==1) sum+=shi*shi;

if(bai%2==1) sum+=bai*bai;

if(qian%2==1) sum+=qian*qian;

if(wan%2==1) sum+=wan*wan;

printf("总合是%d\n",sum);

return 0;

}

习题5.2

编写程序,判断从键盘输入的整数X的正负性和奇偶性。

#include

int main()

{

int n,data;

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

scanf("%d",&n);

if(n>=0) printf("X 是正数\n");

else printf("X 是负数\n");

if(n%2==1) printf("X 是奇数\n");

else printf("X 是偶数\n");

return 0;

}

习题5.3

鸡兔问题:鸡兔共30只,脚共有90个。编写一个程序,求鸡、兔各有多少只。#include

int main()

{

int i,j;

/* 枚举法(穷举法)*/

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

{

j=30-i;

if(2*i+4*i==90)

printf("鸡:%d\n兔:%d\n",i,j);

}

return 0;

}

习题5.4

编写一个程序,求

s=1+(1+2)+(1+2+3)+ …… +(1+2+3+4+ …… +n)的值。

#include

int main()

{

int n,i,j,s=0;

printf("请输入n :\n");

scanf("%d",&n);

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

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

s+=j;

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

return 0;

}

习题5.5

编写一个程序,求的值。

#include

int main()

{

int i,s=1;

float n=1.0,t=1,sum=0;

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

{

sum+=t;

n++;

s=-s;

t=s/n;

}

printf("结果:%f",sum);

return 0;

}

习题5.7

编写一个程序,求e的近似值,当通项小于10-7时停止计算。

#include

#include

int main()

{

int n=1;

float e=1,t=1,s=1.0;

while(fabs(t)>=1e-6)

{

e+=t;

n++;

s*=n;

t=1/s;

}

printf("e=%10.6f\n",e);

return 0;

}

习题5.8

编写程序,打印以下图形(行n由键盘输入)。

*******

******

*****

****

***

**

*

#include

int main()

{

int i,j,n;

printf("请输入n:");

scanf("%d",&n);

for(i=0;i

{

for(j=1;j

printf(" ");

for(j=1;j

printf("*");

printf("\n");

}

return 0;

}

习题5.9

编写一个程序,打印乘法“九九表”,即第一行为1x1=1,1x2=2,……,1x9=9

第二行为2x1=2,2x2=4,……,2x9=9

……

第九行为9x1=9;9x2=18,……,9x9=81

#include

int main()

{

int i,j,sum;

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

{

for(j=1;j<10;j++)

{

sum=i*j;

printf("%d*%d=%2d\t",i,j,sum);

}

printf("\n\n");

}

return 0;

}

习题5.10

从键盘输入若干个学生某门课的成绩,计算出平均成绩,并输出低于60分的学生成绩,当输入负数时结束输入。

#include

int main()

{

int i=0;

float n,sum=0;

printf("请输入成绩(负数结束):\n");

scanf("%f",&n);

if(n>=0&&n<60)

printf("此学生考试不及格,分数%f\n",n);

while(n>=0)

{

sum+=n;

i++;

scanf("%f",&n);

if(n>=0&&n<60)

printf("不及格,分数%f\n",n);

}

sum=sum/i;

printf("The average is:%f\n",sum);

return 0;

}

习题5.11

编写一个程序,输出3~100间的全部素数,每行10个。

#include

#include

int main()

{

int m,k,i,n=0;

printf("3 to 100:\n");

for(m=3;m<=100;m+=2)

{

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0) break;

if(i>=k+1)

{

printf("%3d",m);

n++;

if((n%10)==0)

printf("\n");

}

}

return 0;

}

习题5.13

编写一个程序,小学生可以用这个程序进行两个数的四则运算自我检测。要求:测验者可以选择难度(如取加减乘除或位数为不同难度),可以选择每次做的题数n,电脑会对结果进行正确或者错误的评判。题目中的运算数据应随即产生。

#include

#include

#include

#define N 3 /* 测验的题数*/

int main()

{

int i,m,n,t,p,sum,k,j,cnt=0;

/*初始化随机数*/

srand((unsigned)time(NULL));

/* 简易菜单*/

printf("\n-------速算-------\n\n");

printf("1.加\n2.减\n3.乘\n4.除\n");

printf("请选择:\n");

scanf("%d",&t);

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

{

k=rand()%100; /* 产生0~99的随即数*/

j=rand()%100;

switch(t)

{

case 1:sum=k+j;

printf("%d+%d=?\n",k,j);

break;

case 2:sum=k-j;

printf("%d-%d=?\n",k,j);

break;

case 3:sum=k*j;

printf("%d*%d=?\n",k,j);

break;

case 4:sum=k;

printf("%d/%d=?\n",k*j,j);

break;

}

printf("和=:\n");

scanf("%d",&p);

if(sum==p)

{

cnt++; /* 作对的题数加一*/

printf("正确!\n");

}

else printf("错误!\n");

} /* for */

printf("你已经作对了%d 个题!\n",cnt);

return 0;

}

第六章函数

习题6.3

编写一个程序,已知一个圆筒的半径、和高,计算该圆筒的体积。

#define PI 3.14159

#include

/* 定义一个函数*/

float v(float r,float h)

{

return PI*r*r*h;

}

int main()

{

float rs,hs;

printf(“请输入r,h:”);

scanf(“%f,%f”,&rs,&hs);;

/* 函数调用*/

printf(“体积v= %f”,v(rs,hs));

return 0;

}

习题6.4

编写一个求水仙花数的函数,求100到999之间的全部水仙花数。

所谓水仙花数,是指一个三位数,其各位数字的立方和等于该数。例如:153是一个水仙花数:153=13+53+33

#include

int shuixianhua(int num)

{

int data,ten,hun;

data=num%10;

ten=num/10%10;

hun=num/100%10;

if(num==data*data*data+ten

*ten*ten+hun*hun*hun) return 1;

else return 0;

}

int main()

{

int i;

printf("水仙花数:");

for(i=100;i<1000;i++)

if(shuixianhua(i))printf("%5d",i);

return 0;

}

习题6.5

编写一个函数,输出整数m的全部素数因子。

例如:n=120,因子为2,2,2,3,5

#include

int fun(int n)

{

int i;

for(i=2;i<=n;)

{

if(n%i==0)

{

n=n/i;

printf("%d ",i);

}

else i++;

}

}

int main()

{

int m;

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

scanf("%d",&m);

fun(m);

}

习题6.6

编写一函数,求10000以内所有的完数。

所谓完数是指一个数正好是它所有约数之和。例如:6就是一个完数,因为6的因子有1,2,3,并且6=1+2+3。

#include

#define N 10000

/* 函数声明*/

int test(int n);

int main()

{

int i,j;

for(i=1;i

{

j=test(i);

if(i==j)

printf("%6d",i);

}

return 0;

}

/* 函数定义*/

int test(int n)

{

int i,sum=0;

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

if(n%i==0)sum+=i;

return sum;

}

习题6.7

如果有两个数,每一个数的所有约数(除它本身以外)的和正好等于对方,则称这两个数互为满数。求出10000以内所有的互满数,并显示输出,并求一个数和它所有约数(除它本身)的和用函数实现。

#include

#define N 10000

int test(int n);

int main()

{

int i,m,n;

for(i=1;i

{

m=test(i);

n=test(m);

if(i==n&&i

printf("%6d%6d\n",m,n);

}

}

int test(int n)/* 计算第一个数字*/

{

int i,sum=0;

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

if(n%i==0)

sum+=i;

return sum;

}

习题6.8

编写一个计算幂级数的递归函数。

#include

int fun(int i,int j);

int main(void)

{

int x,n;

printf("Input two numbers(x and n):\n");

scanf("%d%d",&x,&n);

printf("The result is:%d",fun(x,n));

getch();

}

int fun(int i,int j)

{

int t;

if(j==0) return 1;

t=fun(i,j-1)*i;

return t;

}

习题6.9

用递归函数求

#include

long fun(long n)

{

if(n==0) return 0;

return fun(n-1)+n;

}

int main()

{

int n;

long sum;

printf("输入n :");

scanf("%d",&n);

sum=fun(n);

printf("结果:%d\n",sum);

return 0;

}

习题6.10

已知某数列前两项为2和3,其后继项根据当前的前两项的乘积按下列规则生成:(1)若乘积是一位数,则该乘积就是数列的后继项;

(2)若成绩为两位数,则成绩的十位和个位依次作为数列的后继项。

例如,当n=10,求出该数列的前10项是:

2 3 6 1 8 8 6 4 2 4

编程实现当n=10时的数列。

#include

int fun(int f1,int f2,int n);

int main()

{

int f1=2,f2=3,n;

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

scanf("%d",&n);

fun(f1,f2,n);

getch();

}

int fun(int f1,int f2,int n)

{

int i,f;

printf("%3d",f1);

printf("%3d",f2);

for(i=3;i<=n;)

{

if(f1*f2/10==0)

{

f1=f1*f2;

printf("%3d",f1);

i++;

}

else

{

f=f1;

f1=f1*f2/10;

printf("%3d",f1);

f2=f*f2%10;

printf("%3d",f2);

i+=2;

}

}

}

第七章数组

习题7.3

从键盘输入10个学生的成绩存储在数组中,求成绩最高者的序号和成绩。

#include

#define N 10

int main()

{

int i;

int mark[N];

int min=0;

for(i=0;i

{

printf("请输入第%d个人的成绩:",i+1);

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

/* 保存最大元素的序号*/

if(mark[i]>mark[min]) min=i;

}

printf("\n序号:%d”,min+1);

printf(“\n最高分:%d",mark[min]);

return 0;

}

C语言题库及答案

C语言题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项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.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 n k=0; m t=0; //用于记录出列顺序 while(t #include <> void main() { int i,j,a[6][6]; for(i=0;i<=5;i++) { a[i][i]=1; a[i][0]=1; } for(i=2;i<=5;i++) { for(j=1;j<=i-1;j++) { a[i][j]=a[i-1][j]+a[i-1][j-1]; } } for(i=0;i<=5;i++) { for(j=0;j<=i;j++) { printf("%4d",a[i][j]); } printf("\n"); } } 5、编写程序,把下面的数据输入一个二维数组中。

25 36 78 13 12 26 88 93 75 18 22 32 56 44 36 58 然后执行以下操作: ①输出矩阵两个对角线上的数; ②分别输出各行和各列的和; ③交换第一行和第三行的位置; ④交换第二列和第四列的位置; ⑤输出处理后的数组。 #include<> #define SIZE 4 void main() { int a[SIZE][SIZE]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}}; int i,j,t,sum; //输出二维数组 printf("二维数组:\n"); for(i=0;i

《C语言程序设计》课后习题答案

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.1什么是算法16 2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法32 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67

大学c语言考试题库含答案

================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B

能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++;} printf("a=%d,b=%d",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0;

C语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

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.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

c语言数组习题

数组练习解答 1定义一个名为 a 的单精度实型一维数组 ,长度为 4,所有元素的初值均为 0的数定义语句就是 【分析】按照一般数据定义语句的格式 ,可以直接写出方法一(参瞧答案);考虑到所有元素均赋初值时可 以省略数组长度,可以写出方法二(参瞧答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初 值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参瞧答案);考虑到选用静态型,不赋 初值所有元素也自动赋予。空值 (对数值型数组来说,初值为0),可以写出方法四(参瞧答案)。 【答案】方法一 :float a[4] = (0.0,0.0,0.0,0.0}; 方法二:float a[] = ( 0.0,0.0,0.0,0.0}; 规定,定义字符型数组时不允许直接使用 "字符常量"的方式赋初值,所以备选答案②也就是错误的。 备选答案③符合题意。【答案】③ 6定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句就是() ① char s[]={ '1','2','3',' \0 '}; ② char s 「」={"123"}; ③ char s[]={"123\n"}; ④ char s[4]={'1','2','3'}; 【分析】备选答案①中省略了数组长度 ,所以每个元素都赋了初值,共计4个元素,初值依次为T '3'、’ \0',最后一个元素的值为字符串结束标记 ,所以数组S 中存放的就是字符串"123",该答案不符合 题意(即正确的);备选答案③中直接赋予字符串作为初值所以数组 s 的长度为4,其中的初值就是字符串 "123",不符合题意(即正确的);备选答案③中也就是给数组 s 赋予字符串的初值,但就是字符串不就是 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2下列数组定义语句中,错误的就是() ① char x[1] = 'a'; ② auto char x[1]={0}; ③ static char x[l]; ④ char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对 以 备选答案①就是符合题意的答案。 【答案】① 3用"冒泡排序法"对n 个数据排序,需要进行n 一 1 较,小者调上;该操作反复执行 n- k 次。现在假设有 则利用"冒泡排序法"执行第2步后的结果就是 【分析】开始排序前的排列执行第 4 1 - 3 : (不能直接赋予字符常量,必须用花括号括住),所 步。其中第k 步的任务就是:自下而上,相邻两数比 4个数据:4、l 、3、2要排序,假定4为上、2为下, O 1步后的排列执行第 2步后的排列 1 2 4 2 【答案】l 、2、4、 3 4用"选择排序法"对n 个数据排序,需要进行n-1 据中寻找最小数,与第k 个数据交换。现在假设有 行第2步后的结果就是 ____________________ 【分析】 开始排序前的排列为: 4 执行第1步后的排列为: 执行第2步后的排列为: 【答案】1、2、3、4 5下列数组定义语句中,正确的就是() ① int a[][]={1,2,3,4,5,6}; ② char a[2] ③ int a[][3]= {1,2,3,4,5,6}; ④ static int a[][] 【分析】C 语言规定,二维数组定义时不允许省略第二维的长度 步。其中第k 步的任务就是:在第k 个数据到第n 个数 4个数据:4、 1、 3、2要排序,则利用"冒泡排序法"执 「3] = 'a','b'; ={{1,2,3},{4,5,6}}; ,所以备选答案①④就是错误 C 语言还 显然 、'2'、

C语言课后习题答案(最终)

第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:

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语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

C语言课后习题答案(完整版)-第四版-_谭浩强

C语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

C语言函数题库及答案

C语言函数题库及答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

第六部分函数 一、单项选择题 1.C语言中的函数返回值的类型是由(D)决定 A.return语句中的表达式B.调用函数的主调函数 C.调用函数时临时D.定义函数时所指定的函数类型 2.下面不正确的描述是(B)。 A.调用函数时,实参可以是表达式 B.调用函数时,实参和形参可以共用内存单元 C.调用函数时,将形参分配内存单元 D.调用函数时,实参与形参的类型必须一致 3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是 (D) A.地址传递B.值传递 C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式 4.下面的函数调用语句中含有(A)个实参 inta,b,c; intsum(intx1,intx2); …… total=sum((a,b),c); A.2B.3C.4 D.5 5.在C语言中(C) A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义和调用均不可以嵌套 C.函数的定义不可以嵌套,但是函数的调用可以嵌套 D.函数的定义和调用均可以嵌套 6.关于C语言中的return语句正确的是(C) A.只能在主函数中出现 B.在每个函数中都必须出现 C.可以在一个函数中出现多次 D.只能在除主函数之外的函数中出现 7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D) (floatx[],intn) (float*x,intn) (floatx[10],intn) (floatx,intn) 8.在C语言中,函数的数据类型是指(A) A.函数返回值的数据类型 B.函数形参的数据类型 C.调用该函数时的实参的数据类型 D.任意指定的数据类型 9.已知如下定义的函数: fun1(a) {printf("\n%d",a); } 则该函数的数据类型是(C)

C语言数组例题

6.1.1 Fibonacci数列 /* Fibonacci数列递推求解 */ main() {int k,n; long s,f[50]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); f[1]=1;f[2]=1;s=2; /* 数组元素与和变量赋初值 */ for(k=3;k<=n;k++) {f[k]=f[k-1]+f[k-2]; /* 实施递推 */ s+=f[k];} /* 实施求和 */ printf("F数列第%d项为:%ld\n",n,f[n]); printf("F数前%d项之和为:%ld\n",n,s); } 6.1.2 幂序列 /* 幂序列程序 */ main() {int k,n; long a,b,s,f[100]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); a=2;b=3;s=0; for(k=1;k<=n;k++) {if(a

else {f[k]=b;b=b*3;} /* 用3的幂给f[k]赋值 */ s+=f[k];} printf("数列的第%d项为:%ld\n",n,f[n]); printf("数列的前%d项之和为:%ld\n",n,s); } 6.1.3 双关系递推数列 /* 双关系2x+1,3x+1递推 */ main() {int n,i,j,h,m[1500]; m[1]=1; scanf("%d",&n); for(i=1;i<=n;i++) {m[2*i]=2*m[i]+1;m[2*i+1]=3*m[i]+1; for(j=i+2;j<=2*i+1;j++) {if(m[i+1]>m[j]) /* m(i+1)与m(j)比较 */ {h=m[j]; m[j]=m[i+1];m[i+1]=h;} /* 交换,使m(i +1)最小 */ if(m[i+1]==m[j]) m[j]=20000+j;}} /* 置m(j)为一出界大数,以避免重复 */ for(i=1;i<=n;i++) {printf(" %4d",m[i]);

最新c语言课后习题答案汇总

c语言课后习题答案

第二章习题 2.什么叫做结构化算法?为什么要提倡结构化算法? 答:结构化算法是由一些基本结构顺序组成的。在基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本的结构范围内。一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变。 跟结构化算法比较起来,非结构化算法有以下缺点: 流程不受限制的随意转来转去,使流程图豪无规律使人在阅读的时候难以理解算法的逻辑.难以阅读,也难以修改,从而使算法的可靠性和可维护性难以保证。 4. 第三章习题 1.#include #include void main() { unsigned int n;

float p,p1,r=0.09; scanf("%u",&n); p=pow(1+r,n); p1=(p-1)*100; printf("%5.2f%%\n",p1); } 运行结果:输入,回车,见结果: 2.#include #include int main() { int bj=1000; float r1,r2,r3,r5,r0,lx1,lx2,lx3,lx4,lx5; r1=0.0414; r2=0.0468; r3=0.0540; r5=0.0585; r0=0.0072; lx1=bj*r5; lx2=bj*(1+r2)*r3; lx3=bj*(1+r3)*r2; lx4=bj*pow(1+r1,5); lx5=bj*r0*5; printf("lx1=%f lx2=%f lx3=%f lx4=%f lx=5%f\n",lx1,lx2,lx3,lx4,lx5); return 0; } 运行结果: 3.#include #include int main() { long d,p; d=300000; p=6000; double m,r=0.01; m=log(p/(p-d*r))/log(1+r); printf("%4.2f",m); return 0;

2019二级C语言题库参考答案解析

2019年C语言考题答案 1、程序填空题 给定的程序的功能是调用fun 函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat 的二进制中。 填空:( 1) STYPE(2)FILE(3)fp 改错:(1) for(i=0;i<=sl;i++)(2)t[2*sl]= 0“ 或t[sl+sl]= 0“ 编程: *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b% 10); 2、程序填空题给定程序的功能是:从键盘输入若干文本 (每行不超过80 个字符),写到文件myfile4.txt 中,用-1 作为字符串输出输入的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText 和Writetext 实现。 填空:(1)*fw(2)str (3) str 改错:(1)voidfun(longs,long*t)(2) s1=s1*10; 编程:int i,j=0,min=a[0].s; for(i=0;i

else if(min==a[i].s) b[j++]=a[i]; } return j; 3、程序填空题 给定程序中,函数fun 的功能是:讲自 然数1~10 以及它们的平方根写到名为myfile3.txt 的文本中,然后再按顺序读出显示在屏幕上。 填空:( 1) fp( 2)fclose(fp)(3)myfile3.txt 改错:( 1)for(i=j+1;i

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项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.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

c语言数组例题

#include int prime(int c) { inta,b=1; for(a=2;a int *hs(int a[3][2]) {inti,j,s[3],*p=s; s[0]=a[0][0];s[1]=s[2]=1; for(i=0;i<3;i++) for(j=0;j<2;j++) {if(s[0]

return 0; } 3.源代码为: #include voidhanshu(char *s) { while(*s) { if(*s>='A'&&*s<='Z') *s+=32; else if(*s>='a'&&*s<='z') *s-=32; *s++; } } void main() { char s[]="shaHUAHDJhhduahNBUahujJAWDhuwh8u"; hanshu(s); printf("改写后的字符串为:\n"); puts(s); } 4.源代码为: #include int add(int n) { int s=0; if(n==0) return 0; if(n==1) s=1; else s=n+add(n-1); return s; } void main() { intk,i; printf("输入一个整数:\n"); scanf("%d",&i); k=add(i); printf("%d累加的结果为:%d\n",i,k); } 测试数据为:4 运行结果为:10

C语言试题及答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。

相关文档
最新文档