(完整word版)C语言长整数运算
- 格式:doc
- 大小:41.01 KB
- 文档页数:4
第1次客观题作业一、单选题(共30题,每题3分)1 .下面表示正确的是__A___。
A.C语言中的逗号是一种运算符B.在C语言中,一行只能有一个语句C.C中的变量不区分大小写D.c中的关键字可以做为变量名2 .字符型常量在内存中存放的是__A____代码值。
A.ASCII B.二进制C.十进制D.八进制3 .以下不正确的C语言标识符是(C )。
A.AB1 B._ab3 C.4ab D.a2_b4 .以下运算符中优先级最低的运算符是_D____。
A.&& B.& C.|| D.=5 .在C语言中,要求运算数必须是整型的运算符是___A___。
A.% B./ C.< D.!6 . C语言程序的基本单位是__C_____。
A.程序行B.语句C.函数D.字符7 .将高级语言编写的程序翻译成目标程序的是___B____程序。
A.解释程序B.编译程序C.汇编程序D.源程序8 .以下选项中,与k=n++完全等价的表达式是__A___。
A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+19 .下列(A )不属于结构化程序设计的循环结构。
A.For B.While C.if-else D.do-while10 .以下叙述中错误的是__A___。
A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识11 .若有输入语句scanf( %d%d%d,&x,&y,&z);则不能使x值为5,y值为6,z值为7的输入是__A____。
A.5,6 ,7 B.5回车换行 6 7 C.5 6 7 D.5,6,712 .若i,j已定义为int类型,则下程序段中内循环体的总的执行次数是( B )。
for (i=3;i>0;i--) for (j=0;j<=4;j++){...}A.12 B.15 C.16 D.2013 .下列选项中,合法的C语言关键字是_D___。
c语言累加100000次求和溢出在C语言中,当累加的值超过`INT_MAX`时,会发生溢出。
`INT_MAX`是整型变量能够表示的最大值,它通常为2147483647(这取决于系统和编译器)。
如果你需要累加的次数是100000次,并且每次累加的值很大,那么你应该使用一个更大的数据类型,例如`long long`,或者使用特殊的库函数来处理大数。
以下是一个简单的例子,使用`long long`类型来避免溢出:
```c
#include <stdio.h>
int main() {
long long sum = 0; // 使用 long long 类型以避免溢出
for (int i = 0; i < 100000; i++) {
sum += (long long)1e9; // 每次累加 1e9,这里使用了强制类型转换
}
printf("Sum: %lld\n", sum);
return 0;
}
```
在这个例子中,我们使用了`long long`类型来存储累加的结果,并且每次累加的值是1e9。
注意,这里使用了强制类型转换来确保累加的值被当作`long long`类型处理。
如果你需要处理的数字非常大,超出了`long long`类型的范围,那么你可能需要使用一些特殊的大数库或者自行实现大数运算。
1. C语言以_____________ 作为语句的结束字符2. 如变量a,b,c都是整数,则代数式a b c的C语言表达式3为 ___________ 。
3. C语言支持模块化程序设计方法,C程序中的模块是。
4. 表达式21/6*6的运算结果是____________________。
5. 定义符号常量TITLE为字符串“ JAV”的命令是。
6. 要使用库函数,必须使用______________ 命令把存放人该库函数声明的 _______文件包含到相应的源程序文件中。
7. C语言中的函数通常由____________ 和 _____________ 组成。
8. 存放字符串〃beijing 〃所需空间为 ______________字节。
9. 表达式3*20/4%10的计算结果为______________________ 。
10. 已知int x=10;执行x+=x-=x-x;后,x 的值为 __________________ 。
11. 标识符break不能作为用户标识符,是因为break12. 存储字符串"\0"需要占用_________________ 字节的存储单元。
13. 有int x=5;x=-5;贝U x 的值为____________ 。
14. 定义x,y为双精度型变量的语句是 _______________________ 。
15. C程序的基本单位是函数,一个C程序至少包含一个 ________函数。
16. 定义符号常量NUM为10的C语言表达式是_____________ 。
17. 在内存中存储“ A'要占用______ 个字节18. ____________ 是构成C语言的基本单位。
19. 设x的值为12, y的值为2;则表达式x%=(y+=3)运算后x的值为 ________________ 。
20. C语言中,把“战争与和平”定义为符号常量BOOK勺表达式为 _________________ 。
目录第1-3章C语言基础知识习题 (2)1 选择题 (2)2 填空题 (7)3 答案及部分解析 (9)第4章选择结构习题 (11)1 选择题 (11)2 填空题 (17)3 答案及部分解析 (23)第5章循环结构习题 (26)1 选择题 (26)2 填空题: (32)3 答案及部分解题分析 (39)第6章数组习题 (41)1. 单项选择题 (41)2. 填空题 (44)3. 判断题 (45)4. 程序填空题 (45)5. 阅读程序,分析程序的功能。
(49)第7章函数习题 (55)1. 单项选择题 (55)2. 填空题 (56)3. 判断题 (57)4. 程序填空题 (58)5. 写出下列程序运行结果 (59)第8章指针习题 (67)1 选择题 (67)2 填空题 (69)第1-3章C语言基础知识习题1 选择题1. 以下不是C语言的特点的是()。
A、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2.下列字符序列中,不可用作C语言标识符的是()。
A.abc123 B.no.1 C._123_ D._ok3.正确的C语言标识符是()。
A._buy_2 B.2_buy C.?_buy D.buy?4. 请选出可用作C语言用户标识符的一组标识符()。
A.void B.a3_b3 C.For D.2adefine _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。
A.\\ B.\0xAA C.\t D.\06.不属于C语言关键字的是()。
A.int B.break C.while D.character7.是C语言提供的合法关键字的是()。
A.Float B.signed C.integer D.Char8.以下不能定义为用户标示符的是()。
A.scanf B.V oid C._3com_ D.int9.一个C程序是由()。
【个人观点】练习1-1#include<stdio.h>intmain(void){printf("15减去的结果是%d\n",15 - 37); return(0);}练习1-2#include<stdio.h>intmain(void){printf("风\n林\n火\n山\n");return(0);}练习1-3#include<stdio.h>intmain(void){printf("喂!\n您好!\n\n再见\n");return(0);}练习1-4#include<stdio.h>intmain(void){intno;printf("请输入一个整数:");scanf("%d",&no);printf("它与10的和是:%d\n",10 + no); return(0);}练习1-5#include<stdio.h>intmain(void){printf("该数减去10的结果是:%d\n",no - 10); printf("请输入一个整数:");scanf("%d",&no);intno;return(0);}练习1-6#include<stdio.h>intmain(void){puts("风");puts("林");puts("火");puts("山");}练习1-7#include<stdio.h>intmain(void){intn1,n2;intwa;puts("请输入两个整数:"); printf("整数:"); scanf("%d",&n1); printf("整数:"); scanf("%d",&n2); wa = n1 * n2;printf("它们的和是:%d\n",wa); return(0);}练习1-8#include<stdio.h>intmain(void){intn1,n2,n3;intwa;puts("请输入两个整数:"); printf("整数:"); scanf("%d",&n1); printf("整数:"); scanf("%d",&n2); printf("整数:"); scanf("%d",&n3); wa = n1 + n2 + n3;printf("它们的和是:%d\n",wa); return(0);}。
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}=========================================================== 【程序2】题目:企业发放的奖金根据利润提成。
利润(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%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=*0.1;bonus2=bonus1+*0.75;bonus4=bonus2+*0.5;bonus6=bonus4+*0.3;bonus10=bonus6+*0.15;if(i<=)bonus=i*0.1;else if(i<=)bonus=bonus1+(i-)*0.075;else if(i<=)bonus=bonus2+(i-)*0.05;else if(i<=)bonus=bonus4+(i-)*0.03;else if(i<=)bonus=bonus6+(i-)*0.015;elsebonus=bonus10+(i-)*0.01;printf("bonus=%d",bonus);}=========================================================== 【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第 01 篇基础程序设计01 闪烁的LED/*名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h〉#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x-—){for(i=0;i〈120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include〈reg51。
h〉#include<intrins。
h>#define uchar unsigned char #define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x—-){for(i=0;i〈120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/*名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include〈intrins.h>#define uchar unsigned char #define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x——){for(i=0;i〈120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i〈7;i++){P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51。
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4.组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf(”\n");for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j〈5;j++)for (k=1;k〈5;k++){if (i!=k&&i!=j&&j!=k)/*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(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%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2。
程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld”,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0。
75;bonus4=bonus2+200000*0。
5;bonus6=bonus4+200000*0。
3;bonus10=bonus6+400000*0.15;if(i〈=100000)bonus=i*0.1;else if(i〈=200000)bonus=bonus1+(i-100000)*0。
经典C语言程序设计100例1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值19.求解"完数" 20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5! 27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序 38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法45.使用register定义变量方法46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与& 52.学习使用按位或|53.学习使用按位异或^ 54.取一个整数从右端开始的4~7位。
55.学习使用按位取反~ 56.用circle画圆形57.学用line画直线58.用rectangle画方形59.画图综合例子60.画图综合例子261.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse 64.利用ellipse and rectangle画图65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n 77.填空练习(指向指针的指针) 78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例1 92.时间函数举例293.时间函数举例3 94.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1100.文件操作应用2--------------------------------------------------------------------------------c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
第一章1、8051单片机由哪几部分组成?8位中央处理器CPU、片内振荡电器及其时钟电路,4个8位并行I/O口(其中P0和P2可用于外部存储器的扩展),2个16位定时器/计数器,5个中断源(具有2个中断优先级),全双工串行口,布尔处理器。
2、8051单片机有多少个特殊功能寄存器?它们可以分为几组,各完成什么主要功能?P7 1-3表答:8051单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。
这些特殊功能寄存器颁在以下各个功能部件中:(1)CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);主要完成运算和逻辑判断功能;(2)中断系统:IP、IE;完成中断管理(3)定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1;完成定时或者计数功能(4)并行I/O口:P0、P1、P2、P3完成I/O口功能,其中部分I/O口带有可选的纵向拓展功能(5)串行口:SCON、SBUF、PCON。
主要完成数据的串行发送和接收3、决定程序执行顺序的寄存器是哪几个?它是几位寄存器?是否为特殊功能寄存器?它的内容是什么信息?是程序计数器PC,它是16位寄存器,不是特殊功能寄存器,它的内容是下一条将要执行的程序的地址4、DPTR是什么特殊功能寄存器?DPTR的用途是什么?它由哪几个特殊功能寄存器组成?DPTR是16位数据指针寄存器,它由两个8位特殊功能寄存器DPL(数据指针低8位)和DPH(数据指针高8位)组成,DPTR用于保存16位地址,作地址寄存器用,可寻址外部数据存储器,也可寻址程序存储器。
5、8051的引脚有多少I/O线?它们和单片机对外的地址总线和数据总线有什么关系?地址总线和数据总线各是多少位?8051单片机的40个引脚中有32根I/O口线,P0口8根I/O线可以在外扩存储器时分时复用作为外部存储器的低8位地址总线和8位数据总线,P2口作为高8位地址总线,P3.6和P3.7分别作为外部存储器的写和读控制线。
#include
#include
#define N 500
void plus() //加法
{
char stra[N],strb[N];
int numa[N],numb[N],c[N],len,i;
cout<<"请输入要进行加法运算的两个长整数"<
len=strlen(stra)>strlen(strb)?strlen(stra):strlen(strb);
for(i=0;i
for(i=strlen(stra);i
for(i=0;i
for(i=strlen(strb);i
for(i=0;i
c[len]=0;
for(i=0;i
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
if(c[len]!=0) cout<
cout<
void minus() //减法
{
char stra[N],strb[N];
int numa[N],numb[N],c[N],len,i,flag=0;
cout<<"请输入要进行减法运算的两个长整数"<
len=strlen(stra)>strlen(strb)?strlen(stra):strlen(strb);
for(i=0;i for(i=0;i for(i=0;i for(i=0;i for(i=0;i for(k=0;k }
for(i=strlen(stra);i
for(i=0;i
for(i=strlen(strb);i
for(i=0;i
c[i]=numa[i]+10-numb[i];
numa[i+1]--;
}
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
c[strlen(stra)-1]=c[strlen(stra)-1]%10;
for(i=strlen(stra)-1;i>=0;i--) //输出c,从第一个不为的位置输出
{
if(c[i]!=0)
flag=1;
if(flag==1)
cout<
cout<
void multiply()
{
char stra[N],strb[N];
int numa[N],numb[N],i,j,k,dm=0;
int c[N][N],d[2*N];
cout<<"请输入要进行乘法运算的两个长整数"<
for(i=0;i
for(i=0;i<2*N;i++)
d[i]=0;
for(i=0;i
for(i=0;i
for(i=1;i
c[0][k]+=c[i][j];
d[dm++]=c[0][k];
}
for(k=(strlen(stra)-strlen(strb)+1);k
for(i=1;i<(strlen(strb)-1);i++)
for(j=0;j
c[strlen(strb)-1][k]+=c[i][j];
d[dm++]=c[strlen(strb)-1][k];
}
for(i=(dm-1);i>0;i--) //整理d,每一位大于的向上一位置进
{
d[i-1]=d[i-1]+d[i]/10;
d[i]=d[i]%10;
}
cout<
int main()
{ int choice;
while(1)
{
cout<<"\n";
cout<<"\n\t\t 长整数的运算 ";//输入一个选择功能菜单
cout<<"\n";
cout<<"\n\t\t 1-------长整数的加法 ";
cout<<"\n\t\t 2-------长整数的减法 ";
cout<<"\n\t\t 3-------长整数的乘法 ";
cout<<"\n\t\t 0-------退 出 ";
cout<<"\n";
cout<<"\n\t\t 请选择菜单号(--3)进行操作:";
cin>>choice;
switch(choice)
{
case 1:
plus() ;
break;
case 2:
minus();
break;
case 3:
multiply();
break;
case 0:
return 0;
}
}
return 1;
}