求各位高手帮忙作一下C语言作业

2024-12-18 06:58:18
推荐回答(5个)
回答1:

所有程序在win-tc和Dev-c++下运行通过。
现在所有的题目都有答案了。
第一题:
#include
#define N 10
int main()
{
int a[N],i,m=0,n=0,max,min,*p;
p=a;
printf("Please input %d elements of the matrix :\n",N);
for(i=0;iscanf("%d",p+i);
printf("The array you input is:\n");
for(i=0;iprintf("%5d",*(p+i));
printf("\n");
max=min=*p;
for(i=1;i{ if(max<*(p+i))
{m=i;max=*(p+i);}
if(min>*(p+i))
{n=i;min=*(p+i);}
}
*(p+n)=*p;
*p=min;
*(p+m)=*(p+N-1);
*(p+N-1)=max;
printf("The matrix you want is:\n");
for(i=0;iprintf("%5d",*(p+i));
printf("\n");
system("pause");
return 0;
}
或者
#include
int main(void) /* 找出队列中最小数放最左边 最大数放最右边*/
{ int num[10];
/* int num[10]={9,7,3,6,2,10,1,5,8,4}; */
int max,min,i,j,k;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
for(i=0;i<10;i++)
printf("%d ",num[i]);
printf("\n");
max=min=num[0];
for(i=1;i<10;i++)
{
if(num[i]>max)
{max=num[i];
j=i;
}
else if(num[i]{min=num[i];
k=i;
}
}
if(j!=9)
{ num[j]=num[9];num[9]=max;
}
if(k!=0)
{ num[k]=num[0];num[0]=min;
}
printf("output 10 new numbers:\n");
for(i=0;i<10;i++)
printf("%d ",num[i]);
printf("\n");
getch();
return 0;
}

第二题:
#include
int length(char *p) /* strlen()函数原型,求一个字符串的长度 */
{
int n=0;
while(*p!='\0')
{ n++;
p++;
}
return(n);
}
int main(void)
{
int len;
/* int length(); */
char str[80];
printf("\nInput a string(<80 characters):");
gets(str); /*如果这里用scanf()函数,那么一行中空格后的输入字符都无效*/
len=length(str); /*因为scanf()函数以空格或tab键或回车键结束*/
printf("The string is:%s\n",str);
printf("The length of the string is %d",len);
getch();
return 0;
}

#include /* strcmp函数原型 */
int strcmp(char *p1,char *p2)
{int i=0;
while (*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return 0; /* 这里是先判断*(p1+i)=='\0',然后再是i++ */
return (*(p1+i)-*(p2+i));
}
int main(void)
{char s1[80],s2[80];
int i,j;
char *p1,*p2;
printf("Input two strings:(<80 characters each)\n");
gets(s1);
gets(s2);
p1=s1;
p2=s2;
j=strcmp(p1,p2);
printf("result:%d\n",j);
getch();
return 0;
}

#include "string.h" /* 计算字符串中子串出现的次数 说明:这里子串是str2,母串是str1 */
#include "stdio.h"
main()
{ char str1[80],str2[80],*p1,*p2;
int sum=0;
printf("\nPlease input two strings\n");
gets(str1);
gets(str2);
p1=str1;p2=str2;
while(*p1!='\0')
{
if(*p1==*p2)
{while(*p1==*p2&&*p2!='\0')
{p1++;
p2++;}
}
else
p1++;
if(*p2=='\0')
sum++;
p2=str2;
}
printf("Times of str2 appeared in str1 are:%d",sum);
getch();
}
其它类似,仿照来写。

第三题:
/*从键盘上任意输入20个数,要求找出其中的素数,并将这些素数按升序排列。(必须用模块化、用指针实现)*/
#include
#include
#define N 20

void sort(int *q,int j)
{int i,k,t;
for(i=0;ifor(k=i+1;kif(*(q+i)>*(q+k))
{t=*(q+i);
*(q+i)=*(q+k);
*(q+k)=t;
}

}
int main()
{ int i,j=0,k,flag,a[N],b[N],*p,*q;
p=a;
q=b;
printf("Please input %d numbers:\n",N);
for(i=0;i{ flag=0;
scanf("%d",p+i);
for(k=2;k<=sqrt(*(p+i));k++) /* 这里把判断素数放在了这里 */
if((*(p+i)%k)==0){flag=1;break;}
if(flag==0)
{ *(q+j)=*(p+i);j++;}
}
sort(q,j);
printf("The prime you want are:\n");
for(i=0;iprintf("%-5d",*(q+i));
getch();
return 0;
}

第七题:
/* 输入两个整数,求它们相除的余数,用带参的宏来实现 */
#include
#define MOD(a,b) ((a)%(b))
int main()
{ int a,b;
printf("Please input a and b:\n");
scanf("%d%d",&a,&b);
printf("%d%%%d= %d\n",a,b,MOD(a,b));
system("pause");
return 0;
}

回答2:

1:从键盘上输入10个数,用选择排序的改进算法对这10个数排序(按升序),并输出。

//选择法排序
#include
main(void)
{
int a[10],i,j,k,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
{ k=j;
for(i=j+1;i<10;i++)
if(a[k]>a[i])
k=i;
{t=a[j];a[j]=a[k];a[k]=t;}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}

2:编写程序求Fibonacci数列的前10项,每行只允许输出5个数。

#include
main()
{
int a[10]={1,1};
int i;
for(i=2;i<10;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<10;i++)
{
printf("%5d",a[i]);
if((i+1)%5==0)
printf("\n");
}

}

4:编写程序求一个6×6矩阵的对角线之和,并求出所有数中的最大值及其下标。

#include
main(void)
{
int a[6][6];
int i,j,sum=0,t,k,max;
for(j=0;j<6;j++)
for(i=0;i<6;i++)
scanf("%d",&a[j][i]);
max=a[0][0];
for(j=0;j<6;j++)
for(i=0;i<6;i++)
if(max {max=a[j][i];t=j;k=i;}
printf("max:a[%d][%d]=%d\n",t,k,max);

for(i=0;i<6;i++)
sum=sum+a[i][i]+a[5-i][i];
printf("sum=%d",sum);
}

5:写一个函数,输入一个4位数字,要求输出这4个数字字符,每两个数字字符间空一个空格。如输入1990,输出“1 9 9 0”。

#include
main(void)
{
char a[7],n[4];
int i;
scanf("%s",n);
for(i=0;i<4;i++)
a[2*i]=n[i];
for(i=1;i<6;i+=2)
a[i]=' ';
for(i=0;i<7;i++)
printf("%c",a[i]);
}

回答3:

第2题Fibonacci
#include
int Fibonacci(int n)
{
if(n==1||n==2)return 1;
else return Fibonacci(n-1)+Fibonacci(n-2);
}
void main()
{
int i,j;
for(i=1,j=1;i<=10;i++,j++)
{
printf("%d ",Fibonacci(i));
if(j==5)printf("\n");
}
putchar('\n');
}

回答4:

给1块钱,我帮你做!

6.
#include

int factor(int n)
{
if(n==1||n==0) return 1;
return n*factor(n-1)
}

int main()
{
int n;

scanf("%d",&n);
printf("n!=%d\n",factor(n));
return 0;
}

回答5:

二楼的 我学了三个月也会做哈哈
但太麻烦了吧
这么点分……
还有作业要自己做吗