C语言作业5
C语言程序设计第五次作业——循环结构(1)
C语⾔程序设计第五次作业——循环结构(1)(⼀)改错题输出华⽒摄⽒温度转换表:输⼊两个整数lower和upper,输出⼀张华⽒摄⽒温度转换表,华⽒温度的取值范围是{lower,upper},每次增加2℉。
计算公式如下:c = 5×(f-32)/9其中,c表⽰摄⽒温度,f表⽰华⽒温度。
输⼊输出样例1: Enter lower:32 Enter upper:35 fahr celsius 32 0.0 34 1.1输⼊输出样例2: Enter lower:40 Enter upper:30 fahr celsius源程序(有错误的程序)#include <stdio.h>int main(void){int fahr , lower, upper; /* fahr表⽰华⽒度 */double celsius; /* celsius表⽰摄⽒度 */printf("Enter lower:");scanf("%d",&lower);printf("Enter upper:");scanf("%d",&upper);printf("fahr celsius\n"); /* 显⽰表头 *//* 温度转换 */for (fahr = lower , fahr <= upper, fahr ++) ;celsius = 5 /9 * (fahr - 32.0);printf("%3.0f %6.1f\n", fahr, celsius);return 0;}对源程序进⾏编译,结果如下:错误信息1:错误原因:for语句后⾯加了分号。
改正⽅法:将分号去掉。
错误信息2:错误原因:for语句下没有加“{}“改正⽅法:在for语句下加上“{}”错误信息3:错误原因:发现for语句内语句⽤逗号隔开了。
C语言程序设计习题5
习题5参考解答1.数组是相同数据类型的集合,分为一维数组、二维数组及多维数组。
在什么情况下使用数组?在什么情况下使用一维数组?解:当需要处理的数据为相同类型的数据的集合时,可以使用数组。
如果这些数据的描述用一个量就可以,这时就用一维数组。
例如,一组学生的学号,就可以使用一维数组。
2.数组元素又称为下标变量,数组元素的下标有何意义?解:下标的意义是对数组的各个数组元素进行标识和区分。
由数组名和下标结合起来形成数组元素的名字。
3.使用字符数组来存储字符串应注意什么问题?解:需要注意的问题是字符数组在存储字符串时是以'\0'作为结束标记的。
这个'\0'是系统自动加上的。
所以字符数组的长度需要比它要存储的字符串的长度至少多1。
例如,要存储字符串"abcd",因为它的长度为4,所以存储它的字符数组的长度至少为5。
4.常用的字符处理函数有哪些?解:常用的字符处理函数有以下8个。
(1)puts(字符串):作用为将一个字符串输出到终端。
(2)gets(字符数组):作用为从终端输入一个字符串到字符数组,并且得一个函数值。
(3)strcat(字符串1,字符串2):作用为进行字符串的连接。
(4)strcpy(字符串1,字符串2):作用为进行字符串的复制。
(5)strcmp(字符串1,字符串2):作用为进行字符串的比较。
(6)strlen(字符串):作用为求字符串的长度。
(7)strlwr(字符串):作用为将字符串中的大写字母转换成小写字母。
(8)strupr(字符串):作用为将字符串中的小写字母转换成大写字母。
5.随机产生10个两位整数存储到一个一维数组中,找出其中的最大数。
解:#include<stdio.h>#include<stdlib.h>#define random(x) (rand()%x) int main(){int a[10],max;int x;for(x=0;x<10;x++)a[x]=random(100);max=a[0];for(x=0;x<10;x++){if(a[x]>max)max=a[x];printf("%4d",a[x]);}printf("\nmax=%d\n",max);return 0;}程序运行结果如下:41 67 34 0 69 24 78 58 62 64 max=786.输入10个整数,要求按照从小到大的顺序输出。
c程序设计作业(5)[修改版]
第一篇:c程序设计作业(5)1、分析下面程序:# include int main() { char c1,c2;c1=97;c2=98;printf("c1=%c,c2=%c\n"c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0; } (1)运行时会输出什么信息?为什么?(2)如果将程序第4,5行改为c1=197; c2=198; 运行时会输出什么信息?为什么?(3)如果将程序第3行改为int c1,c2; 运行时会输出什么信息?为什么?答:(1)程序运行不了,因为程序存在错误。
正确的程序为:#include int main() {char c1,c2;c1=97;c2=98;printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0; }(2)如果将程序第4,5行改为c1=197; c2=198;运行时会输出:(3)如果将程序第3行改为int c1,c2; 运行时会输出:因为int表示整型,%c是输出字符,a的ASCLL代码是97,b的是98,所以输出c1=a,c2=b.%d是表示输出十进制整型,所以输出c1=97,c2=982、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。
问在键盘上如何输入?#include int main() {int a,b;float x,y;char c1,c2;scanf("a=%db=%d",&a,&b);scanf("%f%e",&a,&y);scanf("%c%c",&c1,&c2);return 0; } 答:输入如图:输出如图:第二篇:C程序设计课程作业(4分)C语言是解释性语言纠错得分:0知识点:C语言概述收起解析答案错误解析C语言程序设计/C语言概述(4分)C语言程序中,一个文件中的函数可以引用另一个文件中的函数和变量纠错知识点:文件收起解析答案正确解析C语言程序设计/文件(4分)下面是对s的初始化,其中不正确的是( ) A. char s[5]={'abc'} B. char s[5]={'a','b','c'} C. char s[5]=''D. char s[5]='abcde'纠错得分:0知识点:数组收起解析答案D解析C语言程序设计/数组/字符数组初始化(4分)函数ftell的作用是( ) A. 取得当前文件指针的位置,该位置为相对于文件开头的位移量表示B. 取得当前文件指针的位置,该位置为相对于文件末尾的位移量表示C. 出错时返回值为0D. 以上叙述都不正确纠错得分:0知识点:文件收起解析答案A解析C语言程序设计/文件/文件的定位(4分)表达式a A. &,纠错知识点:位运算收起解析答案D解析C语言程序设计/位运算/位运算符优先级(4分)若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( ) A. scanf('%d%lx,%le',&x,&y,&z) B. scanf('%2d*%d%lf',&x,&y,&z) C. scanf('%x%*d%o',&x,&y)D. scanf('%x%o%6.2f',&x,&y,&z)纠错得分:0知识点:顺序程序设计收起解析答案D解析C语言程序设计/顺序程序设计/整型和实型数据的格式输入(4分)写出下面程序的输出结果( )main(){intx;x=-3+4*5-6;printf('%d',x);x=3+4%5-6;printf('%d',x);x=-3*4%6/5;printf('%d',x);x=(7+6)%5/2;printf('%d',x);}A. 11 1 0 1B. 11 -3 2 1C. 12 -3 2 1D. 11 1 2 1纠错得分:0知识点:顺序程序设计收起解析答案A解析C语言程序设计/顺序程序设计/整型变量的输出格式综合(4分)C语言中while和do while循环的主要区别是( ) A. do-while的循环至少无条件执行一次B. while循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转入到循环体内D. do-while的循环体不能是复合语句纠错得分:0知识点:循环程序设计收起解析答案A解析C语言程序设计/循环程序设计/while语句与do-while语句(4分)C语言规定,函数返回值的类型是由( )所决定。
大连理工c语言第五次上机作业参考答案
第五次上机作业:(请用指针实现)1.数据移位有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m 个数变成最前面的m个数,如图所示。
编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数和输出调整后的n个数。
SAMPLE OUTPUTnInput n(n<=10):10Input 10 integers:Output the original:Output the shifted:#include <>#define N 10void shift(int a[ ],int n,int m);void main( ){ int i,n,m;int a[N];printf("Input n(n<=10):");scanf("%d",&n);printf("Input %d integers:\n",n);for(i=0;i<n;i++)scanf("%d",a+i);printf("Output the original:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");printf("Input m(m<=%d):",n);scanf("%d",&m);shift(a,n,m);printf("Output the shifted:\n");for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");}void shift(int a[ ],int n,int m){ int i,j,t;for(i=0;i<m;i++){ t=a[n-1];for(j=n-2;j>=0;j--)a[j+1]=a[j];a[0]=t;}}2.字符串排序在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数sort()利用指针数组对其排序,在主函数中输出排好序的字符串。
C语言上机作业试题5套含答案
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
2023年9月青少年软件编程C语言等级考试试卷五级真题(含答案)
2023年9月青少年软件编程C语言等级考试试卷五级(含答案)分数:100 题数:4一、编程题(共4题,共100分)第1题.红与黑有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。
你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。
请写一个程序,计算你总共能够到达多少块黑色的瓷砖。
时间限制:1000内存限制:65536输入:包括多个数据集合。
每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。
W和H都不超过20。
在接下来的H行中,每行包括W个字符。
每个字符表示一块瓷砖的颜色,规则如下:(1)‘.’黑色的瓷砖;(2)‘#’白色的瓷砖;(3)‘@’黑色的瓷砖,并且你站在这块瓷砖上。
该字符在每个数据集合中唯一出现一次。
当在一行中读入的是两个零时,表示输入结束。
输出:对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。
样例输入:6 9....#......#..............................#@...#.#..#.0 0样例输出:45参考答案:#include <iostream>#define xa x+a[i]#define ya y+b[i]using namespace std;int graph[21][21];int w=0,h=0;int X1=0,Y1=0,cnt=0;const int a[]={-1,0,1,0},b[]={0,-1,0,1};void dfs(int x,int y){graph[x][y]=0;cnt++;for(int i=0;i<4;i++){if(graph[xa][ya]==1 && xa>0 && xa<=w && ya>0 && ya<=h)dfs(xa,ya);}}void get(){for(int i=1;i<=w;i++){for(int j=1;j<=h;j++){char a;cin>>a;if(a=='#') graph[i][j]=0;else if(a=='.') graph[i][j]=1;else if(a=='@'){X1=i,Y1=j;graph[i][j]=1;}}}dfs(X1,Y1);cout<<cnt<<endl;cnt=0;}int main(){while(1){cin>>h>>w;if(h==0 && w==0) break;get();}return 0;}第2题.装箱问题一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1,2*2,3*3,4*4,5*5,6*6。
C语言作业5
1、从键盘上输入一个学生的成绩,用switch结构编程输出该同学成绩的档次。
(成绩>=90 为“优秀”,成绩>=80并且成绩<90 为“良好”,成绩>=70并且成绩<80 为“中等”,成绩>=60并且成绩<70 为“及格”,其余为“不及格”)2、编写一个程序,从键盘上输入10个数,求出这10个数中的最大数和最小数。
3、书上大奖赛题#include "stdio.h"main(){ float score;scanf("%f",&score);{ switch((int)(score/10.0)){ case 10:case 9: printf("优秀");break;case 8: printf("良好");break;case 7: printf("中等");break;case 6: printf("及格");break;case 5:case 4:case 3:case 2:case 1:case 0: printf("不及格");}printf("score=%5.2f \n",score);} }#include "stdio.h"main(){ int score,i,n,max,min;float sum,average;scanf("%d",&n);max=0, min=100,sum=0;for(i=1;i<=n;i++){ printf("\n输入评委打分(%d):",i);scanf("%d",&score);if(score>max) max=score;if(score<min) min=score;sum=sum+score;}average=(sum-max-min)/(n-2);printf("\n\n去掉一个最高分: %d",max); printf("\n去掉一个最低分: %d",min); printf("\n最后得分为: %.2f\n",average); }#include "stdio.h"main(){ int digit,i,n,max,min,sum;scanf("%d",&n);scanf("%d",&digit);sum=max=min=digit;for(i=1;i<=n-1;i++){ scanf("%d",&digit);if(digit>max) max=digit;if(digit<min) min=digit; }printf("%d %d",max,min); }。
C语言试题及答案解析(五)
8.指出下列程序段中那个语句是不正确的( )(int x,y,z[10],*px,*py)
A. px=&x,py=px B. px=x C. py=&y D. px=z
9.在printf语句中按字符串输出的格式是( )
A. “%s” B. “%c” C. “%f” D. “%d”
{ int a=5,*b,**c;
c=&b; b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是( )
A.变量a的地址B.变量b中的值
C.变量a中的值D.变量b的地址
二、写出下列程序的执行结果(每题5分,共20分)
1.2.
3.4.
三、程序改错题(每题5分,共20分)
注:下列每小题有一个错误,找出并改正
1.#i nclude "stdio.h"
main()
{ char c,*ch=&c;
while((c=getchar())!=’\n’)
{ if(ch>=’a’&&ch<=’z’)
putchar(*ch-’a’+’A’);
else
putchar(*ch);
}
}
2.求100以内的正整数中为13的倍数的最大值。
则下列说法中正确的是( )
A. x数组和y数组长度相同B.x数组长度大于y数组长度
C.x数组长度小于y数组长度D.以上三种说法均错误。
7.返回值为void的函数,其含义是( )
A.调用函数之后,被调用的函数没有返回值;
B.调用函数之后,被调用的函数不返回
C语言作业5(函数)
Printf(“%d%d\n”,a,b);
}
7.有以下程序
#include<stdio.h>
int f(int X);
main()
{ int n=1,m;
m=f(f(f(n)));printf("%d\n",m);
}
int f(int x)
p=d++; printf("%d",p);}
main()
{ int a=1;
fun(a);printf("%d\n",a);}
程序运行后的输出结果是________。
A)32 B)12 C)21 D)22
3.设有如下函数定义
int fun(int k)
{ if(x!=y) return((x+y)/2);
else return(x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是
A)3 B)6 C)8 D)12
5.有以下程序
printf("\n\nsum=%f\n\n",sum);
}
7.函数fun的功能是:按以下递归公式求函数值。
┌ 10 (n=1)
fun(n)=┥
└ fun(n-1)+2 (n>1)
例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。
{ return x*2;}
程序运行后的输出结果是
计算机C语言5和6习题
• 6、若运行输入:3<回车>,则以下程序的 输出结果是 。 • main() • { int a,b; • scanf("%d",&a); • b=(a>=0) ? a : -a; • printf("b=%d",b); • }
• 6、【解析】条件表达式的基本格式为:"表 达式1?表达式2 : 表达式3";其功能是:表 达式1的值若非0,则计算表达式2的值,且 表达式2的值为最终结果,若表达式1的值 为0,则计算表达式3的值,且为最终结果。 因为a=3,则a>=0成立,所以b=a=3。
• • • • • • • •
15、下面程序的运行结果是 #include<stdio.h> main() { int a,b,c,n; a=2;b=0;c=1;n=1; while(n<=3) {c=c*a;b=b+c;++n;} printf("b=%d",b);}
。
• 15、【解析】分析程序可知,n的初始值为 1,因此,while(n<=3)循环3次。第1次: c=c*a=2;b=b+c=2;n=2。第2次: c=c*a=4;b=b+c=6;n=3。第3次: c=c*a=8;b=b+c=14。当n=4时,判断条件 不满足,退ile循环。当i<20时, 进入while循环体,循环体内的for循环实现的功能 是:让i值是0或者10的倍数的时候,执行i+=11; a+=i;这两条语句,若i值不是10的倍数,则一直 执行for循环。 • ①当i=0时,执行i+=11;a+=i;i=11,a=11;② 判断i=11<20,进入while循环体,i=10时,跳出 for循环,执行i+=11;a+=i;i=21,a=32;③判 断i=21>20,结束循环。
C语言第五章习题带答案
练习5-1答案一、选择题1.合法得数组说明语句就是( B )。
A.int a[]="string";B.int a[]={0,1,2,3,4,5};C.char a="string";D.char a[5]={'0', '1', '2', '3', '4', '5'};2.以下对一维整型数组a得说明正确得就是( D )。
A.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进行正确初始化得语句就是( C )。
A.int a[10]=(0, 0, 0, 0, 0);B.int a[10]={};C.int a[]={0};D.int a[2]={10, 9, 8};5.对以下说明语句得正确理解就是( B )。
int a[10]={6, 7, 8, 9, 10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值得个数不相同,所以此语句不正确二、填空题6.求所有不超过200得N值,N得平方就是具有对称性质得回文数。
所谓回文数就就是将一个数从左到右与从右到左读都就是一样得,例如:34543与1234321都就是回文数。
例如:满足题意要求得数有:N=1,11*11=121;N=111,111*111=12321。
#include <stdio、h>main(){int m[16], n, i, t, count=0;long a, k;printf("Result is:\n");for (n=10; n<200; n++){ k=0;t=1;a=n*n;for (i=1; a!=0; i++){ ①;a/=10;}for (; i>1; i--){ k+=m[i-1]*t;②;}if ( ③) printf("%2d:%10d %10d\n", ++count, n, n*n);}}则①为( m[i]=a%10; )、②为( t*=10; )、③为( k==n*n )。
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.对于类型相同的指针变量,不能进行哪种运算?(单选)A. +B. -C. =D. = =2. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误引用?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;p=a;A. *(a+i)B. a[p-a]C. p+iD. *(&a[i])3. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;p=a;A. &(a+1)B. a++C. &pD. &p[i]4. 以下程序的输出结果是___。
#include <stdio.h>main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A. 0,5B. 1,5C. 0,6D. 1,65. 以下程序的输出结果是哪一项?(单选)#include <stdio.h>main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}A. 输出项不合法B. 6C. 8D. 126. 如果有以下的定义:(多选)struct person{char name[20];int age;char sex;};struct person a={"xiao min",20,'m'},*p=&a;则对字符串"li ning"的引用方式可以是下面哪些?A. (*p).nameB. C. D. p->name7. 下面哪些定义的结构在内存分配是等价的。
c语言第五次作业
第五次作业:函数1.自然数的计算编写自己的两个函数,分别求出两个整数的最大公约数和最小的公倍数。
编写一个程序,功能是能够由键盘输入两个整数,并能调用自己编写的函数,计算并输出这两个整数的最大公约数和最小公倍数。
程序代码:#include<stdio.h>void main(){intgreatest_common(intx,int y),lowest_common(intx,int y);inta,b,c,d;printf("please input two integer:");scanf("%d,%d",&a,&b);c=greatest_common(a,b);d=lowest_common(a,b);printf("最大公约数为%d,最小公倍数为%d\n",c,d);}intgreatest_common(intx,int y){inti,min;if (x>y)min=y;else min=x;for(i=min;i>=1;i--)if ((x%i==0)&&(y%i==0))return(i);}intlowest_common(intx,int y){inti,max;if (x>y)max=x;elsemax=y;for (i=max;;i++)if((i%x==0)&&(i%y==0))return (i);}2.字符串连接请使用字符数组,编写自己的字符串连接函数。
编写一个程序,功能是能够由键盘输入两个字符串,并能调用自己编写的字符串连接函数,输出新的字符串。
#include<stdio.h>#include<string.h>void main(){char link(char a[40],char b[20]);char str1[40]={"0"},str2[20];printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);printf("合并后的字符串为:\n");link(str1,str2);puts(str1);}char link(char a[40],char b[20]){inti,j;i=strlen(a);for(j=0;b[j]!=0;j++)a[i+j]=b[j];return(a[i]);}3. 三角函数请使用台劳级数编写自己的常用三角近似值计算函数,用于自己程序的调用。
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语言实验报告实验五参考答案
C语言实验报告实验五参考答案实验五一维数值数组(参考答案)1、设计程序sy5-1.c,计算n门课程的平均分。
例如:若有5门课程的成绩是:90.5.72.80.61.5.55,则平均分是:71.80.算法分析:先求n门课的成绩总和,(累加求和),再用累和除以课程数。
参考答案:includevoid main()double score[30]。
sum=0,aver;int n,i;printf("Inputn:");scanf("%d",&n);printf("请依次输入%d门课程的成绩",n);for(i=0;i<n;i++)scanf("%lf",&score[i]);sum=sum+score[i];aver=sum/n;printf( "\nAverage scoreis: %5.2f\n"。
aver);运行结果:2、设计步伐sy5-2.c,对输入的10个整数按倒序寄存后输出成效。
算法阐发:利用“半数交流”算法,最前面的元素和末了面的元素交流,逐步向中央挨近。
可利用两个下标变量i和XXX。
参考答案:includeint main()int a[10]={1,2,3,4,5,6,7,8,9,10};int i,j,t;for( i=0,j=9.i<j。
i++,j--)//逐一向中,交换。
直到已没有元素没交换t=a[i]。
a[i]=a[j]。
a[j]=t;}// a[i]-数组前端的数,a[j]-数组后端的数printf("交流后数组元素是:");for(i=0;i<10;i++)printf("%5d",a[i]);//%5d,5透露表现宽度printf("\n");//输出完所有的数后换行return 0;运行结果:3、设计程序sy5-3.c,输入10个整数,找出其中的最大数及其所在的下标。
C语言第五章部分上机作业
1 /*编写函数int fun(int lim, int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序: */#include<stdio.h>#include<stdlib.h>#define MAX 100int fun(int lim, int aa[MAX]){/**********Begin**********//**********End**********/}int main(){FILE *wf;int limit,i,sum;int aa[MAX];printf("输入一个整数");scanf("%d",&limit);sum=fun(limit,aa);for(i=0;i<sum;i++){if(i%10==0&&i!=0) /*每行输出10个数*/printf("\n ");printf("%5d ",aa[i]);}/******************************/wf=fopen("debug\\2.out","w");sum=fun(15,aa);for(i=0;i<sum;i++)fprintf(wf,"%d\n",aa[i]);fclose(wf);/*****************************/return 0;}2/*请编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
例如,若二维数组中的值为1 3 5 7 92 9 9 9 46 9 9 9 81 3 5 7 0则函数值为61。
C语言第5次作业简单程序设计
C语言第5次作业简单程序设计单选题:1、以下程序段的输出结果是int a=1234;printf("%2d\n",a);A.12B.34C.1234D.提示出错、无结果学生答案: C参考答案: C2、若有说明语句:int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A.scanf("%d%d%d",&a,&b,*d);B.scanf("%d%d%d",&a,&b,&d);C.scanf("%d%d%d",a,b,d);D.scanf("%d%d%d",a,b,*d);学生答案: B参考答案: A3、以下合法的赋值语句是A.x=y=100B.d--;C.x+y;D.c=int(a+b);学生答案: D参考答案: B4、设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是printf("%d,%d\n",x--,--y);A.10,3B.9,3C.9,2D.10,2学生答案: D参考答案: D5、以下程序的输出结果是main(){ int a=3;printf("%d\n",(a+=a-=a*a));}}A.-6B.12C.0D.-12学生答案: D参考答案: D6、以下程序段的输出结果是char s[]="\\141\141abc\t";printf ("%d\n",strlen(s));A.9B.12C.13D.14学生答案: A参考答案: A7、下列程序执行后的输出结果是main(){ int x='f'; printf("%c \n",'A'+(x-'a'+1)); } A.GB.HC.ID.J学生答案: A参考答案: A8、下列程序执行后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); }A.-32767B.FFFEC.-108D.-32768学生答案:参考答案: C9、请读程序int i =65536printf("%d\n",i);上面程序的输出结果是_____A.65535B.0C.有语法错误,无输出结果D.1学生答案: A参考答案: B10、以下定义和语句:char cl='b',c2='e';printf(″%d,%c\n″,c2-c1,c2-'a'+'A'); 则输出结果是:A.2,MB.3,EC.2,ED.输出项与对应的格式控制不一致,输出结果不确定学生答案: B 参考答案: B11、以下程序的输出结果是main( ){ int a=12,b=12;printf("%d%d\n",--a,++b);}A.10 10B.12 12C.11 10D.11 13学生答案: D参考答案: D12、以下程序的输出结果是_____main(){char str[12]={'s','t','r','i','n','g'};printf("%d\n",strlen(str));}A.6B.7C.11D.12学生答案: C参考答案: A13、语句:printf("%d \n",12&&12);的输出结果是________.A.12B.1C.24D.0参考答案: B14、以下程序的输出结果是main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);}A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11学生答案: D参考答案: D15、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A.c=b=a;B.(a=c)‖(b=c);C.(a=c)&&(b=c);D.a=c=b;学生答案: C参考答案: C16、执行下列程序段float f;int i;scanf("%3d%4d%f",&i,&f);输入为12345678765.43,则赋值结果为();A.i=123,f=45678765.43B.i=123,f=4.567876543e+7C.i=123,f=8765.43D.i=12345678765;f=0.43参考答案: C17、下面程序的输出是main(){int a=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%\n",k,a,b);}A.0 0 3B.0 1 2C. 1 0 3D. 1 1 2学生答案: C参考答案: C18、若有以下定义和语句:char s1[]=″12345″, s2[]=″1234″; printf(″%d\n″,strlen(strcpy(s1,s2))); 则输出结果是A.4B.5C.9D.10学生答案:参考答案: A19、执行下面程序中输出语句后,a的值是main(){int a;printf("%d\n",(a=3*5,a*4,a+5));}A.65B.20C.15D.10学生答案: B参考答案: B20、下面程序的输出是main(){int a=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%\n",k,a,b);}A.0 0 3B.0 1 2C. 1 0 3D. 1 1 2学生答案: C参考答案: C21、设有如下定义:int x=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是A.1B.0C.4D.3学生答案: D参考答案: D22、以下程序的输出结果是__main(){ int x=10 ,y=10;printf("%d%d\n",x--,--y);}A.10,10B.9,9C.9,10D.10,9学生答案: D参考答案: D23、读下列程序:#includemain(){float a,b,t;scanf(”%f,%f”,&a,&b);if(a>b)t=a;a=b;b=t;}prinff(”%5.2f,%5.2f'’,a,b);}运行时从键盘输入3.8和-3.4,则正确的输出结果是( )。
C语言作业5
28 组成最大数成绩: 10 / 折扣: 0.8任意输入一个自然数,输出该自然数的各位数字组成的最大数。
例如,输入 1593 ,则输出为 9531 。
输入: 自然数 n输出: 各位数字组成的最大数测试输入 期待的输出 时间限制 内存限制 额外进程测试用例 1以文本方式显示 1. 1593✪以文本方式显示 1. 9531✪1秒64M#include<stdio.h> #include<string.h> int main(){ char a[10000]; int x[10]={0}; scanf("%s",a); int n=strlen(a); for(int i=0;i<n;i++){x[a[i]-'0']++;} for(int i=9;i>=0;i--) for(int j=0;j<x[i];j++){printf("%d",i);} printf("\n"); }29 北理工的恶龙成绩: 10 / 折扣: 0.8背景:最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花 最少的学分数 杀死恶龙,于是找到你寻求帮助。
输入:第一行龙头数n , 勇士人数m (1<=n, m<=100 )接下来n 行,每行包含一个整数,表示龙头的直径接下来m 行,每行包含一个整数,表示勇士的身高l输出:如果勇士们能完成任务,输出校长需要花的最小费用;否则输出“ bit is doomed! ”测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1. 2 3✪2.5✪3.4✪4.7✪5.8✪6.4✪以文本方式显示1.11✪1秒64M 0测试用例2 以文本方式显示1. 2 1✪2.5✪3.5✪4.10✪以文本方式显示1.bit is doomed!✪1秒64M 0#include<stdio.h>int main(){int dragon,hero;scanf("%d%d",&dragon,&hero);int dragonhead[100]={0};int herohight[100]={0};//inputfor(int i=0;i<dragon;i++)scanf("%d",&dragonhead[i]);for(int i=0;i<hero;i++)scanf("%d",&herohight[i]);//make the date in orderint temp;for(int i=0;i<dragon;i++){for(int j=0;j<dragon-1;j++){if(dragonhead[j]>dragonhead[j+1]){temp=dragonhead[j];dragonhead[j]=dragonhead[j+1];dragonhead[j+1]=temp;}}}for(int i=0;i<hero;i++){for(int j=0;j<hero-1;j++){if(herohight[j]>herohight[j+1]){temp=herohight[j];herohight[j]=herohight[j+1];herohight[j+1]=temp;}}}//arrange hero to kill the dragonint start=0;for(int i=0;i<dragon;i++){for(int j=start;j<hero;j++){if(herohight[j]>=dragonhead[i]){dragonhead[i]=0;start++;break;}else{herohight[j]=0;start++;}}if (start>hero)break;}for(int i=start;i<hero;i++)herohight[i]=0;//caculate the gradeint sd=0;int sh=0;for(int i=0;i<dragon;i++)sd=sd+dragonhead[i];for(int i=0;i<hero;i++)sh=sh+herohight[i];if(sd==0)printf("%d\n",sh);elseprintf("bit is doomed!\n");}31 合并字符串成绩: 10 / 折扣: 0.8输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
28 组成最大数成绩: 10 / 折扣: 0.8任意输入一个自然数,输出该自然数的各位数字组成的最大数。
例如,输入 1593 ,则输出为 9531 。
输入: 自然数 n输出: 各位数字组成的最大数测试输入 期待的输出 时间限制 内存限制 额外进程测试用例 1以文本方式显示 1. 1593✪以文本方式显示 1. 9531✪1秒64M#include<stdio.h> #include<string.h> int main(){ char a[10000]; int x[10]={0}; scanf("%s",a); int n=strlen(a); for(int i=0;i<n;i++){x[a[i]-'0']++;} for(int i=9;i>=0;i--) for(int j=0;j<x[i];j++){printf("%d",i);} printf("\n"); }29 北理工的恶龙成绩: 10 / 折扣: 0.8背景:最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花 最少的学分数 杀死恶龙,于是找到你寻求帮助。
输入:第一行龙头数n , 勇士人数m (1<=n, m<=100 )接下来n 行,每行包含一个整数,表示龙头的直径接下来m 行,每行包含一个整数,表示勇士的身高l输出:如果勇士们能完成任务,输出校长需要花的最小费用;否则输出“ bit is doomed! ”测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1. 2 3✪2.5✪3.4✪4.7✪5.8✪6.4✪以文本方式显示1.11✪1秒64M 0测试用例2 以文本方式显示1. 2 1✪2.5✪3.5✪4.10✪以文本方式显示1.bit is doomed!✪1秒64M 0#include<stdio.h>int main(){int dragon,hero;scanf("%d%d",&dragon,&hero);int dragonhead[100]={0};int herohight[100]={0};//inputfor(int i=0;i<dragon;i++)scanf("%d",&dragonhead[i]);for(int i=0;i<hero;i++)scanf("%d",&herohight[i]); //make the date in orderint temp;for(int i=0;i<dragon;i++){for(int j=0;j<dragon-1;j++){if(dragonhead[j]>dragonhead[j+1]){temp=dragonhead[j];dragonhead[j]=dragonhead[j+1];dragonhead[j+1]=temp;}}}for(int i=0;i<hero;i++){for(int j=0;j<hero-1;j++){if(herohight[j]>herohight[j+1]){temp=herohight[j];herohight[j]=herohight[j+1];herohight[j+1]=temp;}}}//arrange hero to kill the dragonint start=0;for(int i=0;i<dragon;i++){for(int j=start;j<hero;j++){if(herohight[j]>=dragonhead[i]){dragonhead[i]=0;start++;break;}else{herohight[j]=0;start++;}}if (start>hero)break;}for(int i=start;i<hero;i++)herohight[i]=0;//caculate the gradeint sd=0;int sh=0;for(int i=0;i<dragon;i++)sd=sd+dragonhead[i];for(int i=0;i<hero;i++)sh=sh+herohight[i];if(sd==0)printf("%d\n",sh);elseprintf("bit is doomed!\n");}31 合并字符串成绩: 10 / 折扣: 0.8输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
输入:两个已经排好顺序(升序)的两个字符串输出:一个合并在一起的有序(升序)的字符串要求:设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了。
测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1.abcdef✪2.bcefghi✪以文本方式显示1.abbccdeeffghi✪1秒64M 0#include<stdio.h>int main(){char a[50],b[50];gets(a);gets(b);char *p1;p1=&a[0];char *p2;p2=&b[0];for(;1;){if(*p1=='\0'){printf("%s",p2);break;}if(*p2=='\0'){printf("%s",p1);break;}if(*p1>*p2){printf("%c",*p2);p2++;}else{printf("%c",*p1);p1++;}}printf("\n");}32 串的减法成绩: 10 / 折扣: 0.8输入字符串s和t(串长不超过80个字符),将在字符串s中出现,但未在字符串t中出现的字符组成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符,输出u。
例如:当s="112345",t="2467"时,u="1135"。
输入:第一行为串s第二行为串t输出:串u测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示以文本方式显示1秒64M 0#include<stdio.h>#include<string.h>int main(){char a[80];char b[80];gets(a);gets(b);int l=strlen(a);for(int i=0;b[i]!='\0';i++){for(int j=0;j<l;j++)if(a[j]==b[i])a[j]='\0';}for(int k=0;k<l;k++)if(a[k]!='\0')printf("%c",a[k]);printf("\n");}H9:五年级小学生的题目(选做)成绩: 5 / 折扣: 0.8那两个小朋友在不断进步,他们已经学会了负数和多位数,于是他们又开始进行游戏了。
小明给出一堆整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数及最小数进行算术运算的结果。
输入:用逗号分隔的整数序列,及其运算符和等号输出:最大数op 最小数=结果说明:本题目应该可以不使用数组就可以完成,关键是如何处理负数和减法。
测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1.1,10,100,+,=✪以文本方式显示1.100 + 1 = 101✪1秒64M 0测试用例2 以文本方式显示1.-100,-1,1,100,+,=✪以文本方式显示1.100 + (-100) = 0✪1秒64M 0测试用例3 以文本方式显示1.-20,-10,0,10,20,*,=✪以文本方式显示1.20 * (-20) = -400✪1秒64M 0#include<stdio.h>#include<string.h>int intpow(int a,int b)//a^b{int result=1;for(int i=0;i<b;i++)result=result*a;return result;}struct date{int max;int min;char op;int r;};struct date function(char p[],int n) {struct date result;n=n-4;int max=-10000;int min=10000;int count=0;//need back to 0int x[10]={0};//need back to 0int temp=0;//need back to 0int sign=1;//need back to 1for(int i=0;i<=n;i++){if (p[i]==',')//meet , means end caculate the value and compare with max and min {for(int k=0;k<count;k++)temp=temp+x[k]*intpow(10,count-1-k);temp=temp*sign;if(temp>max) max=temp;if(temp<min) min=temp;count=0;temp=0;sign=1;continue;}if(p[i]=='-'){sign=-1;continue;}else{x[count]=p[i]-'0';count++;}}char opp;opp=p[n+1];if(opp=='+'){result.r=max+min;result.op='+';}else if(opp=='-'){result.r=max-min;result.op='-';}else if(opp=='*'){result.r=max*min;result.op='*';}else if(opp=='/'){if(min==0)result.r=0;else{result.r=max/min;}result.op='/';}else if(opp=='%'){result.r=max%min;result.op='%';}result.max=max;result.min=min;return result;}int main(){char w[100];gets(w);int l=strlen(w);struct date cc=function(w,l);if(cc.op=='/'&&cc.min==0)printf("Error!");else{if(cc.max<0)printf("(%d)",cc.max);elseprintf("%d",cc.max);printf(" %c ",cc.op);if(cc.min<0)printf("(%d)",cc.min);elseprintf("%d",cc.min);printf(" = ");printf("%d",cc.r);printf("\n");}}H10:扫雷(选做)成绩: 5 / 折扣: 0.8背景你玩儿过扫雷游戏吧?有个操作系统中带了这个小游戏,那个系统叫什么来着?在游戏中要想过关,就必须要在一个NxM 的区域上找出所有的地雷。