西工大C语言POJ作业
更新时间:2023-08-09 13:49:01 阅读量: 综合文库 文档下载
- 西工大c语言mooc答案推荐度:
- 相关推荐
西工大C语言POJ作业
T071、大数乘法
#include <stdio.h> #include <string.h> #include <stdlib.h>
void cheng(char a[],char b[]) {
int i,j,ca,cb,*s; ca=strlen(a); cb=strlen(b);
s=(int *)malloc(sizeof(int)*(ca+cb)); //分配存储空间 for (i=0;i<ca+cb;i++) s[i]=0; // 每个元素赋初值0
for (i=0;i<ca;i++)
for (j=0;j<cb;j++)
s[i+j+1]+=(a[i]-'0')*(b[j]-'0');
for (i=ca+cb-1;i>=0;i--) // 这里实现进位操作 if (s[i]>=10) {
s[i-1]+=s[i]/10; s[i]%=10; } i=0;
while(s[i]==0) i++; // 跳过头部0元素
西工大C语言POJ作业
for (;i<ca+cb;i++) printf("%d",s[i]); printf("\n"); free(s); }
int main() {
char a[100],b[100]; gets(a),gets(b);
if(a[0]=='-'&&b[0]!='-') {
printf("-");
cheng(&a[1],b); }
else if(a[0]=='-'&&b[0]=='-') {
cheng(&a[1],&b[1]); }
else if(a[0]!='-'&&b[0]=='-') {
printf("-");
cheng(a,&b[1]); } else
cheng(a,b); return 0; }
T072、创建与遍历职工链表
西工大C语言POJ作业
#include <stdio.h> #include <stdlib.h> struct member{ int data;
struct member*next; };
struct member *creat(struct member*head) {
struct member *p1,*p2=NULL; int i,n;
scanf("%d",&n); for(i=0;i<n;i++) {
p1=(struct member*)malloc(sizeof(struct member)); scanf("%d",&p1->data); if(i==0)
head=p1; else
p2->next=p1; p2=p1; }
p2->next=NULL; return head; }
西工大C语言POJ作业
void list(struct member*head) {
struct member *p=head; while(p!=NULL) {
printf("%d ",p->data); p=p->next; }
printf("\n"); }
int main() {
struct member *head; head=creat(head); list(head); return 0; }
T073、幸运儿
西工大C语言POJ作业
#include <stdio.h> int main() {
int a[51]={0},b[20],x,count=0,num=0,j=0,n,i,flag=0; scanf("%d%d",&n,&x); for(i=0;i<20;i++) scanf("%d",&b[i]); while(1) {
for(i=1;i<=n;i++) {
if(a[i]==0) num++; if(num==b[j]) {
a[i]=1; num=0; count++; }
if(count==n-x) {
flag=1; break; } }
if(flag==1) break; j++; num=0; }
for(i=1;i<=n;i++) if(a[i]==0)
printf("%d ",i);
西工大C语言POJ作业
printf("\n"); return 0; }
T074、插入链表节点
#include <stdio.h> #include <stdlib.h> struct member{ int data;
struct member*next; };
struct member *creat(struct member*head) {
struct member *p1,*p2=NULL; int i,n;
scanf("%d",&n); for(i=0;i<n;i++) {
p1=(struct member*)malloc(sizeof(struct member)); scanf("%d",&p1->data); if(i==0)
head=p1; else
p2->next=p1; p2=p1; }
西工大C语言POJ作业
p2->next=NULL; return head; }
struct member *insert(struct member*head) {
struct member *p0=head,*p1;
p1=(struct member *)malloc(sizeof(struct member)); scanf("%d",&p1->data); while(p0->next!=NULL) {
if(p0->data<p1->data&&p0->next->data>p1->data) {
p1->next=p0->next; p0->next=p1; }
p0=p0->next; }
return head; }
void list(struct member*head) {
struct member *p=head; while(p!=NULL) {
printf("%d ",p->data); p=p->next; }
printf("\n"); }
int main() {
struct member *head; head=creat(head); head=insert(head); list(head); return 0; }
T075、毕业设计论文打印
西工大C语言POJ作业
#include <stdio.h> int main() {
int n,m,a[100]={0},count=0,flag=0,i,j; scanf("%d%d",&n,&m); for(i=0;i<n;i++)
scanf("%d",&a[i]); while(1) {
for(i=0;i<n&&a[i]!=0;i++) {
for(j=i;j<n;j++) if(a[j]>a[i]) break; if(j==n) {
西工大C语言POJ作业
a[i]=0; count++; if(i==m) {
flag=1; break; } } }
if(flag==1) break; }
printf("%d\n",count); return 0; }
T076、链表动态增长或缩短
#include <stdio.h> #include <stdlib.h>
#define LEN sizeof(struct student) int a[10000]; struct student {
int age;
struct student *next;
西工大C语言POJ作业
}; int n;
struct student *creat(int num) {
struct student *head; struct student *p1,*p2; n=0;
p1=p2=(struct student*)malloc(LEN); scanf("%d",&p1->age); head=NULL; while(n<num) {
n=n+1; if(n==1) head=p1; else
p2->next=p1; p2=p1;
p1=(struct student *) malloc(LEN); if(n<num)
scanf("%d",&p1->age);
}
p2->next=NULL; return head; }
struct student *del(struct student *head) {
struct student *p1,*p2,*p3,*p4,*p5; p1=head; p5=head; do {
if(a[p1->age]==1&&p1->next!=NULL) {p2->next=p1->next; p3=p5;
while(p3!=NULL) {
if(p3->age==p1->age) { if(p3==head) head=p3->next; else
西工大C语言POJ作业
p4->next=p3->next;} p4=p3;
p3=p3->next; }}
else if(a[p1->age]==1&&p1->next==NULL) {p2->next=NULL; p3=p5;
while(p3!=NULL) {
if(p3->age==p1->age) {if(p3==head) head=p3->next; else
p4->next=p3->next;} p4=p3;
p3=p3->next; }}
else a[p1->age]=1; p2=p1;
p1=p1->next;
} while(p1!=NULL); return head; }
int main() {
int num;
scanf("%d",&num); struct student *p; p=creat(num); p=del(p); do {
printf("%d ",p->age); p=p->next; }while(p!=NULL); return 0; }
T077、大数减法
西工大C语言POJ作业
#include <stdio.h> #include <string.h>
#define max(a,b) a>b?a:b #define min(a,b) a>b?b:a int sum[101];
void jia(char a[],char b[]) {
int flag=0,i,len1,len2,lenmax,lenmin; len1=strlen(a),len2=strlen(b);
lenmax=max(len1,len2),lenmin=min(len1,len2); for(i=1;i<=lenmax;i++) {
if(i<=lenmin) {
sum[lenmax-i]=a[len1-i]+b[len2-i]-'0'-'0'+flag; if(sum[lenmax-i]>=10) {
sum[lenmax-i]=sum[lenmax-i]-10; flag=1; }
else flag=0; } else{
if(len1>len2)
西工大C语言POJ作业
{
sum[lenmax-i]=a[len1-i]-'0'+flag; if(sum[lenmax-i]>=10) {
sum[lenmax-i]=sum[lenmax-i]-10; flag=1; }
else flag=0; } else {
sum[lenmax-i]=b[len2-i]-'0'+flag; if(sum[lenmax-i]>=10) {
sum[lenmax-i]=sum[lenmax-i]-10; flag=1; }
else flag=0; } } }
if(flag==1) printf("1");
for(i=0;i<lenmax;i++) printf("%d",sum[i]); printf("\n"); }
void jian(char a[],char b[]) {
int flag=0,i; int len1,len2;
len1=strlen(a),len2=strlen(b); for(i=1;i<=len1;i++) {
if(i<=len2) {
if(a[len1-i]-b[len2-i]-flag>=0) {
sum[len1-i]=a[len1-i]-b[len2-i]-flag; flag=0; } else {
sum[len1-i]=a[len1-i]-b[len2-i]-flag+10;
西工大C语言POJ作业
flag=1; } } else {
if(a[len1-i]-flag-'0'>=0) {
sum[len1-i]=a[len1-i]-flag-'0'; flag=0; } else {
sum[len1-i]=a[len1-i]-flag+10-'0'; flag=1; } } }
for(i=0;i<len1&&sum[i]==0;i++); for(;i<len1;i++)
printf("%d",sum[i]); printf("\n"); }
void compare(char a[],char b[]) {
int len1,len2;
len1=strlen(a),len2=strlen(b);
if(len1>len2||(len1==len2&&strcmp(a,b)>0)) jian(a,b);
else if(strcmp(a,b)!=0) {
printf("-"); jian(b,a); } else
printf("0\n"); }
int main() {
char a[100],b[100]; gets(a); gets(b);
if(a[0]=='-'&&b[0]!='-') {
西工大C语言POJ作业
printf("-"); jia(&a[1],b); }
else if(a[0]=='-'&&b[0]=='-') compare(&b[1],&a[1]); else if(a[0]!='-'&&b[0]=='-') jia(a,&b[1]); else
compare(a,b); return 0; }
T078、大数除法
#include<stdio.h> #include<string.h> int len1,len2; int re[105];
void sub(char s1[],char s2[]) {
int i=0; int j; while(1) {
if(s1[i]=='0') i++;
西工大C语言POJ作业
{ j=i; break; } }
for(;i<len2;i++) {
s1[i]=s1[i]-s2[i]+'0'; }
for(i=len2-1;i>j;i--) //低位开始检测是否小于0 {
if(s1[i]<'0') {
s1[i]+=10; s1[i-1]--; } } }
void chu(char s1[],char s2[]) {
int p,i;
len1=strlen(s1); len2=strlen(s2);
if(len1<len2||(len1==len2&&strncmp(s1,s2,len2)<0)) {
printf("0\n"); return; } p=0; while(1) {
re[p]=0;
while(strncmp(s1,s2,len2)>=0)
//一直进行减法,直到不能减为止 {
sub(s1,s2); re[p]++; } p++;
if(len1==len2) break;
for(i=len2-1;i>=0;i--)
//在s2前面补0,以便进行减法运算
//如果a<b,直接输出0
西工大C语言POJ作业
s2[i+1]=s2[i]; }
s2[0]='0'; len2++;
s2[len2]='\0'; } i=0; while(1) {
if(re[i]==0) i++; else break; }
for(;i<p;i++)
printf("%d",re[i]); printf("\n"); }
int main(void) {
char s1[105]; char s2[105]; gets(s1),gets(s2);
if(s1[0]=='-'&&s2[0]!='-') {
printf("-");
chu(&s1[1],s2); }
else if(s1[0]=='-'&&s2[0]=='-') chu(&s1[1],&s2[1]);
else if(s1[0]!='-'&&s2[0]=='-') {
printf("-");
chu(s1,&s2[1]); } else
chu(s1,s2); return 0; }
T079、链表节点删除
西工大C语言POJ作业
#include <stdio.h> #include <stdlib.h> struct student{ int no;
char name[12]; int age;
struct student *next; };
struct student *deletelist(struct student *head,int n) {
struct student *p=head,*q; if(p->no==n) {
head=p->next; free(p); } else{
while(p->next!=NULL&p->next->no!=n) p=p->next;
if(p->next->no==n) {
q=p->next;
p->next=q->next; free(q);
西工大C语言POJ作业
} }
return head; }
void list(struct student *head) {
struct student *p=head; while(p->next!=NULL) {
printf("%d ",p->no); p=p->next; }
printf("\n"); }
int main() {
int n,i=0;
struct student *head,*p1,*p2;
p1=p2=(struct student *)malloc(sizeof(struct student)); for(i=0;;i++) {
if(i==0) head=p1; else
p2->next=p1; p2=p1;
scanf("%d",&p1->no); if(p1->no==0) break;
scanf("%s %d",p1->name,&p1->age);
p1=(struct student *)malloc(sizeof(struct student)); }
p2->next=NULL; scanf("%d",&n); list(head);
head=deletelist(head,n); list(head); return 0; }
T080、行程编码压缩算法
西工大C语言POJ作业
#include <stdio.h> #include <stdlib.h>
int main(void) {
char line[100],a; int i,k,m; k=1; m=0; gets(line); a=line[0];
for(i=1;line[i]!='\0';i++) {
if(a!=line[i]) {
if(m==0&&k==1) {
printf("1"); m=1;
西工大C语言POJ作业
}
if(a=='1'&&m==1) printf("11"); if(m==1&&a!='1') printf("%c",a); if(k!=1) {
printf("%d%c",k,a); k=1; } } else {
if(m==1) {
printf("1"); m=0; }
if(k==9) {
printf("9%c",a); k=1; }
else k++; }
a=line[i]; }
if(k!=1) {
printf("%d%c",k,a); } else {
if(m==0) {
if(a=='1')
printf("1111"); else
printf("1%c1",a); } else {
if(a=='1')
printf("111"); else
printf("%c1",a);
正在阅读:
西工大C语言POJ作业08-09
医学生物学 现代生物技术在医学上的应用03-19
高中迎晚会策划书03-08
《报到证开往委托人才交流机构托管档案、户口审核证明》(格式)03-26
高等代数第11章双线性函数与辛空间06-03
质量管理细则11-23
盗梦空间英文版08-11
马鞍山市中考满分作文-满分作文03-08
在郑州请客吃饭,给你推荐这75家店01-11
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 西工大
- 作业
- 语言
- POJ
- 米非司酮联合利凡诺应用于中期妊娠引产的疗效观察
- Polycom_RSS_4000中文指导书
- 软件工程课程设计任务书——图书管理系统
- 秦岭终南山特长公路隧道关键技术研究通过验收
- 正交试验优选芩莲口服液中黄芩苷的提取工艺
- 3.12.1《北伐战争》每课一练(鲁教版八年级上)
- 放射诊疗管理规定
- 深纺织B:2014年半年度报告摘要(英文版)
- 基地式气动温度指示调项目可行性研究报告(发改立项备案+2013年最新案例范文)详细编制方案
- 人教版七年级下册语文第一单元第1课 《从百草园到三味书屋》教案初中
- 《自己去吧》教案及反思
- 示波器SS-7802A中文说明书
- 华南前汛期开始和结束日期的划分
- winxp和win7文件共享
- matlab软件在数学建模中的应用
- 2004年职称英语考试理工类B级试题及答案
- 新建 北京市高校高水平男子足球队现状分析—袁文涛
- 邢山虎进军移动客户端 挑战即时竞技类游戏
- 小学语文阅读教学研究课题方案
- 形式主义方面存在的问题