c语言第六次作业

合集下载

C语言第五六次作业

C语言第五六次作业
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语言第六次作业解析

c语言第六次作业解析

第六次作业:指针(以下题目如无特殊声明,请使用指针技术实现,尽量不要使用数组作为形参,也尽量避免使用数组下标引用数组元素)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语言第六章复习题(含答案)

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语言第六章习题答案

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语言第五六次作业

本题解析: 这道题是从出现作业为止最难得题目。涉及 到一些动态规划的思想。(我只想到这一种做法, 欢迎大家有简单做法的来分享~) 用f[i][j]表示到字符串s中的第i个字符为止最高 位为j(用1-26分别代替’a‟-‟z‟)的最长字串的字符 数。 动态转移方程为: F[i][j]=F[i-1][j] (s[i]≠j) F[i][j]=max(f[i-1][k])+1 (1≤k≤j) (s[i]=j) 这个题目不是很好讲清楚,如果想透彻的理解的 话可以来找我(中408 JRC)不过。。不保证一定能
本题解析:
求异或,同时降序输出。那么将问题简化后 可以发现如果将两个数组中的数都读进同一个数 组然后降序排序若是数组中存在相同元素则不输 出,若只出现一次则输出。那么结果与题目要求 就相同了。
for (i=0;i<sum;i++) for (j=i+1;j<sum;j++) if (a[i]<a[j]) #include<stdio.h> { int main() k=a[i]; { a[i]=a[j]; int a[100]; a[j]=k; int i,j,k; } /*降序排序*/ int sum=0; a[sum]=5257;/*保证a[sum]不与前面的数相同*/ char ch; int flag=0;/*flag表示已经输出了多少数,若为0 int tot=0; 则不需要先输出空格,否则输出空格与前面输出 scanf("%d",&a[sum++]); 的数字隔开*/ while (1) for (i=0;i<sum;i++) { { if (i==0) if (a[i]!=a[i+1]) ch=getchar(); { if (flag) printf(" "); if (ch=='\n') tot+=1; printf("%d",a[i]); if (tot==2) break; flag++; scanf("%d",&a[sum++]); } } /*这里是进行读入,由于一共 if (i!=0) if ((a[i]!=a[i+1])&&(a[i]!=a[i-1])) 有两行那么每读完一个数就读入一 { if (flag) printf(" "); 个字符判断这个字符是不是换行符, printf("%d",a[i]); 当出现两个换行符的时候读入结束 flag++; */ } } }

c++第六章作业

c++第六章作业

c++第六章作业第六章6-1 数组A[10][5][15]一共有多少个元素?解:10×5×15 = 750 个元素6-2在数组a[20]中第一个元素和最后一个元素是哪一个?解:第一个元素是a[0],最后一个元素是a[19]。

6-3 用一条语句定义一个有五个元素的int型数组,并依次赋予1~5的初值。

解:源程序:int IntegerArray[5] = { 1,2,3,4,5 };或:int IntegerArray[] = { 1,2,3,4,5 };6-4 已知有一个数组名叫oneArray,用一条语句求出其元素的个数。

解:源程序:nArrayLength = sizeof(oneArray) / sizeof(oneArray[0]);6-5 用一条语句定义一个有5×3个元素的二维int型数组,并依次赋予1~15的初值。

解:源程序:int theArray[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };或:int theArray[5][3] = { {1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15} };6-6 运算符*和&的作用是什么?解:*称为指针运算符,是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符,也是一个一元操作符,是用来得到一个对象的地址。

6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别?解:指针是一种数据类型,具有指针类型的变量称为指针变量。

指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。

6-8 定义一个整型指针,用new语句为其分配包含10个整型元素的地址空间。

解:源程序:int *pInteger = new int[10];6-9 在字符串”Hello,world!”中结束符是什么?解:是NULL字符。

计算机国二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_8章参考答案

