高分悬赏C语言的几个问题

作者&投稿:太毓 (若有异议请与网页底部的电邮联系)
C语言的几个问题``急需``高分~

1
main()

{

int f[21];

int i;

f[1]=1;

f[2]=1;

for(i=3;i<=20;i++)

{

f[]=f[i-1]+f[i-2];

}

for(i=0;i<20;i++)

{

if(i%5==0)

{

printf(""n");

}

printf("%5d ",f[i]);

}

printf(""n");

}


2.各种排序法
#include
#include
struct node
{
int key;
}r[20];

struct rnode
{
int key;
int point;
};

main()
{
void print(struct node a[20],int n);
int creat();
void shell(struct node a[20],int n);
int hoare(struct node a[20],int l,int h);
void quick1(struct node a[20],int n);
void quick2(struct node a[20],int l,int h);
void heap(struct node a[20],int i,int m);
void heapsort(struct node a[20],int n);
void merges(struct node a[20],struct node a2[20],int h1,int mid,int h2);
void mergepass(struct node a[20],struct node a2[20],int l,int n);
void mergesort(struct node a[20],int n);
int yx(int m,int i);
int radixsort(struct rnode a[20],int n);
int num,l,h,c;
struct rnode s[20];
c=1;
while(c!=0)
{
printf(" 主菜单
");
printf(" 1 输入关键字,以-9999表示结束。
");
printf(" 2 希尔排序
");
printf(" 3 非递归的快速排序
");
printf(" 4 递归的快速排序
");
printf(" 5 堆排序
");
printf(" 6 归并排序
");
printf(" 7 基数排序
");
printf(" 输入选择 (1--7,0表示结束): ");
scanf("%d",&c);
switch(c)
{
case 1:num=creat();print(r,num);break;
case 2:shell(r,num);print(r,num);break;
case 3:quick1(r,num);print(r,num);break;
case 4:l=0;h=num-1;quick2(r,l,h);
printf("output quick2sort result:
");
print(r,num);break;
case 5:heapsort(r,num);break;
case 6:mergesort(r,num);print(r,num);break;
case 7:radixsort(s,num);
}
}
}//main end

void print(struct node a[20],int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d",a[i ].key);
printf("
");
}//print end

int creat()
{
int i,n;
n=0;
printf("input keys");
scanf("%d",&i);
while(i!=-9999)
{
r[n].key=i;
n++;
scanf("%d",&i);
}
return(n);
}//creat end

void shell(struct node a[20],int n)//希尔排序
{
int i,j,k;
for(i=n;i>=1;i--)
a[i].key=a[i-1].key;
k=n/2;
while(k>=1)
{
for(i=k+1;i<=n;i++)
{
a[0].key=a[i].key;
j=i-k;
while((a[j].key>a[0].key)&&(j>=0))
{
a[j+k].key=a[j].key;
j=j-k;
}
a[j+k]=a[0];
}
k=k/2;
}
for(i=0;i<n;i++)
a[i].key=a[i+1].key;
printf("输出希尔排序的结果:
");
}//shell end

////////////////////快速排序///////////////////////////

int hoare(struct node a[20],int l,int h)//分区处理函数
{
int i,j;
struct node x;
i=l;
j=h;
x.key=a[i].key;
do
{
while((i=x.key))
j--;
if(i<j)
{
a[i].key=a[j].key;
i++;
}
while((i<j)&&(a[i].key<=x.key))
i++;
if(i<j)
{
a[j].key=a[i].key;
j--;
}
}while(i<j);
a[i].key=x.key;
return(i);
}//hoare end

void quick1(struct node a[20],int n)
{
int i,l,h,tag,top;
int s[20][2];
l=0;h=n-1;tag=1;top=0;
do
{
while(l<h)
{
i=hoare(a,l,h);
top++;
s[top][0]=i+1;
s[top][1]=h;
h=h-1;
}
if(top==0)
tag=0;
else
{
l=s[top][0];
h=s[top][1];
top--;
}
}while(tag==1);
printf("输出非递归快速排序结果:
");
}//quick end

void quick2(struct node a[20],int l,int h)//递归的快速排序
{
int i;
if(l<h)
{
i=hoare(a,l,h);
quick2(a,l,i-1);
quick2(a,i+1,h);
}
}//quick2 end

////////////////////快速排序结束////////////////////////

////////////////////堆排序函数//////////////////////////

void heap(struct node a[20],int i,int m)//调整堆的函数
{
struct node x;
int j;
x.key=a[i].key;
j=2*i;
while(j<=m)
{
if(j<m)
if(a[j].key>a[j+1].key)
j++;
if(a[j].key<x.key)
{
a[i].key=a[j].key;
i=j;
j=2*i;
}
else
j=m+1;
}
a[i].key=x.key;
}//heap end

void heapsort(struct node a[20],int n)//堆排序的主体函数
{
int i,v;
struct node x;
for(i=n;i>0;i--)
a[i].key=a[i-1].key;
for(i=n/2;i>=1;i--)
heap(a,i,n);
printf("输出堆排序结果:
");
for(v=n;v>=2;v--)
{
printf("%5d",a[1].key);
x.key=a[1].key;
a[1].key=a[v].key;
a[v].key=x.key;
heap(a,1,v-1);
}
printf("%5d",a[1].key);
for(i=0;i<n;i++)
a[i].key=a[i+1].key;
}//heapsort end

/////////////////堆排序函数结束///////////////////

//////////////////归并函数////////////////////////

void merges(struct node a[20],struct node a2[20],int h1,int mid,int h2)
//归并排序的核心算法
{
int i,j,k;
i=h1;j=mid+1;k=h1-1;
while((i<=mid)&&(j<=h2))
{
k=k+1;
if(a[i].key<=a[j].key)
{
a2[k].key=a[i].key;
i++;
}
else
{
a2[k].key=a[j].key;
j++;
}
}
while(i<=mid)
{
k++;
a2[k].key=a[i].key;
i++;
}
while(j<=h2)
{
k++;
a2[k].key=a[j].key;
i++;
}
}//merges end

void mergepass(struct node a[20],struct node a2[20],int l,int n)
//一趟归并
{
int j,i,h1,mid,h2;
i=0;
while((n-i)>=2*l)
{
h1=i;
mid=h1+l-1;
h2=i+2*l-1;
merges(a,a2,h1,mid,h2);
i=i+2*l;
}
if((n-i)<=l)
for(j=i;j<=n;j++)
a2[j].key=a[j].key;
else
{
h1=i;
mid=h1+l-1;
h2=n-1;
merges(a,a2,h1,mid,h2);
}
}//mergepass end

void mergesort(struct node a[20],int n)
{
int l;
struct node a2[20];
l=1;
while(l<n)
{
mergepass(a,a2,l,n);
l=2*l;
mergepass(a2,a,l,n);
l=2*l;
}
printf("输出归并排序的结果:
");
}//mergesort end

///////////////归并函数结束///////////////

///////////////基数排序///////////////////

int yx(int m,int i)//分离关键字倒数第i位有效数字的算法
{
int x;
switch(i)
{
case 1:x=m%10;break;
case 2:x=(m%100)/10;break;
case 3:x=(m%1000)/100;break;
case 4:x=(m%10000)/1000;break;
}
return(x);
}//yx end

int radixsort(struct rnode a[20],int n)
{
int f[11],e[11],i,j,k,l,p,d,t;
for(i=1;i<=n;i++)
{
a[i].key=r[i-1].key;
a[i].point=i+1;
}
a[n].point=0;
p=1;
printf("输出关键字有效位数 d
");
scanf("%d",&d);
printf("输出基数排序的结果:
");
for(i=1;i<=d;i++)
{
for(j=0;j<=10;j++)
{
f[j]=0;
e[j]=0;
}
while(p!=0)
{
k=yx(a[p].key,i);
if(f[k]==0)
{
f[k]=p;
e[k]=p;
}
else
{
l=e[k];
a[l].point=p;
e[k]=p;
}
p=a[p].point;
}
j=0;
while(f[j]==0)
j++;
p=f[j];t=e[j];
while(j<10)
{
j++;
while((j<10)&&(f[j]==0))
j++;
if(f[j]!=0)
{
a[t].point=f[j];
t=e[j];
}
}
a[t].point=0;
t=p;
while(t!=0)
{
printf("%5d",a[t].key);
t=a[t].point;
}
printf("
");
}
return(p);
}

1:字母只读一个,而数字可以很多个一起读。 (我汗,以前都没注意着,C的题目越出越细了)
2.空格也是字母的一种如果是10 20 AB,那么10 20 读的没错,但c1=‘_’,c2='A'。先读空格(补充下1的回答)
3:那个逗号有,你输数据的时候也要相应的有逗号,D里z是double型,应该用%lf;
4:长度是3没错 ,逗号同上 至于那个45678,45后面是不是有空格的啊。空格说的是数字取到这里结束咯。浮点数打印的时候小数点后6~7位都打出来的,没有实际价值。
5:输入流 %3.2指的是一共有3位,包含小数点。
6:scanf里没有逗号,所以输入的时候也不能有逗号 ,此题y=',' 这个数据时不确定的
7:同5;4.2f 一共4位,包含小数点,小数点后取两位
8:选A的话ABC之间没有空格,看了我上面的,第8题应该没问题了
9:字符型变量ch,能够赋值给他的只有单个字符和小于255的数字,至于为什么小于255,等你看了书后面的内容就懂了
10:B选项指的是16进制的ff,就是‘\255’,asc码里是有这个字符的
10:

大清早起来帮你做的,结果都通过编译运行,完全正确。 这次你可能真的很急,以后得自己多多努力学习!
1.编写程序,输入一个正整数n(1<n<=10),在输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。

#include<stdio.h>
#define N 10

int main()
{
int i,t,*p_max,*p_min,*p,a[N];

printf("请输入%d个数: ",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
p=a;
p_max=p;
p_min=p;

for(i=1;i<N;i++) /*此循环用于找最小的数和最大的数的地址*/
{
if(*(p+i)>*p_max)
p_max=p+i;
if(*(p+i)<*p_min)
p_min=p+i;
}
p=a;

/*最大的数与最后一个数对换*/
t=*(p+N-1);
*(p+N-1)=*p_max;
*p_max=t;

/*最小的数与第一个数对换*/
t=*p;
*p=*p_min;
*p_min=t;

/*打印输出*/
for(i=0;i<N;i++)
printf("%d ",*(p+i));
printf("\n");

return 0;
}

2.编写程序,输入一个正整数n(1<n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”(上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。)
#include<stdio.h>
#include<malloc.h>

void main()
{
int i,j,flag=0,n,*a[6];

scanf("%d",&n);
if(n<=1||n>=7)
printf("n的值不符合要求,按任意键退出程序运行!\n");
else
{
for(i=0;i<n;i++)
{
a[i]=(int*)calloc(n,sizeof(int));
if(a[i]==NULL)
printf("内存分配失败,程序无法运行!请按任意键退出程序运行!\n");
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",a[i]+j);

for(i=0;i<n;i++)
for(j=0;j<=i;j++)
if(*(a[i]+j)!=0)
{
flag=1;
break;
}
if(flag==0)
printf("YES\n");
else
printf("NO\n");
}

}

3.编写程序,输入两个正整数m和n(1<=m,n<=6),然后输入该m行n列矩阵a中的元素,分别求出各行元素之和,并输出。
#include<stdio.h>
#include<malloc.h>

void main()
{
int i,j,m,n,s,*a[6];

scanf("%d%d",&m,&n);
if(n<1||n>6||m<1||m>6)
printf("输入的值不符合要求,按任意键退出程序运行!\n");
else
{
for(i=0;i<m;i++)
{
a[i]=(int*)calloc(n,sizeof(int));
if(a[i]==NULL)
printf("内存分配失败,程序无法运行!请按任意键退出程序运行!\n");
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",a[i]+j);

for(i=0;i<m;i++)
{
s=0;
for(j=0;j<n;j++)
s+=*(*(a+i)+j);
printf("第%d行的元素的和为%d.\n",i,s);
}
}

}

/************************************************************************
1.编写程序,输入一个正整数n(1<n<=10),在输入n个整数,将最小值与第一个数交换,
最大值与最后一个数交换,然后输出交换后的n个数。

2.编写程序,输入一个正整数n(1<n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,
输出“YES”,否则,输出“NO”(上三角矩阵即主对角线以下的元素都为0的矩阵,
主对角线为从矩阵的左上角至右下角的连线。)

3.编写程序,输入两个正整数m和n(1<=m,n<=6),然后输入该m行n列矩阵a中的元素,
分别求出各行元素之和,并输出。
************************************************************************
要下班了。。回头再补上吧。
**************************************************************************/
#include <stdio.h>

void welcome();
void fun_No1();
void fun_No2();
void fun_No3();

int number = 0;
#define MAX_SIZE 50

int main()
{
welcome();
switch(number)
{
case 1:
fun_No1();
break;
case 2:
fun_No1();
break;
case 3:
fun_No1();
break;
default:
break;
}
return 0;
}
void welcome()
{
printf("Choose your subject:\n1 for the first\n2 for the second\n3 for the third\n");
scanf("%d",&number);
}
/************************************************************************
1.编写程序,输入一个正整数n(1<n<=10),在输入n个整数,将最小值与第一个数交换,
最大值与最后一个数交换,然后输出交换后的n个数。
**************************************************************************/
void fun_No1()
{
int array[MAX_SIZE] = {0};
int n;
int i;
int max,min,max_position,min_position,temp;
printf("Input a number:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Input No[%d]:",i+1);
scanf("%d",&array[i]);
}
max = array[0];
min = array[0];
for(i=1;i<n;i++)
{
if(array[i]>max)
{
max = array[i];
max_position = i;
}
if(array[i]<min)
{
min = array[i];
min_position = i;
}
}
temp = array[0];
array[0] = array[min_position];
array[min_position] = temp;

temp = array[n-1];
array[n-1] = array[max_position];
array[max_position] = temp;

for(i=0;i<n;i++)
{
printf("Number[%d] = %d\n",i+1,array[i]);
}
}
/************************************************************************
2.编写程序,输入一个正整数n(1<n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,
输出“YES”,否则,输出“NO”(上三角矩阵即主对角线以下的元素都为0的矩阵,
主对角线为从矩阵的左上角至右下角的连线。)
**************************************************************************/
void fun_No2()
{
}
/************************************************************************
3.编写程序,输入两个正整数m和n(1<=m,n<=6),然后输入该m行n列矩阵a中的元素,
分别求出各行元素之和,并输出。
**************************************************************************/
void fun_No3()
{
}

本来已经全部写好了。但发现楼主要 "要详细哦 直接复制过去就能用滴~~~~"
决定还是不发源代码了。
劝楼主一句:这样的思想不好!!自己写一个比复制别人的一万个强上一万倍!

自己想 想一天或者一个礼拜一道题目 那你会从中收获很多东西.............

都很简单,就是不想写啊,你搞这么多意义也不大。
还不如自己研究一下。

慢慢来呗。

刚开始也别太着急。
学着自己走路


C语言问题100分悬赏
CStudent obj=st; os<<setw(CManageStudent::wid[0])<<obj.ID() ; os<<setw(CManageStudent::wid[1])<<obj.SN(); os<<setw(CManageStudent::wid[2])<<obj.Name(); os<<setw(CManageStudent::wid[3])<<obj[0]; os<<setw(CManageStudent::wid[4])<<obj[1]; os<<setw(CManageStudent...

C语言题目,100分悬赏
\/ 第一题:已知某班N(〈=50)名学生进行了高数、英语和C语言等3门课考试,将3门课 的成绩以及计算3门课的总分存放于一个二维数组中,将学生姓名存放在另一个二维字 符数组中,按总分(由高到低)将学生姓名排序并输出排序结果(序号和姓名)。\/ include "stdafx.h"include "stdio.h"struct ...

高分悬赏!关于C语言如何进阶学习
关于C语言本身:现在已经掌握了基础,可以学习一下C Primer这种外国人写的书,里面讲的会更深刻。进行其他语言的学习:比如C++,是一种以C为基础,但增加了面向对象等其他编程特性的语言,也更加常用;Python等脚本式的语言有着不同于C的有趣之处,也是可以学习的。面向应用的学习:学习语言的目的是编程...

C语言编程(高分悬赏)
include <stdio.h> define n 10 \/\/定义一个宏,做到一改全改 void main( ){ int i;float a[n]; \/\/数组为浮点型 float av; \/\/类型为浮点型,否则可能丢失数据 \/\/输入10个数 for(i=0; i<n; i++)scanf("%f",&a[i]); \/\/少了取地址符'&',并改'%d'为'%f'\/\/输出10...

50分悬赏、2011年9月17日计算机二级C语言编程题问题,急急急……_百度...
错误1:三处缺少分号 第一处,s=1.0 第二处,pi=pi*2 第三处,n++ 错误2:double x;void 这里的VIOID 完全没有意义 只是填错误而已。错误3:scanf("%If,&x); 这里%lf后面缺少引号”。朋友,就这三处了,全是粗心造成的。我改了编译过了 能运行。答案也对。谢谢。加加油,...

在线答题有悬赏,c语言编程问题
三段程序都在 VS2010 编译通过先集中说下问题1. LZ 很多符号用的中文版本的标点符号,编译认不出来,所以出现很多怪提示。写代码的时候一定要关闭中文输入法2. scanf() 中提供的应该是变量的地址 &a 而不是 a 本身,这和 printf 不同3. 在写 if 判断是很容易用 = 表示“等于”判断,这样会出...

【悬赏】c语言问题,谢谢
if(c>='a'&&c<='z')a[0]++;else if(c>='A'&&c<='Z')a[1]++;else if(c>='0'&&c<='9')a[2]++;else if(c==' ')a[3]++;else a[4]++;--- 第二个问题:int a[5]={0};与int a[5]={0,0,0,0,0};是完全等价的!!!都是将数组初始化为0。另外,int a[5]...

3道C语言题目,高分悬赏求代码
看不懂。第一题:#include<stdio.h>void main()[double money = 10000;double profit = 0.003;for(int i = 1;i <= 5;i++){money = money = money * profit;}printf("本金是%d\\n",money);printf("学习C语言可以+qq52757731");}第二题:#include<stdio.h>void main(){int age =...

C语言编程 高分悬赏!
int fun(int a[],int n) \/* a数组中的元素为main函数中a数组中的元素,n为元素个数 *\/ { int amax=-32768;\/***Program***\/ for( int i = 0; i < n; i ++ ){ if( (a[i]%2 == 0) && a[i] > amax )amax = a[i];} \/*** End ***\/ return amax;}...

【c语言判断题】求详解,高分悬赏
如果都说成是错的,也可以,因为不同的人对结构体的理解是不一样的。1、比如说FILE是一个结构体,也是C与语言的一部分,我认为这个也算用户定义的(广义上),如果你认为是系统原生的,那么第一句就是错的。2、你可以认为结构体是一种数据类型的组合方式,C语言中没有这种类型,也可以认为是错的...

苍南县19189489954: C语言,高分提问若干问题!先给20分,问题多,回答的好我追加!! -
计蚀奥拉: 什么才叫回答好?不仅仅是对吧?如果说的太详细你还会思考吗???1.第一个不合法,e后面必须为整型2.请问slae是什么意思?是不是你打错了 是else对吧?...

苍南县19189489954: C语言问题,高分悬赏!!! -
计蚀奥拉: #include #include void main(int argc, char *argv[]){double x,t,sum=0.0;int i,j,N;double e;FILE *fout;printf("\nP...

苍南县19189489954: C语言编写程序,几个小问题,答得好追加悬赏分. -
计蚀奥拉: 7题#include<stdio.h>int main(){int a[15];int i=0;printf("输入 15个数字 空格分割,enter键确认:\n");for(i=0;i<15;i++){scanf("%d",a+i);}int max=a[0];for(i=0;i<15;i++){if(max<a[i]){max=a[i];}}printf("max:%d",max);}8题#include<stdio.h>int main...

苍南县19189489954: 高分悬赏c语言问题!!!!
计蚀奥拉: int strcmp(char *s1,char *s2) {int i=0;for(i=0;i<length(s1);i++){if(s1[i]==s2[i])return 0;if(s1[i]!=s2[i])return (s1[i]-s2[i]);} }

苍南县19189489954: 求高手解答一些简单的C语言题目!(高分悬赏)
计蚀奥拉: 1、 Before GlobalPlusPlus(), it is 1 Before ++, it is 1 After ++, it is 2 After GlobalPlusPlus(), it is 2 2、 over! 3、 (1) printf("Input a year:"); scanf("%d",&year); (2) (0==year%4 && 0!=year%100) || 0==year%400 4、 (1) s[i]!='\0' (2) s[j]=s[i]; 5、 #...

苍南县19189489954: C语言,问题求解,高分悬赏 -
计蚀奥拉: 逻辑有问题if(str[i] == '(')//如果遍历出现'(',左下标等于当时值,且'('的计数加1{count++;Left=i;//给下个函数调用的左边界值}这个地方的left明显的出现问题,left 在这里只是记录了最后一个(的位置,是很不合理的2.你定义了字符串,我可以给你个建议遍历字符串,如果是( 标记1 ) 标记2进入递归,递归内容:找到1 往下遍历,遇到2 则统一标记3 提取中间字段 然后两者标志0,递归处理

苍南县19189489954: 简单C语言问题,高分悬赏!!! -
计蚀奥拉: #include struct COMPLEX{ float st_x; // 实部 float st_y; // 虚部};struct POLAR{ float st_k; // 绝对值 float st_r; // 偏角};int main(){ COMPLEX Z; printf("Input real part of z:"); scanf("%f",&Z.st_x); printf("Input imaginary part of z:"); scanf(...

苍南县19189489954: 100分悬赏C语言问题
计蚀奥拉: #include&lt;stdio.h&gt; typedef struct stu { int num; int a[5]; }Stu; int Select(int n,Stu *sp) { int i,j,c=0; for(i=0;i&lt;n;i++) { printf("学号 不及格的课程名 不及格成绩 \ "); for(j=0;j&lt;5;j++) { if(sp[i].a[j]&lt;60) { printf("%d ",sp[i].num); switch(j+1) { ...

苍南县19189489954: 有一些关于C语言的问题~请大家帮帮忙~悬赏100分 -
计蚀奥拉: 最后两题,楼上的写错了 第3题要对c赋值的 第4题是t不是f一、 1、6 8 2、3.141593,3.1416,3.142 3、4 4、2,4 5、8 6、sum=11 7、AB 8、People's Republic ofChina二、 1、 (i==j) (i+j==2) 2、 scanf("%f",&f); sum+=f; 3、 ((c=string[i])!='\0') (c!=' '&&word==0) 4、 t=a; a=b; b=t;

苍南县19189489954: C语言简单问题.高分悬赏.
计蚀奥拉: %d就是按整数结构输出. 197的二进制是11000101,将它看做负数的补码,求原码得到00111011,是59. 明白了吧?197在负数的表示中和-59的表示一样,所以出来的就是-59,后面的-58一个道理.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网