
一、判断题(每小题1分,共15分)
1标准C中,只有数值型数据才能进行4则混合运算。
2标准C中,_a是合法的自定义标识符。
3有定义:float f;表达式f+=(int)36%2”不符合C语言语法。
4标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。
6以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。
7语句for(;;);是非法的。
8在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。
9while和do-while的主要区别是后者至少无条件执行一次。
10数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。
11当函数没有返回值类型时,表示函数类型为void。
12C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。
13一个函数中只允许有一条return语句。
14在C语言中,如果没有说明变量的存储类型是auto类型的。
15由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。
二、填空题(每空1分,共15分)
1. 若a=4;b=5,c=6;则表达式c==(b=-a); 中c的值是 (1) 。
2. 计算表达式的值:
4&&-4的值: (2) ;
设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3) ;
设x=25, a=7, y=47,则表达式x+a%3(int)(x+y)%2/4的值: (4) ;
设a=12,则表达式a=a/5的值: (5) ;
3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}
则循环语句执行完后,z值为 (6) 。
4. 变量的指针就是指该变量的 (7) 。
5. 若有定义int (p)[4],则标识符p是 (8) ;若有定义int p[4],则标识符p是 (9) ;
6. 已有定义:char p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,(p[1]+2));printf(“%c”,((p+1)+1));
的输出结果分别为: (10) 、 (11) 、 (12) 。
7. 已有定义: int x=65; 若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。
8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。
三、简答题(每题4分,共12分)
1、简述选择语句if和else语句对与switch语句的区别。
2、简述在循环语句中,break和continue的区别。
3、若int a[5],p=a;简述p++和(p)++的区别。
四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)
五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)
六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)
七、编程题(8分)
编译程序,其功能是比较字符串的大小( 不允许 用系统提供的字符串比较函数strcmp)。要求是:
(1) 通过主函数调用一个函数strcompare来实现。
(2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。
(3) 并输出两个字符串中相同部分的子串。
《C语言程序设计基础》试卷参考答案
一、判断题(每小题1分,共15分)
1~5 ; 6~10 ; 11~15
二、填空题(每空1分,共15分)
(1) 6 (2) 1 (3) 1 (4) 25 (5) 24 (6) 6
(7)地址 (8) 行指针,指向有四个元素的一维数组
(9)指针数组名,该数组有四个元素,每个元素都是指针
(10)Russia (11)i (12)h (13) %c (14) %d (15)7
三、简答题(每题4分,共12分)
1、if总是判断其后面的表达式的值是否为非零值,如是非零值则执行其后面的语句或由{}括起来的复合语句,否则执行else后面的语句。而switch语句则根据其后面表达式的可数值来判断,执行switch语句体内与其中的一个case:常量值相等语句后面的语句。执行break语句后,跳出switch语句体。
2、break是终止整个循环过程;continue是终止本次循环。
3、p++首先取a[0]的值,然后p指向a[1];(p)++使得a[0]的值自增1,但p保持不变。
四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4 分,共16分)
1、 (1)缺#include ; (2)scanf(“%f”,a); 改为 scanf(“%f”,&a);
2、 (1)缺sum=0; (2)for(i=1; i<=3; i++) 改为for(i=0;i<3;i++)
3、 (1)p1=p2 改为 p1=p2 (2)swap(&a, p) 改为swap(&a, p)
4、 (1)在if(m<0)语句后添加else if(m==0) a=1; (2) 添加 return(a);
五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)
1、 (1)x=0; (2)if(n==x) (3)s++;或s=s+1;
2、 (4)&num[i] (5)max< num[i] (6)num[i]!=0
3、 (7)n-i-1 (8)a[j]>a[j+1] (9)a[j+1]=temp
4、 (10)count=0; (11)n%10 (12)n>0或n!=0或n
六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)
1、 ###
2、 main i=1 j=2 k=2
sub i=1 j=2 k=1 x=2
sub i=1 j=2 k=1 x=3
七、编程题(8分)
#include
main()
{
int i,j, flag=0;
char str1[90],str2[90];
gets(str1);
gets(str2);
i=0;
do{
flag=strcompare(str1[i],str2[i]);
i++;
}while(str1[i]!=’’ && str2[i]!=’’ &&flag=0);
if(flag<0)printf(“%s小于%s ”,str1,str2);
else if(flag==0) printf(“%s 等于%s ”,str1,str2);
else printf(“%s大于%s ”,str1,str2);
printf(“两个字符串中相同的字串为:”);
j=0;
i--; 后3句可用str1[i]=’’; printf(“%s”,str1);代替//用str2也可以。
while(j<i){printf(“%c”,str1[i]);j++;} span=""> </i){printf(“%c”,str1[i]);j++;}>
}
int strcompare(char c1,char c2)
{
int v;
v=c1-c2;
return v;
}
1. 课题功能描述
学校中要请一些同学做一项问卷调查,假设学校学生的学号范围为1到1000的整数。为了调查的客观性,先用计算机生成了N个1到1000之间的随机整数(N≤300),对于其中重复的整数,只保留一个,把其余相同的整数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。输入N,最后输出按学号从小到大排序的参加调查的学生学号及参加问卷调查学生的人数。
2. 问题详细描述
程序运行时,由用户输入随机产生的数据的个数N,然后程序产生N个1到1000范围内的随机整数、去掉其中的重复数、排序,按学号从小到大排序输出参加调查的学生学号及人数。
3. 问题的解决方案
按照程序要求,主要解决产生随机数、去掉重复数和排序问题。
本程序应采用模块化设计方法,设计几个功能模块。例如方案一(仅供参考):
l 产生N个1到1000范围内的随机整数
l 去掉N个数中的重复数
l 使用冒泡法可选择法按从小到大的顺序排序
例如方案二(仅供参考):
l 产生N个1到1000范围内的随机整数
l 使用插入排序法:边排序边去掉重复数
主函数中控制输入、函数调用和输出。
4. 主要关键问题
产生N个1到1000范围内的随机整数
使用rand()函数(无参)可产生随机整数,每调用1次rand()就产生1个随机数。利用求余运算得到1到1000范围内的随机数。
为使每次运行程序,rand()函数产生不同的随机数,要调用一次srand函数:
srand(time(NULL));
这些函数涉及到的头文件有
#include
#include
例如产生10个随机整数的程序:
#include
#include
#include
void main()
{
srand(time(NULL));
int a[10],i;
for (i=0;i<10;i++)
a[i]=rand();
for (i=0;i<10;i++)
cout<<a[i]<<'\t';
智慧树知到《Python程序设计基础(山东联盟)》章节测试答案
绪论
1、学好Python程序设计要注意的几个问题是
A、多看多练
B、多想多整理
C、多交流多请教
D、只看视频,不思考、不练习
正确答案:ABC
2、本门课程将主要介绍哪些内容
A、运算符
B、内置函数
C、常用数据类型
D、文件 *** 作
正确答案:ABCD
第一章测试
1、下面特点属于Python语言的有哪些?
A、开源
B、免费
C、跨平台
D、解释执行
正确答案:ABCD
2、Python支持函数式编程。
正确答案:√
3、对于Python程序,对代码缩进的要求非常严格。
正确答案:√
4、一般建议,每行Python代码的长度不要超过屏幕宽度,如果确实太长的话,应使用续行符。
正确答案:√
5、一般来说,程序中的重要代码应加上适当的注释。
正确答案:√
6、下面导入标准库对象的语句,正确的有?
A、from math import sin
B、from random import random
C、from math import
D、import
正确答案:ABC
第二章测试
1、Python无法表示99999999999999999999这样大的整数。
正确答案:X
2、集合中的元素都是唯一的,不会有重复。
正确答案:√
3、Python中变量的类型是动态的,随时可以变化。
正确答案:√
4、可以使用break作为变量名。
正确答案:X
5、Python支持复数以及相关的运算。
正确答案:√
6、Python中没有++和--这两个运算符。
正确答案:√
第三章测试
1、已知x = [1, 2, 3],执行语句xappend(4)之后,x的值是什么?
A、[1, 2, 3, 4]
B、[4]
C、[1, 2, 3]
D、4
正确答案:A
2、已知x = [1, 2, 3, 4, 5, 6, 7],那么xpop()的结果是?
A、1
B、4
C、7
D、5
正确答案:C
3、已知x = [1, 2]和y = [3, 4],那么x+y的结果是?
A、3
B、7
C、[1, 2, 3, 4]
D、[4, 6]
正确答案:C
4、sum([ii for i in range(3)])的计算结果是?
A、3
B、5
C、2
D、14
正确答案:B
5、字典的“键”和集合的元素都是唯一的,不允许重复。
正确答案:√
6、字典中元素的“值”是可以重复的,不同的“键”可以对应相同的“值”。
正确答案:√
第四章测试
1、在循环结构中不能包含选择结构。
正确答案:X
C语言程序设计第三版谭浩强课后习题答案完整版
第一章
15请参照本章例题,编写一个C程序,输出以下信息:
Very Good!
解:
mian()
{printf(“”);
printf(“\n”);
printf(“Very Good!\n”);
printf(“\n”);
printf(“”);
}
16 编写一个程序,输入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<b)
max=b;
if(max<c)
max=c;
printf(“最大数为:“%d”,max);
}
第三章
36写出以下程序运行的结果。
main()
{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c %c”,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
37 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
解:
#include <stdioh>
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
39求下面算术表达式的值。
(1)x+a%3(int)(x+y)%2/4
设x=25,a=7,y=47
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=35,y=25
(1)25
(2)35
310写出程序运行的结果。
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
312 写出下面表达式运算后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=12,y=24,z=-36,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a=_3_ _b=_4_ _c=_5
x=1200000,y=2400000,z=-3600000
x+y=_3600_ _y+z=-120_ _z+x=-240
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=12,y=24,z=36;
char c1=’a’,c2=’b’;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%52f y+z=%52f z+x=%52f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)");
}
4.7用scanf下面的函数输入数据,使a=3,b=7,x=85,y=7182,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=85_y=7182
_c1=A_c2=a
4.8设圆半径r=15,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2314r;
Sa=314rr;
Sb=4Sa;
Va=4314rrr/3;
Vb=Sah;
printf("C1=%2f\n",C1);
printf("Sa=%2f\nSb=%2f\nVa=%2f\nVb=%2f\n",Sa,Sb,Va,Vb);
}
4.9输入一个华氏温度,要求输出摄氏温度。公式为
c=5(F-32)/9
输出要求有文字说明,取位2小数。
main()
{float F,c;
scanf("%f",&F);
c=5(F-32)/9;
printf("c=%2f",c);
}
4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
char c1,c2;
与
int c1,c2;
是否无条件的等价?
#include"stdioh"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’);
file:///C|/Documents and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版txt(第 1/19 页)[2010-5-10 9:14:34]
file:///C|/Documents and Settings/Administrator/桌面/C语言程序设计第三版谭浩强课后习题答案完整版txt
15请参照本章例题,编写一个C程序,输出以下信息:
Very Good!
解:
mian()
{printf(“”);
printf(“\n”);
printf(“Very Good!\n”);
printf(“\n”);
printf(“”);
}
16 编写一个程序,输入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<b)
max=b;
if(max<c)
max=c;
printf(“最大数为:“%d”,max);
}
第三章
36写出以下程序运行的结果。
main()
{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c %c”,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
37 要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
解:
#include <stdioh>
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
39求下面算术表达式的值。
(1)x+a%3(int)(x+y)%2/4
设x=25,a=7,y=47
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=35,y=25
(1)25
(2)35
310写出程序运行的结果。
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
312 写出下面表达式运算后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=12,y=24,z=-36,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
a=_3_ _b=_4_ _c=_5
x=1200000,y=2400000,z=-3600000
x+y=_3600_ _y+z=-120_ _z+x=-240
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=12,y=24,z=36;
char c1=’a’,c2=’b’;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%52f y+z=%52f z+x=%52f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("%s %s %d%s\n","c1=’a’","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=’a’","or",c2,"(ASCII)");
}
4.7用scanf下面的函数输入数据,使a=3,b=7,x=85,y=7182,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=85_y=7182
_c1=A_c2=a
4.8设圆半径r=15,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2314r;
Sa=314rr;
Sb=4Sa;
Va=4314rrr/3;
Vb=Sah;
printf("C1=%2f\n",C1);
printf("Sa=%2f\nSb=%2f\nVa=%2f\nVb=%2f\n",Sa,Sb,Va,Vb);
}
4.9输入一个华氏温度,要求输出摄氏温度。公式为
c=5(F-32)/9
输出要求有文字说明,取位2小数。
main()
{float F,c;
scanf("%f",&F);
c=5(F-32)/9;
printf("c=%2f",c);
}
4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:
char c1,c2;
与
int c1,c2;
是否无条件的等价?
#include"stdioh"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(’\n’);putchar(c2);putchar(’\n’);
switch(place)
{ case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序数字为;");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3: printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case 2: printf("%d,%d",ten,indiv);
printf("\n反序数字为:");
printf("%d%d\n",indiv,ten);
break;
case 1: printf("%d",indiv);
printf("\n反序数字为:");
printf("%d\n",indiv);
break;
}
}
第五章
58 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10% ;利润高于10万元,低于20万元(100000<I≤200000)时,其中10万元按10%提成,高于10万元的部分,可提成75% ;200000<I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;400000<I≤600000时,高于40万元的部分按3%提成;600000〈I≤1000000时,高于60万的部分按15%提成;I>1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。
解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按75%提成。
(1) 用if语句编程序。
#include <stdioh>
main()
{ long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
bon1=10000001; /利润为10万元时的奖金/
bon2=bon1+1000000075; /利润为20万元时的奖金/
bon4=bon2+200000005; /利润为40万元时的奖金/
bon6=bon4+200000003; /利润为60万元时的奖金/
bon10=bon6+4000000015; /利润为100万元时的奖金/
printf("请输入利润i:");
scanf("%ld",&i);
if(i<=100000)
bonus=i01; /利润在10万元以内按01提成奖金/
else if(i<=200000)
bonus=bon1+(i-100000)0075; /利润在10万至20万元时的奖金/
else if(i<=400000)
bonus=bon2+(i-200000)005; /利润在20万至40万元时的奖金/
else if(i<=600000)
bonus=bon4+(i-400000)003; /利润在40万至60万元时的奖金/
else if(i<=1000000)
bonus=bon6+(i-600000)0015; /利润在60万至100万元时的奖金/
else
bonus=bon10+(i-1000000)001; /利润在100万元以上时的奖金/
printf(”奖金是%102f\n",bonus);
}
此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20万时,奖金应由两部分组成:①利润为10万元时应得的奖金。即100000ⅹ01;②10万元以上部分应得的奖金。即(num-100000)ⅹ0075。同理,20万~40万这个区间的奖金也应由两部分组成:①利润为20万元时应得的奖金,即100000ⅹ01ⅹ10万ⅹ0075;②20万元以上部分应得的奖金,即(num-200000)ⅹ005。程序中先把10万、20万、40万、60万、100万各关键点的奖金计算出来,即bon1、bon2、bon4、bon6、hon10;然后再加上各区间附加部分的奖金。
(2) 用switch语句编程序。
输入利润i,确定相应的提成等级branch
根据branch确定奖金值
0 奖金=i01
1 奖金=bon1+(i-105)0075
2 奖金=bon2+(i-2105)005
3
4 奖金=bon4+(i-4105)003
5
6 奖金=bon6+(i-6105)0015
7
8
9
10 奖金=bon10+(i-106)001
输出奖金
#include <stdioh>
main()
{ long i;
float bonus, bon1, bon2, bon4, bon6, bon10;
int c;
bon1=10000001;
bon2=bon1+1000000075;
bon4=bon2+200000005;
bon6=bon4+200000003;
bon10=bon6+4000000015;
printf("请输入利润i:");
scanf("%ld",&i);
c=i/100000;
if(c>10) c=10;
switch(c)
{ case 0: bonus=101;break;
case 1: bonus=bon1+(i-100000)0075;break;
case 2 :
case 3: bonus=bon2+(i-200000)005; break;
case 4:
case 5: bonus=bon4+(i-400000)003;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)0015;break;
case 10: bonus=bon10+(i-1000000)001;
}
printf("奖金是%102f",bonus);
}
59 输入4个整数,要求按由大到小的顺序输出。
解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。
#include <stdioh>
main()
{ int t,a,b,c,d;
printf("请输入4个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n a=%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=a; b=c; c=t;}
if(b>d) {t=b; b=d; d=t;}
if(c>d) {t=c; c=d; d=t;}
printf("排序结果如下:\n");
程序源码如下:
#define _CRT_SECURE_NO_WARNINGS//VS环境下需要,VC不需要
#include<stdioh>
void main()
{
char a;//定义一个字符
printf("请输入一个字符:");//文字提示
scanf("%c", &a);//输入一个字符
printf("其后续字符为:");//文字提示
printf("%c\n", a + 1);//输出其之后的字符
}
程序运行结果如下:
扩展资料:
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如、#、@等)在计算机中存储时也要使用二进制数来表示。
而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。其中:
1、0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;
通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响 。
2、32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
3、65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;
偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号
常见ASCII码的大小规则:0~9<A~Z<a~z。
1)数字比字母要小。如 “7”<“F”;
2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。
几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。
参考资料来源:百度百科-ASCII
2018年计算机二级考试C语言试题及答案(2)
选择题(每小题1分,共40分)
1[单选题] 若有定义语句:double a, P=&a;以下叙述中错误的是()。
A定义语句中的号是一个间址运算符
B定义语句中的号是一个说明符
C定义语句中的P只能存放double类型变量的地址
D定义语句中,P=&a把变量a的地址作为初值赋给指针变量P
参考答案:A
参考解析:在变量定义double a, P=&a;中,号是一个指针运算符,而非间址运算符,所以A错误。
6[单选题] 若有定义语句:int x=10;,则表达式x-=x+x的值为()。
A0
B-20
C-10
D10
参考答案:C
参考解析:算术运算符+的优先级高于-=,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C。
2[单选题] 若有定义语句:double x,y,px,py;执行了px=&x;py=&y;之后,正确的输入语句是()。
Ascanf(”%If%le”,px,py);
Bscanf(”%f%f”&x,&y);
Csceanf(”%f%f”,xy);
Dscanf(”%If%If'’,x,y);
参考答案:A
参考解析:因为x,y都是double型数据,所以输入时的格式字符应为%lf,所以B与C错误。D选项中scanf("%lf%If",x,y);应为scanf(“%If%If"”,&x,&y);。
3[单选题] 下列数据结构中,属于非线性结构的是()。
A循环队列
B带链队列
C二叉树
D带链栈
参考答案:C
参考解析:树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。
4[单选题] 对于循环队列,下列叙述中正确的是()。
A队头指针是固定不变的
B队头指针一定大于队尾指针
C队头指针一定小于队尾指针
D队头指针可以大于队尾指针,也可以小于队尾指针
参考答案:D
参考解析:循环队列的队头指针与队尾指针都不是固定的,随着入队与出队 *** 作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。
5[单选题] 若变量已正确定义,在if(W)printf(”%d\n”,k);中,以下不可替代w的是()。
Aa<>b+c
Bch=getchar()
Ca==b+c
Da++
参考答案:A
参考解析:选项A是非法的表达式,C语言中没有<>运算符。
6[单选题] 下列排序方法中,最坏情况下比较次数最少的是()。
A冒泡排序
B简单选择排序
C直接插入排序
D堆排序
参考答案:D
参考解析:冒泡排序与筒单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。
7[单选题] 数据库管理系统是()。
A *** 作系统的一部分
B在 *** 作系统支持下的系统软件
C一种编译系统
D一种 *** 作系统
参考答案:B
参考解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据 *** 纵、数据维护、控制及保护和数据服务等。是一种在 *** 作系统之上的系统软件。
8[单选题] 以下选项中,能用作用户标识符的是()。
A_0_
B8_8
Cvoid
Dunsigned
参考答案:A
参考解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B中以数字8开头,所以错误。C与D中用的是关键字void与unsigned,所以错误。
9[单选题] 以下叙述中错误的是()。
A使用三种基本结构构成的程序只能解决简单问题
B结构化程序由顺序、分支、循环三种基本结构组成
CC语言是一种结构化程序设计语言
D结构化程序设计提倡模块化的设计方法
参考答案:A
参考解析:使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。
10[单选题] 下列叙述中正确的是()。
A栈是“先进先出”的线性表
B队列是“先进后出”的线性表
C循环队列是非线性结构
D有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
参考答案:D
参考解析:栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。
11[单选题] 以下不构成无限循环的语句或语句组是()。
An=0:
do{++n;}while(n<=0);
Bn=0;
while(1){n++;}
Cn=10;
while(n);{n--;}
Dfor(n=0,i=1;;i++)n+=i;
参考答案:A
参考解析:选项A中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以wilile(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。
12[单选题] 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。
A1
B0
C2
D不知道a的值,不能确定
参考答案:A
参考解析:逻辑或”||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。
13[单选题] 下列选项中不属于结构化程序设计原则的是()。
A可封装
B自顶向下
C模块化
D逐步求精
参考答案:A
参考解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。
14[单选题] 某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。
A10
B8
C6
D4
参考答案:C
参考解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6个。
15[单选题] 支持子程序调用的数据结构是()。
A栈
B树
C队列
D二叉树
参考答案:A
参考解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。
以上就是关于C语言程序设计2015A卷-全部的内容,包括:C语言程序设计2015A卷-、求VC程序设计题答案,题目:选取参加问卷调查的学生(C)...哪位大大知道麻烦告诉我一下啊..急用!!!!、智慧树知到《Python程序设计基础(山东联盟)》章节测试答案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)