c  程序设计教程习题6_8章参考答案
}
int getage()
{
return age;
}
double getweight()
{
return weight;
}
char *getcolor()
{
return color;
}
};
void main()
{
Cat c1;
int a;
double w;
char c[10];
cin>>a>>w>>c;
print(h3);
}
第七章
一、选择题
1、D2、B3、B4、A5、B
6、A7、D8、B9、C10、B
二、程序填空
1、fname,“w”(ch=getchar())!=’#’count++
2、(c=fgetc(fp))length++length=0
3、”wb”&emp, sizeof(employer),1,fpfclose(fp)“rb”
newnode->expn=p1->expn;
p1=p1->next;
}
else if(p1->expn<p2->expn)
{
newnode->coef=p2->coef;
newnode->expn=p2->expn;
p2=p2->next;
}
else
{
newnode->coef=p2->coef+p1->coef;
else
{
if(p->coef!=0&&p->expn!=0)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五题#include <stdio.h>int main (){int a[10][10],i,j,n;printf("Input n:");scanf("%d",&n);printf("* ");for(j=1;j<=n;j++){a[0][j]=j;printf("%d ",a[0][j]);}printf("\n");for(i=1;i<=n;i++){a[i][0]=i;printf("%d ",a[i][0]);for(j=1;j<=i;j++){a[i][j]=a[i][0]*a[0][j];printf("%d ",a[i][j]);}printf("\n");}return 0;}第二题#include <stdio.h>int main(void){int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};int year,month,day,sum=0,i;printf("Input year,month,day:");scanf("%d%d%d",&year,&month,&day);if(year%4==0&&year%100!=0||year%400==0) a[1]=29;elsea[1]=28;for(i=0;i<month-1;i++)sum=sum+a[i];sum=sum+day;printf("%d",sum);return 0;}第三题#include <stdio.h>int main (){int n,i,j,a[6][6],index1,index2,index3,max;printf("Input n:");scanf("%d",&n);printf("Input arry:");for(i=0;i<n;i++){for(j=0;j<n;j++)scanf("%d",&a[i][j]);}for(i=0;i<n;i++){max=a[i][0];for(j=0;j<n;j++){if(a[i][j]>=max){index1=j;max=a[i][index1];}}for(i=0;i<n;i++){if(a[i][index1]<=max){index2=i;max=a[index2][index1];}}for(j=0;j<n;j++){if(a[index2][j]>=max){index3=j;max=a[index2][index3];}}if(index3==index1)break;}if(index3==index1)printf("a[%d][%d]=%d\n",index2,index3,a[index2][index3]);elseprintf("No\n");return 0;}字符串2题#include <stdio.h>int main (){char a[80],b;int i,index=-1,c;printf("Input a character:");scanf("%c",&b);printf("Input a string:");scanf("%s",a); (不能用gets,不知道为什么)for(i=0;a[i]!='\0';i++){if(a[i]==b)index=i;}if(index==-1)printf("Not Found\n");elseprintf("index=%d\n",index);return 0;}C语言字符串第四题#include <stdio.h>int main(){char a[80];int i;printf("Input a string:");gets(a);printf("After replaced:");for(i=0;a[i]!='\0';i++){if('A'<=a[i]&&a[i]<='Z')a[i]='A'+'Z'-a[i];printf("%c",a[i]);}printf("\n");return 0;}第五题#include <math.h>#include <stdio.h>int main (){char a[80],d[80];int i,j=-1,sum=0,sum1;printf("Input a string:");gets(a);for(i=0;a[i]!='\0';i++){if((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='F')){j++;d[j]=a[i];}}i=j;for(j=j;j>=0;j--){if(d[j]>='A'&&d[j]<='F')d[j]=d[j]-55;if(d[j]>='0'&&d[j]<='9')d[j]=d[j]-48;sum1=d[j];sum=sum1*pow(16,i-j)+sum;}printf("Hex=%d\n",sum);return 0;}指针约瑟夫环问题(不会做,看的答案,还是不懂)#include<stdio.h>#include<malloc.h>#include <stdlib.h>int main(){int n,i,total,token,*a;printf("Input n:");scanf("%d",&n);if((a=(int*)malloc(n*sizeof(int)))==NULL)exit(1);for(i=0;i<n;i++)a[i]=i+1;total=n;i=0;while(total>1){token=0;while(token<3){if(a[i]!=0)token++;if(token<3)i=(i+1)%n;}a[i]=0;i=(i+1)%n;total--;}for(i=0;i<n;i++)if(a[i]!=0)break;printf("Last No. is: %d\n",a[i]);free(a);return 0;}30页第5题#include <math.h>#include <stdio.h>int main(){float loan,rate,money;int year;printf("Input loan:");scanf("%f",&loan);printf("Input rate:");scanf("%f",&rate);printf("还款年限——月还款额\n");for(year=5;year<=30;year++){money=(loan*rate*pow(1+rate,year*12))/(pow(1+rate,year*12)-1);printf("还款年限:%d\t",year);printf("月还款额:%10.0f\n",money);}return 0;}P42页第八题#include <stdio.h>int main (){int a,n,i,sum=0,j,b;printf("Input a:");scanf("%d",&a);printf("Input n:");scanf("%d",&n);b=a;for(j=1;j<=n;j++){a=b;for(i=1;i<=j-1;i++)a=b+a*10;sum=sum+a;}printf("s=%d\n",sum);return 0;}实验八第四题void delchar(char s[],char c){char *p=s,*q=s;for(;*p!='\0';p++){if(*p!=c)*q++=*p;}*q='\0';}#include <stdio.h>#define n 80int main (){char s[n],*p,a;printf("Input a string:");gets(s);p=s;printf("input a char:");scanf("%c",&a);delchar(p,a);printf("After delected,the string is:");printf("%s\n",s);return 0;}void strmcpy(char s[],char t[],int m){char *q=s,*p=t;for(p=p+m-1;*p!='\0';p++,q++)*q=*p;*q='\0';}#include <stdio.h>int main (){char s[80],*p,t[80],*q=s;int a;printf("Input a string:");gets(t);p=t;printf("input an interger:");scanf("%d",&a);strmcpy(q,p,a);printf("Output is:");printf("%s\n",s);return 0;}实验八第五题#include <stdio.h>#define n 80int main (){char s[n],a,*p,*q,t[n];q=t;int i=-1; (注意i的初值)printf("Input a string:");gets(s);p=s;for(;*p!='\0';p++)i++;for(i=i;i>=0;i--,q++){*q=s[i];}*q='\0';for(p=s,q=t;*p!='\0';p++,q++){if(*p!=*q)break;}if(*p=='\0')printf("YES\n");elseprintf("No\n");return 0;}89页第九题源程序:#include <stdio.h>int main (void){struct student{int number;char name[20];int score[3];int sum;};(学生不止一个,结构体变量定义不对)int i,j,k,n,max=0;printf("输入n:");scanf("%d",&n);for(i=0;i<n;i++){printf("输入第%d个学生的学号、姓名和三门课程成绩:",i+1);scanf("%d%s",&student[i].number,&student[i].name);for(j=0;j<3;j++){scanf("%d",&student[i].score[j]);student[i].sum+=student[i].score[j]; (如果这样成绩为随机数,应该在刚进入外循环时,定义stud[i].sum=0}}max=student[0].sum;for(i=0;i<n;i++)if(max<student[i].sum) (把小于改成小于或等于){max=student[i].sum; k=i;}printf("总分最高的学生是%s,%d分\n",student[k].name,student[k].sum);return 0;}改正后的程序#include <stdio.h>int main (void){struct student{int number;char name[20];int score[3];int sum;}stud[10];int i,j,k,n,max;printf("输入n:");scanf("%d",&n);for(i=0;i<n;i++){stud[i].sum=0;printf("输入第%d个学生的学号、姓名和三门课程成绩:",i+1);scanf("%d%s",&stud[i].number,stud[i].name);for(j=0;j<3;j++){scanf("%d",&stud[i].score[j]);stud[i].sum+=stud[i].score[j];}}max=stud[0].sum;for(i=0;i<n;i++)if(max>=stud[i].sum){max=stud[i].sum;k=i;}printf("总分最高的学生是%s,%d分\n",stud[k].name,stud[k].sum);return 0;}108页改错题源程序:#include <stdio.h>#include <stdlib.h>int main (void){FILE fp; (必须指针定义,fp前面加*)int n,sum;if((fp=fopen("a.txt","r"))==NULLl){ (文件为读\写文件)printf("Cant't open File!");exit(0);}while(fscanf(fp,"%d",&n)==EOF) (改为不等于)sum=sum+n;fprintf(fp,"%d",sum);fclose(fp);return 0; }。

相关文档
最新文档