你也能够上程序咖(https://meta.chengxuka.com),关上大学幕题板块,岂但有答案,解说,还能够在线答题。
一、选择题
1.改过下列程序中( )处谬误后,程序的运行后果是在屏幕上显示短句“ Welcome to You!"。
#include <stdio.h>int main(void){ printf(Welcome to You! \n") return 0;}
A.1
B.2
C.3
D.4
答案:B
解析:
printf() 函数是零碎提供的库函数,在系统文件stdio.h中申明。
printf() 函数的格局为:
printf(格局管制字符串,输入参数1,...,输入参数n);
所以,printf里的字符串要加双引号。
printf语句开端要以分号完结。
2.C语言表达式( )的值不等于1。
A. 123 / 100
B. 901%10
C.76%3
D.625%5
答案:D
解析:
选项A:123/100 的后果是 1 。123 除以 100,商 1 余 23 ,这里取商。
选项B:901%10 的后果是 1 。901除以10,商 90 余 1 ,这里取余数。
选项C:76%3 的后果是 1 。76 除以 3 ,商 25 余 1,这里取余数。
选项D:625%5 的后果是 0 。625 除以 5 ,商 125 余 0 ,这里取余数。
3.假如 i 和 j 是整型变量,以下语句( )的性能是在屏幕上显示形如 i*j=i*
j的一句乘法口诀。例如,当 i=2 ,j=3 时,显示 2*3=6 。
A. printf("d * %d=%d\n", i, j, i*j)
;
B. printf("%d * %d=%d\n",i, j, i*j)
;
C. printf( "%d * %d=%d\n",i, j)
;
D. printf("%d=%d * %d\n", i, j, i*j)
;
答案:B
解析:
选项A:printf() 函数中,示意整数,对应 %d 。
选项B:正确
选项C:printf() 函数中,3 个 %d ,须要对应 3 个int类型数值。
选项D:printf() 函数中,3 个 %d,要和前面的参数一一对应。
4.若 x 是 double 型变量,n 是 int 型变量,执行以下语句( ),并输出3 1.25 后,x=1.25,n=3。
A. scanf( "%d%lf",&n, &x) ;
B. scanf( "%lf%d",&x,&n);
C. scanf( "%lf%d", &n, &x);
D. scanf( "%d, %lf", &n, &x);
答案:A
解析:
题目里说输出 3 和 1.25 。所以要先输出 n 的值,再输出 x 的值。x 是 double 类型,所以对应 %lf ,n 是 int 类型,所以对应 %d 。
所以最初选 A。
5.下列运算符中,优先级最低的是( )。
A. *
B. =
C. ==
D. %
答案:B
解析:
选项A *
是算术运算符,选项B=是赋值运算符,选项C==是关系运算符,选项D%是算术运算符。
这里的优先级:算术运算符 > 关系运算符 > 赋值运算符
所以选项B = 的优先级最低。
6.将以下 if-else 语句补充残缺,正确的选项是( )。
if(x>=y){ printf( "max=%d\n", x);______________ printf( "max=%d\n",y);}
A. else;
B. else {
C.}else{
D. else
答案:C
解析:
{}要成对儿应用。
7.为了查看第 6 题的 if-else 语句的两个分支是否正确,至多须要设计 3 组测试用例,其相应的输出数据和预期输入后果是( )。
A.输出 3 和 4 ,输入 4 ; 输出 5 和 100 , 输入 100 ; 输出 4 和 3 ,输入 4 。
B.输出 3 和 4 ,输入 4 ; 输出 100 和 5 ,输入 100; 输出 4 和 3 ,输入 4 。
C.输出 3 和 4 ,输入 4 ; 输出 5 和 5 ,输入 5 ; 输出 -2 和 -1 ,输入 -1 。
D.输出 3 和 4 ,输入 4 ; 输出 5 和 5 ,输入 5 ; 输出 4 和 3 ,输入 4 。
答案:D
解析:
题目中是要比拟 2 个数的大小,分为 3 种状况, a > b,a = b,a < b。所以选项 D 正确。
8.对 C 语言程序,以下说法正确的是( )。
A.main 函数是主函数,肯定要写在最后面。
B.所有的自定义函数,都必须先申明。
C.程序总是从 main 函数开始执行的。
D.程序中只能调用库函数,不能自己定义函数。
答案:C
解析:
程序总是从 main() 函数开始。
二、填空题
1.假如 k 是整型变量,计算表达式 1/k , 后果的数据类型是( ),计算表达式 1.0/k,后果的数据类型是( )。
答:整型,实型。
解析:整型除整型的后果也是整型。1.0是实型(浮点型),除整型,要先将除法运算符两侧的数据类型对立,所以零碎会主动进行类型转换。将k由整型转为浮点型,再进行计算。
2.输出 3 和 2 ,下列程序段的输入后果是( )。
int a, b;scanf( "%d%d",&a, &b);a=a+b;b=a-b;a=a-b;printf("a=%d#b=%d\n",a, b);
答:a=2#b=3。
解析:整个程序其实是在进行 a 和 b 的数值替换。通过输出赋值,这里 a 初始值为 3 , b 初始值为 2 。执行a=a+b 计算之后,a 的值为 5 ,b 的值仍然为 2 。而后执行 b=a-b 计算之后,a 的值仍然为 5 ,然而 b 的值被更改为 3 ,而后再执行 a=a-b 计算之后,a 的值被改为 2 ,b 的值仍然为 3 。至此,替换了 a 和 b 的数值。
3.替换变量的值。输出 a 和 b ,而后替换它们的值,并输入替换后 a 和 b 的值。请填空。
int a, b, temp;printf( "Enter a, b:");scanf("%d%d", &a, &b);______________a=b;______________printf( "a=%d#b=%d\n", a, b);
答:
temp=a;b=temp;
解析:
下面的代码曾经定义了第三个变量 temp,用于替换 a 和 b 的值。咱们先将 a 的值赋值给 temp,而后 a=b 示意将b 的值赋值给 a ,最初再将 temp 中存储的a的值,赋值给 b 。就实现了替换 a 和 b 的值。
4.假如 n 是整型变量,判断 n 是偶数的表达式是( )。
答:n%2==0
解析:所谓的偶数,就是能被 2 整除的数,那么咱们让 n 除 2 而后取它的余数,判断是否为 0 即可。
5.与数学式 $ \sqrt {s(s-a)(s-b)(s-c)} $ 对应的 C 语言表达式是( )。
答:
sqrt(s*(s-a)*(s-b)*(s-c))
解析:
在 c 语言中有函数库 math.h,外面有函数 sqrt() 用于示意开平方。
6.调用数学库函数时,编译预处理命令为( )。调用输入输出库函数时,编译预处理命令为( )。
答:
#include<math.h> #include<stdio.h>
解析:
编译预处理命令应用#include,前面跟着函数库。数学函数库须要math.h,输入输出函数是在系统文件stdio.h中申明。留神:编译预处理命令的开端不加分号。
7.本章介绍了 3 种运算符,别离是算术、赋值和关系运算符,依照优先级从高到低的顺序排列为( )运算符、( )运算符、( )运算符。
答:算术,关系,赋值。
解析:
算术运算符的优先级高于关系运算符,关系运算符的优先级高于赋值运算符。
8.下列程序段的输入后果是( )。
int k,flag;if(k=0){ flag=0;}else{ flag=1;}printf( "k=%d#flag=%d\n",k,flag);
答:k=0#flag=1
解析:
这里首先申明了两个 int 类型的变量 k 和 flag ,而后执行 if 语句,判断条件为 k=0 ,这里是个赋值语句,这里 k 被赋值为 0 ,然而作为 if 语句的条件是不成立的,会执行 else 语句,flag 被赋值为 1 。所以最终后果就是 k 为 0 ,flag 为 1。
9.C 语言 3 种根本的控制结构是( )构造、( )构造和( )构造。
答:程序,分支,循环。
解析:无
10.下列程序段的输入后果是( )。
int i; double s = 0; for (i = 1; i < 4; i++) { s = s + 1.0 / i; printf("i=%d#s=%.3f\n", i, s); } printf("i=%d#s=%.3f\n",i, s);
答:
i=1#s=1.000i=2#s=1.500i=3#s=1.833i=4#s=1.833
解析:
for 循环里,
i 的初始值为 1 ,s 的初始值为 0+1.0/1,后果为 1.0 ,第一次打印的时候保留小数点后 3 位,后果为 i=1#s=1.000。
而后累加 i 的值为 2 ,s的 值为1.0+1.0/2,等于1.0+0.5等于1.5,所以第二次打印的时候保留小数点后3位,后果为i=2#s=1.500。
而后再累加i的值为3,s的值为1.5+1.0/3,等于1.5+0.333等于1.833,所以第三次打印的死后保留小数点后3位,后果为i=3#s=1.833。
而后再累加i的值为4,不满足for循环的条件,循环完结了。
继续执行,打印最初一次:i=4#s=1.833。
三、程序设计题
题目1:求整数均值:输出 4 个整数,计算并输入这些整数的和与平均值,其中平均值准确到小数点后1位。试编写相应程序。
解:
答案代码:
#include <stdio.h>int main(void){ // (习题2.3.1) //求整数均值:输出 4 个整数,计算并输入这些整数的和与平均值,其中平均值准确到小数点后1位。试编写相应程序。 int a, b, c, d, sum = 0; double average; printf("input a,b,c,d:"); scanf("%d%d%d%d", &a, &b, &c, &d); sum = a + b + c + d; average = sum / 4.0; printf("average=%.1lf\n", average); return 0;}
运行代码:
题目2:阶梯电价:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,装置一户一表的居民用户电价分为两个“阶梯”:月用电量 50kW . h ( 含 50kW,h )以内的,电价为 0.53 元 /kW . h;超过 50kW . h 的,超出局部的用电量电价每千瓦时上调 0.05 元。输出用户的月用电量(千瓦时),计算并输入该用户应领取的电费(元),若用电量小于 0 ,则输入" Invalid Value!"。试编写相应程序。
解:
答案代码:
#include <stdio.h>int main(void){ // (习题2.3.2) /* 阶梯电价:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,装置一户一表的居民用户电价分为两个“阶梯”: 月用电量 50kW . h ( 含 50kW,h )以内的,电价为 0.53 元 /kW . h; 超过 50kW . h 的,超出局部的用电量电价每千瓦时上调 0.05 元。 输出用户的月用电量(千瓦时),计算并输入该用户应领取的电费(元), 若用电量小于 0 ,则输入" Invalid Value!"。试编写相应程序。 */ double x, y; // x为用户月用电量,单位为千瓦每时。y为电费,单位 元。 printf("input x:"); scanf("%lf", &x); if (x < 0) { printf("Invaild Value!\n"); } else if (x <= 50) { y = 0.53 * x; printf("电费 = %lf 元\n", y); } else if (x > 50) { y = 0.53 * 50 + (x - 50) * (0.53 + 0.05); printf("电费 = %lf 元\n", y); } return 0;}
运行后果:
题目3:序列求和:输出两个正整数 m 和 n ( 0<m≤n),求 $ \sum_{i=m}^n(i^2+\frac{1}{i}) $ ,后果保留 6 位小数。试编写相应程序。
解:
答案代码:
#include <stdio.h>int main(void){ // (习题2.3.3) /* 序列求和:输出两个正整数 m 和 n ( 0<m≤n),求 $ \sum_{i=m}^n(i^2+\frac{1}{i}) $ ,后果保留 6 位小数。试编写相应程序。 */ int m, n, i; double sum = 0; printf("input m,n(0<m<=n):"); scanf("%d%d", &m, &n); for (i = m; i <= n; i++) { sum += i * i + 1.0 / i; } printf("∑=%lf\n", sum); return 0;}
运行后果:
题目4:求交织序列前 n 项和:输出一个正整数 n ,计算交织序列 $ 1-\frac{2}{3}+\frac{3}{5}-\frac{4}{7}+\frac{5}{7}-\frac{6}{11}... $ 的前 n 项之和。试编写相应程序。
解:
答案代码:
#include <stdio.h>int main(void){ // (习题2.3.4) /* 求交织序列前n项和:输出一个正整数n,计算交织序列的前n项之和。试编写相应程序。 */ int i, n, flag = 1; double sum = 0; printf("input n:"); scanf("%d", &n); for (i = 1; i <= n; i++) { sum += (double)flag * i / (2 * i - 1); flag = -flag; } printf("sum = %lf\n", sum); return 0;}
运行后果:
题目5:平方根求和:输出一个正整数 n ,计算 $ 1+\sqrt{2}+\sqrt{3}+...+\sqrt{n} $ 的值(保留 2 位小数)。可蕴含头文件math.h ,并调用 sqrt( ) 函数求平方根。试编写相应程序。
解:
答案代码:
#include <stdio.h>#include <math.h>int main(void){ // (习题2.3.5) /* 平方根求和:输出一个正整数 n ,计算 $ 1+\sqrt{2}+\sqrt{3}+...+\sqrt{n} $ 的值(保留 2 位小数)。可蕴含头文件math.h ,并调用 sqrt( ) 函数求平方根。 */ int n, i; double sum = 0; printf("input n:"); scanf("%d", &n); for (i = 1; i <= n; i++) { sum += sqrt(i); } printf("sum = %lf\n", sum); return 0;}
运行后果:
题目6:求给定序列前 n 项和 ( 1!+2!+...):输出一个正整数 n,求 e=1!+2!+3!+...+n! 的值。要求定义和调用函数fact(n) 计算 n!,函数类型是double。试编写相应程序。
解:
答案代码:
#include <stdio.h>double fact(int n);int main(void){ // (习题2.3.6) /* 求给定序列前 n 项和 ( 1!+2!+...):输出一个正整数 n, 求 e=1!+2!+3!+...+n! 的值。要求定义和调用函数fact(n) 计算 n!,函数类型是double。 */ int n, e = 0, i; printf("input n:"); scanf("%d", &n); for (i = 1; i <= n; i++) { e += fact(i); } printf("e = %d\n", e); return 0;}double fact(int n){ int i; double product = 1; for (i = 1; i <= n; i++) { product *= i; } return product;}
运行后果: