1、输入n个整数,将其中最小者与第一个数对调,最大
者与最后一个数对调。试编程(请使用动态内存分配
方法)。
2、设有一数列,包含10个数,已按升序排列。现要求编
一程序,它能够把从指定位置开始的n个数按逆序重新
排列并输出新的完整数列(进行逆序处理时要求使用
指针方法)。例如,原数列为1,2,3,4,5,6,7,
8,9,10,若要求把从第4个数开始的5个数按逆序重
新排列,则新数列为1,2,3,8,7,6,5,4,9,10。
3、输入一个字符串,然后按下面要求输出一个新的字
符串。新串是在原串中的每两个字符之间分别插入1、
3、5,……个字符’#’形成的。例如,原串为”abcd”,
则新串为”a#b###c#####d”。如果原串中只有一个字
符,则新串与原串相同。
4、将n个字符串排序,排序规则如下:“参照子串”越小的
字符串越靠前(“参照子串”指的是原串后半截的逆序结
果)。例如,输入3个字符串“Kitty”、“cake”和”Z”,
因为它们的参照子串分别是”ytt”、“ek” 和”Z”,而
“Z” <“ek” < “ytt”,故最后应输出:
Z
cake
Kitty
5、将一个字符串中的元音字母复制到另一字符串,然后
输出“另一字符串”。
6、编写程序,判断两个正整数的最大公约数是不是素数。
7、用递归法将一个非负整数n转换成字符串。例如,输入
563,应输出字符串“563”。n的位数不确定,可以是任
意位数的整数。
8、输入一行字符,将此字符串中最长的单词输出。如果
最长的单词有多个,需将它们全部输出。
9、输入两个整数,求它们相除的余数。用带参的宏实现。
10、请创建一个文件,用于存放10个学生5门课的成绩。然
后读入这些成绩,并分别用函数
1)求每个学生的平均分;
2)求每门课的平均分;
3)找出最高分数所对应的学生和课程;
4)求平均分方差 , 为某一学生的平均分。
11、已知两个M×N的矩阵A和B的任一元素均为两位数的
整数。现将它们合并形成一个M×N的新矩阵C。合并
的方式为:将Aij(1 i M,1 j N)的十位和个位
数依次放在Cij的十位和千位上,将Bij的十位和个位
数依次放在Cij的个位和百位上。求矩阵C。要求:所
有的输入、输出均用文件实现。
12、请利用指向结构体的指针编写一程序,从文件in.txt中
读入5个学生的学号、姓名、语文、数学和英语成绩,
计算每个学生的平均成绩并将成绩表(成绩表由原来
的各项数据和平均成绩组成)输出到二进制文件
out.dat中。请合理运用模块化原则。
13、请编程建立一个双向循环链表,链表结点中的数据通
过键盘输入,当输入数据为-1时,表示输入结束。
然后输出该链表。
14、有一个带有头结点的环形链表,链表中每个结点包含
学号、成绩和指针域。请编写程序,从链表中删去学
号为n的结点,n由键盘输入。
给大家找的练习的题目
要有点数据结构的基础哦!!!!!!!!
先谢了,
能过做练习才知道自己懂多少
不过有好多不会,
有答案码??
有答案没
谢谢了 有几个不会 你有答案吗?
请问如何才能发帖~~~~新手报道~~呵呵
想让大家帮我看看这个问题!!
前阵子做数据结构的最短路径,到现在都没做出来~~
下面是我的源程序,使用迪杰斯特拉算法,编译没错,可是运行不了。好像是分配空间的问题~~大家看看有什么问题?
在此先谢谢大家!!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Max 65535
#define Maxvexnum 11
#define T 1
#define F 0
typedef int pathM[Maxvexnum][Maxvexnum];
typedef int spathTable[Maxvexnum];
typedef struct{
int weight;
}Adjmatrix[Maxvexnum][Maxvexnum];
typedef struct{
char *vexs[Maxvexnum]; //存储顶点的向量
Adjmatrix arcs;
int vexnum,arcnum;
}graph;
void spath(graph *G,int v0,pathM p,spathTable D){
//用Dijkstra算法求有向图G的v0顶点到其余顶点的最短路径p[v]及其带权长度D[v]
//若p[v][w]为true,则w是从v0到当前求得最短路径上的顶点
//final[v]为true当且仅当v属于s,即已经求得从v0到v的最短路径
int min,i,v,w;
int final[Maxvexnum];
for(v = 0; v < G->vexnum; ++v){
final[v] = F;
D[v] = G->arcs[v0][v].weight;
for(w = 0; w < G->vexnum; ++w)
p[v][w] = F;
if(D[v] < Max) {p[v][v0] = T; p[v][v] = T;}
}
D[v0] = 0; final[v0] = T;
for(i = 1; i < G->vexnum; ++i){
min = Max;
for(w = 0; w < G->vexnum; ++w)
if(!final[w] && D[w] < min)
{v = w; min = D[w];}
final[v] = T;
for(w = 0; w < G->vexnum; ++w)
if(!final[w] && (min + G->arcs[v][w].weight < D[w])){
D[w] = min + G->arcs[v][w].weight;
for(i = 0; i < G->vexnum; ++i)
p[w] = p[v];
p[w][w] = T;
}//if
}//for
}
int locatevex(graph *G,char *v){
int i;
for(i = 0; i < G->vexnum; ++i)
if(strcmp(v , G->vexs) == 0)
return i;
return -1;
}
void createDN(graph *G){
int i,j,k,w,count;
char *V1,*V2;
char temp[10];
printf(“请输入有向网G的顶点数,弧数!\n”);
scanf(“%d,%d”,&G->vexnum,&G->arcnum);
printf(“请输入%d个顶点的值:\n”,G->vexnum);
for(i = 0; i < G->vexnum; ++i){
scanf(“%s”,temp);
count = 0;
while(temp[count++] != ‘\0′)
G->vexs = (char *)malloc(count * sizeof(char)); //不知道这里是否正确分配空间??
}
for(i = 0; i < G->vexnum; ++i)
for(j = 0; j < G->vexnum; ++j)
G->arcs[j].weight = Max;
printf(“请输入%d条弧的弧尾 弧头(以空格作为间隔):\n”,G->arcnum);
for(k = 0; k < G->arcnum; ++k){
scanf(“%s%s%d”,&V1,&V2,&w); //输入是在这里出现问题的!!!
i = locatevex(G,V1);
j = locatevex(G,V2);
G->arcs[j].weight = w;
}
}
void display(graph *G){
int i,j;
printf(“%d个顶点%d条边或弧的有向网。顶点依次是: “,G->vexnum,G->arcnum);
for(i = 0; i< G->vexnum; ++i) // 输出G.vexs
printf(“%s “,G->vexs);
printf(“\nG.arcs.weight\n”); //输出G.arcs.weight
for(i = 0; i < G->vexnum; ++i){
for(j = 0; j < G->vexnum; ++j)
printf(“%10d”,G->arcs[j].weight);
printf(“\n”);
}
}
void main()
{
int i,j;
graph G;
pathM p;
spathTable D;
createDN(&G);
display(&G);
spath(&G,0,p,D);
printf(“the pathM p[j] are:\n”);
for(i = 0; i < G.vexnum; ++i){
for(j = 0; j < G.vexnum; ++j)
printf(“%4d”,p[j]);
printf(“\n”);
}
printf(“the shortest path weight of %s to every vex are:\n”,G.vexs[0]);
for(i = 0; i < G.vexnum; ++i)
if(i)
printf(“%s—-%s: %4d\n”,G.vexs[0],G.vexs,D);
}
多谢大家参看!!
在此谢谢!!
各位大侠帮忙做几道c语言的题可以吗?非常感谢啊!
1.输入任意三个数,输出这三个数之和。
如:输入7、8、16,则输出 7+8+16=31
2.输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。
如:输入a为10,b为5,则a+b的结果输出为 10+5=15
3.输入一个三位数,将其各位数字反序输出。
如:输入123,则输出 321
4.输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值从小到大的顺序输出这三个字符及其对应的ASCII码值。
如:输入字母C,则输出 B,66,C,67,D,68
5.输入一个正整数,判断能否同时被5和7整除,若能,则输出Yes,否则输出No。
如:输入77,则输出 No
6.输入一个三位数,判断是否是一个“水仙花数”。水仙花数是指三位数的各位数字的立方和等于这个三位数本身。如:153=1*1*1+5*5*5+3*3*3。若是,则输出Yes,不是输出No。
如:输入153,则输出 Yes
7.输入任意三个数,输出这三个数之和。
如:输入7、8、16,则输出 7+8+16=31
8.输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。
如:输入a为10,b为5,则a+b的结果输出为 10+5=15
9.输入一个三位数,将其各位数字反序输出。
如:输入123,则输出 321
10.输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值从小到大的顺序输出这三个字符及其对应的ASCII码值。
如:输入字母C,则输出 B,66,C,67,D,68
11.输入一个正整数,判断能否同时被5和7整除,若能,则输出Yes,否则输出No。
如:输入77,则输出 No
12.输入一个三位数,判断是否是一个“水仙花数”。水仙花数是指三位数的各位数字的立方和等于这个三位数本身。如:153=1*1*1+5*5*5+3*3*3。若是,则输出Yes,不是输出No。
如:输入153,则输出 Yes
13.输入一个年份和一个月份,输出该年该月的天数。
如:输入2007、11,则输出 30 days
提示:2月天数的多少与该年是否为闰年有关,闰年2月有29天,非闰年有28天,因此首先要判断该年份是否为闰年;根据月份判断天数,可采用Switch语句。
14.已知一个圆,圆心坐标为(2,2),半径为1,输入一个点的坐标(x,y),判断该点与圆的位置,若在圆内则输出‘Inside’,若在圆外则输出‘Outside’,若在圆周上则输出‘On’。
如:输入坐标 1,1,则输出 Outside
提示:点到点的距离公式为sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)),根据该点到圆心的距离与圆半径的大小关系,判断点与圆的位置关系。
15.输入三个整数,判断用这三个数作为边长能否构成三角形,能则输出该三角形的类型编号(一般三角形编号为A,直角三角形编号为B、等腰三角形编号为C,等边三角形编号为D),不能则输出 No。
如:输入 3,4,5,则输出 B
16.求10!
17.求1-3+5-7+9-……+101
18.判定2000-2050年中的每一年是否为闰年,并将闰年输出,每输出5个换一行。
19.计算1-1/2+1/3-1/4+1/5-……+1/99-1/100
先谢了,
能过做练习才知道自
己懂多少
各位大侠 我是一个小小菜鸟 在教材抄的大侠在tc里面出问题了 请帮个忙怎么样可以修正啊!!
main()
{int a,b,c;
scanf(“%d,%d,&a,&b,”);
c=max(a,b);
printf(“max=%d”,c);
}
int max (int x,int y);
{ int z ; 系统说这里说明出问题,怎么解决啊??
if(x>y) z=x;
else z=y;
returu(z);
}
把答案发上来看一下.
#include “stdio.h”
int main()
{int a,b,c;
scanf(“%d%d”,&a,&b); /*注意双引号括住的只是%d,还有两个%d之间不能有逗号*/
c=max(a,b);
printf(“max=%d”,c);
}
int max (int x,int y) /*这一句后面不能有分号*/
{ int z ;
if(x>y) z=x;
else z=y;
return z; /*return写错了*/
}
感谢楼主了啊
练习题有答案没有啊,照着学习一下啊
看了题,好多不会哦。希望LZ把答案弄上来。
[QUOTE=liuluoxuan]
各位大侠 我是一个小小菜鸟 在教材抄的大侠在tc里面出问题了 请帮个忙怎么样可以修正啊!!
main()
{int a,b,c;
scanf(“%d,%d,&a,&b,”);
c=max(a,b);
printf(“max=%d”,c);
}
int max (int x,int y);
{ int z ; 系统说这里说明出问题,怎么解决啊??
if(x>y) z=x;
else z=y;
returu(z);
}
[/QUOTE]
#include<stdio.h>
void main()