清华大学C语言程序练习题
清华大学 c语言课本习题参考答案
第1章习题一、选择题1、A2、D3、C4、D5、B6、C7、C8、B9、B 10、A二、填空题1、一,函数体2、main(主),main(主)3、编译,目标4、.c,.obj,.exe5、缩进,无影响,/* */三、程序分析题1、*****************Very good!*****************2、a=12,b=5a=17,b=223、r= 5.50,s=95.033098四、编程题1.用printf()函数在屏幕上输出自己的班级、学号、姓名。
#include"stdio.h"void main(){printf("班级:BX1109\n");printf("学号:111003530901\n");printf("姓名:王孟荣\n");}2.从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。
#include<stdio.h>void main(){int x,y,a,b,c;float d;printf("Please Input Two Integers:\n");scanf("%d%d",&x,&y);a=x+y;b=x-y;c=x*y;d=1.0*x/y;printf("a=%d\nb=%d\nc=%d\nd=%f\n",a,b,c,d);}第2章习题一、选择题1~5 BCDCD6~10 DBBCA二、填空题1.单精度浮点型、双精度浮点型、字符型2.03.x%10*10+x/104.5.55.5.7 206.sin(sqrt(x*x))/(a*b)7.,8.1111011 173 7B9.3 310.3三、程序分析题1.7,8,102.1,33. 5 F4.(int)i=12, 12.505. 461579112四、编程题1.编写程序,求表达式c=21%9-(float)a+4/b*b的值,假设表达式中a和b 的值分别由键盘输入。
《C语言程序设计》课后习题参考答案 李勃 邱晓红 主编 清华大学出版社
《C语言程序设计》课后习题参考答案第1章C语言及程序设计概述1.单选题(1)A (2)B (3)A (4)B (5)C2.填空题(1)//,/*…*/(2)scanf()(3)printf()3.判断题(1)对(2)错(3)错(4)对第二章:数据类型运算符与表达式1.单选题(1)C (2)D (3)C (4)B (5)C (6)A (7)B (8)D (9)A(8)D(9)A(10)B(11)C(12)C(13)D(15)B(16)C(17)A(18)A(19)B(20)C(21)C(22)D(23)C(24)A(25)D(26)B(27)C(28)B(29)B(30)A2.填空题(1)sqrt(pow(y,x)+log10(y)) (2)36(3)6(4)3 3(6)36(7)int x=8,y=8;(8)1(9)E(10)6,7,8,9(11)6(12)66,96(13)240(14)1,1,-1,-1(15)5,2,6(16)1(17)!(18)2(19)(a>0&&a<101)&&(a%3==0||a%7==0) (20)A3.程序分析题(1)2 72 74 94 412 12116(3)100 d 68 D97 a 49 1 (4)0 1 0 1 (5)2 4 6 7-0.58 7046.587.5(6)33 12 113 13 082 32(7)618 30181814.改错题(1)①无初始赋值,不能输出②数据精度丢失③少“;”号④单字符变量不能保存字符串常量⑤不能连续初始化⑥非法标识符(2)short i=38000溢出PI=3.1416 常量不能修改值Printf(“%d”,x%y) %必须是整数a*=(b+c)/=d符合赋值左边不能是表达式第三章:算法概念与顺序结构程序设计1.选择题(1)D(2)B、D(3)D(4)B(5)C(6)A(8)C(9)B(10)D2.填空题.(1)一条语句;(2)小于左右(3)%%(4)输出项列表输出控制符(5)取地址取a的地址(6)从盘获取一个字符(7)大括号(8)f=68.00(9)n1=%d\n n2=%d(10)7,5,c=33.程序分析题.(1)i=100,c=a,f=1.234000(2)65535,65536(10)1234,123.5,12345.5第四章:选择结构程序设计(1)C (2)B (3)B (4)B (5)D (6)D (7)D (8)A (9)B (10)A (11)B (12)B (13)D (14)A (15)C (16)A (17)C (18)D (19)B (20)D (21)A(23)A(24)A2.填空题.(1)1(2)5 8 8(3)4 5 99(4)2(5)10 20 0(6)2 1(7)-4(8)3(9)No(10)25(11)45 45(12)0(13)5.5(14)13(15)3第五章:循环结构程序设计(1)C(2)A(3)D(4)B(5)D(6)B(7)A A或B(8)输出4444(9)B(10)A(11)B(12)C(13)A(14)B2.填空题.(1)r=m;m=n;n=rm%n(2)3(3)-5(4)i%3==2&&i%5==3&&i%7==2 j==5j!=k(6)int s=8,j=i+2k+i+j==8(7)8(8)k&&i<=500 k/10 continue第六章:数组1.选择题(1)B(2)C(3)D(4)D(5)B(6)C(7)B(8)A(9)A(10)D2.填空题.(1)按行序优先的原则(2)0 9(4)1 2(5)6(6)前者以回车后者以空格或回车作为间隔符(7)gets()(8)&a[i](9)char k -1(10)9 83.程序分析题.(1)1 3 7 15(2)0 0 0(3)读取输入字符串中数字字符(4)①if(str1==str2) (strcmp(str1,str2)==0)②&c1[0]③m[i][k-1]第七章:函数的调用1.选择题(1)B(2)C(3)C(4)A(6)D(7)D(8)D(9)B(10)D(11)A(12)A(13)B(14)B2.填空题.(1)有参无参(2)顺序类型(3)定义调用(4)①fmax(a,N) ②s[k]=s[p](5)①age(n-1)+2 ②age(5)(6)①prt(c,n-1) ②prt(…‟,n-i) ③prt(…*‟,2*i-1) 3.程序分析题.(1)h l o(2)3(3)2 6(4)5 25。
清华大学“C语言程序设计”期末试卷
样例: 输入 1 2 -4 0 32 1 -2 2 输出 3 -4+x^2
第三部分
综合问题 (任选一题完成,共 10 分)
3-A. 代数式处理 ( 3-A.cpp ) 读入一个仅含变量 x 的代数式和 x 的值, 输出该式在 x=x0 处的函数值和导函数的值。 表达式中除了字母 x 和+, -, *, /, (, )外没有其他字符
试卷说明: 考试形式为上机考试,考试时间总计 3 小时 请在 C 盘根目录下建立一个子目录,以自己的学号命名,并将所有的程序存入 此目录。如,学号为 010000 的同学,需要建立目录 C:\010000,并将程序存入 此目录。按照题目名称中指定文件名保存你的程序,并保存一个备份,以免程 序被意外破坏。例如,第一题应当保存一个叫做 1-1bak.cpp 的文件。 3-A 和 3-B 最多只能选择一道题目。如果同时存在 3-A.cpp 和 3-B.cpp,我们将 随机选择一道题目进行评分。 所有题目采用键盘输入和屏幕输出,你的程序不得访问任何文件。 评分时将查看源程序,请严格遵守题目中给出的限制。
输入: 先读入一个字符串,字符总数不超过 100 并且不会有格式错误的代数式。 然后读入一实数作为 x0 的值。
输出:
7
包含两个实数,分别是函数值和导函数值。把所得结果保留 2 位小数输出。如果出 现分母为 0 的情况则只输出一个字符串"error"。
样例: 输入 x*(x+x/x) 100 输出 10100.00 201.00
输入: 第 1 行为一个整数 t,表示任务的类型,t=1 表示做加法,t=2 表示做减法。 第 2 行为 1 个整数 n,表示需要计算的数的位数。 以后 n 行,每行为 2 个数字,分别是同一位上的被加数和加数(当 t=1 时);或被 减数和减数(当 t=2 时)。从第 3 行起,位数依次由高到低,第 3 行为最高位,第 n+2 行为最低位。
《C语言程序设计》清华大学出版社课后答案
习题 9一.选择题1. A2. A3. A4. A5.B6.C二编程题9.2 编写一函数,判断N×N矩阵是否为上三角阵。
上三角阵是指不含主对角线,下半三角都是0的矩阵。
#include <stdio.h>int fun(int x[][3],int n){int flag=1,i,j;for(i=1;i<n;i++)for(j=0;j<i;j++)if(x[i][j]!=0){flag=0;break;}return flag;}void main(){int a[3][3]={{1,4,5},{0,2,6},{0,0,3}};int result=fun(a,3);if(result==1)printf("此矩阵是上三角矩阵!\n");elseprintf("此矩阵不是上三角矩阵!\n");}9.3 有一个字符串,包含n个字符,将字符串从第i 个字符到第j个字符间的字符逆置。
程序代码:#include <stdio.h>#include <string.h>void invertsub(char *str,int i,int j){char *p,*q,c;int n=0;p=q=str;if(str==NULL)printf("str is NULL!\n");else if(i<=0||j>strlen(str))printf("i and j value error!\n");else {while(*p!='\0'&&n!=i-1){ p++;n++; }q=p;while(*q!='\0'&&n!=j-1){q++;n++;while(p<q){c=*p;*p++=*q;*q--=c;}}}void main(){char str[]="abcdefg";printf("%s\n",str);invertsub(str,2,5);printf("%s\n",str);}9.4 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.程序源代码:main(){int number[20],n,m,i;printf("the total numbers is:");scanf("%d",&n);printf("back m:");scanf("%d",&m);for(i=0;i<n-1;i++)scanf("%d,",&number[i]);scanf("%d",&number[n-1]);move(number,n,m);for(i=0;i<n-1;i++)printf("%d,",number[i]);printf("%d",number[n-1]);}move(array,n,m)int n,m,array[20];{int *p,array_end;array_end=*(array+n-1);for(p=array+n-1;p>array;p--)*p=*(p-1);*array=array_end;m--;if(m>0) move(array,n,m);}9.5 输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换程序源代码:main(){int number[10];input(number);max_min(number);output(number);}input(number)int number[10];{int i;for(i=0;i<9;i++)scanf("%d,",&number[i]);scanf("%d",&number[9]);}max_min(array)int array[10];{int *max,*min,k,l;int *p,*arr_end;arr_end=array+10;max=min=array;for(p=array+1;p<arr_end;p++)if(*p>*max) max=p;else if(*p<*min) min=p;k=*max;l=*min;*p=array[0];array[0]=l;l=*p;*p=array[9];array[9]=k;k=*p;return;}output(array)int array[10];{ int *p;for(p=array;p<array+9;p++)printf("%d,",*p);printf("%d\n",array[9]);}9.6 输入n个字符串,按由小到大顺序输出。
C语言程序设计教程 清华大学出版社 陈明主编 第5章答案
第5章习题解答一、选择题1.以下叙述中错误的是。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)在程序执行中,当数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数解析:对于double类型数组,不能直接用数组名对数组进行整体输入或输出。
所以选项A的说法是正确的。
数组名代表数组所占内存区的首地址,是一个固定指针,其值不可改变,因此选项B也是正确的。
在C语言一维数组定义时可以不指定数组长度,由赋初值的初值个数决定数组的长度。
因此选项D也是正确的。
C语言程序在执行时,不检查数组元素的下标是否越界,如果出现越界,可能会引起系统死机,因此选项C不正确。
答案:C2.有以下程序:/* 文件路径名:ex5_1_2\main.c */#include <stdio.h> /* 标准输入/出头文件*/int main(void) /* 主函数main() */{char s[] = "abcde"; /* 定义字符数组*/s += 2; /* s自加2 */printf("%d\n", s[0]); /* 输出s[0] */return 0; /* 返回值0, 返回操作系统*/}执行后的结果是。
A)输出字符a的ASCII码B)输出字符c的ASCII码C)输出字符c D)程序出错解析:数组s[]的首地址值s是不可改变的,故该程序编译时会出错。
答案:D3.有以下程序:/* 文件路径名:ex5_1_3\main.c */#include <stdio.h> /* 标准输入/出头文件*/int main(void) /* 主函数main() */{int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], *q = p + 2; /* 定义数组及变量*/printf("%d\n", *p + *q); /* 输出*p + *q之值*/return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。
第5章作业答案-C语言程序设计(第4版)-马靖善-清华大学出版社
第5章作业题一、单项选择题1.以下叙述不正确的是( B )。
A. 一个C源程序可由一个或多个文件组成B. C程序中,注释说明只能位于语句的后面C. 在对一个C程序进行编译时,编译系统不能发现注释中的拼写错误D. 一个C源程序必须包含一个main函数2.定义为void类型的函数,其含义是(C )。
A. 调用函数后,被调用的函数的返回值为任意的类型B. 调用函数后,被调用的函数不返回C. 调用函数后,被调用的函数没有返回值D. 以上三种说法都是错误的3.在说明语句:int *f();中,标识符f代表的是( C )。
A. 一个用于指向整型数据的指针变量B. 一个用于指向一维数组的行指针C. 一个返回值为指针型的函数名D. 一个用于指向函数的指针变量4.下列说法中错误的是( B )。
A. 静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B. 静态全局变量可以被其他的编辑单位所引用C. 若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽D. 所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失5.下面对C语言的描述中,正确的是(A )。
A. 在C语言中,调用函数时,只能将实参的值传递给形参B. C语言函数既可以嵌套定义又可以递归调用C. 函数一定有返回值,否则无法使用函数D. C语言程序中有调用关系的所有函数都必须放在同一源程序文件中6.以下说法中不正确的是( B )。
A. 不同的函数中可以使用相同名字的变量B. 主函数main()中定义的变量在整个文件或程序中有效C. 形式参数是局部变量D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效7.以下说法中不正确的是( C )。
A. 主函数中定义的变量只在主函数内部有效B. 形式参数是局部变量C. 当全局变量与局部变量同名时,局部变量不起作用D. 在函数内部定义的变量只在本函数范围内有效8.下面关于全局变量的描述中,错误的是( B )。
《c语言程序设计》谭浩强清华大学习题答案
2.6 aabb (8)cc (7)AN
(8)abc
2.8 main() {int c1,c2;
ww
2.7 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); }
.k h
da w='a',c2='b',c3='c',c4='\101',c5='\116'; printf("a%c b%c\tc%c\tabc\n",c1,c2,c3); printf("\t\b%c %c\n",c4,c5); 解:程序的运行结果为: aabb cc abc AN 3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母, 例如,字母"A"后面第4个字母是"E",用"E"代替"A".因此,"China"应译为"Glmre". 请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并 输出. 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); } 3.8例3.6能否改成如下: #include<stdio.h> void main() { int c1,c2;(原为 char c1,c2) c1=97; c2=98; printf("%c%c\n",c1,c2); printf("%d%d\n",c1,c2); } 解:可以.因为在可输出的字符范围内,用整型和字符型作用相同. 3.9求下面算术表达式的值. (1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7) (2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5) 3.10写出下面程序的运行结果: #include<stdio.h> void main() { int i,j,m,n; i=8; j=10; m=++i; n=j++; printf("%d,%d,%d,%d\n",i,j,m,n); } 解:结果: 9,11,9,10 第4章 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
C语言程序设计_习题大全(含答案)
C语言程序设计_习题大全(含答案) C语言程序设计_习题大全(含答案)C语言程序设计是计算机科学与技术领域中非常重要的一门课程,对于学习和掌握程序设计的基本原理和方法具有重要意义。
在学习这门课程过程中,习题的练习和掌握是至关重要的一环。
本文将向大家介绍一份包含答案的C语言程序设计习题大全,帮助读者拓宽思路,加深对C语言程序设计的理解。
第一章:基础知识练习习题1:请编写一个C程序,输出"Hello, World!"。
答案:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```习题2:请编写一个C程序,将两个整数相加并输出结果。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("%d + %d = %d\n", num1, num2, sum);return 0;}```第二章:条件语句练习习题3:请编写一个C程序,判断某年份是否为闰年。
答案:```c#include <stdio.h>int main() {int year;printf("请输入年份:");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {printf("%d年是闰年\n", year);} else {printf("%d年不是闰年\n", year);}return 0;}```习题4:请编写一个C程序,判断用户输入的整数是否为正数、负数或者零。
C语言程序设计答案——清华大学出版社(第二版)
答案整理:林子雨 E‐mail:ziyulin@ 主页:/linziyu 第 4 页/共 8 页
厦门大学本科生公共课 《C 程序设计基础》 第二版教材习题答案 第八章 数组
}
6.输入一字符串,统计出某自定字符在字符串中出现的次数。 #include<stdio.h> #include<string.h> main() { char x,a[100],c=0; int i; puts("输入一串字符:"); gets(a); puts("查哪个字符个数?"); x=getchar(); for(i=0;i<strlen(a);i++) { if(a[i]==x) c++; } printf("共%d个。",c); }
厦门大学本科生公共课 《C 程序设计基础》 第二版教材习题答案 第八章 数组
【教材】 《C 语言程序设计(第 2 版) 》清华大学出版社,黄保和,江弋 编著。2011 年 10 月第 二版。ISBN:978‐7‐302‐26972‐4。售价:35 元。 【答案版本】本习题答案为 2012 年 2 月修订版本。 一 、选择题 1、以下数组定义中,错误的是:C)int a[3]={1,2,3,4}; A.int a[ ] = {1,2,3}; B. int a[5] = {1,2,3}; C. int a[3] = {1,2,3,4}; D. int a[5] , b; 2、以下数组定义中,正确的是:B) int a[][2]={1,2,3,4}; A. int n = 4, a[n] = {1,2,3,4}; B. int a[][2] = {1,2,3,4}; C. int a[2][] = {1,2,3,4}; D. int a[][] = {{1,2},{3,4}}; 3、设有定义“int a[8][10];”,在VC中一个整数占用4字节,设a的起始地址为1000,则a[1][1] 的地址是:D)1044 A. 1000 B. 1004 C. 1036 D. 1044 4、已知有数组定义“int a[][3]={1,2,3,4,5,6,7,8,9};”,则a[1][2]的值是:C)6 A. 2 B. 5 C. 6 D. 8 5、在以下字符串定义、初始化和赋值运算中,错误的是:A) char str[10];str="String"; A. char str[10];str="String"; B. char str[10] = "String"; C. char str[10] = {'S','t','r','i,'n','g'}; D. char str[ ] = {'S','t','r','i,'n','g',0}; 6、设有以下字符串定义, char s1[]={‘S’,’t’,’r’,’i’,’n’,’g’}; char s2[]=”String”; 则s1和s2: C)长度不同,但内容相同。 A. 长度相同,内容也相同 B. 长度不同,但内容相同 C. 长度不同,但内容相同 D. 长度不同,内容也不同 7、设有定义“int a[10]={0};”,则说法正确的是:A)数组a有10个元素,各元素的值为0. A. 数组a有10个元素,各元素的值为0 B. 数组a有10个元素,其中a[0]的值为0,其他元素的值不确定 C. 数组a有1个元素,其值为0 D. 数组初始化错误,初值个数少于数组元素个数 8、设已定义“char str[6]={‘a’,’b’,’\0’,’c’,’d’,’\0’};”,执行语句“printf(“%s”, str)”后,输出结果为:B)ab A. a B. ab C. abcd D. ab\0cd\0 9、引用数组元素时,数组元素下标不可以是:C)字符串 A.字符常量 B.整型常量 C.字符串 D.算术表达式 10、已定义字符串S1和S2,以下错误的输入语句是:C)gets(s1,s2); A. scanf("%s%s", s1, s2); B. scanf("%s%s", &s1, &s2); C. gets( s1, s2); D. gets(s1); gets(s2);
第五章自测练习答案 清华大学出版社 C语言习题、实验指导及课程设计
第五章自测练习参考答案一、选择题1.B或C2.D3.B4.D5.D6.C和D7.C8.C9.C 10.D(实际都正确)11.C 12.B 13.D 14.A 15.B 16.B 17.C 18.D 19.B 20.D21. D 22.B 23.D 24.D 25.D 26.D 27.C 28.A 29.A 30.A 31.D二、填空题1.i=1 x[i-1]2. &a[i] i%4==0 putchar(‘\n’);或printf(“\n”);3. k=0; k=i j=0; j=i i=a[k];a[k]=a[j];a[j]=i;4. 1 3 4 55. 求数组中正数的和并输出6.The number is :5,The average is:5.7. 常量表达式常量表达式8.按行存放,即先存第一行,再存第二行,以此类推9.0 610.011.3012.j=2 j>=013. 16 711 12 1316 17 18 1921 22 23 24 2514. j<=2 b[j][i]=a[i][j]15. 5816.在第一条scanf语句后增加j=n; % / 将第三个printf语句中的输出项n换成j j=i; j>0; j—17. 818. 60019. 在第三个for语句前增加s=0; k=0 a[i][k]*b[k][j] printf(“\n”);20. str[0] 并在第一个strcpy语句后增加一行:if(strcmp(str[1],s)<0) strcpy(s,str[1]);最后的空为:s三、编程题1.参考程序如下:#include "stdio.h"#define N 10void main(){int i,price[N];int max,min;float ave,sum;for(i=0;i<N;i++) scanf("%d",&price[i]);max=min=price[0];sum=ave=0;for(i=0;i<N;i++){sum+=price[i];if(price[i]>max) max=price[i];if(price[i]<min) min=price[i];}ave=(float)sum/N;printf("价格范围为%d---%d;平均价格为%.2f\n",min,max,ave);}2.选择排序的程序如下:#include "stdio.h"void main(){int i,j,min,temp,a[10];/*input*/for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");/* start to sort */for(i=0;i<10-1;i++){min=i;for(j=i+1;j<10;j++)if(a[min]>a[j]) min=j;temp=a[i];a[i]=a[min];a[min]=temp;}/*output*/for(i=0;i<10;i++)printf("%5d",a[i]);}3.冒泡排序的程序如下:#define N 10#include "stdio.h"void main(){int i,j,m;int a[N];for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=1;i<N;i++)for(j=0;j<N-i;j++)if(a[j]>a[j+1]){m=a[j];a[j]=a[j+1];a[j+1]=m;}for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}4。
Cc语言程序设计张树粹清华大学习题解答
第1 章习题答案二、单项选择题1.A2.A3. C4.B5.A6.B7.B8. A三、填空题1. .C .CPP .OBJ .EXE2. 主3. #include<iostream >, using namespace std, #include<stdio.h>4. 顺序结构,选择结构,循环结构5.{, }, 函数说明, 函数执行,不能省略,void第2章习题答案一、单项选择题1.B2.B3.A4.C5. C6. A7.B8.C9. D 10. D11. B 12.A 13. B 14.C 15. D二、填空题1. x>20&&X<30||X<-1002. x>y或a>b3. 14. auto 、register 、static 与extern5. 函数体内.6. int float double7. 2 18. . 是最右边表达式的值9. 710. 先使用后自增,先自增后使用11.右结合12.变量的数据类型、变量的存储类型、变量名13.是否整除14.此之外全局变量,静态局部变量15.count三、写出程序运行结果1、2,12、6,8,6,73、n=14、15、n=-46、x=3,a=2,b=37、08、i=6,d=129、2147483647,-2147364810、x=3,y=5第3章习题答案一、单项选择题1.D2.B3.B4.C5.D6.D7.B8.B9.C 10.A二、写出程序运行结果1. 1202. s=633. 01234the loop break out.4. freight= 58800005. sum=1sum=3sum=9sum=33三、程序填空1. i++ i<=102. i<100 i%3!=03. x!=-1 x<min4. i++,2*i-1 \n5. i=1 j<=i i*j四、编程题1.void main(){char ch1;ch1=getchar();if(ch1>'0'&&ch1<'9')printf("这是一个阿拉伯数字,朋友再见!\n"); elseprintf("这不是一个阿拉伯数字,朋友再见!\n");2.main(){int x,y;scanf("%d",&x);if(x<0)y=x;elseif(x>=10)y=3*x-11;elsey=2*x-1;printf("\nx=%d,y=%d\n",x,y);3.main( ) {char grade;grade=getchar();switch(grade){ case 'A': printf(">=90"); break;case 'B': printf("80~89"); break;case 'C': printf("70~79");break;case 'D': printf("60~69"); break;case 'E': printf("0~59");4.void main(){char ch1;ch1=getchar();if(ch1>'a'&&ch1<'z')printf("这是一个英文大写字符,朋友再见!\n"); else if(ch1>'A'&&ch1<'Z')printf("这是一个英文小写字符,朋友再见!\n");5.void main(){int n,a,b,c;for(n=100;n<=999;n++){a=n/100;b=(n-a*100)/10;c=n%10;if(n==a*a*a+b*b*b+c*c*c)printf("%d,",n);6. main()int a,b,c,d,t;scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf("\na=%d,b=%d,c=%d,d=%d\n",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",a,b,c,d);7. #include <math.h>main(){float e=1.0,t=1,n=1;while(fabs(1/t)>1e-6) {e=e+1/t; n=n+1; t=t*n; }printf("e=%f\n",e);8. main(){int i,j;for(i=1;i<=4;i++) {for(j=1;j<=i+30;j++) printf(" "); //定打印*的位置,打在屏幕中央,从第31列开始printf("*");for(j=1;j<=2*(4-i);j++)printf(" "); //两个*间的空位数printf("*");printf("\n");9. main(){ int i,a,b,c,n=0;for(i=100;i<=999;i++){a=i%100;c=i%10;b=i-a*100-c;if(i%11==0&&(a==b||b==c||c==a)){ printf("%d ",i); n+=1;10. main(){int d=0,a=2;float m,s=0;do{a=2*a;m=0.8*a;s=s+m;d++;}while(a<=100);printf("%f\n",s/d);第4习题答案一、A.D.A.B.A.D.B.B.B。
清华大学C语言程序设计考试试卷B
void main()
{
int m=2,n=3;
swap1(&m,&n);
printf("%d,%d\n",m,n);
swap2(&m,&n);
printf("%d,%d\n",m,n);
}
运行结果:
2
,
3
3
,
2
三、程序设计题(第1小题8分,第二小题12分,共20分)
(1)请设计一个程序,从键盘获取一个字符,若为小写字母,将其转换为大写字目;若为大写字母,将其转换为小写字目,其它字符不做处理。(要求有输入提示,输出转换前后的值)
void main()
{
char ch;
printf("Please input a character:");
scanf("%c",&ch);
printf("The character you input is %c.\n",ch);
}
运行结果:
P
l
e
a
s
e
i
n
p
u
t
a
c
h
a
r
a
c
t
e
r
:
A
T
h
e
{
if (isLeapYear(year))
{
printf("%5d",year);
}
}
printf("\n");
}
#include <stdio.h>
void main()
C语言程序设计 第三版 部分习题 (谭浩强 著) 清华大学出版社 课后答案
4.7 编程实现一个具有简单四则运算功能的计算器。
提示:参照例4.18,随机产生3个数,其中一个数用来判断是哪种运算。
4.8 编程实现,输入一行字符,将其中的数字字符对应的整数值加起来并输出结果。如:
a45b8&*3 则是4+5+8+3,结果为20。
提示:char c; int sum=0;
A)语法错误 B)1 C)1.5 D)1.500000
3.14 能表示条件0≤x≤100的表达式是(D)。
A)0<=x<=100 B)x>=0,x<=100
C)0≤x≤100 D)x>=0&&x<=100
3.15 判断char型变量ch为数字的正确表达式是(B)。
2.15 存储字符串"\\\'abc\376"需要的字节数是(D)。
A)11 B)13 C)6 D)7
【习题3】
一、计算题
3.1 2.8+7%3*11%2/4 (答案:2.8)
3.2 5/2+5.0/2+7%6 (答案:5.5)
3.3 a=12,a*=2+3 (答案:a=60)
1.15 输入两个整数,输出其中最大者。
提示:模仿例1.3
1.16 输入三个整数,输出其中最小者。
提示: min(min(a,b),c);
【习题2】
一、简答题(在课本中寻找答案,略)
2.1 常量与变量的区别?
2.2 C语言中的标识符的定义规则?
2.3 变量为什么要“先定义,后使用”?
a+(int)(b/2*(int)(a+c)/2)%4 (答案:4.5)
《C语言程序设计》清华大学出版社课后答案
习题 9一.选择题1. A2. A3. A4. A5.B6.C二编程题9.2 编写一函数,判断N×N矩阵是否为上三角阵。
上三角阵是指不含主对角线,下半三角都是0的矩阵。
#include <stdio.h>int fun(int x[][3],int n){int flag=1,i,j;for(i=1;i<n;i++)for(j=0;j<i;j++)if(x[i][j]!=0){flag=0;break;}return flag;}void main(){int a[3][3]={{1,4,5},{0,2,6},{0,0,3}};int result=fun(a,3);if(result==1)printf("此矩阵是上三角矩阵!\n");elseprintf("此矩阵不是上三角矩阵!\n");}9.3 有一个字符串,包含n个字符,将字符串从第i 个字符到第j个字符间的字符逆置。
程序代码:#include <stdio.h>#include <string.h>void invertsub(char *str,int i,int j){char *p,*q,c;int n=0;p=q=str;if(str==NULL)printf("str is NULL!\n");else if(i<=0||j>strlen(str))printf("i and j value error!\n");else {while(*p!='\0'&&n!=i-1){ p++;n++; }q=p;while(*q!='\0'&&n!=j-1){q++;n++;}while(p<q){c=*p;*p++=*q;*q--=c;}}}void main(){char str[]="abcdefg";printf("%s\n",str);invertsub(str,2,5);printf("%s\n",str);}9.4 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.程序源代码:main(){int number[20],n,m,i;printf("the total numbers is:");scanf("%d",&n);printf("back m:");scanf("%d",&m);for(i=0;i<n-1;i++)scanf("%d,",&number[i]);scanf("%d",&number[n-1]);move(number,n,m);for(i=0;i<n-1;i++)printf("%d,",number[i]);printf("%d",number[n-1]);}move(array,n,m)int n,m,array[20];{int *p,array_end;array_end=*(array+n-1);for(p=array+n-1;p>array;p--)*p=*(p-1);*array=array_end;m--;if(m>0) move(array,n,m);}9.5 输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换程序源代码:main(){int number[10];input(number);max_min(number);output(number);}input(number)int number[10];{int i;for(i=0;i<9;i++)scanf("%d,",&number[i]);scanf("%d",&number[9]);}max_min(array)int array[10];{int *max,*min,k,l;int *p,*arr_end;arr_end=array+10;max=min=array;for(p=array+1;p<arr_end;p++)if(*p>*max) max=p;else if(*p<*min) min=p;k=*max;l=*min;*p=array[0];array[0]=l;l=*p;*p=array[9];array[9]=k;k=*p;return;}output(array)int array[10];{ int *p;for(p=array;p<array+9;p++)printf("%d,",*p);printf("%d\n",array[9]);}9.6 输入n个字符串,按由小到大顺序输出。
完整版C语言程序设计练习题含程序及参考答案
完整版C语言程序设计练习题含程序及参考答案1. 请编写一个C程序,要求输入一个整数n,并打印从1到n的所有整数。
```c#include <stdio.h>int main(){int n;printf("请输入一个整数n:");scanf("%d", &n);for (int i = 1; i <= n; i++){printf("%d ", i);}return 0;}```参考答案:```请输入一个整数n:51 2 3 4 5```2. 请编写一个C程序,要求输入两个整数m和n,并计算它们的和、差、积和商(m除以n的结果)。
```c#include <stdio.h>int main(){int m, n;printf("请输入两个整数m和n:");scanf("%d %d", &m, &n);int sum = m + n;int difference = m - n;int product = m * n;float quotient = (float)m / n;printf("和:%d\n", sum);printf("差:%d\n", difference);printf("积:%d\n", product);printf("商:%.2f\n", quotient);return 0;}```参考答案:```请输入两个整数m和n:10 3和:13差:7积:30商:3.33```3. 请编写一个C程序,要求输入一个整数n,并判断它是否为素数。
```c#include <stdio.h>#include <stdbool.h>bool isPrime(int n){if (n <= 1){return false;}for (int i = 2; i * i <= n; i++){if (n % i == 0){return false;}}return true;}int main(){int n;printf("请输入一个整数n:"); scanf("%d", &n);if (isPrime(n)){printf("%d是素数。
《C语言程序设计》(清华大学出版社)书后习题参考答案
第一步部分简单程序设计P55.课堂实践(1)#include<stdio.h>main(){printf(“**********\n”); printf(“**********\n”); printf(“**********\n”);}(2)#include<stdio.h>main<> /*main()*/{printf(“Hello,World.\n);}P95.课堂实践(1)#include<stdio.h>main(){char a=116,b=119,temp;printf(“a=%c,b=%c\n”,a,b); temp=a;a=b;b=temp;printf(“a=%c,b=%c\n”,a,b); }(2)功能:交换x,y的值;#include<stdio.h> main(){ int x,y;x=5; y=10;x=x+y;y=x-y;x=x-y;printf(“%d,%d”,x,y);}(3)c:dec=120,oct=170,hex=78,ASCLL=x 4、输出内容向左靠齐12123.14159260000000000000000000000000 3.14159260000000000000000000000000P115.课堂实践(1)①3.0-(3.0*4)/(4+2)#include<stdio.h>main(){ float x;x=3.0-(3.0*4)/(4+2);printf(“%f”,x);}②1/2*(2*3+2/(2*2*2))#include<stdio.h>main(){ float x;x=1/2*(2*3+2/(2*2*2));printf(“%f”,x);}(2)%(3)B(4)#include<stdio. h>main{x,y,z;/*没有数据类型*/x+y=5;/*赋值表达式左边不能是表达式,应为一个变量*/printf("x+y=,z=",x,y,z);/*没有输入格式符*/}P135.课堂实践(1)-14(2)(1)x=4,8 (2)8,8(3)#include<stdio.h>mian(){ int x=10;printf(“当x变量的初值为%d时,进行+=运算后的结果为%d”,x,x+=x);printf(“当x变量的初值为%d时,进行-=运算后的结果为%d”,x,x-=x);printf(“当x变量的初值为%d时,进行*=运算后的结果为%d”,x,x*=x);printf(“当x变量的初值为%d时,进行/=运算后的结果为%d”,x,x/=x);}P13习题一、1、C2、C3、A 二、5,-46,12,20P185.课堂实践(1)#include<stdio.h> main(){ int x,y;scanf(“%d%d”,&x,&y); if(x>y)printf(“x>y”); else if(x<y)printf(“x<y”); elseprintf(“x=y”);}(2)#include<stdio.h> main(){ int x,y;scanf(“%d”,&x);if(x>0) y=1;if(x==0) y=0;if(x<0) y= -1;printf(%d”,y);}P215.课堂实践(1)C (2)B (3)B (4)0.500000 (5)不能:#include<stdio.h>main( ){int x,y,z,max;if(z>y){if(z>x)max=z;else max=x;}else if (y>x)max=y;else max=x;printf("\nmax=%d ",max);}P23 略P24习题一、1、D 2、D 3、C 4、D 5、B 6、B 7、B二、1、y%2==0 2、&& || !3、(x>2&&x<3)||(x<-10)4、(ch>=’A’&&ch<=’z’)ch=ch-32;5、1,06、F三、1、#include<stdio.h>main(){int a;scanf("%d",&a);if(a%5==0&&a%7==0)printf("yes");else printf("no");}2、#include<stdio.h>main(){int m;scanf("qingshuru:%d",&m);if((m%4==0&&m%100!=0)||m%400==0)printf("%d shirunnian",m);else printf("%d bushirunnian",m);}3、#include<stdio.h>#include<math.h>main(){ floata,b,c,dise,x1,x2,realpart,imagpart;scanf(“%f%f%f”,&a,&b,&c);printf(“The equation”);if(fabs(a)<=0)printf(“is not a quadratic\n”);else{ dise=b*b-4*a*c;if(dise<=0)printf(“has two aqualroots:%8.4f\n”,-b/(2*a));elseif(dise>0){ x1=(-b+sprt(disc))/(2*a);x2=(-b-sprt(disc))/(2*a);printf(“has distinct real roots:%8.4f and%8.4f\n”,x1,x2);}else{realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(“has complex roots:\n”);printf(“%8.4f+%8.4f\n”,realpart,im agpart);printf(“%8.4f-%8.4f\n”,realpart,imagpart);}P285、课堂实践(1)#include<stdio.h>main( ){int key;char ch;printf("*****\n");scanf("%d",&key);printf("????????:\n");while((ch=getchar())!='\n')(ch-key)>122?putchar(ch+122-33-key): ((ch-key)<33?putchar(ch-122-key):putchar (ch-key));}(2)#include<stdio.h>main(){ int i; /*i没有赋值*/int i=1;printf(“output ten numbers:\n”);while(i<=10)printf(“%3d”);/*没有输出参数*/ {printf(“%3d”,i);i++; /*应加{}组成复合语句*/ i++;}}P304. 课堂实践(1)#include<stdio.h>main(){ int a,s=0;do{ scanf(“%d”,&a);s+=a;}while(a!=-1);printf(“%d”,s);}(2)#include<stdio.h>main(){ int a,b,r,t,maxB;scanf(“%d%d”,&a,&b);if(a<b){ t=a;a=b;b=t;}r=a%b;while(r!=0){ a=b;b=r;r=a%b;}maxB=b;printf(“maxB is %d”,maxB);}P336. 课堂实践(1)4(2)①#include<stdio.h>main(){int i,j;printf("**九九乘法表**");for(i=1;i<10;i++){ for(j=1;j<=i;j++)printf("%d*%d=%d\t",j,i,i*j);printf("\n");}}②#include<stdio.h>main() {int i=1,j;while(i<10){ j=1;while(j<=i){ printf("%d*%d=%d\t",j,i,i*j);j++;}printf("\n");i++;}}③#include<stdio.h>main(){int i=1,j;do{ j=1;do{ printf("%d*%d=%d\t",j,i,i*j);j++;}while(j<=i);printf("\n");i++;}while(i<10);}(3)#include<stdio.h>main(){ int x;scanf("%d",&x);while(x>0){ printf("%d",x%10);x/=10;prtntf(" ");}}P33习题【参考答案】一、1、D 2、C 3、A 4、A 5、D 6、C 7、D 8、D 9、C 10、B二、1、36 2、3 4、1 3 5、 i<=10 if(j%6!=0)三、1、#include<stdio.h>main(){int a,sum=0;for(a=1;a<=100;a++)if(a%2==1)sum=sum+a;printf("%d",sum);}2、#include<stdio.h> main(){ int i,j,s;int t;int k[100];for(i=1;i<=1000;i++) {s=0;t=0;for(j=1;j<i;j++)if(i%j==0){s+=j;k[t++]=j;}if(i==s){printf("%d shiwanshou %d=",i,i);for(;t>0;)if(t>1)printf("%d+",k[--t]);else printf("%d",k[--t]);printf("\n");}}3、#include<stdio.h>main(){ int y,t=0;for(y=1008;y<=2008;y++)if(y%4==0&&y%100!=0||y%400==0) { printf(“%d\t”,y);t++;if(t%5==0)printf(“\n”);}}4、#include<stdio.h>main(){ int t,i,x,max,min;scanf(“%d”,&t);max=min=t;for(i=1;i<10;i++){scanf(“%d”,&x);if(max<=x)max=x;if(min>=x)min=x;}printf(“%d\t%d\n”,max,min);}5、#include<stdio.h>main(){ int i,j,p;for(i=1;i<=4;i++){ for(p=1;p<=i;p++)printf(“”);for(j=7;j>=2*i-1;j--)printf(“*”); printf(“\n”);}}P395.课堂实践(1)float compare (float a,b,c) {float k;if (a>=b){ k=a;if(a>=c)k=a;elsek=c;}else{k=b;if(b<=c)k=c;return k;}}(2)最大公约数:int zxgys (int m,n){int i,j,k;if(m>=n)k=n;elsek=m;for(i=1;i<=k;i++){if(m%i==0&&n%i==0) j=i;}return j;}最小公倍数:int zdgbs (int a,int b) {int x,y,k;if(a>=b)k=a;elsek=b;for(x=a*b;x>=k;x- -){if(x%a==0&&x%b==0)y=x;}return y;}P41 课堂实践(1)#include<stdio.h>float zhouchang (float x) {float l;l=2*3.14*x;return l;} float mianji (float y){float s;s=3.14*y*y;return s;}voide main (){float r;scanf("%f",&r);float m,n;m=zhopuchang (r);n=mianji (r);printf("m=%f\nn=%f\n",m,n); }(2)float add (float x,float y) {Float z;Z=x+y;Return z;}float sub(float h,float k) {float w;w=h-k;return w;}float mul(float m,n){float i;i=m*n;return i;}float div(float e,f) {float g;g=e/f;return g;}void main(){float p,g;scanf("%f%f",&p,&g); char a;lscanf("%c",&a);float j;if(a=='+'){j=add(p,g);}else if(a=='-'){j=sub(p,g)}else if (a=='*'){j=mul(p,g)}else if (a=='/'){j=div(p,g)}printf("'%f",5);}P43习题一.选择1.B 2.D 3.D 4.A 5.C 6.B 7.B 8.B 9.A 10.D 二.填空1.函数首部和函数体2.void add; float add;3.1,1,14. 1,2,3;5. break; scanf(“%c”,&ch);6. x=4 y=9 z=57.first:14 ,4 ,12second:26 ,4 ,12third:26 ,3 ,68. a+b=99. 810. 125三.1.#include<stdio.h>#include<math.h>fun (int x,int y){int m;m=x-y;m=abs(m);return m;}2. void deb (int x){int i;for(i=2;i<=x;i++){if(x%i==0)break;}if(i>=x)printf("%d is su shu\n",x);}3. 略第二部分程序设计算法示例P676.(1)#include<stdio.h>main(){int b,m,l;for(b=1;b<20;b++){for(m=1;m<33;m++){l=100-m-b;if(5*b+3*m+l/3==100)printf("%d%d%d\n",b,m,l)}}}(2) #include<stdio.h> main(){int a,b,c,d;for(a=1;a<10;a++){for(b=1;b<20;b++){ for(c=1;c<50;c++){d=40-a-b-c;if(10*a+5*b+2*c+d==100) printf("%d,%d,%d,%d\n",a,b,c,d);}}}}P705.(1)#include<stdio.h>main(){int a,b,c;c=2;for(a=2;a<=3;a++){if(a==c)continue;b=6-a-c;if(b==c)continue;if(a==3)printf("a与z是对手\n");if(b==1)printf("b与x是对手\n");printf("c与y是对手\n");}}5.(2)#include<stdio.h>main (){int d=5;int a,b,c,e,f,g;for(a=1;a<=7;a++){if(a==d)continue;for(b=1;b<=7;b++){if(b==a||b==d)continue;for(c=1;c<=7;c++) {if(c==a||c==b||c==d)continue;for(e=1;e<=7;e++){if(e==a||e==b||e==c||e==d)continue;for(f=1;f<=7;f++){ if(f==e||f==d||f==c||f==b||f==a) continue;g=(23-a-b-c-e-f);if(g==f||g==e||g==d||g==c||g==b||g==a) continue;}}}}}printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d \nf=%d\ng=%d\n",a,b,c,d,e,f,g);}5.(3) 略P71习题一、1. B2. D3. C4.C,D二.1.2*x+4*y==90;2.14三.1.#include<stdio.h>main (){int a,b,c;for(a=1;a<=9;a++){for(b=0;b<=9;b++){for(c=0;c<=9;c++){if(a*a*a+b*b*b+c*c*c==100*a+10*b+c) printf("%d%d%d\n",a,b,c);}}}}2#include<stdio.h>main (){int bh,mh,lh;for(bh=1;bh<=40;bh++){for(mh=1;mh<=50;mh++){lh=100-bh-mh;if(3*bh+2*mh+lh/2) printf("bh=%d\nmh=%d\nlh=%d\n");}}}P755.#include<stdio.h>main (){float x1,x2;x1=1.5;x2=(x1+1/x1)/2;while(x1=x2){x1=x2;x2=(x1+1/x1)/2;}printf("%f",x2);}P765.(1)略5.(2)#include<stdio.h>main (){int day=1;int x1=0,x=0;float j;while(x1<100){x=day*2;day++;x1+=x;}j=x1*0.8/(day-=1);printf("%f",j);}P76习题一1.(1)B(2)D2. (1)C (2)A二1.(1)x1==0(2) x/0.5-22.sum%4==0三略P80.5、课堂实践#include <stdio.h>void main(){ long int f1,f2;int i;f1=1; f2=1;for(i=1;i<=20;i++){printf(“%4ld %4ld”,f1,f2); if(i%2==0) printf(“\n”);f1=f1+f2; f2=f2+f1;} }P81.5、课堂实践#include <stdio.h>#include <math.h>int s(int a,int b){ int g;if( b= =0)g=1;elseg=pow(a,b);return(g);}main(){ int x,y,m;Scanf(“%d,%d”,&x,&y);m=s(x,y);printf(“%d”,m);}P81.习题一、1、(1) age(n-1)+2 (2)age(n)2、计算Fibonacci数列第7项元素 k=13二、略P85.略P93.5、课堂实践(1) D (2) C (3) C (4)D(5)#include <stdio.h>main(){ int a[5],s[5];int i;for(i=0;i<5;i++)scanf(“%d”,&a[i]);for(i=0;i<5;i++){ s[i]=a[i]+5;printf(“%d”,s[i]);}}P96.5、课堂实践(1)#include <stdio.h>void main(){ inta[10]={265,301,751,129,937,863,742,694,7 6,438};int i,j,t;for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=0;i<10;i++)printf(“%d ”,a[i]);}(2).补充直接插入排序原理。
清华大学c程序设计基础中期试题及答案
清华大学c程序设计基础中期试题及答案一、选择题(每题2分,共10分)1. 下列哪个选项是C语言中的关键字?A. intB. INTC. IntegerD. integer答案:A2. C语言中,哪个函数用于计算并返回字符串的长度?A. strlen()B. length()C. size()D. count()答案:A3. 以下哪个选项不是C语言中的基本数据类型?A. intB. floatC. stringD. char答案:C4. 在C语言中,以下哪个运算符用于比较两个值是否相等?A. ==B. !=C. <=D. >=答案:A5. 下列哪个选项是正确的C语言函数定义?A. int add(int a, int b) { return a + b; }B. int add(int a; int b) { return a + b; }C. int add(int a, int b) { return a - b; }D. int add(int a, int b) { return a * b; }答案:A二、填空题(每题2分,共10分)1. 在C语言中,定义一个整型变量的正确语句是____。
答案:int a;2. 用于输出字符串的C语言标准库函数是____。
答案:printf();3. 在C语言中,表示逻辑与的运算符是____。
答案:&&4. 用于输入一个整数的C语言标准库函数是____。
答案:scanf();5. 在C语言中,表示数组长度的关键字是____。
答案:sizeof三、编程题(每题10分,共20分)1. 编写一个C语言函数,计算并返回两个整数的和。
答案:```cint sum(int a, int b) {return a + b;}```2. 编写一个C语言程序,读取用户输入的两个整数,调用上述函数计算它们的和,并输出结果。
答案:```c#include <stdio.h>int sum(int a, int b) {return a + b;}int main() {int num1, num2;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);printf("The sum is: %d\n", sum(num1, num2));return 0;}```四、简答题(每题10分,共20分)1. 简述C语言中数组和指针的关系。
清华大学C语言程序练习题
清华⼤学C语⾔程序练习题⼀、选择题1.⼀个C语⾔程序是由(D )构成。
A.语句B.⾏号C.数据D.函数2.下⾯标识符中正确的是()。
A.d&ef B.6a C.z4x5c D.a3/b43.在C语⾔中,存储⼀个字符型、整型、单精度实型变量所需的空间是()。
型、单精度实型变量所需的空间是()。
A.1、2、4 B.1、1、4 C.1、2、8 D.2、2、84.为了避免嵌套的条件分⽀语句 if--else中的else总是与()组成成对关系。
A.缩排位置相同的B.在其之前未配对的C.在其之前未配对的最近的ifD.在同⼀⾏上的if5.下列表达式的结果正确的是()。
int aa,bb,cc,dd;aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;(aa+1==2)?bb=aa+2:aa+3A.2 B.3 C. 1 D.56.设有int x=11 ;则表达式(x+1/3)的值是(C )。
A.3 B.4 C.11 D.127.设有字符串A=“He has 钱!”,则该字符串的长度为( C )。
A.9B.10C.11D.88.有如下程序段,则正确的执⾏结果是()int m=3;while(m<=5){printf("%d ",m-3);m++;}A. 0 0 0 B.0 1 2 C.1 2 3 D.⽆结果10.有如下定义类型语句,若从键盘输⼊数据,正确的输⼊语句是()。
int x;Char y;Char z[20];A.scanf("%d%c%c",&x,&y,&z);B.scanf("%d%c%s",&x,&y,&z);C.scanf("%d%c%c",&x,&y,z);D.scanf("%d%c%s",&x,&y,z);11.struct ex{int x ;float y;char z ;} example;则下⾯的叙述中不正确的是()。
C语言程序设计教程-李含光-郑关胜-清华大学出版社习题答案习题答案[完美打印版]
第1章习题参考答案1.单项选择题(1)A (2)C (3)D (4)C (5)B2.填空题(1)函数(2)主函数(main)(3)printf(), scanf()第2章习题参考答案1.单项选择题1-5 CBCCC 6—10 CDCDC 11-13 DBB2.填空题(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)(x〈0&&y〈0)||(x〈0&&z〈0)||(y〈0||z〈0)(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 BCDBC 11-15 BCBBB 16 A2.填空题(1)用;表示结束(2){ }(3)y=x〈0?1:x==0?0:-1(4)y%4==0&&y%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,-24.程序填空(1)x:y ,u:z(2)m=n , m!=0 ,m=m/10(3)t〈eps ,t*n/(2*n+1) , printf(“%lf\n",2*s)(4)m%5==0 , printf(“%d\n”,k)(5)cx=getchar() , cx!=front , cx (6)double s=0 , 1.0/k , %lf (7)s〉=0 ,s<gmin ,5.编程题(1).#include 〈stdio。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题1.一个C语言程序是由(D )构成。
A.语句B.行号C.数据D.函数2.下面标识符中正确的是()。
A.d&ef B.6a C.z4x5c D.a3/b43.在C语言中,存储一个字符型、整型、单精度实型变量所需的空间是()。
型、单精度实型变量所需的空间是()。
A.1、2、4 B.1、1、4 C.1、2、8 D.2、2、84.为了避免嵌套的条件分支语句 if--else中的else总是与()组成成对关系。
A.缩排位置相同的B.在其之前未配对的C.在其之前未配对的最近的ifD.在同一行上的if5.下列表达式的结果正确的是()。
int aa,bb,cc,dd;aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;(aa+1==2)?bb=aa+2:aa+3A.2 B.3 C. 1 D.56.设有int x=11 ;则表达式(x+1/3)的值是(C )。
A.3 B.4 C.11 D.127.设有字符串A=“He has 钱!”,则该字符串的长度为( C )。
A.9B.10C.11D.88.有如下程序段,则正确的执行结果是()int m=3;while(m<=5){printf("%d ",m-3);m++;}A. 0 0 0 B.0 1 2 C.1 2 3 D.无结果9.执行语句:printf("%d",(a=2)&&(b= -2);后,输出结果是()。
A.无输出B.结果不确定C.-1 D.110.有如下定义类型语句,若从键盘输入数据,正确的输入语句是()。
int x;Char y;Char z[20];A.scanf("%d%c%c",&x,&y,&z);B.scanf("%d%c%s",&x,&y,&z);C.scanf("%d%c%c",&x,&y,z);D.scanf("%d%c%s",&x,&y,z);11.struct ex{int x ;float y;char z ;} example;则下面的叙述中不正确的是()。
A.struct结构体类型的关键字B.example是结构体类型名C.x,y,z都是结构体成员名D.struct ex是结构体类型12.在C语言中对于实型数组,其每个数组元素的类型是( )。
A.实型B.整型C.可以为任何类型D.不确定13.若已定义:int a[9],*p=a;不能表示a[1] 地址的表达式是( )。
A.p+1B.a+1C.a++D.++p二、填空题1.在C语言中,正确的标识符是由____________组成的,且由____________开头的。
2.设p=30,那么执行q=(++p)后,表达式的结果q为______,变量p的结果为________。
若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是_________。
3.一个变量的指针是指___________________________________________________。
4.在C语言程序中,对文件进行操作首先要____________________;然后对文件进行操作,最后要对文件实行__________________________操作,防止文件中信息的丢失。
5.以下程序运行后的输出结果是。
该程序的功能是。
int main(){int x=10,y=20 ,t=0;if(x!=y)t=x;x=y;y=t;printf("%d,%d\n",x,y);}6.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为"读"而打开此文件:fp=fopen( );。
7.有以下程序,当输入的数值为2,3,4时,输出结果为__________。
int main(){int x,y,z;printf("please input three number");scanf(“%d,%d,%d”,&x,&y,&z);sum=x*x+y*2+z;printf("sum of number is : %d",sum);}8.有以下程序int main(){char c;while((c=getchar())!='?')putchar(--c );}程序运行时,如果从键盘输入:YDG?N?<回车>,则输出结果为。
9.在循环中,continue语句与break语句的区别是:continue语句是break语句是三、程序填空与算法题1.下面程序是计算10个整数中奇数的和及其偶数的和,请填空。
#include <stdio.h>int main(){int a,b,c,i;a=c=0;for(i=1;i<=10;i++){scanf("%d",&b);canf("%d",&b);}printf("偶数的和=%d\n",a);printf("奇数的和=%d\n",c);}2.编写一个自定义函数,实现求两个实数的平方和3.以下程序运行后的输出结果是。
int main(){char s[]="GFEDCBA";int p=6;while(s[p]!='D'){printf("%c ", p);p=p-1;}}4.定义一个反映学生信息的结构体,包括学生的姓名,性别,年龄,成绩等。
5.以下程序输出的结果是。
int ff(int n){static int f=l;f=f*n;return f;}int main(){ int i;for(i=1;i<=5;i++)printf("%d\n",ff(i));}6.设有以下程序:int main(){int n1,n2;scanf("%d",&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf("%d",n1);}}程序运行后,如果从键盘上输入1298;则输出结果为。
7.下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数为 6的所有整数,请填空。
#include<stdio.h>main (){int i, j;for(i=1; ____________; i++)if (________________)printf("%d", j);}8.现有一个单链表Head,如下图所示,如果要在元素B 和D 之间插入一个字符型元素C 。
所需要的语句为:(如果用到指针,在图中标出指针的位置)四、编程题1.编程实现求解下面的式子的结果s=1*2+2*3+3*4+…+20*212.编程实现求下面式子的结果, 正弦sin(x)的近似值的多项式公式如下,要求输入x 和ε,按下面公式计算sin(x)的近似值,要求计算的误差小于给定的ε。
3.编程实现将某文本文件file1.txt 的内容读出来,显示到屏幕上。
一、填空。
1.实型变量的类型说明符有:__________、____________。
2.表达式7+8>2 && 25 %5的结果是_______________________。
3.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
int n=0, ch;Ch=getchar( );while( __________________ ) ) ) ){if ( ________________ ) n++;}4.putchar(c ) 函数的功能是_____________________________________。
5 int *p 的含义是_________________________________________。
6.C语言中数组的下标下限为___________________________。
7.定义fp为文件型指针变量的定义方法为_______________________。
8.数组 int a[3][4];共定义了____________个数组元素。
二、单项选择题1、下列属于整型常量的是________。
A、12B、12.0C、-12.0D、10E102、不属于字符型常量的是_________。
A.‘A’B、'a' C、“A”D、'b'3、下列表达式为关系表达式的为_________。
(其中a为一整型变量)A.3+4*5B、a==10 C、a>0?a:-a D、a=14、下面不正确的赋值语句是_____________。
A.a=a+1 B、a==b C、a+=b D、a=15、下列对数组定义不正确的语句是______________。
A.int m[5]; B、char b[]={‘h’,’e’};C、int a[10]={1,6,8,4};D、char p[];6、若有以下定义,则______和______是对数组元素的正确引用。
int a[5],*p=aA. *&a[6] B、*p+8 C、*(a+2) D、*p7、执行下列语句后,a的值是______。
int a=8;a+=a-=a*a;A.-240 B、64 C、112 D、-1128.指出下面正确的输入语句()。
A.scanf(“a=b=%d”,&a,&b) ;B.scanf(“%d,%d”,&a,&b) ;C.scanf(“%c”,c) ;D.scanf(“%f\n”,&f) ;9.下面的变量说明中正确的是____________。
A.int:a, b, c; B.int a; b; c; C.int a, b, c D.int a, b, c;10.C语言用()表示逻辑“真”值。
A.True B.t 或 y C.非零整型值 D.整型值0 11.若x=5,y=4 则y*=x+5; y的值为( ).A.40B.20C.15D.3013.C语言中以追加方式打开一个文件应选择_______________参数。
A.“r”B.“w”C.“rb”D.“a”14.Break语句的正确的用法是()。