第六次c语言作业
安徽大学实验平台C语言答案
安徽大学实验平台C语言答案实验三C基本数据类型及运算1. 编程根据需要定义相关变量键盘输入10.0、20.6、5.0三个实数分别赋给相关三个变量输出该3个变量的和s、乘积p和平均值a。
2. 编程输入球的半径计算球体表面积和球体积。
3. 编程定义6个变量通过键盘将“10 10 40000 a 3.14 hello”这六个值分别赋给相应变量然后在屏幕上输出变量的值每行输出一个变量。
4. 编程从键盘接收1个字符给变量s1 1个字符串允许带有空格给字符数组s2 输出字符变量s1的ASCII码值及字符数组s2中的字符串。
5. 编程从键盘输入二个整数分别赋给整型变量a、b 将它们按由小到大的顺序输出。
6. 编程调用标准库函数sin x 计算6800的正弦值此题为选做。
7. 编程键盘输入一个实数赋给变量x 计算y=x*x*x+x*x+x 的值分别输出y值、y值的整数部分和小数部分此题为选做。
8. 编程键盘输入四个整数分别赋给整型变量a、b、c、d 用三目运算方法将它们按由大到小的顺序输出此题为选做。
1. #includemain(){float x,y,z,s,p,a;scanf("x=%fy=%fz=%f",&x,&y,&z);s=x+y+z;p=x*y*z;a=s/3;printf("s=%f,p=%f,a=%f",s,p,a);}2. #includemain(){float r,s,v;printf("input r");scanf("%f",&r);s=4*3.14*r*r;v=4/3*3.14*r*r*r;printf("s=%f,v=%f",s,v);}3. #includemain(){int a,b;long c;char d,st[6];float e;scanf("%d%d%ld%c%f%s",&a,&b,&c,&d,&e,st);printf("a=%d\n,b=%d\n,c=%d\n,d=%c\n,e=%f\n,ch=%s",a, b,c,d,e,st); }4. #includemain(){ char s1,s2[6];scanf("%c%s",&s1,s2); printf("s1=%d,s2=%s",s1,s2); }5. #includemain(){ int a,b;scanf("a=%db=%d",&a,&b); if (a<b)< p="">printf("a=%db=%d",a,b); elseprintf("b=%da=%d",b,a);}6. #include#includemain(){float a,b;scanf("%f",&a);b=sin(a);printf("%f",b);}7. #includemain(){float x,y,b;int a;scanf("%f",&x);y=x*x*x+x*x+x;a=(int)y;b=y-a;printf("%f\n%d\n%f\n",y,a,b);} 实验四C分支结构程序设计1. 编程从键盘输入一个字符如是大写字母则输出相应小写字母如是小写字母则原样输出其它字符输出“Not letter!”。
C语言第五六次作业
——第四弹
。。原来真正变态的是这两作业哇~ 原本是做完第五次作业等大家数分期中考完以后给大家,结果 直接出了第六次。就顺便做了。买一送一还包邮哦亲~ 虽然这两次作业比较难。理解起来困难无比。。不过考试的时 候不会有这么变态的题目啦~放心
当前编程题:11级第五次作业---凸多边形面积1. 【问题描述】给出平面上一组顶点的坐标,计算出它们所围成的凸多 边形的面积。 【输入形式】从标准输入读取顶点坐标。格式为:第一行是点的个数 N(3≤N≤15),后面紧接着N行,每行两个数字 (由空格隔开),分 别表示该点的X、Y坐标(0≤X,Y≤32767)。所有点的坐标互不相同, 且按顺时针次序给出。 输入数据确保该多边形是一个凸多边形。 【输出形式】向标准输出打印一个浮点数,是该多边形的面积。该浮 点数保留两位小数。 【输入样例】 4 3 3 3 0 1 0 1 2 【输出样例】 5.00 【样例说明】输入数据表示了如图所示的四边形。其面积为5.00。 提示:求三角形面积可用海伦公式,求平方根可用<math.h>头文件中 定义的sqrt函数。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为: points.c。
当前编程题:11级第五次作业---求两组整数的异或集 3.【问题描述】从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素 不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序 输出(即两组整数集“异或”)。 【输入形式】首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上 输入第二组整数,以一个空格分隔,行末有回车换行。 【输出形式】按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现 的整数,以一个空格分隔各个整数)。 【样例输入】 5 1 4 32 8 7 9 -6 5 2 87 10 1 【样例输出】 87 32 10 9 8 7 4 2 -6 【样例说明】第一组整数为5 1 4 32 8 7 9 -6,第二组整数分别为 5 2 87 10 1。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5 和1),并从大到小顺序排序后结果为87 32 10 9 8 7 4 2 -6。 【评分标准】该题要求输出两组整数的异或集,共有5个测试点,提交程序文件名 为xor.c。
C语言第六章复习题(含答案)
1.t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( B )(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1(C) 循环控制表达式不合法(D) 以上说法都不对2.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是 ( D )。
(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和3.以下程序段的输出结果是( C )。
int x=3;do{ printf("%3d",x-=2); }while(!(- -x));(A)1 (B)30 (C)1 -2 (D)死循环4.以下程序中,while循环的循环次数是( D)。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}(A) 1 (B) 10(C) 6 (D) 死循环,不能确定次数5.下面程序的输出是( B )。
(A)741 (B)852 (C)963 (D)875421main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}}6.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A)。
for (i=5;i;i--)for(j=0;j<4;j++){...}(A)20 (B)25 (C)24 (D)307.执行语句: for(i=l;i++<4;;);后,变量i的值是(C)。
(A) 3 (B) 4 (C) 5 (D) 不定8.假定a和b为int型变量,则执行以下语句后b的值为( D )。
C语言第六章习题答案
6.1 用筛选法求100之内的素数. #include <stdio.h>#define N 101void main(){ int i,j,line,a[N];for(i=1;i<=100;i++)a[i]=i;a[1]=0;for(i=2;i<sqrt(100);i++)for(j=i+1;j<=100;j++){ if(a[i]!=0 && a[j]!=0) if(a[j]%a[i]==0)a[j]=0;}printf("n");for(i=2,line=0;i<=100;i++) { if(a[i]!=0){ printf("%5d",a[i]); line++;if(line==10){ printf("n");line=0;}}}}6.2 用选择法对10个数排序.#define N 10main(){int i,j,min,temp,a[N];printf("请输入十个数:n"); for (i=0;i<=10;i++){ printf("a[%d]=",i);scanf("%d",&a[i]);}printf("n");for(i=1;i<=10;i++)printf("%5d",a[i]);printf("n");for (i=1;i<=9;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;}printf("n排序结果如下:n");for(i=0;i<N;i++)printf("%5d",a[i]);}6.3 对角线和:main(){float a[3][3],sum=0;int i,j;printf("请输入矩阵元素:n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("对角元素之和= 6.2f",sum); }6.4 插入数据到数组{ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j;printf("初始数组如下:");for (i=0;i<10;i++)printf("%5d",a[i]);printf("n");printf("输入插入数据:");scanf("%d",&number);end=a[9];if(number>end)a[10]=number;else{ for(i=0;i<10;i++){ if(a[i]>number){ temp1=a[i];a[i]=number;}for(j=i+1;j<11;j++){ temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}for(i=0;j<11;i++)printf("a%6d",a[i]);}6.5 将一个数组逆序存放。
蓝桥杯第六届c语言试题及答案
蓝桥杯第六届c语言试题及答案蓝桥杯第六届C语言试题及答案1. 选择题1.1. 以下哪个选项是C语言中的关键字?A. intB. integerC. varD. string答案: A1.2. C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案: A2. 填空题2.1. 在C语言中,用于定义一个整型变量的关键字是____。
答案: int2.2. C语言中,用于数组定义的关键字是____。
答案: array3. 编程题3.1. 编写一个C语言程序,计算并输出100以内所有偶数的和。
答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d\n", sum);return 0;}```3.2. 编写一个C语言程序,实现字符串反转。
答案:```c#include <stdio.h>#include <string.h>void reverseString(char* str) {int length = strlen(str);for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[] = "Hello, World!";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```4. 简答题4.1. 简述C语言中指针的概念及其用途。
计算机国二C语言考试试题 第六套
第六套1.树是结点的集合,它的根结点数目是( )A.有且只有1B.1或多于1C.0或1D.至少2分析:树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。
每个集合同时又时一棵树。
树有且只有1个根结点。
2.在设计程序时,应采纳的原则之一是( )A.不限制goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解分析:滥用goto语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。
3.下列叙述中,不属于软件需求规格说明书的作用的是( )A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析分析:软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。
它有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。
4.单个用户使用的数据视图的描述称为( )A.外模式B.概念模式C.内模式D.存储模式分析:选项A正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式为内模式。
5.SQL语言又称为( )A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言分析:结构化查询语言(Structured Query Language,简称SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。
C语言第6-7章试卷有答案
C语⾔第6-7章试卷有答案(6~7章)⼀、选择题1、能正确表⽰a和b同时为正或同时为负的逻辑表达式是A) (a>=0‖b>=0)&&(a<0‖b<0) B) (a>=0&&b>=0)&&(a<0&&b<0)C) (a+b>0)&&(a+b<=0) D) a*b>02、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是A) a\bre\'hi\'y\\\bou B) a\bre\'hi\'y\bou C) re'hi'you D) abre'hi'y\bou3、设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&&++y));的输出结果是A) 1 B) 0 C) -1 D) 24、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A) c=b=a;B) (a=c) ‖(b=c) ;C) (a=c) &&(b=c);D)a=c=b;5、以下程序的输出结果是main( ){ int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d %d ",x--,y);}A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 6、设有int x=11; 则表达式(x++ * 1/3) 的值是A) 3 B) 4 C) 11 D) 12 7、下列程序执⾏后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); } A) -32767 B) FFFE C) -1 D)8、下列程序的输出结果是A) 3 B) 3.2 C) 0 D) 3.07main(){ double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf("%d \n", d*y);}9、下列程序执⾏后的输出结果是(⼩数点后只写⼀位)main(){ double d; float f; long e; int i;i=f=e=d=20/3;printf("%d %ld %f %f \n", i,e,f,d);}A) 6 6 6.0 6.0 B) 6 6 6.7 6.7 C) 6 6 6.0 6.7 D) 6 6 6.7 6.010、设int x=1, y=1; 表达式(!x||y--)的值是A) 0 B) 1 C) 2 D) -111、以下循环体的执⾏次数是main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);}A) 3 B) 2 C) 1 D) 0 12、以下叙述正确的是A) do-while语句构成的循环不能⽤其它语句构成的循环来代替。
C语言考题2010-2011第一学期
程序基本知识答案:B main()函数是程序的入口和出口,和其它代码位置没关系。
答案:C C程序基本单位是函数。
答案:A答案:A答案:C基本数据类型和基本运算答案: B 浮点数两种表示方式,一种是普通小数方式,另一种是科学计数法。
科学计数法中间为e,前边为[1,10〕的实数表示尾数,后边为整数表示10的指数,正负均可。
答案:C 标识符开头只能是字母或下划线,不能是数字。
答案:D 单引号括起来的应该是单个字符答案:A 双引号括起来的是字符串答案:A答案:A 求余运算两边必须全为整数答案:D答案:D 这四种运算符中,非运算级别最高,算术运算比比较运算级别高,最低的是赋值运算答案:C D 项错误在于scanf从第2个参数开始应该是地址引用答案:D x先和自减1后的y相加,结果赋给y,再自加1答案:A 输入时必须包含逗号答案:C答案:A B项逻辑或两边都是假,C项做完逻辑与后才可以自加,D项括号内是赋值运算而非比较运算答案:B x+z后结果已经变成浮点数了答案:D y=0+1=1答案:D 3.5/2+11%2/2=1.75+1/2=1.75+0=1.75答案:B 数轴上一段连续区间必须用两个逻辑表达式相与得到。
答案:B 逻辑与两边明显矛盾答案:B 0.5+0=0.5第六次stop here答案:B 4.0/2+2%3=2.0+2=4.0答案:C答案:D a|b=3 ,10 右移3位为1答案:D答案:D 2+=2+4%2=4答案:D 非0值经过非运算后变成假,两个假或还是假答案:A x^y=2,2 左移两位为8答案:C答案:A 1/3结果为0,整个式子结果为0答案:A分支结构答案:A 其它三项都是如果k是0,则打印No,否则打印Yes。
答案:A 这是两步操作,n=2已经不是if结构里的了。
答案:A 条件判断为逻辑非,直接执行打印语句。
答案:C 余数为3,只能执行default后续printf(),后边没有break(),再执行case 1后边的printf().第七次stop here循环结构答案:A答案:B 两个i - -相当于i-=2答案:B 括号里的条件先比较,再将i减1答案:C 其它的i没有变化答案:A i=1 j=2 0+1+2=3j=3 3+1+3=7 依次类推,最终m为45 函数答案:A答案:D答案:B答案:C 传入实参为5和4,函数中两者比较,得到z为5,返回5+5=10并打印。
C语言200道练习题及答案
一维数组
题目1
题目2
题目3
题目4
求一维数组中的最大值 和最小值。
将一维数组中的元素逆 序存放。
查找一维数组中指定的 元素,并返回其下标。
求一维数组中所有元素 的和。
二维数组
题目5
题目6
求二维数组中所有元素的最大值和最小值 。
将二维数组转置,即行列互换。
题目7
题目8
查找二维数组中指定的元素,并返回其位 置。
C语言200道练习题 及答案
汇报人:XX
目录
• 基础知识练习题 • 数组与字符串练习题 • 函数与模块化练习题 • 指针与内存管理练习题 • 数据结构与算法练习题 • 综合应用练习题
01
基础知识练习题
变量与数据类型
声明整型变量并赋值
int a = 10;
声明字符型变量并赋值
char c = 'A';
代码优化
通过减少不必要的计算、消 除冗余代码等方式对代码进 行优化。
并行计算与多线程
了解并行计算和多线程的基 本概念,探索在程序中应用 并行计算和多线程技术提高 性能的可能性。
THANKS
感谢观看
掌握如何使用malloc()、calloc() 等函数在堆区动态分配内存空间
。
动态内存释放函数
了解如何使用free()函数释放之前 分配的内存空间,以避免内存泄漏 。
内存分配失败处理
熟悉在动态内存分配过程中,如何 处理分配失败的情况,如检查返回 值是否为NULL等。
05
数据结构与算法练习题
结构体与联合体
01
掌握如何定义指向函数的指针变量,以及如何通过函数指针调
用函数。
C语言上机考试试题6
{ int i; float sum=0; max=a[0]; min=a[0]; for(i=1;i<n;i++) { if (a[i]>max) max = a[i]; else min = a[i]; /*$1*/ sum = sum + a[i]; } return(sum/n); } int main() { float score[10],ave; int j; for(j=0;j<10;j++) scanf("%f", &score[j]); ave = average(score,10); printf("max=%6.2f min=%6.2f average=%6.2f\n",max,min,ave); } 操作说明: 在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语 句else有错误,请改正(注意:不得加行、减行、加句、减句,否则后 果自负)。该程序功能:求出n个数中的最大数、最小数和平均数。例 如:在程序中输入:1 2 3 4 5 6 7 8 9 10 结果:max=10.00 min= 1.00 average=5.40。 答案:if (a[i]<min) min = a[i]; 运行样例2行 运行样例1: 1 2 3 4 5 6 7 8 9 10 结果:max=10.00 min= 1.00 average=5.40 3. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位 数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的 三次方+5的三次方+3的三次方。 #include <stdio.h> void main() { int i,j,k,n; printf("water flowernumber is:"); for(n=100;n<1000;n++)
C语言编程第六章作业答案
1. 输入两个正整数m和n,求其最大公约数和最小公倍数。
辗除法——辗转相除法,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。
它是已知最古老的算法,其可追溯至3000年前。
它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。
它并不需要把二数作质因子分解。
证明:设两数为a、b(a>b),求它们最大公约数(a、b)的步骤如下:用a除以b,余数为r 1。
若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得r2 .若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。
其最后一个非零余数即为(a,b)。
例如,和7890 的最大公因子是6, 这可由下列步骤看出:a b a mod b7890 51067890 5106 27845106 2784 23222784 2322 4622322 462 12462 12 612 6 0#include<stdio.h>#include<conio.h>main(){int a,b,num1,num2,temp;/*temp主要用来转换大小*/printf("please input two numbers:\n");scanf("%d,%d",num1,&num2);if(num1<num2) /*如果num2比num1大,则执行下面循环体,为调整num1要比num2大*/{temp=num1;num1=num2;num2=temp;}a=num1;b=num2;/*a比b大*/while(b!=0) /*只要b不等于0,就一直执行下面的循环体,直至整除完为止。
*/{temp=a%b;a=b;b=temp;/*以上3句调整了a,b大小,使其整除为止*/}printf("公约数:%d\n",a);printf("公倍数:%d\n",num1*num2/a); /*由公式知*/getch();}评析:关键是判断两数的大小,先排好位置,再大除小,一直除尽即可。
C语言六月考试模拟答案
【改错】:在屏幕上输出以下图形(说明:数字之间无空格)。
192288333777444466665555555555#include <stdio.h>void main(){int i,j,k;for(i=1;i<6;i++){for(k=1;k<6-i;k++)printf(" ");for(k=1;k<=i;k++)printf("%d",k); /*$ERROR1$*/j=9; /*$ERROR2$*/k=1;while(k<=j) /*$ERROR3$*/{printf("%d",j);k++;}printf("\n");}}答案:$1$:printf("%d",i);$2$:j=10-i;$3$:while(k<=i)【程序填空】:将长整型数s中每一位上为偶数的数码依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
#include <stdio.h>void main(){long s=87653142,k,m=0,t=0;while (s>0){k=s%10;if(___) m=m*10+k;}while(___){t=t*10+m%10;m=m/10;}printf("%1d\n",t);}答案:BLANKk1: %2==0BLANK2: s/10BLANK3: m>0【程序设计】:有100匹马驮100担货,大马驮4担,中马驮3担,5匹小马驮1担,问三种马各多少匹?注意:(1)大,中,小马都必须有;(2)问题的只有一种;(3)要求使用循环实现。
#include <stdio.h>void PRINT(int a,int b,int c){FILE *out;printf("big=%d,mid=%d,small=%d\n",a,b,c);if((out=fopen("c:24000101\\RESULT.DAT","w+"))!NULL)fprintf(out,"big=&dp,mid=%dp,small=%dp",a,b,c);fclose(out);}void main(){PRINT(a,b,c);}答案:参考答案一#include <stdio.h>void PRINT(int a,int b,int c){FILE *out;printf("big=%d,mid=%d,small=%d\n",a,b,c);if((out=fopen("result.dat","w+"))!NULL)fprintf(out,"big=&dp,mid=%dp,small=%dp",a,b,c);fclose(out);}void main(){int a,b,c;for(a=1;a<=25;a++)for(b=1;b<=33;b++)for(c=5;c<=100;c=c+5)if(a*4+b*3+C/5==100 && a+b+c==100)PRINT(a,b,c);}参考答案二#include <stdio.h>void PRINT(int a,int b,int c){FILE *out;printf("big=%d,mid=%d,small=%d\n",a,b,c);if((out=fopen("result.dat","w+"))!NULL)fprintf(out,"big=&dp,mid=%dp,small=%dp",a,b,c);fclose(out);}void main(){int a,b,c;for(a=1;a<=25;a++)for(b=5-a%5;b<=33;b+=5)if(c=100-a-b , a*4+b*3+C/5==100)PRINT(a,b,c);}试卷2【改错】:判断从键盘输入的一个三位数是否是水仙花数。
2022.03全国青少年软件编程(C语言)等级考试试卷(六级)
C语言六级1.多项式相加我们经常遇到两多项式相加的情况,在这里,我们就需要用程序来模拟实现把两个多项式相加到一起。
首先,我们会有两个多项式,每个多项式是独立的一行,每个多项式由系数、幂数这样的多个整数对来表示。
如多项式2x20- x17+ 5x9- 7x7+ 16x5+ 10x4 + 22x2- 15对应的表达式为:2 20 -1 17 5 9 - 7 7 16 5 10 4 22 2 -15 0。
为了标记每行多项式的结束,在表达式后面加上了一个幂数为负数的整数对。
同时输入表达式的幂数大小顺序是随机的。
我们需要做的就是把所给的两个多项式加起来。
时间限制:1000内存限制:65536输入输入包括多行。
第一行整数n,表示有多少组的多项式需要求和。
(1 < n < 100) 下面为2n行整数,每一行都是一个多项式的表达式。
表示n 组需要相加的多项式。
每行长度小于300。
输出输出包括n行,每行为1组多项式相加的结果。
在每一行的输出结果中,多项式的每一项用“[x y]”形式的字符串表示,x是该项的系数、y 是该项的幂数。
要求按照每一项的幂从高到低排列,即先输出幂数高的项、再输出幂数低的项。
系数为零的项不要输出。
样例输入2-1 17 2 20 5 9 -7 7 10 4 22 2 -15 0 16 5 0 -12 19 7 73 174 4 15 10 -10 5 13 2 -7 0 8 -8-1 17 2 23 22 2 6 8 -4 7 -18 0 1 5 21 4 0 -112 7 -7 5 3 17 23 4 15 10 -10 5 13 5 2 19 9 -7样例输出[ 2 20 ] [ 2 19 ] [ 2 17 ] [ 15 10 ] [ 5 9 ] [ 6 5 ] [ 14 4 ] [ 35 2 ] [ -22 0 ][ 2 23 ] [ 2 19 ] [ 2 17 ] [ 15 10 ] [ 6 8 ] [ 8 7 ] [ -3 5 ] [ 44 4 ] [ 22 2 ] [ -18 0 ]提示第一组样例数据的第二行末尾的8 -8,因为幂次-8为负数,所以这一行数据结束,8 -8不要参与计算。
第3、4、5、6、7章C语言设计 习题答案
第三章习题答案1.掌握算法必须要掌握的五个特性:a)有穷性。
算法执行步骤的次数有限,能在有限时间内完成。
b)确切性。
每一步操作的执行步骤、执行结果确定,不能有二义性。
c)有效性。
算法中的每一步操作都是可执行的,即算法的每一步都能通过手工或机器在有限时间内完成。
d)必须有零个或多个输入。
e)必须有一个或多个输出。
2.算法是指令的有限序列,是求解问题显式的一步一步进行的过程。
为程序编写提供依据。
程序是用C语言单词将算法表达出来的过程。
算法是程序的灵魂。
3.数据类型总体分为三类:a)对象类型。
对象类型的基本类型又分为整型、浮点型、字符型。
b)函数类型。
c)不完全类型。
4.整型可分为:a)有符号整数。
它又包括 short int、int、long int、long long int。
b)无符号整数。
它又包括unsigned short int、unsigned int、unsigned longint、unsigned long long int。
不同数据类型数据的值域范围不同。
5.合法的标识符有:scanf、x、x1、_y 、_y2x、printf、main合法标识符由英文字母、数字、下划线组成,且第一个字符只能是英文字母或下划线。
关键词不能成为合法标识符。
6.略7.8.变量名:x 数据对象:3存储地址:&x 存储单元:8(在VS2005中)9.0x13B1:十六进制int型字面值;3e3:十进制 int型字面值;‘d’:字符型字面值;“my university”:字符串型字面值;99:十进制int型字面值;023:八进制int型字面值;1.3e-4:double型浮点型字面值;33U:十进制unsigned int型字面值;034L:八进制long int型字面值;0x34UL:十六进制unsigned long int型字面值;30.23L:十进制long double型字面值;30.23F:十进制float型字面值;10.\?:?\’:’\”:”\\:\\233:表示八进制int型整数233\x2f:表示十六进制int型整数 2f。
C语言作业题(第5至6章)-20111008
【1】下面程序用“顺序查找法”查找数组a中是否存在某一关键字。请填空。
#include <stdio.h>
voidmain( )
{ int a[9]= {25,57,48,37,12,92,86,33},i,x;
scanf (″%d″,&x);
; i=0;
while(a[i]! =x)i++;
printf(″%d\n″,n);
}
【6】下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请填空。
#include<stdio.h>
void main()
{ int i,j,k;
printf(″\n hong bai hei \n″);
for (i=1;i<=3;i++)
{ int m=0,n=0;
char c;
while (([1]!='\n’))
{ if(c>='A’&&c<='Z’) m++;
if(c>=பைடு நூலகம்a’&&c<='z’) n++;
}
printf ("%d\n",m<n ?[2]);
}
[1]A) c=getchar() B)putchar()C) c=getch()D)scanf("%c",c)
for (; m++)
{ x=m/100;
y=;
z=m%10;
if (x*100+y*10+z==x*x*x+y*y*y+z*z*z)
C语言习题六(数组部分)习题及答案
C语言习题六(数组部分)习题及答案习题六一.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是c 。
A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是DA)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是 D 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.以下不能对一维数组a进行正确初始化的语句是B 。
A)int a[10]={0,0,0,0,0}; B)int a[10]={} ;C)int a[ ] = {0} ; D)int a[10]={10*1} ;5.若有定义:int a[3][4],则对数组a元素的正确引用是。
AA)a[2][3] B)a[1,3] C)a(5) D)a[10-10]6.以下能对二维数组a进行正确初始化的语句是B。
A)int a[2][]={{1,0,1},{5,2,3}} ;B)int a[][3]={{1,2,3},{4,5,6}} ;C)int a[2][4]={{1,2,3},{4,5},{6}} ;D)int a[][3]={{1,0,1},{},{1,1}} ;7.以下不能对二维数组a进行正确初始化的语句是。
CA)int a[2][3]={0} ;B)int a[][3]={{1,2},{0}} ;C)int a[2][3]={{1,2},{3,4},{5,6}} ;D)int a[][3]={1,2,3,4,5,6} ;8.若有说明:int a[3][4]={0};则下面正确的叙述是D。
A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值09.若有说明:int a[][4]={0,0};则下面不正确的叙述是D。
C第六章习题答案(大题非选做).docx
6-3 (1)#include <iostream>using namespace std;int main(void){int num[10], *p, i, j, temp; cout«**输入10 个整数"vvendl; for(i=0; i<10; i++){ cin»num[订;}for(i=0; i<10; ■++){// 0, 1_________ 8p = &num[i];for(j = i+1; J<10; j++){//1, 2・.・ 9 if(num[i]<=num[J]){p = &num[j];}}cout«*p«endl; temp = *p;*p = num[i]; num[i] = temp;}system(M pause f,);return 0;(2)注:N的数值可以在宏定义中更改,以下是W12的吋候:#include <iostream>using namespace std;#define N 12struct N0DE{int num;NODE *next;};int i:class List{private:NODE list[N];NODE *temp;public:List() {//设置一个结点组成的圈temp = Iist;Iist[0].num = 1 ;Iist[0].next = &list[1];//第一个结点己经完成for(i=1: i<(N-1); ■++){Iist[i].num = i+1:Iist[i].next = &Iist[i+1];}//第二个至倒数第二个已经完成Iist[N-1].num = N;Iist[N-1].next = &list[O];//最后一个结点已经完成void Next2(){temp = temp->next;temp = temp->next;}void Fun(){temp = & list[N-1];//得到链表的最后一个结点地址do{Next2();//当前是0,数到2〃现在temp已经是标号为2的结点的地址了cout«(temp->next)->num«ff M;//$ny出要被删除的结点(p+1) temp->next = (temp->next)->next ;//^ 被删除的结点的前一个(p)和后一个相连接(p+2)}while(temp->next != (temp->next)->next); cout«temp->num;}};int main(void){List one; one.Fun(j; system(ft pause f,); return 0;}(3)#include <iostream>#include <string> using namespace std;#define SIZE 512class Str{private:char str1[SIZE]:char str2[SIZE];char *p;int i, length;public:void set(){cout«ff输入第一个字符串:ff«endl; cin>>str1;cout«ff输人第二个字符串:ft«endl; cin>>str2;}void fun(){Iian(str1, str2):}void Iian(char *m, char *n){ length = strlen(n); for(i=0; i<strlen(n)+1; i++){ P = & n[i];str1 [length+i] = *p;}cout«ft连接之后的结果:\n ft«str1«endl;}};int main(void){ Str one; one.set(); one.funO; system(ft pause f,); return 0;}(4)#include <iostream>#include <string>using namespace std;#define SIZE 512class Str{private:char str[SIZE]:int upper, lower, space, number, other, i:public:Str(){upper=Iower=space=number=other=0;void set(){cout«ff输入一个字符ff«endl;gets(str);}void check(){for(i=0; i<strlen(str); i++){if(str[i]>=w A・ && str[i]<="Z>){upper++;}else if(str[i]>=w a w && str[i]<=w z w){lower++;}else if(str[i]=="・){space++;}else if(str[i]>=w O w && str[i]<=w9w){number++;}else{other++;}}}void te11(){check();coutvv"箕冇大写字母ff«upper«ft个,小写字母"«lower«ff个,空格"vvspacevv”个,数字ff«numbervv”个,其他字符■•vvothervv”个”vvendl;}};int main(void){Str one;one.set();one.tel 1();system(ft pause ff);return 0;}(5)代码中要用到strlen函数,所以包含了string头文件,但strcmp函数在string中己经定义,所以下题屮改用Strcmpo#include <iostream>#include <string>using namespace std;#define SIZE 512class Str{private:char str1[SIZE];char str2[SIZE];■ nt i;public:void get(){cout«ft输入第一个字符串vvendl;OP+Q(Q+r1\■cout«M输入菊二个字符串:“vvendl; gets(str2);}void fun(){ Strcmp(str1, str2);}void Strcmp(char *m, char *n){int num;for(i=0; i<strlen(str1) || i<strlen(str2); i++){if(str1[i]==str2[i]){num = 0;}else{num = str1[i] - str2[i]; break;}}}};irrt main(void){Str one;one.get();one・fun();system(fl pause f,); return 0;}(6)注意:原有数组是不变的,但指针数组是排序Z后的。
C语言__第六讲文件操作练习
}
ch=getchar( ); // 此语句用来接收在执行scanf语句时最后输入的回车符
printf("请输入一个准备存储到磁盘的字符串(以#结束):");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL) // 打开输出文件并使fp指向此文件
{
printf("无法打开此文件\n"); // 如果打开时出错,就输出"打不开"的信息
scanf("%s",infile); // 输入一个输入文件的名字
printf("输入输出文件的名字:");
scanf("%s",outfile); // 输入一个输出文件的名字
if((in=fopen(infile,"r"))==NULL) // 打开输入文件 change to rb
printf("Enter strings:\n"); // 提示输入字符串 */
for(i=0;i<n;i++)
gets(str[i]); // 输入字符串
for(i=0;i<n-1;i++) // 用选择法对字符串排序
#define SIZE 10
struct student_type
{char name[10];
int num;
int age;
char addr[15];
}stud[SIZE]; // 定义全局结构体数组stud,包含10个学生数据
c语言第六次作业(DOC)
第六次作业:指针(以下题目如无特殊声明,请使用指针技术实现,尽量不要使用数组作为形参,也尽量避免使用数组下标引用数组元素)1.数组元素循环移位有n个整数,使前面的各整数顺序向后移动m个位置,后面的m个整数则变成最前面的m个数。
写一函数实现以上功能。
在主函数中输入n及n个整数,输入m (m<n),调用编写的上述函数,然后输出调整后的n个整数。
#include<stdio.h>void main(){void inv(int *p,int n,int m);int n,m,a[20],*p;printf("please input n=");scanf("%d",&n);printf("please input %d numbers:",n);p=a;while(p<a+n)scanf("%d",p++);printf("please input m=");scanf("%d",&m);p=a;inv(a,n,m);printf("the new array:\n");while(p<a+n)printf("%d ",*p++);putchar('\n');}void inv(int *p,int n,int m){int i;for(i=1;i<=n;i++)*(p+n-i+m)=*(p+n-i);for(i=0;i<m;i++)*(p+i)=*(p+n+i);}2. 矩阵元素的排序将一个5×5的整数型矩阵中各元素重新排序。
排序规则为,矩阵元素按照从左到右,从上到下的顺序依次递增,即4,41,10,14,03,02,01,00,0.......a a a a a a a a ≤≤≤≤≤≤≤。
C语言4-6真题
2006年(17)若要求从键盘读入含有空格字符的字符串,应使用函数()。
A)getc( ) B)gets( ) C)getchar( ) D)scanf( )(19)若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch 语句是()。
A)switch(x) B)switch((int)x);{ case 1.0:printf("*\ n"); {case 1:printf("*\n");case 2.0:printf("**\ n");} case 2:printf("**\n");} C)switch(a+b) D)switch(a+b){ case 1:printf("*\n"); { case 1:printf("* \n");case 2+1:printf("** \n");} case c:printf("** \n");} (21)在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。
A)(!E= =0) B)(E>0‖E<0) C)(E= =0) D)(E! =0) (22)要求通过while 循环不断读入字符,当读入字母N 时结束循环。
若变量已正确定义,下列正确的程序段是()。
A)while( (ch=getchar( ))! ='N') printf("%c",ch);B)while(ch=getchar( )! ='N') printf("%c",ch);C)while(ch=getchar( )= ='N') printf("%c",ch);D)while((ch=getchar( ))= ='N') printf("%c",ch);(29)有下列程序:#include <stdio.h>main( ){ char c1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar( ); c6=getchar( );putchar(c1);putchar(c2);printf("%c%c\n",c5,c6); }程序运行后,若从键盘输入(从第1列开始)123<CR>45678<CR>则输出结果是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六次课作业
下次课默写交换排序、选择排序和冒泡排序。
习题6-1
题码:章节:数组考查点:一维数组的定义、引用及格式输出难度:2
编写一程序p717.C实现以下功能
输入10个整型数存入一维数组,输出值和下标都为奇数(数组第1个元素的下标为0)的元素及其个数。
编程可用素材:printf("Input 10 integers.\n")...、printf("count=...\n"...、 printf("a[...]=...\n"...。
程序的运行效果应类似地如图1所示,图1中的2 45 34 56 78 12 41 55 86 37是从键盘输入的内容。
图1 程序运行效果示例
习题6-2
题码:章节:数组考查点:一维数组定义、输入和输出的掌握,对递推算法的掌握难度:2
编写一程序p725.C实现以下功能
利用数组,求斐波拉契数列的前n(n的范围为:3~20)项,并输出到屏幕上(数和数之间用字符'\t'隔开),斐波拉契公式:f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2) (n≥3)。
编程可用素材:printf("input a data(3--20): ")...。
程序的运行效果应类似地如图1所示,图1中的11是从键盘输入的内容。
图1 程序运行效果示例
习题6-3
题码:章节:数组考查点:一维数组的应用难度:2
编写一程序p718.C实现以下功能
有一递推数列,满足f(0)=0,f(1)=1,f(2)=2, f(n+1)=2f(n)+f(n-1)f(n-2) (n>=2), 编写程序求f(n)的值(n由键盘输入,13>=n>=2)。
编程可用素材:printf(“Input n (13>=n>=2): ”)...、printf(“\nf(...)=...\n”...。
程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。
图1 程序运行效果示例
习题6-4
题码:章节:数组考查点:键盘输入技巧的掌握和二维数组的应用,判断条件的设定难度:2
编写一程序p217.C实现以下功能
求任意的一个m×m矩阵的对角线上元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出int型能表示的范围)。
编程可用素材:printf("Please input m: ")...、 printf("\nPlease input array:\n")...、printf("\nsum=...\n"...。
程序的运行效果应类似地如图1所示,图1中的5和
1 45 67 235 464
35 6 89 32342 8
347 9346 47 95 746
46 785 436 19434 634
3235 567 24 8465 25
是从键盘输入的内容。
图1 程序运行效果示例
习题6-5
题码:章节:数组考查点:键盘输入技巧的掌握和二维数组的应用,判断条件的设定难度:2
编写一程序p218.C实现以下功能
求任意的一个m×m矩阵的周边元素之和,m(2<=m<=20)及矩阵元素从键盘输入(只考虑int型,且不需考虑求和的结果可能超出 int型能表示的范围)。
编程可用素材:printf("\nPlease input m: ")...、printf(" \nPlease input
array:\n")...、printf("\nsum=...\n"...。
程序的运行效果应类似地如图1所示,图1中的5和
1 45 67 235 464
35 6 89 32342 8
347 9346 47 95 746
46 785 436 19434 634
3235 567 24 8465 25
是从键盘输入的内容。
图1 程序运行效果示例
习题6-6
题码:章节:数组考查点:数组、循环语句的使用、排序方法难度:2
编写一程序P746.C实现以下功能从键盘读入10个整数,对其按由小到大的顺序进行排序,然后输出。
编程可用素材:printf("please input 10 integer numbers: ")...、 printf("the array before sorted:\n")...、
printf("the array after sorted: \n")...。
程序的运行效果应类似地如图1所示,图1中的12 3 43 44 32 56 73 18 40 42是从键盘输入的内容。
图1 程序运行效果示例
另请完成p706.c(选作)
习题6-7
题码:章节:数组考查点:格式输入和输出,一维数组的循环、排序方法的掌握难度:3
编写一程序P412.C实现以下功能
①程序运行时先显示Please input numbers:,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。
数可正可负,最多10000个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内。
②对这一组数按从小到大的顺序进行排序。
③将排序后的这一组数输出到屏幕上,输出格式为每行6个数,数与数之间使用逗号(,)分隔,两个逗号之间的宽度(不算逗号)为6且使用左对齐格式。
注意,行尾没有逗号。
编程可用素材:printf("Please input numbers:")...、printf("\nOutput:\n")...。
程序的运行效果应类似地如图1所示,其中的
100 120 89 72 -19 200 500 210 235 6 24 1234 78 234 -234 -2342 346 23524 7823 -3411 23423 -222是从键盘输入的内容。
图1 程序运行效果示例。