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. 分别用函数和带参数的宏,从三个数中找出最大数。

参考技术A 2
#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语言课程设计链表的两个问题。。(高分求助) 非常急。。。。!!。

关于c语言课程设计链表的两个问题。。(高分求助) 非常急。。。。!!。

c语言求助

跪求,C语言程序求助啊。

C语言结构体大小问题求助。

求助一道C语言设计题目