c语言作业,求助!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言作业,求助!相关的知识,希望对你有一定的参考价值。
1. 数组转置
在主函数中定义一个n(1<=n<=6)维方阵,并从键盘读入数组元素;编写函数transpose(a,n)实现数组a转置;在主函数中输出转置后的方阵。
例:输入 4
1 2 3 4 输出 1 5 9 13
5 6 7 8 2 6 10 14
9 10 11 12 3 7 11 15
13 14 15 16 4 8 12 16
2. 学生信息
编写4个函数实现下列功能:
(1)函数input() 输入20个学生姓名和高考总分;
(2)函数sort() 按高考总分从高到低的顺序排序,姓名顺序也随之调整;
(3)函数display()显示学生姓名及其高考总分;
(4)在主函数中输入一个姓名,编写函数search() 用顺序查找方法找出该学生。若查找成功,在主函数中显示该生姓名及其高考总分;否则显示查找失败。
3. 字符串处理
定义两个C源程序文件:fmain.c 和 fstring.c。fmain.c中包含主函数,实现字符串处理功能选项和字符串的输入与结果的输出。fstring.c中包含两个函数delchar(s,c)和strrev (s),实现删除字符和字符串反转功能。
delchar(s,c):在主函数中输入字符串和要删除的字符,此函数将字符串s中出现的所有c字符删除;再在主函数中输出删除后的字符串。
strrev (s):在主函数中读入字符串,此函数实现将字符串s反转;再在主函数中输出反转后的字符串。
SAMPLE OUTPUT:
1. Reverse a string.
2. Delete a character in a string.
Please input your choice: 1
Enter a string: holiday
Reversed string is:yadiloh
Would you like to continue? (y/n)Y
1. Reverse a string.
2. Delete a character in a string.
Please input your choice: 2
Enter a string: one world, one dream
Enter a character you want to delete: o
Deleted string is:ne wrld, ne dream
Would you like to continue?(y/n)N
4. 分别用函数和带参数的宏,从三个数中找出最大数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
char name[6];
float score;
;
node a[20];
void input()
for(int i=0;i<20;i++)
scanf("%s%f",a[i].name,&a[i].score);
void sort()
int k,i,j;
float t1;
char t2[6];
for(i=0;i<20;i++)
k=1;
for(j=0;j<19;j++)
if(a[j].score<a[j+1].score)
k=0;
t1=a[j].score;
a[j+1].score=a[j].score;
a[j].score=t1;
strcpy(t2,a[j].name);
strcpy(a[j+1].name,a[j].name);
strcpy(a[j].name,t2);
if(k)break;
void display()
for(int i=0;i<20;i++)
printf("%s\t%f",a[i].name,a[i].score);
void search()
char temp[6];
scanf("%s",temp);
for(int i=0;i<20;i++)
if(strcmp(a[i].name,temp))
printf("%s\t%f",a[i].name,a[i].score);
if(i==20)printf("查找失败");
void main()
input();
sort();
display();
search();
3
//fstring.h
void delchar(char *s,char c);
void strrev(char *s);
//fstring.c
#include<stdio.h>
#include<stdlib.h>
#include"fstring.h"
void delchar(char *s,char c)
char *p1,*p2;
p1=p2=s;
while(*p1)
if(*p1!=c)
*p2=*p1;
p2++;
p1++;
*p2=0;
void strrev(char *s)
char *p1,*p2;
char c;
p1=p2=s;
while(*(p2+1));
while(p2!=p1)
c=*p1;
*p1=*p2;
*p2=c;
p1++;
p2--;
//fmain.c
#include"fstring.h"
void main()
char a[]="abcdosensojsosleihf";
char c='s';
delchar(a,c);
strrev(a);
4
#define MAX(a,b) (a>b)?a:b
void main()
scanf("%d%d%d",&a,&b,&c);
printf("%d",MAX(MAX(a,b),c));
本回答被提问者采纳 参考技术B 1.程序如下:
#include <stdio.h>
void trans(int *p,int n)
int i,j,temp;
int *pi,*pj;
for(i=0;i<=n-1;i++)
for(j=0;j<=i;j++)
pi =p +i*n; /*p首地址 */
pj =p +j*n;
temp=pi[j];
pi[j]=pj[i];
pj[i]=temp;
return;
int main()
int a[4][4]= 1, 2, 3, 4,
5, 6, 7, 8,
9, 10,11,12,
13,14,15,16;
int i,j;
printf("before transform:\n");
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
printf(" %d",a[i][j]);
printf("\n");
trans((int*)a,4);
printf("after transform:\n");
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
printf(" %d",a[i][j]);
printf("\n");
return 0;
参考技术C 想同时回答这些问题很麻烦啊。。。
我刚好有个第一题的程序,一模一样的。
要的话私聊我。 参考技术D 分到给的挺多的,可惜有人捷足先登了
关于c语言课程设计链表的两个问题。。(高分求助) 非常急。。。。!!。
(问题原题如下,知道任何一题都可回答)(回答的好一题加100分)谢谢。。。。。 链表(每一功能用一函数实现): 1.先建立两个有序的单链表,再将其合并成一个有序的单链表。。 2.先建立一若干个结点构成的单链表,统计其中数据域值为x的结点的个数,再对该单链表进行复制。。。。。
参考技术A #include<iostream>
using
namespace
std;
struct
NODE
int
data;
NODE
*next;
;
void
dataAdd(NODE
*(&list),int
data)
//在链表尾增加一个新的节点
NODE
*newNode,*p;
newNode=new
NODE;
newNode->data=data;
p=list;
if(!p)
//如果list为空,头结点赋值为当前值
list=newNode;
list->next=NULL;
return
;
while(p->next)
p=p->next;
p->next=newNode;
newNode->next=NULL;
void
inputData(NODE
*(&list))
int
data;
cin>>data;
while(!cin.fail())
dataAdd(list,data);
cin>>data;
cin.clear();
cin.sync();
int
lastData(NODE
*list)
NODE
*p=list;
if(!p)
return
-1;
while(p->next)
p=p->next;
return
p->data;
void
sortList(NODE
*(&list))
NODE
*p,*q;
p=list;
int
temp;
while(p->next)
q=p->next;
while(q)
if(p->data>q->data)
temp=p->data;
p->data=q->data;
q->data=temp;
q=q->next;
p=p->next;
void
combination(NODE
*list1,NODE
*list2,NODE
*(&list3))
NODE
*p=list1;
NODE
*q=list2;
while(p
&&
q)
if(p->data
<
q->data
)
if(lastData(list3)!=p->data)
dataAdd(list3,p->data);
p=p->next;
else
if(p->data
>
q->data)
if(lastData(list3)!=q->data)
dataAdd(list3,q->data);
q=q->next;
else
if(p->data
==
q->data)
if(lastData(list3)!=p->data)
dataAdd(list3,p->data);
p=p->next;
q=q->next;
while(p)
if(lastData(list3)!=p->data)
dataAdd(list3,p->data);
p=p->next;
while(q)
if(lastData(list3)!=q->data)
dataAdd(list3,q->data);
q=q->next;
void
showList(NODE
*list)
//显示链表中的数据
NODE
*p;
p=list;
while(p)
cout<<p->data<<'
';
p=p->next;
cout<<endl;
int
main()
NODE
*list1=NULL,*list2=NULL;
cout<<"请输入链表1的数据,非数字字符为结束符!"<<endl;
inputData(list1);
sortList(list1);
//list1排序
//showList(list1);
cout<<endl;
cout<<"请输入链表2的数据,非数字字符为结束符!"<<endl;
inputData(list2);
sortList(list2);
//list2排序
NODE
*list3=NULL;
cout<<"list1和list2的并集为:"<<endl;
combination(list1,list2,list3);
showList(list3);
cout<<endl;
return
0;
以上是关于c语言作业,求助!的主要内容,如果未能解决你的问题,请参考以下文章
关于c语言课程设计链表的两个问题。。(高分求助) 非常急。。。。!!。